import type { JSX } from "react" import { getTranslations } from "next-intl/server" import { requirePermission } from "@/shared/lib/auth-guard" import { Permissions } from "@/shared/types/permissions" import { getParam, type SearchParams } from "@/shared/lib/search-params" import { getCoursePlans } from "@/modules/course-plans/data-access" import { CoursePlanList } from "@/modules/course-plans/components/course-plan-list" import { isCoursePlanStatus } from "@/modules/course-plans/types" export const dynamic = "force-dynamic" export default async function TeacherCoursePlansPage({ searchParams, }: { searchParams: Promise }): Promise { const ctx = await requirePermission(Permissions.COURSE_PLAN_READ) const teacherId = ctx.userId const t = await getTranslations("coursePlans") const sp = await searchParams const statusParam = getParam(sp, "status") // P1-4:使用类型守卫替代 as 断言 const status = isCoursePlanStatus(statusParam) ? statusParam : undefined // P0-3:data-access 按教师范围过滤 const plans = teacherId ? await getCoursePlans( { teacherId, status }, { userId: teacherId, isAdmin: false, teacherId } ) : [] return (

{t("teacher.title")}

{t("teacher.description")}

) }