Commit Graph

252 Commits

Author SHA1 Message Date
SpecialX
be31da6223 docs(cache): 缓存策略落地实施计划 + 修正 INVALIDATION_MAP 占位符一致性 2026-07-05 01:37:15 +08:00
SpecialX
8afd7af6dc docs(cache): 缓存策略落地专项设计文档 v1 - 全栈缓存策略一致性(服务端数据缓存+客户端 TanStack Query+失效编排) 2026-07-05 01:30:59 +08:00
SpecialX
9ec1be1528 fix(design-tokens): 补充 semantic-dark.css 缺失的 --radius 令牌
审查发现 semantic-light.css 定义了 --radius 但 semantic-dark.css 缺失,导致明暗不对称。补充 --radius: 0.5rem 与 :root 一致。
2026-07-05 01:09:36 +08:00
SpecialX
214ebec976 refactor(design-tokens): 全量体系化重建设计令牌
Primitive + Semantic 双层令牌架构,HEX->HSL,明暗双份,@theme inline 暴露为 Tailwind 类。

- 新建 src/app/styles/tokens/ 6 个令牌文件(primitive/semantic-light/semantic-dark/lesson-preparation/tailwind-theme/index)
- globals.css 改为 @import 引入,477->258 行
- 清理 91 处 #hex 硬编码颜色 -> hsl(var(--*))
- 清理 10 处硬编码字体 -> var(--font-family-*)
- 清理 100 文件 Tailwind 任意值(Tier 1 映射/Tier 3 注释豁免)
- 清理 M3 Surface 死代码,升级 --lp-* 令牌(HEX->HSL + 暗色补全)
- 新建 ESLint 自定义规则 no-hardcoded-design-tokens(单词边界正则)
- eslint.config.mjs 新增 no-restricted-syntax 禁止 #hex + 自定义规则加载(pathToFileURL)
- 项目规则新增设计令牌规范强制章节
- 架构图 004/005 同步设计令牌体系节点
- known-issues.md 追加设计令牌问题分类(7 个规则表)

验证: tsc --noEmit 0 errors, npm run lint 0 errors/12 warnings(均为既有问题)
2026-07-05 01:03:19 +08:00
SpecialX
d1ad7a1f75 docs(architecture): update impact map, data, troubleshooting, add mockups
Some checks failed
Security / deep-security-scan (push) Failing after 2m10s
DR Drill / dr-drill (push) Failing after 1m32s
CI / scheduled-backup (push) Failing after 31s
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled
- Update 004_architecture_impact_map.md and 005_architecture_data.json

- Remove obsolete _update_004.cjs helper script

- Update troubleshooting/known-issues.md

- Add docs/mockups/ directory
2026-07-04 23:02:14 +08:00
SpecialX
e962b67050 feat(lesson-preparation): update paper-editor, detail-panel, AI node assist, i18n
- Update actions-ai.ts and curriculum-map-view.tsx

- Update detail-panel: detail-panel, detail-props, qa-editor

- Update paper-editor: inline-node, inline-qa-dialog, paper-context-menu,

  paper-editor, textbook-tiptap-editor

- Update hooks/editor-slice.ts and lib/i18n-errors.ts

- Add hooks/use-node-ai-assist.ts and lib/ai-node-assist.ts

- Update en/zh-CN lesson-preparation i18n messages
2026-07-04 23:02:04 +08:00
SpecialX
0780524c08 docs(troubleshooting): V4 备课编辑器规则
新增 V4 备课编辑器(纸感重构)规则表,8 条规则:正文节点必须是 Tiptap 编辑器、锚点用 Tiptap Mark 内嵌、节点展开位置由 order 决定、节点类型色点用 --lp-dot-*、文档版本必须是 4、师生交互节点用 QaEditor、右键菜单触发对象区分、v3 锚点迁移失效提示。
2026-07-04 12:01:06 +08:00
SpecialX
5ca2a76e3a docs(architecture): V4 纸感重构架构图同步
004_architecture_impact_map.md: 更新 lesson-preparation 章节描述(V4 三栏布局)、新增 V4 纸感重构架构变更章节(H1/I1/J1/J2/J3/J4/J5 + 数据模型 v4)、更新文件清单(移除 9 个废弃文件,新增 paper-editor/structure-tree/detail-panel/interaction-block/anchor-migration-banner 等组件 + anchor-mark/export lib + history/expanded slices)。

005_architecture_data.json: 更新 lesson_preparation 节点——description 改为 V4 描述、dependencies 移除 @xyflow/react 改为 @tiptap/* 包、files 数组移除 9 个废弃文件并新增 V4 组件、auditFixes 新增 V4-PAPER-1~8 + V4-PAPER-DOC 条目。JSON 语法验证通过。
2026-07-04 11:59:39 +08:00
SpecialX
0e4eccec21 chore(lesson-preparation): V4 lint + tsc 零错误验证
重构 anchor-migration-banner:使用 key-based remount + lazy initial state 避免 setState in effect,符合 V4 react-hooks/set-state-in-effect 规则。

验证:tsc --noEmit 0 错误;lint 中 V4 引入的错误已全部修复。剩余 6 个 lint 错误为预存无关模块问题(exams/use-exam-preview-tasks react-hooks/refs 3 个、template-picker V5-9 set-state-in-effect 1 个),13 个 warnings 均为预存代码(schedule-dialog、unread-message-badge 等),按计划要求已有的无关模块错误需记录但不要求修复。
2026-07-04 11:53:13 +08:00
SpecialX
e762490f19 refactor(lesson-preparation): print-view 适配 V4
- export.ts 已使用 order 排序,无画布依赖
- 新增 interaction block 的 flatten 逻辑(设计意图 + 对话轮次)
- 更新文档注释(12 种 Block)
2026-07-04 11:47:50 +08:00
SpecialX
5d306dc686 refactor(lesson-preparation): 删除废弃的 React Flow 画布和字符串锚点文件
- 删除 node-editor.tsx(React Flow 画布)
- 删除 nodes/lesson-node.tsx、textbook-content-node.tsx、textbook-segments.tsx、anchor-node-selector.tsx
- 删除 lib/anchor-injector.ts(字符串偏移系统)
- 删除 lib/rf-mappers.ts(React Flow 映射)
- 删除 lib/auto-layout.ts(自动布局)
- 重构 lesson-plan-readonly-view.tsx 改用线性视图(LessonPlanMobileView)
2026-07-04 11:46:31 +08:00
SpecialX
124ed97060 refactor(lesson-preparation): 主编辑器三栏布局(结构树 + 纸 + 详情面板)
- 移除 NodeEditor/NodeEditPanel 导入和 JSX
- 改为 StructureTree + PaperEditor + DetailPanel 三栏布局
- 新增 AnchorMigrationBanner
- 移除 aiContentGenerator prop(V4 DetailPanel 自带 AI 按钮)
- 删除 node-edit-panel.tsx(不再被引用)
- 删除 ai-content-generator-slot.tsx(依赖 node-edit-panel)
2026-07-04 11:44:26 +08:00
SpecialX
e29f30d278 feat(lesson-preparation): v3 锚点失效提示 banner 2026-07-04 11:41:24 +08:00
SpecialX
6dd3b1fecd feat(lesson-preparation): 注册 interaction block 到 registry 2026-07-04 11:40:46 +08:00
SpecialX
85121c49a3 fix(lesson-preparation): 重命名 TreeNodeRow.children prop 为 childItems 避免 react/no-children-prop 2026-07-04 11:36:41 +08:00
SpecialX
8ff14fce1c feat(lesson-preparation): 右栏详情面板容器 2026-07-04 11:33:03 +08:00
SpecialX
24b8ae78c6 feat(lesson-preparation): 师生交互 block(详情编辑入口) 2026-07-04 11:32:58 +08:00
SpecialX
43f30f4013 feat(lesson-preparation): 师生交互编辑器(对话轮次增删改) 2026-07-04 11:32:54 +08:00
SpecialX
40cba54ed4 feat(lesson-preparation): 详情面板属性条 2026-07-04 11:32:49 +08:00
SpecialX
a4c9eb02b4 feat(lesson-preparation): 详情面板头部 2026-07-04 11:32:44 +08:00
SpecialX
05f9b4fd9d feat(lesson-preparation): 左栏结构树容器 2026-07-04 11:31:03 +08:00
SpecialX
c7cbc86fd4 feat(lesson-preparation): 树节点行组件 2026-07-04 11:30:57 +08:00
SpecialX
6fa712ad15 feat(lesson-preparation): 中栏纸区容器(正文 + 展开节点 + 右键菜单) 2026-07-04 11:29:53 +08:00
SpecialX
4db77b7d1e feat(lesson-preparation): 右键菜单(节点操作 + AI 协助 + 锚定) 2026-07-04 11:29:14 +08:00
SpecialX
cbed4ef508 feat(lesson-preparation): 师生交互对话体 inline 渲染 2026-07-04 11:28:16 +08:00
SpecialX
8583e3e387 feat(lesson-preparation): inline-node 展开节点容器 2026-07-04 11:28:11 +08:00
SpecialX
9b0b7ef619 feat(lesson-preparation): 浮动工具条 + 锚点/inline-node/对话体样式 2026-07-04 11:26:55 +08:00
SpecialX
66a60213bf feat(lesson-preparation): 正文 Tiptap 编辑器 2026-07-04 11:26:50 +08:00
SpecialX
1b898fb6cf fix(lesson-preparation): BLOCK_REGISTRY 补全 interaction 空条目(A1 类型变更扫尾,渲染逻辑留给 H1) 2026-07-04 11:20:18 +08:00
SpecialX
d7b15093f9 fix(lesson-preparation): BLOCK_TYPE_KEYS 补全 interaction(A1 类型变更扫尾) 2026-07-04 11:19:44 +08:00
SpecialX
5c4db2fedc feat(lesson-preparation): Tiptap AnchorMark + AnchorPoint 扩展 2026-07-04 11:18:56 +08:00
SpecialX
ccb2cf05df feat(lesson-preparation): V4 i18n 翻译键(zh-CN + en) 2026-07-04 11:18:03 +08:00
SpecialX
4f00e566df refactor(lesson-preparation): 配色统一到中性令牌(移除 Material 鲜艳色) 2026-07-04 11:17:07 +08:00
SpecialX
ef1be6d04f refactor(lesson-preparation): editor-slice 移除画布依赖(V4) 2026-07-04 11:16:05 +08:00
SpecialX
0f4e58d7e1 feat(lesson-preparation): selection-slice 增加 anchorNodeForSelection 2026-07-04 11:15:14 +08:00
SpecialX
a856ab005d feat(lesson-preparation): 组合 ExpandedSlice 到 EditorState 2026-07-04 11:15:01 +08:00
SpecialX
7b550d3b69 feat(lesson-preparation): expanded-slice(节点展开状态) 2026-07-04 11:14:46 +08:00
SpecialX
f7ea76cd60 feat(lesson-preparation): V3→V4 迁移函数(锚点失效标记 + expandedNodeIds) 2026-07-04 11:14:27 +08:00
SpecialX
8a7d0f69ca feat(lesson-preparation): isInteractionBlockData 类型守卫 2026-07-04 11:12:33 +08:00
SpecialX
217b5b48e4 feat(lesson-preparation): interaction 默认数据生成器 2026-07-04 11:12:13 +08:00
SpecialX
8fc798fbcf feat(lesson-preparation): V4 类型定义(interaction + QATurn + V4 文档) 2026-07-04 11:11:54 +08:00
SpecialX
ccf1618b1c docs(lesson-preparation): V4 纸感重构实现计划
25 个任务,按阶段 A-J 分解:类型定义、状态管理、配色 i18n、Tiptap 锚点、纸区组件、结构树、详情面板、主编辑器改造、迁移 banner、清理验证。
2026-07-04 11:08:28 +08:00
SpecialX
a1c283e10d docs(lesson-preparation): 备课编辑器无边记纸感重构设计
新增设计文档,定义正文节点改造为真实 Tiptap 富文本编辑器、三栏布局(结构树 + 纸 + 详情面板)、节点展开到正文、师生交互节点、Tiptap Mark 锚点系统、v3→v4 数据迁移。
2026-07-04 10:58:55 +08:00
SpecialX
872d5fb085 docs(architecture): update impact map, data, audit report, troubleshooting
Some checks failed
CI / scheduled-backup (push) Has been skipped
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled
- Update 004_architecture_impact_map.md

- Update 005_architecture_data.json

- Add lesson-preparation-audit-report-v5.md

- Add troubleshooting docs
2026-07-04 10:24:08 +08:00
SpecialX
cbc6e259fa chore(scripts): cleanup obsolete scripts and add new diagnostic scripts
- Remove temp-i18n-zh-fix.mjs, test-failing-modules.py, test-teacher-pages.py

- Add check-attendance-rules.mjs, check-db-state.mjs, test-modules.py
2026-07-04 10:23:55 +08:00
SpecialX
4b6cb5f11e feat(app): update dashboard layout and student learning error boundaries
- Update src/app/layout.tsx

- Update student/learning/study-path/error.tsx
2026-07-04 10:23:43 +08:00
SpecialX
d2c250a1b3 feat(shared): update db schema, i18n messages, rate-limit, auth-session-provider
- Update src/shared/db/schema.ts

- Update i18n messages for en and zh-CN (error-book, exam-homework, leave,

  lesson-preparation, notifications, rbac, student, textbooks, diagnostic)

- Update src/shared/lib/rate-limit/index.ts and redis-limiter.ts

- Update src/shared/components/auth-session-provider.tsx
2026-07-04 10:23:29 +08:00
SpecialX
3569d83b8e feat(modules): update layout, notifications, questions, rbac, files
- layout: update site-header.tsx

- notifications: update use-desktop-notifications.ts

- questions: update question-actions.tsx, question-columns.tsx

- rbac: update permission-catalog.ts

- files: update types.ts
2026-07-04 10:23:16 +08:00
SpecialX
98429e87eb feat(business): update audit, auth, course-plans, announcements, exams
- audit: update retention.ts, types.ts, audit-retention-settings.tsx

- auth: update actions.ts and types.ts

- course-plans: update actions.ts, course-plan-detail.tsx, template-picker-dialog.tsx,

  add lib/track-event.ts

- announcements: update page.tsx, announcement-list.tsx, announcement-pagination.tsx

- exams: update actions.ts
2026-07-04 10:23:03 +08:00
SpecialX
b63d116b6c 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
2026-07-04 10:22:48 +08:00