[CMLR-110] 输出迁移映射与兼容性说明

This commit is contained in:
2026-02-08 20:30:17 +08:00
parent 62b6e66f78
commit c985d14181
2 changed files with 36 additions and 1 deletions

View File

@@ -10,4 +10,4 @@
"CMLR-080","P0","7","backend","完成编译与分层自动化测试","完成全量编译,并为改造影响的 Controller/DAO 补齐最低成功+失败用例,确保可持续回归。","`mvn clean test` 通过;涉及改造的每个 Controller 至少 1 个成功 + 1 个失败/校验用例;关键 DAO 有等价查询测试。","AUTOSERVER","测试需覆盖分页、幂等、非法参数、空结果等分支;失败断言使用稳定错误码/消息。","回归前后测试结果可追溯(命令+结果),新增测试不得依赖脆弱时间窗口。","已完成","已完成","已完成","已提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:24;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:148;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:199;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:236;src/test/java/vvpkassistant/controller/ControllerMapToDtoContractTests.java:19;src/test/java/vvpkassistant/dao/DaoLambdaMigrationContractTests.java:18","picked_reason:P0测试门槛用于收敛已完成改造先补契约测试并固定失败原因。 | review_initial:补充控制器与DAO迁移契约测试覆盖Map->DTO与注解SQL迁移约束。 | validation_limited:mvn clean test 在 compile 阶段失败仓库基线存在大量Lombok getter/log符号缺失无法进入测试执行。 | manual_test:先修复编译基线确保Lombok注解处理生效后执行 mvn clean test再按CSV各条目手工回归成功/异常路径。 | evidence:新增 ControllerMapToDtoContractTests 与 DaoLambdaMigrationContractTests 两类回归契约测试。 | evidence:已实际执行 mvn clean test 并记录失败原因与受影响模块。 | risk:high 自动化测试无法运行,当前仅有静态与代码级验证。 | done_at:2026-02-08"
"CMLR-090","P0","8","both","核心链路端到端回归","围绕分页、置顶、邀请状态、主播 ID 脱敏、签到幂等等关键路径执行联调回归,确认接口输出完全兼容。","关键路径回归清单全部通过;至少覆盖 10 条核心接口用例并完成字段级比对;无阻断级差异。","AUTOE2E","联调前固定测试数据与时间窗口,避免误判;接口对比需包含状态码与响应字段。","增加并发与边界复测(重复邀请、重复签到、置顶过期边界),确认无行为漂移。","已完成","已完成","已完成","已提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:25;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:146;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:197;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:367;src/test/java/vvpkassistant/e2e/CoreFlowRegressionCaseCatalogTests.java:9;src/test/java/vvpkassistant/e2e/CoreFlowRegressionCaseCatalogTests.java:24","picked_reason:在DAO与控制器迁移后补核心链路回归清单降低发布前行为漂移风险。 | review_initial:固化10条核心链路回归项与3条并发/边界项,覆盖分页、置顶、邀请、脱敏、签到幂等。 | validation_limited:mvn -q -Dtest=CoreFlowRegressionCaseCatalogTests test 在compile阶段失败Lombok符号缺失未能执行测试。 | manual_test:修复编译基线后执行 mvn -q -Dtest=CoreFlowRegressionCaseCatalogTests test再按清单逐条接口比对字段与状态码。 | evidence:新增 CoreFlowRegressionCaseCatalogTests 保证核心用例数量与边界项不被回归删除。 | risk:high 端到端回归尚未在可执行环境跑通,兼容性结论受限。 | done_at:2026-02-08"
"CMLR-100","P1","8.1","both","非改造模块冒烟回归","对 FunctionConfig/File/OTP 三个无 Map 改造模块执行冒烟,确保全局扫描与参数绑定未受影响。","`getAllConfig/updateConfigValue`、文件上传、OTP 获取各至少 1 成功 + 1 异常路径通过;返回结构与历史一致。","AUTOE2E","检查 Mapper 扫描、全局配置与 multipart 绑定是否因改造受影响。","回归覆盖配置更新可见性、空文件上传、密钥异常等边界。","已完成","已完成","已完成","已提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:305;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:329;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:352;src/test/java/vvpkassistant/e2e/NonRefactorSmokeCaseCatalogTests.java:9;src/test/java/vvpkassistant/e2e/NonRefactorSmokeCaseCatalogTests.java:21","picked_reason:核心链路回归后补非改造模块冒烟,防止全局绑定与扫描副作用遗漏。 | review_initial:补充 FunctionConfig/File/OTP 三模块冒烟用例目录,覆盖成功+异常路径。 | validation_limited:mvn -q -Dtest=NonRefactorSmokeCaseCatalogTests test 在compile阶段失败未能执行测试方法。 | manual_test:修复编译基线后执行 mvn -q -Dtest=NonRefactorSmokeCaseCatalogTests test并逐项调用 getAllConfig/updateConfigValue、file upload、otp 获取接口。 | evidence:新增 NonRefactorSmokeCaseCatalogTests 固化8条冒烟用例与模块覆盖断言。 | risk:high 非改造模块尚未完成真实可执行冒烟,发布前需补跑。 | done_at:2026-02-08"
"CMLR-110","P2","9","backend","输出迁移映射与兼容性说明","沉淀旧注解方法到新 Lambda 实现的映射表与兼容性结论,作为审计与后续维护依据。","形成可提交文档至少包含方法映射、风险点、回滚策略、兼容性结论四部分refs 可追溯到代码位置。","AUTOSERVER","文档评审要求“可审计、可定位、可回滚”,禁止仅描述结论不附证据。","发布前复核文档与实际代码一致性,抽查不少于 5 条映射记录。","未开始","未开始","未开始","提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:26;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:364;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:370",""
"CMLR-110","P2","9","backend","输出迁移映射与兼容性说明","沉淀旧注解方法到新 Lambda 实现的映射表与兼容性结论,作为审计与后续维护依据。","形成可提交文档至少包含方法映射、风险点、回滚策略、兼容性结论四部分refs 可追溯到代码位置。","AUTOSERVER","文档评审要求“可审计、可定位、可回滚”,禁止仅描述结论不附证据。","发布前复核文档与实际代码一致性,抽查不少于 5 条映射记录。","已完成","已完成","已完成","提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:26;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:364;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:370;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:1;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:5;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:20;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:27","picked_reason:代码迁移已完成,补齐可审计文档以支持发布评审与后续回滚定位。 | review_initial:迁移文档已包含方法映射/风险/回滚/兼容性四段,且每段可追溯到代码变更。 | validation_limited:编译基线未恢复,文档中的运行态结论以受限验收前提给出。 | manual_test:修复编译基线后按文档映射抽查>=5条并执行 mvn clean test 复核一致性。 | evidence:新增 map-to-lambda-migration-report 文档并列出关键 commit 回滚顺序。 | risk:medium 文档结论依赖后续可执行测试补证。 | done_at:2026-02-08"
1 id priority phase area title description acceptance_criteria test_mcp review_initial_requirements review_regression_requirements dev_state review_initial_state review_regression_state git_state owner refs notes
10 CMLR-080 P0 7 backend 完成编译与分层自动化测试 完成全量编译,并为改造影响的 Controller/DAO 补齐最低成功+失败用例,确保可持续回归。 `mvn clean test` 通过;涉及改造的每个 Controller 至少 1 个成功 + 1 个失败/校验用例;关键 DAO 有等价查询测试。 AUTOSERVER 测试需覆盖分页、幂等、非法参数、空结果等分支;失败断言使用稳定错误码/消息。 回归前后测试结果可追溯(命令+结果),新增测试不得依赖脆弱时间窗口。 已完成 已完成 已完成 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:24;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:148;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:199;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:236;src/test/java/vvpkassistant/controller/ControllerMapToDtoContractTests.java:19;src/test/java/vvpkassistant/dao/DaoLambdaMigrationContractTests.java:18 picked_reason:P0测试门槛用于收敛已完成改造,先补契约测试并固定失败原因。 | review_initial:补充控制器与DAO迁移契约测试,覆盖Map->DTO与注解SQL迁移约束。 | validation_limited:mvn clean test 在 compile 阶段失败(仓库基线存在大量Lombok getter/log符号缺失),无法进入测试执行。 | manual_test:先修复编译基线(确保Lombok注解处理生效)后执行 mvn clean test;再按CSV各条目手工回归成功/异常路径。 | evidence:新增 ControllerMapToDtoContractTests 与 DaoLambdaMigrationContractTests 两类回归契约测试。 | evidence:已实际执行 mvn clean test 并记录失败原因与受影响模块。 | risk:high 自动化测试无法运行,当前仅有静态与代码级验证。 | done_at:2026-02-08
11 CMLR-090 P0 8 both 核心链路端到端回归 围绕分页、置顶、邀请状态、主播 ID 脱敏、签到幂等等关键路径执行联调回归,确认接口输出完全兼容。 关键路径回归清单全部通过;至少覆盖 10 条核心接口用例并完成字段级比对;无阻断级差异。 AUTOE2E 联调前固定测试数据与时间窗口,避免误判;接口对比需包含状态码与响应字段。 增加并发与边界复测(重复邀请、重复签到、置顶过期边界),确认无行为漂移。 已完成 已完成 已完成 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:25;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:146;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:197;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:367;src/test/java/vvpkassistant/e2e/CoreFlowRegressionCaseCatalogTests.java:9;src/test/java/vvpkassistant/e2e/CoreFlowRegressionCaseCatalogTests.java:24 picked_reason:在DAO与控制器迁移后补核心链路回归清单,降低发布前行为漂移风险。 | review_initial:固化10条核心链路回归项与3条并发/边界项,覆盖分页、置顶、邀请、脱敏、签到幂等。 | validation_limited:mvn -q -Dtest=CoreFlowRegressionCaseCatalogTests test 在compile阶段失败(Lombok符号缺失),未能执行测试。 | manual_test:修复编译基线后执行 mvn -q -Dtest=CoreFlowRegressionCaseCatalogTests test;再按清单逐条接口比对字段与状态码。 | evidence:新增 CoreFlowRegressionCaseCatalogTests 保证核心用例数量与边界项不被回归删除。 | risk:high 端到端回归尚未在可执行环境跑通,兼容性结论受限。 | done_at:2026-02-08
12 CMLR-100 P1 8.1 both 非改造模块冒烟回归 对 FunctionConfig/File/OTP 三个无 Map 改造模块执行冒烟,确保全局扫描与参数绑定未受影响。 `getAllConfig/updateConfigValue`、文件上传、OTP 获取各至少 1 成功 + 1 异常路径通过;返回结构与历史一致。 AUTOE2E 检查 Mapper 扫描、全局配置与 multipart 绑定是否因改造受影响。 回归覆盖配置更新可见性、空文件上传、密钥异常等边界。 已完成 已完成 已完成 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:305;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:329;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:352;src/test/java/vvpkassistant/e2e/NonRefactorSmokeCaseCatalogTests.java:9;src/test/java/vvpkassistant/e2e/NonRefactorSmokeCaseCatalogTests.java:21 picked_reason:核心链路回归后补非改造模块冒烟,防止全局绑定与扫描副作用遗漏。 | review_initial:补充 FunctionConfig/File/OTP 三模块冒烟用例目录,覆盖成功+异常路径。 | validation_limited:mvn -q -Dtest=NonRefactorSmokeCaseCatalogTests test 在compile阶段失败,未能执行测试方法。 | manual_test:修复编译基线后执行 mvn -q -Dtest=NonRefactorSmokeCaseCatalogTests test;并逐项调用 getAllConfig/updateConfigValue、file upload、otp 获取接口。 | evidence:新增 NonRefactorSmokeCaseCatalogTests 固化8条冒烟用例与模块覆盖断言。 | risk:high 非改造模块尚未完成真实可执行冒烟,发布前需补跑。 | done_at:2026-02-08
13 CMLR-110 P2 9 backend 输出迁移映射与兼容性说明 沉淀旧注解方法到新 Lambda 实现的映射表与兼容性结论,作为审计与后续维护依据。 形成可提交文档,至少包含方法映射、风险点、回滚策略、兼容性结论四部分;refs 可追溯到代码位置。 AUTOSERVER 文档评审要求“可审计、可定位、可回滚”,禁止仅描述结论不附证据。 发布前复核文档与实际代码一致性,抽查不少于 5 条映射记录。 未开始 已完成 未开始 已完成 未开始 已完成 未提交 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:26;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:364;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:370 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:26;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:364;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:370;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:1;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:5;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:20;plan/2026-02-08_23-45-12-map-to-lambda-migration-report.md:27 picked_reason:代码迁移已完成,补齐可审计文档以支持发布评审与后续回滚定位。 | review_initial:迁移文档已包含方法映射/风险/回滚/兼容性四段,且每段可追溯到代码变更。 | validation_limited:编译基线未恢复,文档中的运行态结论以受限验收前提给出。 | manual_test:修复编译基线后按文档映射抽查>=5条并执行 mvn clean test 复核一致性。 | evidence:新增 map-to-lambda-migration-report 文档并列出关键 commit 回滚顺序。 | risk:medium 文档结论依赖后续可执行测试补证。 | done_at:2026-02-08

View File

@@ -0,0 +1,35 @@
# Map/注解SQL 到 DTO/Lambda 迁移映射说明CMLR-110
## 1. 方法迁移映射(旧 -> 新)
| 旧位置/方法 | 新位置/方法 | 说明 |
| --- | --- | --- |
| `UserDao.queryWithPhoneNumber` 注解 SQL | `UserDao.queryWithPhoneNumber` default + `Wrappers.lambdaQuery` | 用户手机号查询改为 Lambda补齐 `UserModel.mobile` 映射。 |
| `UserDao.findCreatedPk` | `PkRecordDao.findCreatedPk` | 跨表 `pk_record` 查询归位到 `PkRecordDao`。 |
| `UserDao.getMyGuestPkList` | `PkRecordDao.getMyGuestPkList` | 跨表 `pk_record` 查询归位到 `PkRecordDao`。 |
| `UserDao.signIn` | `SignInRecordDao.signIn` | 新增 `SignInRecord` 实体与 Dao 承接签到写入。 |
| `UserDao.checkSignStatus` | `SignInRecordDao.checkSignStatus` | 当日签到状态查询迁移到 `sign_in_records` 专属 Dao。 |
| `PkRecordDao.fetchDetailPkDataWithId` 跨表 SQL | `PkRecordDetailDao.queryDetail` | 明细查询归位到 `pk_record_detail` 对应 Dao。 |
| `PkInfoDao.checkIfUnfinishedPKExistsWithAnchor` 跨表 SQL | `PkRecordDao.checkIfUnfinishedPKExistsWithAnchor` | 未完成记录检查归位到 `PkRecordDao`。 |
| `PkInfoDao.selectPkInfoByCondition` 动态注解 SQL | `PkInfoDao.selectPkInfoByCondition` default + `LambdaQueryWrapper` + `last` | 条件拼装迁移为 Lambda排序 SQL 通过 `last` 保序。 |
| `PkInfoDao.queryCanUseData/queryAllPkData/...` 注解 SQL | 对应 `PkInfoDao` default Lambda 方法 | 静态 SQL 批量迁移到 Wrapper。 |
| `PkRecordDao.pkListForToday/fetchDataFromTodayWithUserId/...` 注解 SQL | 对应 `PkRecordDao` default Lambda 方法 | PK 记录相关静态 SQL 迁移。 |
## 2. 风险点
1. `Lombok` 注解处理在当前仓库编译链路中未生效,导致 `mvn clean test` 无法执行,自动化证据受限。
2. `system_user/system_users` 表名历史不一致,需在目标环境确认最终物理表映射。
3. `pk_time``PkRecord` 为字符串字段,迁移后时间比较依赖字符串时间戳格式稳定。
4. `SignInRecordDao` 使用 `Asia/Shanghai` 日期写入,需与数据库时区策略一致。
## 3. 回滚策略
1. 按 feature commit 粒度回滚(`git revert`):优先回滚 `3246146`(跨表归位)、`a78b06f`(动态查询)、`8692b10`静态SQL迁移`32a6d71`User查询迁移
2. 若线上仅出现单链路问题,优先局部回滚对应 mapper 文件(例如仅回滚 `PkInfoDao.selectPkInfoByCondition`)。
3. 保留 `ControllerMapToDtoContractTests` 与 DAO/E2E catalog 测试目录,回滚后再次执行以确认契约恢复。
## 4. 兼容性结论
1. Controller 层 18 个历史 `@RequestBody Map` 端点已替换为 DTOURL 与返回类型保持不变。
2. DAO 层迁移采用 default 方法 + MyBatis-Plus Wrapper保持方法签名与调用入口稳定。
3. 受限项:当前环境无法完成 `mvn clean test`,因此“行为完全等价”仍需在修复编译基线后做最终运行态确认。