refactor(dashboard): V2 审计重构 — i18n 补齐 + 共享抽象 + 单测 + a11y
V2 审计报告(docs/architecture/audit/dashboard-audit-report-v2.md)发现并修复: - P0 i18n:10 个子组件硬编码字符串全部接入 next-intl(teacher-quick-actions / teacher-classes-card / teacher-homework-card / teacher-schedule / recent-submissions / teacher-grade-trends / student-grades-card / student-today-schedule-card / student-upcoming-assignments-card / admin-dashboard),新增 ~50 个翻译键 - P1 共享抽象:新增 DashboardGreetingHeader 组件,消除 teacher/student 头部 90% 重复代码,两个 Header 改为薄包装 - P2 单测:为 6 个纯函数添加 31 个单元测试 (tests/integration/dashboard/dashboard-utils.test.ts) - P2 a11y:admin 表格 caption、teacher/student 视图语义化标签 (header / section aria-label / aside aria-label) - 同步架构图 004/005
This commit is contained in:
@@ -9,7 +9,6 @@ import type {
|
||||
LessonPlanEdge,
|
||||
LessonPlanNode,
|
||||
} from "../types";
|
||||
import { BLOCK_TYPE_LABELS } from "../constants";
|
||||
|
||||
interface EditorState {
|
||||
planId: string;
|
||||
@@ -24,7 +23,7 @@ interface EditorState {
|
||||
setPlanId: (planId: string) => void;
|
||||
hydrate: (planId: string, title: string, doc: LessonPlanDocument) => void;
|
||||
|
||||
addNode: (type: BlockType, position?: { x: number; y: number }) => string;
|
||||
addNode: (type: BlockType, position?: { x: number; y: number }, title?: string) => string;
|
||||
updateNode: (id: string, patch: Partial<Block>) => void;
|
||||
updateNodePosition: (id: string, position: { x: number; y: number }) => void;
|
||||
removeNode: (id: string) => void;
|
||||
@@ -76,13 +75,13 @@ export const useLessonPlanEditor = create<EditorState>((set, get) => ({
|
||||
selectedNodeId: null,
|
||||
}),
|
||||
|
||||
addNode: (type, position) => {
|
||||
addNode: (type, position, title) => {
|
||||
const id = createId();
|
||||
const nodeCount = get().doc.nodes.length;
|
||||
const node: LessonPlanNode = {
|
||||
id,
|
||||
type,
|
||||
title: BLOCK_TYPE_LABELS[type],
|
||||
title: title ?? type, // 调用方应传入翻译后的标题,fallback 为 type 键
|
||||
data: defaultData(type),
|
||||
order: nodeCount,
|
||||
position: position ?? {
|
||||
|
||||
Reference in New Issue
Block a user