diff --git a/docs/BRD_IMPLEMENTATION_AUDIT.md b/docs/BRD_IMPLEMENTATION_AUDIT.md index 109dcdb3..d93f3952 100644 --- a/docs/BRD_IMPLEMENTATION_AUDIT.md +++ b/docs/BRD_IMPLEMENTATION_AUDIT.md @@ -1,5 +1,7 @@ # BRD 功能审查与未完成项记录 +- 2026-07-15 BRD 生产迁移合同防回归:发现版本化 AIHR MySQL 迁移虽已全部写入 Runbook,但此前没有测试保证新增 `aihr_*_mysql8.sql` 必须同步进入执行清单;现将目录与 `BRD_PRODUCTION_MIGRATION_RUNBOOK.md` 的覆盖检查接入 schema migration 测试。该检查只验证发布合同,不执行生产迁移,也不替代备份、回滚和逐脚本核验。 + - 2026-07-15 BRD 严格门禁旧案例结构兼容修复:`scripts/demo-check.sh` 原先在 `aihr_case_record` 整表或 `learning_points/supervisor_comment` 字段缺失时直接执行查询,可能以 Unknown column/table 中断,无法输出真正的 schema 门槛;现先探测表和字段,缺失时以 `stored_cases=0`、`case_media_schema=0/2`、`case_learning_schema=0/2` 继续判定,新增旧表/无表回归。该修复只改善迁移缺口可见性,不放松案例 `20` 条和字段 `2/2` 门槛。 - 2026-07-15 BRD 内容与本地开发库对齐复核:仓库基础 SQL 和 `aihr_20260714_prompt_template_seed_mysql8.sql` 均已声明 6 个内置 Prompt,但本地 `ry-vue` 此前只执行到 5 个,导致严格门禁的 `prompt_templates=6/6` 在代码已具备时仍可能被本地库状态误导;本轮仅在本地开发库执行该幂等迁移,复核得到生活顾问启用场景 `14` 条、服务推介/增值 `1` 条、日常服务 `1` 条、住宅 SOP 附件 `5` 条、内置 Prompt `6` 条。未修改生产数据库;生产仍需正式迁移窗口和发布证据。 diff --git a/scripts/tests/aihr-schema-migrations.test.sh b/scripts/tests/aihr-schema-migrations.test.sh index 44adf57e..d0ec1acb 100755 --- a/scripts/tests/aihr-schema-migrations.test.sh +++ b/scripts/tests/aihr-schema-migrations.test.sh @@ -11,6 +11,14 @@ MYSQL_CONTAINER="wygj-mysql" DB="wygj_aihr_schema_test_$$" LEGACY_DB="wygj_aihr_candidate_legacy_test_$$" +while IFS= read -r migration; do + migration_name="$(basename "$migration")" + grep -Fq "backend/script/sql/update/$migration_name" "$ROOT_DIR/docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md" || { + echo "FAIL: AIHR migration missing from production Runbook: $migration_name" >&2 + exit 1 + } +done < <(find "$ROOT_DIR/backend/script/sql/update" -maxdepth 1 -type f -name 'aihr_*_mysql8.sql' -print | sort) + mysql() { docker exec -i "$MYSQL_CONTAINER" mysql -uroot -proot --default-character-set=utf8mb4 "$@" }