feat(web): migrate plugin management

This commit is contained in:
biss committed 2026-10-04 08:35:50 +08:00
1 parent e5c2a8b023
commit eead9ed7f2
6 files changed
+28 -1

No files matched your search

+1
View File
@@ -57,6 +57,7 @@
| `/classroom-repairs` | 教室报修与维修 | SuperAdmin、AcademicAdmin、MaintenanceAdmin、MaintenanceStaff | 工单筛选、分派/开工/完工、详情、设备档案与扫码报修二维码 | verification | | `/classroom-repairs` | 教室报修与维修 | SuperAdmin、AcademicAdmin、MaintenanceAdmin、MaintenanceStaff | 工单筛选、分派/开工/完工、详情、设备档案与扫码报修二维码 | verification |
| `/grades/:sheetId/statistics` | 课程成绩统计 | 具备该成绩单数据范围的已登录用户 | 班级/专业/学院/全校分数分布、对比、课程讨论与互动 | verification | | `/grades/:sheetId/statistics` | 课程成绩统计 | 具备该成绩单数据范围的已登录用户 | 班级/专业/学院/全校分数分布、对比、课程讨论与互动 | verification |
| `/event-analytics` | 运行数据分析 | SuperAdmin、AcademicAdmin、CollegeAdmin、Leader | ClickHouse 考勤、成绩与全校范围访问审计只读聚合 | verification | | `/event-analytics` | 运行数据分析 | SuperAdmin、AcademicAdmin、CollegeAdmin、Leader | ClickHouse 考勤、成绩与全校范围访问审计只读聚合 | verification |
| `/plugins` | 统一插件平台 | SuperAdmin | 运行状态、签名包暂存/激活/回滚、无数据删除的安全停用 | verification |
| `/activate` | 学生账号激活 | 公开 | 学籍选项、身份匹配、强密码和一次性激活 | verification | | `/activate` | 学生账号激活 | 公开 | 学籍选项、身份匹配、强密码和一次性激活 | verification |
| `/verify/:verificationCode?` | 电子凭证验真 | 公开 | 唯一编号、实时状态、签发信息和 PDF 哈希 | verification | | `/verify/:verificationCode?` | 电子凭证验真 | 公开 | 唯一编号、实时状态、签发信息和 PDF 哈希 | verification |
| `/classroom-repairs/report/:classroomId` | 教室扫码报修 | 公开 | 教室设备、故障类别、联系方式和工单提交 | verification | | `/classroom-repairs/report/:classroomId` | 教室扫码报修 | 公开 | 教室设备、故障类别、联系方式和工单提交 | verification |
+1
View File
@@ -55,6 +55,7 @@ npm.cmd run build
- 迁移场地信息展牌管理,支持展牌链接、批量导出与定向公告投放。 - 迁移场地信息展牌管理,支持展牌链接、批量导出与定向公告投放。
- 迁移教室报修与维修后台,覆盖工单分派、维修状态闭环、设备档案与场地报修码。 - 迁移教室报修与维修后台,覆盖工单分派、维修状态闭环、设备档案与场地报修码。
- 迁移课程成绩统计与运行数据分析,保留范围对比、课程讨论互动和 ClickHouse 只读聚合。 - 迁移课程成绩统计与运行数据分析,保留范围对比、课程讨论互动和 ClickHouse 只读聚合。
- 迁移统一插件平台,支持运行状态管理及签名包暂存、激活与回滚。
## 迁移纪律 ## 迁移纪律
+2
View File
@@ -55,6 +55,7 @@ const VenueDisplaysPage = lazy(() => import('../pages/VenueDisplaysPage'))
const ClassroomRepairsPage = lazy(() => import('../pages/ClassroomRepairsPage')) const ClassroomRepairsPage = lazy(() => import('../pages/ClassroomRepairsPage'))
const CourseGradeStatisticsPage = lazy(() => import('../pages/CourseGradeStatisticsPage')) const CourseGradeStatisticsPage = lazy(() => import('../pages/CourseGradeStatisticsPage'))
const EventAnalyticsPage = lazy(() => import('../pages/EventAnalyticsPage')) const EventAnalyticsPage = lazy(() => import('../pages/EventAnalyticsPage'))
const PluginsPage = lazy(() => import('../pages/PluginsPage'))
const AccountActivationPage = lazy(() => import('../pages/AccountActivationPage')) const AccountActivationPage = lazy(() => import('../pages/AccountActivationPage'))
const OfficialDocumentVerifyPage = lazy(() => import('../pages/OfficialDocumentVerifyPage')) const OfficialDocumentVerifyPage = lazy(() => import('../pages/OfficialDocumentVerifyPage'))
const ClassroomRepairReportPage = lazy(() => import('../pages/ClassroomRepairReportPage')) const ClassroomRepairReportPage = lazy(() => import('../pages/ClassroomRepairReportPage'))
@@ -158,6 +159,7 @@ function AppRoutes() {
<Route path="/classroom-repairs" element={<ClassroomRepairsPage />} /> <Route path="/classroom-repairs" element={<ClassroomRepairsPage />} />
<Route path="/grades/:sheetId/statistics" element={<CourseGradeStatisticsPage />} /> <Route path="/grades/:sheetId/statistics" element={<CourseGradeStatisticsPage />} />
<Route path="/event-analytics" element={<EventAnalyticsPage />} /> <Route path="/event-analytics" element={<EventAnalyticsPage />} />
<Route path="/plugins" element={<PluginsPage />} />
<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 6 files, more files were not shown because too many files have changed in this diff. Show more