import type { JSX } from "react" import Link from "next/link" import { notFound } from "next/navigation" import { getTranslations } from "next-intl/server" import { getHomeworkSubmissionDetails } from "@/modules/homework/data-access" import { HomeworkGradingView } from "@/modules/homework/components/homework-grading-view" import { Button } from "@/shared/components/ui/button" import { ScanLine } from "lucide-react" import { formatDate } from "@/shared/lib/utils" import { AiClientProvider, type AiClientService, } from "@/modules/ai/context/ai-client-provider" import { suggestGradingAction, aiChatAction, suggestSimilarQuestionsAction, generateLessonContentAction, generateQuestionVariantAction, analyzeWeaknessAction, } from "@/modules/ai/actions" export const dynamic = "force-dynamic" /** * 构建 AI 客户端服务(Server Action 引用集合) * * 通过 React Context 注入,客户端组件不直接 import actions, * 遵循依赖注入模式,便于测试时替换为 mock。 */ function createAiClientService(): AiClientService { return { chat: aiChatAction, suggestSimilarQuestions: suggestSimilarQuestionsAction, suggestGrading: suggestGradingAction, generateLessonContent: generateLessonContentAction, generateQuestionVariant: generateQuestionVariantAction, analyzeWeakness: analyzeWeaknessAction, } } export default async function HomeworkSubmissionGradingPage({ params }: { params: Promise<{ submissionId: string }> }): Promise { const { submissionId } = await params const t = await getTranslations("examHomework") const submission = await getHomeworkSubmissionDetails(submissionId) if (!submission) return notFound() const aiClientService = createAiClientService() return (

{submission.assignmentTitle}

Student: {submission.studentName} Submitted: {submission.submittedAt ? formatDate(submission.submittedAt) : "-"} Status: {submission.status}
) }