Implement new application functionality and supporting components

This commit is contained in:
2026-07-20 08:05:34 +08:00 Unverified
parent 1ed3b6722f
commit 5e6b83b2b2
7 changed files with 2246 additions and 114 deletions
+25 -6
View File
@@ -1,6 +1,6 @@
# 衡准 · 考试信息管理系统
一个完整可运行的双角色考试信息管理系统,使用 Node.js 后端;本地开发采用 SQLite,生产环境支持 MySQL 8.4。
一个完整可运行的分级权限考试信息管理系统,使用 Node.js 后端;本地开发采用 SQLite,生产环境支持 MySQL 8.4。
## 已实现功能
@@ -23,6 +23,16 @@
### 管理后台
- 超级、校级、班级三级管理员,同一级支持多个账号
- 超级管理员管理全局事务,并可监督、修改、退回全部审批流程
- 校级管理员只管理本校考生和报名流程,并提交本校考点、考场档案变更
- 班级管理员只读查看本班考生、成绩和报名状态
- 考生信息修改、考试报名、考点考场变更使用可配置的多步骤审批流程
- 当前处理人可将流程转交给同范围的同级管理员
- 自定义报名号生成规则,可组合年份、学校代码、性别、固定值和流水号
- 按考试、学校筛选,批量为已审核且缺号的报名记录生成报名号
- 结构化考点与考场档案,包含代码、负责人、应急电话、开放时间、交通、楼栋、楼层、容量、座位区间、类型和状态
- 考点新增及考点/考场修改先形成申请快照,审批通过后才整体更新正式档案
- 考务指标与审计日志
- 考生资料审核、通过或退回修改
- 考试报名及科目审核
@@ -41,6 +51,8 @@
- 规范关系模型、外键、唯一约束和业务索引
- 业务写入与审计日志使用原子事务提交
- 关键管理操作审计日志
- 组织、学校、班级三级数据范围在服务端强制过滤
- 审批实例、当前责任人、转交和监督操作全程留痕
- 桌面端与移动端响应式布局
- 零第三方运行时依赖
@@ -55,7 +67,7 @@ npm start
打开 <http://127.0.0.1:4173>。
本地开发无需额外配置,首次运行会自动创建 `data/exam.sqlite` 和完整关系型数据库结构。当前处于开发阶段,不兼容或导入旧版 JSON/单表数据库;更改表结构后请删除本地 SQLite 文件并重新启动
本地开发无需额外配置,首次运行会自动创建 `data/exam.sqlite` 和完整关系型数据库结构。当前处于开发阶段,不兼容旧版 JSON/单表数据库;已有关系型数据库会在启动时自动升级到 v3,补充分级权限、报名号、结构化考场和变更审批结构
## 数据库配置
@@ -78,15 +90,18 @@ npm start
```sql
CREATE DATABASE exam_information CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
CREATE USER 'exam_app'@'%' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT SELECT, INSERT, UPDATE, CREATE ON exam_information.* TO 'exam_app'@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON exam_information.* TO 'exam_app'@'%';
```
启动应用时设置连接信息,应用会自动创建以下关系表并初始化演示数据:
- `users``candidate_profiles`
- `schools``school_classes``users``candidate_profiles`
- `exams``exam_subjects`
- `registrations``registration_subjects``admit_cards`
- `results``notices``audit_logs`
- `test_centers``test_rooms``center_change_requests``center_change_rooms`
- `number_rules``number_rule_segments`
- `workflow_definitions``workflow_steps``workflow_instances``workflow_actions`
- `organization``schema_metadata`
所有关联均有外键约束,账号、证件号、考试代码、报名关系、准考证号和单科成绩均有对应唯一约束。
@@ -109,7 +124,11 @@ npm start
| 角色 | 账号 | 密码 |
| --- | --- | --- |
| 管理员 | `admin` | `Admin123!` |
| 超级管理员 | `admin` | `Admin123!` |
| 超级管理员(监督演示) | `supervisor` | `Admin123!` |
| 校级管理员 | `school_admin` | `School123!` |
| 同校校级管理员(转交演示) | `school_admin_2` | `School123!` |
| 班级管理员 | `class_admin` | `Class123!` |
| 考生 | `13800138000` | `Candidate123!` |
## 自动化测试
@@ -118,7 +137,7 @@ npm start
npm test
```
测试使用独立临时 SQLite 数据库,覆盖注册、审核、多科目报名、准考证生成与下载、通知发布、成绩发布和权限隔离完整流程。
测试使用独立临时 SQLite 数据库,覆盖三级管理员数据范围、两级审批、同级转交、超级管理员监督退回、报名号规则与筛选批量生成、结构化考点考场及变更审批、班级只读、多科目报名、准考证和成绩完整流程。
## 项目结构