Files
hzdyjs/docs/开发文档/寝室检查扣分条例生产执行说明-20261020.md
“wuzhen”andCursor 7cea0566ac feat(xg): 请假审批修复、点名今日汇总与寝室扣分条例脚本
同步请假/销假审批上下文与状态、宿舍点名今日汇总与假期留宿标识,并补充寝室检查扣分条例生产 SQL 与执行说明。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 18:01:12 +08:00

138 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 寝室检查扣分条例生产执行说明(2026-10-20)
## 目标
按宿管《扣分条例10月15日》,把寝室卫生检查可选扣分项切换为新条例(共 **60** 项)。
系统加载规则:寝室检查调用 `listByAreaType?areaType=1`,只显示
`xskh_discipline_type` 中 **区域类型=宿舍区(1)** 且 **状态=正常(0)** 的违纪类型。
**不需要发版**,只改生产库数据。
---
## 交付文件
| 文件 | 说明 |
|------|------|
| `backend/script/sql/update/update_20261020_dorm_hygiene_deduction_types.sql` | 备份 → 停用旧宿舍区类型 → 插入新条例 |
| 本文档 | 生产执行步骤与验收 |
---
## 执行前确认
1. 已与宿管确认《扣分条例10月15日》为现行标准。
2. **「吸毒、贩毒」** 原文无分值,脚本暂按 **2–12** 录入(见该条 `remark`),确认后可改。
3. 有生产库备份权限;建议低峰执行。
4. 准备好可回滚窗口(约 10–15 分钟)。
---
## 推荐执行步骤
### 第 1 步:全库备份(运维)
按现有规范做一次生产库逻辑备份 / 快照(至少包含 `xskh_discipline_type`)。
### 第 2 步:在测试库先跑一遍(强烈建议)
```bash
# 示例:在测试库执行整份脚本
mysql -h<测试主机> -u<用户> -p <库名> < backend/script/sql/update/update_20261020_dorm_hygiene_deduction_types.sql
```
核对输出:
- `bak_dorm_type_count` > 0(若原先没有宿舍区类型,可为 0)
- `new_active_dorm_types` = **60**
- 「仍启用的旧宿舍区类型」查询结果为 **空**
测试环境打开:寝室卫生检查 → 新建检查 → 扣分项列表应为新 60 项。
### 第 3 步:生产执行
1. 登录生产库(只读账号先跑「步骤1核对」SELECT,确认现状)。
2. 用有写权限账号**整文件执行**:
```bash
mysql -h<生产主机> -u<用户> -p <生产库名> < backend/script/sql/update/update_20261020_dorm_hygiene_deduction_types.sql
```
或在 Navicat / DBeaver 中打开该 SQL,**按步骤分段执行**(0→1→2→3→4→5),每步看结果再继续。
3. 确认:
```sql
SELECT COUNT(*) AS new_active_dorm_types
FROM xskh_discipline_type
WHERE area_type = '1' AND deleted = 0 AND status = '0'
AND type_code LIKE 'sskf202610_%';
-- 期望:60
```
### 第 4 步:业务验收
1. Web:**学生考核 → 违纪类型**,筛「宿舍区」,应看到 60 条新类型(编码 `sskf202610_*`)。
2. Web / 移动端:**寝室卫生检查** 新建一条,扣分项下拉为新条例;选一项默认分为最低分,可在区间内改。
3. 旧历史检查记录仍可打开(旧类型已停用但未删)。
### 第 5 步:通知宿管
告知:从即日起检查按新条例扣分;若某项分值需调整,在「违纪类型」里改最低/最高分即可,不必再跑脚本。
---
## 脚本做了什么(摘要)
1. **备份**当前宿舍区类型 → `xskh_discipline_type_bak_20261020`
2. **停用**旧宿舍区启用类型(`status=1`,不删)
3. **删除**未被子检查引用的本批次旧插入(便于重跑)
4. **插入** 60 条新类型(`area_type=1`,`type_category=1`,`status=0`)
5. **核对**查询
教学区违纪(`area_type=2`)**不动**。
---
## 回滚(出问题才用)
```sql
-- 1. 去掉本次新数据(若尚未被检查引用)
DELETE FROM xskh_discipline_type WHERE type_code LIKE 'sskf202610_%';
-- 2. 按备份恢复旧宿舍区类型状态
UPDATE xskh_discipline_type t
INNER JOIN xskh_discipline_type_bak_20261020 b ON b.id = t.id
SET t.status = b.status,
t.remark = b.remark,
t.update_time = NOW()
WHERE t.area_type = '1';
```
若新类型已被检查使用,不要 DELETE,改为把新类型 `status` 置停用,再恢复旧类型。
---
## 分类与条数
| 分类 | 编码前缀 | 条数 |
|------|----------|------|
| 卫生方面 | `sskf202610_ws_*` | 21 |
| 纪律方面 | `sskf202610_jl_*` | 16 |
| 重大违纪 | `sskf202610_zd_*` | 23 |
| **合计** | | **60** |
---
## 常见问题
**Q:执行后检查页还是旧项?**
刷新页面或重新进入检查;确认接口 `listByAreaType?areaType=1` 返回新数据。
**Q:能否只改几条、不全量切换?**
可以,改在后台「违纪类型」手工增删改;本脚本适合一次性对齐条例。
**Q:历史扣分记录会变吗?**
不会。历史明细仍引用旧 `discipline_type_id`,只是旧类型被停用,新检查不再可选。