P1-1: 抽取 stats-service.ts,将 8 个统计计算纯函数从 data-access 层分离 P1-5: 创建 WidgetBoundary 组件 + 补齐 teacher 路由 loading.tsx/error.tsx (14 文件) P1-6: 同步架构图文档 004/005,新增 stats-service 与 widget-boundary 节点 P2-1: 补充 a11y ARIA 属性(5 图表 role=img + aria-label,2 表格 caption,3 列表 role=list,3 按钮 aria-label) P2-3: 修复班级报告 studentId 字段语义错误(schema 改为可空 + 迁移 + 代码适配) P2-4: 修复 grade_managed scope 返回空数据(改为子查询 classes 表按 gradeId 过滤) P2-5: 新增 /parent/diagnostic/ 页面(多子女学情诊断聚合 + loading + error) P2-6: 统一 SearchParams 工具(student/grades 和 management/grade/insights 改用 @/shared/lib/search-params)
28 lines
692 B
TypeScript
28 lines
692 B
TypeScript
"use client"
|
|
|
|
import { AlertCircle } from "lucide-react"
|
|
|
|
import { EmptyState } from "@/shared/components/ui/empty-state"
|
|
|
|
export default function TeacherDiagnosticError({
|
|
reset,
|
|
}: {
|
|
error: Error & { digest?: string }
|
|
reset: () => void
|
|
}) {
|
|
return (
|
|
<div className="flex h-full flex-col items-center justify-center space-y-4 p-8">
|
|
<EmptyState
|
|
icon={AlertCircle}
|
|
title="学情诊断页面加载失败"
|
|
description="抱歉,页面加载时发生了意外错误。请稍后重试。"
|
|
action={{
|
|
label: "重试",
|
|
onClick: () => reset(),
|
|
}}
|
|
className="border-none shadow-none h-auto"
|
|
/>
|
|
</div>
|
|
)
|
|
}
|