From 19a05091d3aea3aae5f047b040206d92eb567b3f Mon Sep 17 00:00:00 2001 From: SpecialX <47072643+wangxiner55@users.noreply.github.com> Date: Mon, 6 Jul 2026 19:01:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor(grades,attendance,error-book,elective)?= =?UTF-8?q?:=20=E7=BB=84=E4=BB=B6=E5=8C=96=E9=87=8D=E6=9E=84=E7=AC=AC=201?= =?UTF-8?q?=20=E6=89=B9=20-=20=E4=BD=8E=E9=A3=8E=E9=99=A9=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - grades: 拆分 batch-grade-entry (457→374) + grade-record-list (523→231),新增 4 个子组件 - attendance: 迁移 stats-cards/filters 到 StatsGrid/FilterBar 底座 - error-book: 迁移 stats-cards/filters 到 StatsGrid/FilterBar 底座 - elective: 迁移 stats-cards/filters 到 StatsGrid/FilterBar 底座 - 删除 12 个重复组件,新增 app 层 filter 组件就近放置 - tsc 零错误,lint 无新增错误 --- .../content/anchor-timeline-layout.html | 273 ++ .../content/canvas-anchor-layout.html | 292 ++ .../content/layout-options.html | 226 + .../content/placeholder-markers.html | 251 + .../content/two-anchor-types.html | 376 ++ .../state/server-stopped | 1 + .../state/session-info.txt | 3 + .tsc_out.txt | 1 + bugs/screenshots/announcements.png | Bin 0 -> 64182 bytes bugs/screenshots/login_failure.png | Bin 0 -> 35146 bytes bugs/screenshots/messages.png | Bin 0 -> 86029 bytes bugs/screenshots/teacher_attendance_error.png | Bin 0 -> 83524 bytes .../teacher_attendance_sheet_error.png | Bin 0 -> 77000 bytes .../teacher_attendance_stats_error.png | Bin 0 -> 109734 bytes bugs/screenshots/teacher_classes.png | Bin 0 -> 20992 bytes bugs/screenshots/teacher_classes_error.png | Bin 0 -> 78026 bytes bugs/screenshots/teacher_classes_my_error.png | Bin 0 -> 77995 bytes .../teacher_classes_schedule_error.png | Bin 0 -> 77252 bytes .../teacher_classes_students_error.png | Bin 0 -> 81367 bytes .../teacher_course-plans_error.png | Bin 0 -> 74136 bytes bugs/screenshots/teacher_dashboard_error.png | Bin 0 -> 127952 bytes bugs/screenshots/teacher_diagnostic.png | Bin 0 -> 57250 bytes bugs/screenshots/teacher_diagnostic_error.png | Bin 0 -> 78182 bytes bugs/screenshots/teacher_elective_error.png | Bin 0 -> 77534 bytes bugs/screenshots/teacher_error-book.png | Bin 0 -> 80230 bytes bugs/screenshots/teacher_error-book_error.png | Bin 0 -> 72536 bytes bugs/screenshots/teacher_exams_all_error.png | Bin 0 -> 116252 bytes .../teacher_exams_create_error.png | Bin 0 -> 131825 bytes bugs/screenshots/teacher_exams_error.png | Bin 0 -> 116249 bytes bugs/screenshots/teacher_grades.png | Bin 0 -> 83126 bytes .../teacher_grades_analytics_error.png | Bin 0 -> 100035 bytes bugs/screenshots/teacher_grades_entry.png | Bin 0 -> 83126 bytes bugs/screenshots/teacher_grades_stats.png | Bin 0 -> 83126 bytes ...cher_homework_assignments_create_error.png | Bin 0 -> 72817 bytes .../teacher_homework_assignments_error.png | Bin 0 -> 59603 bytes bugs/screenshots/teacher_homework_error.png | Bin 0 -> 117558 bytes .../teacher_homework_submissions.png | Bin 0 -> 56811 bytes .../teacher_homework_submissions_error.png | Bin 0 -> 57043 bytes .../teacher_lesson-plans_error.png | Bin 0 -> 103146 bytes .../teacher_lesson-plans_new_error.png | Bin 0 -> 87883 bytes bugs/screenshots/teacher_questions_error.png | Bin 0 -> 140600 bytes bugs/screenshots/teacher_schedule-changes.png | Bin 0 -> 49840 bytes .../teacher_schedule-changes_error.png | Bin 0 -> 77282 bytes bugs/screenshots/teacher_textbooks_error.png | Bin 0 -> 136349 bytes build-output.txt | 1734 +++++++ cookies.txt | 4 + debug-exams.png | Bin 0 -> 63607 bytes .../004_architecture_impact_map.md | 21 +- docs/architecture/005_architecture_data.json | 135 +- lint-phase2b.log | Bin 0 -> 4338 bytes .../2026-06/ulthqxd89p6d4ikjv7m7mf3l.png | Bin 0 -> 42306 bytes .../2026-06/v86mvtnjoejz3l189hrf01ty.png | Bin 0 -> 722982 bytes .../2026-06/zofz1jxqbx3z7te0mbknw9j9.png | Bin 0 -> 3363722 bytes screenshots/01-login.png | Bin 0 -> 29511 bytes screenshots/02-form-filled.png | Bin 0 -> 30149 bytes screenshots/03-after-login.png | Bin 0 -> 31631 bytes .../attendance/admin-attendance-filters.tsx} | 52 +- src/app/(dashboard)/admin/attendance/page.tsx | 25 +- .../_components/stats-cards-loader.tsx | 40 +- src/app/(dashboard)/admin/error-book/page.tsx | 22 +- .../(dashboard)/parent/error-book/page.tsx | 20 +- .../_components/available-courses-loader.tsx | 2 +- .../_components}/elective-filters.tsx | 2 +- .../error-book}/error-book-filters.tsx | 0 .../(dashboard)/student/error-book/page.tsx | 20 +- src/app/(dashboard)/student/grades/page.tsx | 4 +- .../student/grades/student-grade-filters.tsx} | 12 +- .../(dashboard)/teacher/attendance/page.tsx | 4 +- .../teacher/attendance/stats/page.tsx | 46 +- .../attendance/teacher-attendance-filters.tsx | 116 + .../(dashboard)/teacher/error-book/page.tsx | 22 +- .../analytics/analytics-grade-filters.tsx} | 31 +- .../teacher/grades/analytics/page.tsx | 4 +- src/app/(dashboard)/teacher/grades/page.tsx | 4 +- .../grades/teacher-grade-query-filters.tsx} | 31 +- .../components/attendance-stats-card.tsx | 88 - .../components/attendance-stats-cards.tsx | 83 - .../components/student-attendance-view.tsx | 47 +- .../components/elective-stats-cards.tsx | 71 - .../components/analytics-stats-cards.tsx | 109 - .../components/error-book-stats-cards.tsx | 64 - .../batch-grade-entry-selectors.tsx | 124 + .../components/batch-grade-entry-toolbar.tsx | 56 + .../grades/components/batch-grade-entry.tsx | 142 +- .../grades/components/class-grade-report.tsx | 44 +- .../grades/components/grade-record-detail.tsx | 238 + .../grades/components/grade-record-list.tsx | 382 +- .../grades/components/grade-record-row.tsx | 199 + .../grades/components/grade-stats-card.tsx | 79 - src/shared/components/ui/stat-item.tsx | 1 - src/shared/components/ui/stats-grid.tsx | 9 +- test-heredoc.txt | 5 + test.txt | 1 + tsc-p3-10.txt | 1 + tsc_output.txt | 0 vitest_announcements.txt | 4212 +++++++++++++++++ 96 files changed, 8641 insertions(+), 1088 deletions(-) create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/content/anchor-timeline-layout.html create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/content/canvas-anchor-layout.html create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/content/layout-options.html create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/content/placeholder-markers.html create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/content/two-anchor-types.html create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/state/server-stopped create mode 100644 .superpowers/brainstorm/41500-1782168322.9344/state/session-info.txt create mode 100644 .tsc_out.txt create mode 100644 bugs/screenshots/announcements.png create mode 100644 bugs/screenshots/login_failure.png create mode 100644 bugs/screenshots/messages.png create mode 100644 bugs/screenshots/teacher_attendance_error.png create mode 100644 bugs/screenshots/teacher_attendance_sheet_error.png create mode 100644 bugs/screenshots/teacher_attendance_stats_error.png create mode 100644 bugs/screenshots/teacher_classes.png create mode 100644 bugs/screenshots/teacher_classes_error.png create mode 100644 bugs/screenshots/teacher_classes_my_error.png create mode 100644 bugs/screenshots/teacher_classes_schedule_error.png create mode 100644 bugs/screenshots/teacher_classes_students_error.png create mode 100644 bugs/screenshots/teacher_course-plans_error.png create mode 100644 bugs/screenshots/teacher_dashboard_error.png create mode 100644 bugs/screenshots/teacher_diagnostic.png create mode 100644 bugs/screenshots/teacher_diagnostic_error.png create mode 100644 bugs/screenshots/teacher_elective_error.png create mode 100644 bugs/screenshots/teacher_error-book.png create mode 100644 bugs/screenshots/teacher_error-book_error.png create mode 100644 bugs/screenshots/teacher_exams_all_error.png create mode 100644 bugs/screenshots/teacher_exams_create_error.png create mode 100644 bugs/screenshots/teacher_exams_error.png create mode 100644 bugs/screenshots/teacher_grades.png create mode 100644 bugs/screenshots/teacher_grades_analytics_error.png create mode 100644 bugs/screenshots/teacher_grades_entry.png create mode 100644 bugs/screenshots/teacher_grades_stats.png create mode 100644 bugs/screenshots/teacher_homework_assignments_create_error.png create mode 100644 bugs/screenshots/teacher_homework_assignments_error.png create mode 100644 bugs/screenshots/teacher_homework_error.png create mode 100644 bugs/screenshots/teacher_homework_submissions.png create mode 100644 bugs/screenshots/teacher_homework_submissions_error.png create mode 100644 bugs/screenshots/teacher_lesson-plans_error.png create mode 100644 bugs/screenshots/teacher_lesson-plans_new_error.png create mode 100644 bugs/screenshots/teacher_questions_error.png create mode 100644 bugs/screenshots/teacher_schedule-changes.png create mode 100644 bugs/screenshots/teacher_schedule-changes_error.png create mode 100644 bugs/screenshots/teacher_textbooks_error.png create mode 100644 build-output.txt create mode 100644 cookies.txt create mode 100644 debug-exams.png create mode 100644 lint-phase2b.log create mode 100644 public/uploads/2026-06/ulthqxd89p6d4ikjv7m7mf3l.png create mode 100644 public/uploads/2026-06/v86mvtnjoejz3l189hrf01ty.png create mode 100644 public/uploads/2026-06/zofz1jxqbx3z7te0mbknw9j9.png create mode 100644 screenshots/01-login.png create mode 100644 screenshots/02-form-filled.png create mode 100644 screenshots/03-after-login.png rename src/{modules/attendance/components/attendance-filters.tsx => app/(dashboard)/admin/attendance/admin-attendance-filters.tsx} (62%) rename src/{modules/elective/components => app/(dashboard)/student/elective/_components}/elective-filters.tsx (92%) rename src/{modules/error-book/components => app/(dashboard)/student/error-book}/error-book-filters.tsx (100%) rename src/{modules/grades/components/grade-filters.tsx => app/(dashboard)/student/grades/student-grade-filters.tsx} (87%) create mode 100644 src/app/(dashboard)/teacher/attendance/teacher-attendance-filters.tsx rename src/{modules/grades/components/analytics-filters.tsx => app/(dashboard)/teacher/grades/analytics/analytics-grade-filters.tsx} (81%) rename src/{modules/grades/components/grade-query-filters.tsx => app/(dashboard)/teacher/grades/teacher-grade-query-filters.tsx} (81%) delete mode 100644 src/modules/attendance/components/attendance-stats-card.tsx delete mode 100644 src/modules/attendance/components/attendance-stats-cards.tsx delete mode 100644 src/modules/elective/components/elective-stats-cards.tsx delete mode 100644 src/modules/error-book/components/analytics-stats-cards.tsx delete mode 100644 src/modules/error-book/components/error-book-stats-cards.tsx create mode 100644 src/modules/grades/components/batch-grade-entry-selectors.tsx create mode 100644 src/modules/grades/components/batch-grade-entry-toolbar.tsx create mode 100644 src/modules/grades/components/grade-record-detail.tsx create mode 100644 src/modules/grades/components/grade-record-row.tsx delete mode 100644 src/modules/grades/components/grade-stats-card.tsx create mode 100644 test-heredoc.txt create mode 100644 test.txt create mode 100644 tsc-p3-10.txt create mode 100644 tsc_output.txt create mode 100644 vitest_announcements.txt diff --git a/.superpowers/brainstorm/41500-1782168322.9344/content/anchor-timeline-layout.html b/.superpowers/brainstorm/41500-1782168322.9344/content/anchor-timeline-layout.html new file mode 100644 index 0000000..41c3fc5 --- /dev/null +++ b/.superpowers/brainstorm/41500-1782168322.9344/content/anchor-timeline-layout.html @@ -0,0 +1,273 @@ +
课文作为主轴,节点锚定到课文位置,形成教学流程时间线
+ ++ 天气凉了,树叶黄了, + 一片片叶子从树上落下来。 +
++ 天空那么蓝,那么高。 + 一群大雁往南飞, +
++ 一会儿排成个"人"字, + 一会儿排成个"一"字。 +
++ 啊!秋天来了! +
+ + +保留 React Flow 画布交互,正文为不可移动但可缩放的中央容器,节点通过连线关联正文锚点
+ +3 种布局方案 — 课文固定中央,教学节点围绕组织
+ +课文固定中央(琥珀色边框),左侧"课前"节点(目标/重难点/导入/文本研习),右侧"课中+课后"节点(新授/练习/小结/作业/板书/反思)。节点按教学流程纵向排列。点击节点在右侧抽屉编辑。
+顶部目标/重难点横排,中央课文 + 左右导入/文本研习/新授/练习,底部小结/作业/板书/反思横排。按"目标→导入→课文→新授→小结"的阅读顺序自然流动。视觉层次更清晰。
+左侧课文正文(固定)+ 文本研习批注,右侧教学流程时间线(编号 1-9 按顺序)。点击时间线节点展开编辑抽屉。最贴近传统教案本格式,结构清晰。
+正文中嵌入占位符标记(特殊符号),默认接近透明,选中节点时完整显示
+ +选择占位符在正文中的视觉呈现方式
+①②③④⑤ — 与节点编号对应,简洁清晰
+💡📝📚✏️📌 — 与节点类型图标一致,直观
+● — 极简,颜色对应节点,不干扰阅读
+【1】【2】【3】— 类似脚注标记,学术感
+范围锚定(选文本)vs 点锚定(插入占位符)— 默认/选中状态对比
+ + +| 特性 | +范围锚定(选文本) | +点锚定(插入占位符) | +
|---|---|---|
| 触发方式 | +选中一段文字 → 关联节点 | +点击文本某位置 → 插入占位符 | +
| 视觉表现 | +文本背景色 = 节点颜色 | +插入标记符号(①②③) | +
| 默认透明度 | ++ opacity: 0 + (完全透明,和正常文本一样) + | ++ opacity: 0.3 + (半透明,隐约可见) + | +
| 选中时透明度 | ++ opacity: 0.3 + (背景色显示) + | ++ opacity: 1 + (不透明,完整显示) + | +
| 连线透明度 | ++ 默认 opacity: 0.1 · 选中时 opacity: 1 + | +|
| 适用场景 | +节点与具体文字内容相关(如赏析某词、讲解某句) | +节点对应文本某个位置(如在此处开始导入、在此处小结) | +
K47QDzI?FD`X6!ryVl(HdbOxOwtG6ID>FUCEm&^;QIY``X+SWhMu8QAR^Nu
zZR&L1+q(4+V6MDxo}Scg72j@LKy8c!1`hmbS5Fk?) %{AXs0O+`zv4@xUYffKPt<$LgUd^^^73j@HlRqTw(>o)M$4QOmT=
zcPpFfD~hq5V}Jf|HZb|Ci2Fe*7qa2;Wd(N3`zdlV-1}2JFM<-HWy00S;E^YlU{Gv7
zKrC~XdlTpGQ7Zf>8;p9>;wr*ejcoy`kf>EN3zMXCx()+?FS`+C T}&PuYZ?%x>IK(Q-5QF<3tq67N5({?qF4&{PK--2W50695l&r
z6Y2t6IMqNPe#98>F%9!mcGasvLKm|}HY$Qm8?lsnk=&T~*h7U2lK2ohr{mD1#Xz4a5b#mYv6&$Y-+l
z<;Dcub3L`Uhy*0t98NEC3?#9Ig)(15>*o)LMBu+raI-d=sRMA;c3xRrllMu={(eD~
zzVI9)Wx6;*?8S%7m(a3o?*L2G7s<2?xnM-~YELY072rXoPJZm>bSVSwpSp2go}IA_
zx8bH6`!eQ^I#l{-+NRz#u{A2w@o+5#BJ*)C%K_pY-#g(`H_u)YCzo^jtsnMe!2zYpnA;~XU`lcMS=i*S}yX?>rcY-IO6-TdrSeAx4(Zk}RBfieSXg9Jd
zWBiJ@y5-s$Li(=F!SVK&@e>T&aAm>Qqt3tYw?|ZJW&$$~4M1NiYv8W@I^Tb;Ff3_0
z?!*&FJ|F4r^1o__&@oPnO{&DrPRQ*O!cUUi6K43UEt{uHg0g6cNd#SV5#RTLg-k0e
zN8ygc-=XintK&%a#*zk=Rz2P@y#LxATWHyu2
=7C}>sLy&}^wEAj20=%s=x$3K8&}xn
z@TW-G