feat(diagnostic): refactor services with monitor and context providers

- Update default-diagnostic-service.ts

- Update diagnostic-monitor-context.tsx

- Update diagnostic-service-context.tsx

- Update monitored-diagnostic-service.ts

- Update teacher diagnostic page
This commit is contained in:
SpecialX
2026-07-04 10:22:48 +08:00
parent eee0145274
commit b63d116b6c
5 changed files with 42 additions and 23 deletions

View File

@@ -8,12 +8,9 @@ import { ReportList } from "@/modules/diagnostic/components/report-list"
import {
DiagnosticServiceProvider,
} from "@/modules/diagnostic/services/diagnostic-service-context"
import { defaultDiagnosticService } from "@/modules/diagnostic/services/default-diagnostic-service"
import { createMonitoredDiagnosticService } from "@/modules/diagnostic/services/monitored-diagnostic-service"
import {
DiagnosticMonitorProvider,
} from "@/modules/diagnostic/services/diagnostic-monitor-context"
import { noopDiagnosticMonitor } from "@/modules/diagnostic/services/diagnostic-monitor"
import type { DiagnosticReportType, DiagnosticReportStatus } from "@/modules/diagnostic/types"
export const dynamic = "force-dynamic"
@@ -64,11 +61,8 @@ export default async function TeacherDiagnosticPage({
// v2-P2-2: 移除客户端 filterDataScope 过滤已在 data-access 层完成
// class_members scope 的学生已通过 filters.studentId 在 data-access 层过滤
// v2-P2-7: 包装默认服务以添加监控埋点(默认 no-op生产环境可注入真实实现
const monitoredService = createMonitoredDiagnosticService(
defaultDiagnosticService,
noopDiagnosticMonitor,
)
// v2-P2-7: service 组装移至 DiagnosticServiceProvider客户端
// 避免 server component 创建含函数的对象传给 client component。
return (
<div className="h-full flex-1 flex-col space-y-8 p-8 md:flex">
@@ -78,8 +72,8 @@ export default async function TeacherDiagnosticPage({
{t("title.teacherReportListDesc")}
</p>
</div>
<DiagnosticMonitorProvider monitor={noopDiagnosticMonitor}>
<DiagnosticServiceProvider service={monitoredService}>
<DiagnosticMonitorProvider>
<DiagnosticServiceProvider>
<ReportList reports={reports.reports} />
</DiagnosticServiceProvider>
</DiagnosticMonitorProvider>