import { NextRequest, NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' import { RelationshipCalculator } from '@/lib/relationship-calculator' /** * 计算两个成员之间的关系 * GET /api/trees/[treeId]/relationship?from=xxx&to=yyy */ export async function GET( request: NextRequest, { params }: { params: Promise<{ treeId: string }> } ) { const { treeId } = await params try { const { searchParams } = new URL(request.url) const fromId = searchParams.get('from') const toId = searchParams.get('to') if (!fromId || !toId) { return NextResponse.json( { error: '缺少参数:from 和 to' }, { status: 400 } ) } // 获取家族树的所有成员 const members = await prisma.familyMember.findMany({ where: { treeId } }) if (members.length === 0) { return NextResponse.json( { error: '家族树不存在或没有成员' }, { status: 404 } ) } // 计算关系 const calculator = new RelationshipCalculator(members as any) const result = calculator.getRelationshipDetail(fromId, toId) // 获取成员信息 const fromMember = members.find(m => m.id === fromId) const toMember = members.find(m => m.id === toId) return NextResponse.json({ from: { id: fromMember?.id, name: fromMember?.fullName }, to: { id: toMember?.id, name: toMember?.fullName }, relationship: result.term, path: result.path, description: result.description, success: result.success }) } catch (error) { console.error('计算关系失败:', error) return NextResponse.json( { error: '计算关系失败' }, { status: 500 } ) } }