import { notFound } from "next/navigation" import { requireAuth } from "@/shared/lib/auth-guard" import { verifyParentChildRelation, getChildDashboardData } from "@/modules/parent/data-access" import { ChildDetailHeader } from "@/modules/parent/components/child-detail-header" import { ChildDetailPanel } from "@/modules/parent/components/child-detail-panel" import { EmptyState } from "@/shared/components/ui/empty-state" import { ShieldAlert } from "lucide-react" export const dynamic = "force-dynamic" export default async function ChildDetailPage({ params, }: { params: Promise<{ studentId: string }> }) { const { studentId } = await params const ctx = await requireAuth() // 校验当前家长与该子女存在关系(同时按 parentId + studentId 过滤,防止跨家庭信息泄露) const relation = await verifyParentChildRelation(studentId, ctx.userId) // dataScope 二次校验:admin/其他角色可能通过 requireAuth,但需确认 dataScope 包含该子女 const isInScope = ctx.dataScope.type === "all" || (ctx.dataScope.type === "children" && ctx.dataScope.childrenIds.includes(studentId)) if (!relation || !isInScope) { return (