Files
railwaysystem/docs/database-v2/06_review_round1_changes.md
T

8.6 KiB
Raw Blame History

RailwaySystem 数据库 V2 DDL Review 修订记录表 (Round 1)

评审周期:Round 1
评审基线:高级技术负责人第一轮人工 Review 意见
状态:已全部闭环解决 (100% Resolved)


修改明细汇总表

问题编号 模块分类 原问题描述 涉及修改文件 具体修改内容与工程落地 解决状态
REV-01 P0 架构 破坏性迁移脚本无事务边界,遇错可能部分提交;包含客户端 \echo 指令 001~009, 05_execution_contract.md 所有物理 DDL 脚本全面使用 BEGIN ... COMMIT 包裹,彻底删除 \echo 改造为纯 SQL,建立统一执行契约文档 已解决
REV-02 P0 基线 缺乏迁移前置环境基线校验,可能在未知或已被破坏的环境中误执行 000_preflight.sql 新增前置纯只读检查脚本,强校验当前环境必须精确符合 Phase 0.5 状态(14表、行数、触发器等),任何不符立即抛出异常中止 已解决
REV-03 P0 备份 001 脚本使用 DROP TABLE IF EXISTS bak_v1_*,误执行可能覆盖最初 V1 备份 001_backup_current_schema.sql 增加强防重校验,若已存在任意 bak_v1_* 表立即抛异常阻断,严禁自动 DROP 覆盖既有历史备份 已解决
REV-04 P0 回滚 CTAS 无法保留约束、默认值、触发器和 Identity,不能作为回滚结构来源 rollback/000_phase05_exact_schema.sql, rollback/002, rollback/003 新增标准 Phase 0.5 完整物理 DDL;重构回滚脚本,严格基于真实 DDL 重建结构,仅用 bak_v1_* 还原数据,解耦结构与数据 已解决
REV-05 P0 验收 010_verify 很多检查仅输出文本,最终未强行阻断,存在假阳性漏报隐患 010_verify.sql 重构为真正的“失败即失败”,逐表、逐列、逐外键(删除规则)、逐唯一约束、逐索引进行 PL/pgSQL 强断言,出现任何不符立即抛异常终止 已解决
REV-06 字段规范 train_lesson.t_id 原定义为可空,与排课必要性要求冲突 002_create_new_tables.sql 将 train_lesson.t_id 设为 VARCHAR(32) NOT NULL,并在 010 中强断言 已解决
REV-07 字段规范 train_teacher 新增的 status 与 del_flag 未在迁移后固化为 NOT NULL 008_migrate_teacher.sql 迁移历史教师数据并完成数据完整性校验后,显式执行 ALTER COLUMN SET NOT NULL 已解决
REV-08 字段规范 train_student_score.score 存在未经确认的 DEFAULT 0,掩盖未录入状态 002_create_new_tables.sql, 005_constraints.sql 删除 DEFAULT 0,保留 NOT NULL,增加 CHECK (score >= 0.00);未录成绩不建行,0 分代表真实得分 已解决
REV-09 字段规范 宿舍表 dorm_floor 默认值 '1' 和 capacity 默认值 4 属于 AI 猜测 003_alter_master_tables.sql, 005_constraints.sql 移除所有业务默认值猜测,字段保持 NOT NULL 由管理员录入,增加 CHECK (capacity > 0) 约束 已解决
REV-10 字段规范 train_electronic_board.board_name 包含 DEFAULT '' 空串伪造合法值 003_alter_master_tables.sql 彻底移除 DEFAULT '',改为 VARCHAR(100) NOT NULL,由用户录入明确设备名 已解决
REV-11 业务语义 学员来源出现“统招学员”等高校概念,两处 source_type 含义含糊 002, 003, 007_dicts.sql 彻底剥离高校术语,区分:student.source_type 为主档来源(管理员/Excel/平台同步);enrollment.source_type 为参训名单来源(指派/报名/推荐/调训) 已解决
REV-12 业务语义 教学资源类型字典与 V2 冻结稿存在分类差异 002_create_new_tables.sql, 007_dicts.sql 严格对齐 V2 冻结稿:1文档, 2视频, 3 3D模型, 4 VR资源, 5外部教学链接, 6其他 已解决
REV-13 约束安全 学习记录部分唯一索引当 source_system = NULL 且 source_event_id != NULL 时发生幂等逃逸 004, 005, 006_indexes.sql 索引条件修正为双非空 WHERE source_system IS NOT NULL AND source_event_id IS NOT NULL;增加 CHECK 约束强制单号非空时系统名必填 已解决
REV-14 依赖解耦 脚本滥用 DROP TABLE ... CASCADE 掩盖未预期依赖 004, 009, rollback 迁移与回滚脚本全面显式解除已知约束,改用常规 DROP TABLE,禁止使用 CASCADE 掩盖隐式依赖 已解决
REV-15 数据一致 排课场地类型与教室/实训场地未在数据库层实现单行互斥;学时时间未核验先后 002, 004, 005_constraints.sql train_lesson 增加 chk_lesson_venue 互斥 CHECK;train_study_duration 增加 end_time >= start_time CHECK 约束 已解决
REV-16 风险扩展 风险报告需要补充跨班级关联、班牌一致性、宿舍重叠计算等高级业务风险 04_risk_review.md 在文档中新增 R-11 至 R-15 五项重大业务与并发一致性风险深度剖析 已解决
REV-17 执行控制 结构迁移阶段执行 007_dicts 会污染空库测试基线 02_migration_plan.md, 05_execution_contract.md 正式明确 007 在本阶段暂不执行,等后续 API/权限设计阶段统一执行 已解决