feat(credit): 增加社会实践学分及学分预警模块
- 实现社会实践学分的提交、撤回、作废、删除、汇总及导出功能 - 审核通过后自动发放学分,确保幂等性 - 新增学分预警功能,支持缺口计算、级别判定和月度去重推送 - 设计四级审核流程,审核状态变更后自动回调处理 - 支持教务处模板导出,输出标准xls格式文件 - 提供前端页面替换原占位页,提升用户体验 - 补充每日定时任务执行学分预警重算,支持配置开关 - 修复审核回写逻辑,避免误更新不存在的表数据
This commit is contained in:
@@ -192,3 +192,60 @@ src/views/system/{messageTemplate,messageLog}/
|
||||
### 8.4 统一最新审核记录排序
|
||||
|
||||
`reviewStatusTag` 原按 `id` 取最新,`utils/review.ts` 按 `createTime + id`,并行审核下两处可能给出矛盾结论。现已抽出 `getLatestReview()` 统一为「sortNumber → createTime → id」,两个调用方共用。
|
||||
|
||||
|
||||
## 九、P1 首批交付:社会实践学分 + 学分预警
|
||||
|
||||
### 9.1 社会实践学分
|
||||
|
||||
**后端**(`com.gxwebsoft.gxmu.credit`)
|
||||
|
||||
| 文件 | 说明 |
|
||||
| --- | --- |
|
||||
| `PracticeCreditController` | 提交/撤回/作废/删除/汇总/导出 |
|
||||
| `PracticeCreditService` + `Impl` | 校验、状态回写、**通过后自动发放学分** |
|
||||
| `PracticeCreditApplyParam` | 查询参数 |
|
||||
|
||||
**审核接入**:模块名 `gxmu_practice_credit`,走既有 `gxmu_review_list` 引擎,四级审核(个人 → 班级 → 二级学院团委 → 校团委)在「审核流配置」里绑定即可。`ReviewListController` 审核完成后回调:
|
||||
|
||||
1. `syncReviewStatus` 回写申报状态;
|
||||
2. `grantCreditWhenApproved` 在通过时写一条 `gxmu_credit_record`(`source=practice`、`external_id=practice-{id}`,幂等)。
|
||||
|
||||
**教务处模板导出**:`POST /api/gxmu/practice-credit/export`,输出 14 列 xls(序号/学号/姓名/学院/班级/学年/活动名称/活动类型/起止日期/实践内容/担任角色/核定学分/审核状态),走既有「生成文件 → FileRecord 入库 → 返回下载地址」模式。
|
||||
|
||||
**前端**:`/growth/practiceCredit`,替换原占位页。
|
||||
|
||||
### 9.2 学分预警
|
||||
|
||||
| 文件 | 说明 |
|
||||
| --- | --- |
|
||||
| `CreditWarningService` + `Impl` | 缺口计算、级别判定、月度去重推送 |
|
||||
| `CreditWarningController` | 列表/汇总/重算/推送 |
|
||||
| `CreditWarningTask`(新增) | 每天 02:30 全量重算,`gxmu.credit-warning.enabled` 可关 |
|
||||
|
||||
**级别规则**:`gap/required ≥ 0.6 且 gap ≥ 2` → danger;`≥ 0.3` → warn;其余 normal。
|
||||
叠加绝对门槛是因为只看比例会把「应修 1 分、缺 1 分」也判成严重。
|
||||
|
||||
**去重**:同一学生同一类别每个自然月只推一条站内消息(`notify_month` 记录)。
|
||||
|
||||
**闭环**:补分后重算会自动清理已达成类别的预警(逻辑删除),不会永远挂着。
|
||||
|
||||
**前端**:`/growth/creditWarning`,替换原占位页。
|
||||
|
||||
### 9.3 验证记录
|
||||
|
||||
| 场景 | 结果 |
|
||||
| --- | --- |
|
||||
| 社会实践缺附件提交 | 拒绝「请上传社会实践证明材料」✓ |
|
||||
| 正常提交 → 生成审核节点 | ✓ |
|
||||
| 审核通过 → 申报状态置 2 | ✓ |
|
||||
| 审核通过 → 学分自动入账(2.00,source=practice) | ✓ |
|
||||
| 重复审核同一条 → 学分不重复发 | ✓(仍 1 条 2.00) |
|
||||
| 学分类别缺口识别 | 6 类全部识别 ✓ |
|
||||
| 补分后重算 → 该类别预警清除 | ✓(有效预警 6→5) |
|
||||
| 级别判定 | 缺 2 分 danger、缺 1 分 warn ✓ |
|
||||
| 预警推送 → 第一次 5 条、第二次 0 条 | 月度去重生效 ✓ |
|
||||
|
||||
### 9.4 修复记录
|
||||
|
||||
初版曾把 `gxmu_practice_credit` 加进 `DeclareGuardServiceImpl` 的模块列表,导致审核回写时按「模块名=表名」去更新不存在的表。已移除——社会实践用独立表 `gxmu_practice_credit_apply`,状态回写由自己的 service 负责。
|
||||
|
||||
Reference in New Issue
Block a user