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

4.4 KiB
Raw Permalink Blame History

寝室检查扣分条例生产执行说明(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 步:在测试库先跑一遍(强烈建议)

# 示例:在测试库执行整份脚本
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. 用有写权限账号整文件执行:
mysql -h<生产主机> -u<用户> -p <生产库名> < backend/script/sql/update/update_20261020_dorm_hygiene_deduction_types.sql

或在 Navicat / DBeaver 中打开该 SQL,按步骤分段执行(0→1→2→3→4→5),每步看结果再继续。

  1. 确认:
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)不动。


回滚(出问题才用)

-- 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,只是旧类型被停用,新检查不再可选。