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 (
      <div className="p-6 md:p-8">
        <EmptyState
          icon={ShieldAlert}
          title="Access denied"
          description="This student is not linked to your account. Please contact the school administrator if you believe this is an error."
          className="border-none shadow-none"
        />
      </div>
    )
  }

  const child = await getChildDashboardData(studentId, relation)
  if (!child) {
    notFound()
  }

  return (
    <div className="p-6 md:p-8 space-y-6">
      <ChildDetailHeader child={child} />
      <ChildDetailPanel child={child} />
    </div>
  )
}
