feat/archive-class-roster
main
报读关联班级 classId 与花名册单向同步、档案编辑 ER_BAD_FIELD_ERROR 修复、成绩/班级均分越界校验、迁移改官方 migrationsRun 模式
- student_enrollments 新增 class_id 列(迁移幂等),报读/换班/归档/删除时同步 class_student 成员状态 - 班级名以班级表为准快照,防止前后端漂移;班级不存在直接 400 - 迁移 runner 改 glob 自动发现(ts-node/dist 均可),新增迁移文件免手改清单
findOne+select+eager join 时 TypeORM 0.3.x 生成缺 id 列的 distinctAlias 子查询 (Unknown column 'distinctAlias.xxx_id'),所有档案子记录编辑/删除均 500。 改回全列读取(单行主键查询成本可忽略)
- 班级名称列改为班级下拉(选项禁用已报读班级),保存时映射 className+classId 双字段 - 已有关联的班级名渲染为可点击链接跳转班级详情
score/class_avg 为 decimal(5,2)(上限 999.99)、rank 为 int,越界值直写库抛 ER_WARN_DATA_OUT_OF_RANGE。DTO 加 @Max 与列宽对齐返回 400 清晰报错, 前端单元格与表单 InputNumber 同步加 max 阻止输入
migrations 配置未设 migrationsRun 从不执行,手写 12 类清单已过期(缺 2 个迁移), 删除后迁移统一由 runner glob 自动发现与 datasource.ts CLI 管理
TypeOrmModule 连接后自动执行未跑迁移(glob 自动发现,ts-node/dist 均匹配), 删除 main.ts 启动钩子与独立 DataSource。部署脚本显式 migration:run 保留: 迁移失败在 PM2 重载前中止,不中断在跑服务;与 migrationsRun 幂等共存
No dependencies set.
The note is not visible to the blocked user.
报读关联班级 classId 与花名册单向同步、档案编辑 ER_BAD_FIELD_ERROR 修复、成绩/班级均分越界校验、迁移改官方 migrationsRun 模式
Pull request closed