feat(web): migrate student, public, and teacher workflows

Add React workflows for experiments, campus registration, student approvals, account activation, document verification, classroom repair, venue displays, and teacher rosters. Wire role-aware navigation while preserving existing API authorization boundaries.
This commit is contained in:
biss authored and biss committed 2026-10-03 21:38:14 +08:00
1 parent adeffce03b
commit b19c40f09a
17 files changed
+342

No files matched your search

+18
View File
@@ -32,6 +32,15 @@ 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 StudentExperimentsPage = lazy(() => import('../pages/StudentExperimentsPage'))
const StudentExperimentGradesPage = lazy(() => import('../pages/StudentExperimentGradesPage'))
const CampusRegistrationsPage = lazy(() => import('../pages/CampusRegistrationsPage'))
const StudentApprovalsPage = lazy(() => import('../pages/StudentApprovalsPage'))
const TeacherRosterPage = lazy(() => import('../pages/TeacherRosterPage'))
const AccountActivationPage = lazy(() => import('../pages/AccountActivationPage'))
const OfficialDocumentVerifyPage = lazy(() => import('../pages/OfficialDocumentVerifyPage'))
const ClassroomRepairReportPage = lazy(() => import('../pages/ClassroomRepairReportPage'))
const VenueDisplayPage = lazy(() => import('../pages/VenueDisplayPage'))
const SsoCallbackPage = lazy(() => import('../pages/SsoCallbackPage'))
const SsoBindPage = lazy(() => import('../pages/SsoBindPage'))
const AppShell = lazy(() => import('../layout/AppShell'))
@@ -71,6 +80,10 @@ function AppRoutes() {
<Route path="/login" element={<LoginPage />} />
<Route path="/sso/callback" element={<SsoCallbackPage />} />
<Route path="/sso/bind" element={<SsoBindPage />} />
<Route path="/activate" element={<AccountActivationPage />} />
<Route path="/verify/:verificationCode?" element={<OfficialDocumentVerifyPage />} />
<Route path="/classroom-repairs/report/:classroomId" element={<ClassroomRepairReportPage />} />
<Route path="/venue-display/:type/:id" element={<VenueDisplayPage />} />
<Route element={<ProtectedRoute />}>
<Route path="/dashboard" element={<DashboardPage />} />
<Route path="/account" element={<AccountPage />} />
@@ -98,6 +111,11 @@ function AppRoutes() {
<Route path="/physical-fitness" element={<PhysicalFitnessPage />} />
<Route path="/degree-awards" element={<DegreeAwardsPage />} />
<Route path="/graduation-clearance" element={<GraduationClearancePage />} />
<Route path="/experiments" element={<StudentExperimentsPage />} />
<Route path="/experiment-grades" element={<StudentExperimentGradesPage />} />
<Route path="/campus-registrations" element={<CampusRegistrationsPage />} />
<Route path="/approvals" element={<StudentApprovalsPage />} />
<Route path="/teacher-roster" element={<TeacherRosterPage />} />
<Route path="/" element={<Navigate to="/dashboard" replace />} />
</Route>
<Route path="*" element={<Navigate to="/dashboard" replace />} />