feat(web): migrate student progress workflows

Add React experiences for academic planning simulations, published physical fitness results, degree award decisions, and graduation clearance tracking. Wire student navigation and document the migrated API contracts.
This commit is contained in:
biss authored and biss committed 2026-10-03 21:38:14 +08:00
1 parent 1be3f7cbbf
commit adeffce03b
9 files changed
+117

No files matched your search

+4
View File
@@ -27,5 +27,9 @@
| `/other-exams` | 其他考试 | Student | 最佳成绩、历次考试、通过/等级/分数制结果 | verification | | `/other-exams` | 其他考试 | Student | 最佳成绩、历次考试、通过/等级/分数制结果 | verification |
| `/makeup-exams` | 补考安排 | Student | 已发布场次、补考原因、考场、座位和成绩 | verification | | `/makeup-exams` | 补考安排 | Student | 已发布场次、补考原因、考场、座位和成绩 | verification |
| `/evaluations` | 教学评价 | Student | 开放任务、动态评分维度、一次性提交 | verification | | `/evaluations` | 教学评价 | Student | 开放任务、动态评分维度、一次性提交 | verification |
| `/academic-planning` | 学业规划与毕业模拟 | Student | 未来学期排课、下学期建议、先修冲突、负荷和毕业时间模拟 | verification |
| `/physical-fitness` | 我的体质健康 | Student | 已发布学年、单项成绩、标准分、附加分和综合等级 | verification |
| `/degree-awards` | 我的学位授予 | Student | 正式发布结论、绩点门槛、规则或人工复核说明 | verification |
| `/graduation-clearance` | 我的毕业离校 | Student | 跨部门事项、必办标记、办结/豁免状态和整体进度 | verification |
后续从 `web/src/router/index.ts` 逐条补全。只有关键合同和各状态验收完整后,状态才能更新为 `complete`。 后续从 `web/src/router/index.ts` 逐条补全。只有关键合同和各状态验收完整后,状态才能更新为 `complete`。
+1
View File
@@ -37,6 +37,7 @@ npm.cmd run build
- 迁移学生 `/my-curriculum` 培养方案进度、`/academic-overview` 学业排名趋势与 `/free-classrooms` 空闲教室查询。 - 迁移学生 `/my-curriculum` 培养方案进度、`/academic-overview` 学业排名趋势与 `/free-classrooms` 空闲教室查询。
- 批量迁移学生校历、学籍异动、电子凭证、毕业审核和学费分项缴纳流程。 - 批量迁移学生校历、学籍异动、电子凭证、毕业审核和学费分项缴纳流程。
- 迁移学生其他考试成绩、补考安排和教学评价提交闭环。 - 迁移学生其他考试成绩、补考安排和教学评价提交闭环。
- 迁移学生学业规划与毕业模拟、体质健康、学位授予和毕业离校进度。
## 迁移纪律 ## 迁移纪律
+8
View File
@@ -28,6 +28,10 @@ const AcademicCalendarPage = lazy(() => import('../pages/AcademicCalendarPage'))
const OtherExamsPage = lazy(() => import('../pages/OtherExamsPage')) const OtherExamsPage = lazy(() => import('../pages/OtherExamsPage'))
const MakeupExamsPage = lazy(() => import('../pages/MakeupExamsPage')) const MakeupExamsPage = lazy(() => import('../pages/MakeupExamsPage'))
const EvaluationsPage = lazy(() => import('../pages/EvaluationsPage')) const EvaluationsPage = lazy(() => import('../pages/EvaluationsPage'))
const AcademicPlanningPage = lazy(() => import('../pages/AcademicPlanningPage'))
const PhysicalFitnessPage = lazy(() => import('../pages/PhysicalFitnessPage'))
const DegreeAwardsPage = lazy(() => import('../pages/DegreeAwardsPage'))
const GraduationClearancePage = lazy(() => import('../pages/GraduationClearancePage'))
const SsoCallbackPage = lazy(() => import('../pages/SsoCallbackPage')) const SsoCallbackPage = lazy(() => import('../pages/SsoCallbackPage'))
const SsoBindPage = lazy(() => import('../pages/SsoBindPage')) const SsoBindPage = lazy(() => import('../pages/SsoBindPage'))
const AppShell = lazy(() => import('../layout/AppShell')) const AppShell = lazy(() => import('../layout/AppShell'))
@@ -90,6 +94,10 @@ function AppRoutes() {
<Route path="/other-exams" element={<OtherExamsPage />} /> <Route path="/other-exams" element={<OtherExamsPage />} />
<Route path="/makeup-exams" element={<MakeupExamsPage />} /> <Route path="/makeup-exams" element={<MakeupExamsPage />} />
<Route path="/evaluations" element={<EvaluationsPage />} /> <Route path="/evaluations" element={<EvaluationsPage />} />
<Route path="/academic-planning" element={<AcademicPlanningPage />} />
<Route path="/physical-fitness" element={<PhysicalFitnessPage />} />
<Route path="/degree-awards" element={<DegreeAwardsPage />} />
<Route path="/graduation-clearance" element={<GraduationClearancePage />} />
<Route path="/" element={<Navigate to="/dashboard" replace />} /> <Route path="/" element={<Navigate to="/dashboard" replace />} />
</Route> </Route>
<Route path="*" element={<Navigate to="/dashboard" replace />} /> <Route path="*" element={<Navigate to="/dashboard" replace />} />
Loaded 3 of 9 files, more files were not shown because too many files have changed in this diff. Show more