You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.2 KiB
6.2 KiB
01 — 缺陷修复白盒验收(重点 D-01 根因修复)
Type: task Status: resolved Blocked by: 无
任务
对三个前置 effort 的缺陷修复做代码级白盒复核(不起服,静态审查 + 单测),产出验收核对清单:
- D-01 新建商机 500(opportunity-fix,重点):
OpportunityIntakeImpl.applyInitialStage现状 = fail-fast(无发布中模板/版本无节点 →OpportunityIntakeException→ 60001 友好错,非 500),确认无零值兜底残留、无回归;OpportunityRuleConstants.CODE_STAGE_TPL_SEED_PROTECTED = 64018与OpportunityStageTemplateServiceImpl.deleteDraft/disableTemplate预设保护在位(OPP_STAGE_TPL_01不可删不可停;publish 内部 updateStatus 不走 disableTemplate 不破坏不变式);buildOpportunity组装路径与current_stage_id赋值链完整性核对(票 02 将做运行时断言,本票锁代码语义)。
- opportunity-bugfix D-01~D-22 逐条静态复核:对照
retest-verdicts.md裁决与e2e-report.md§四终版状态,核对各修复锚点代码在位——owner 快照组件(crm-opportunity/owner/)、6 写端点(customer×3 / team×3)、OpportunityActionGuard(66003 暂缓禁写 / 66014 禁领预检)、OpportunityViewFilter(board viewType)、fillEchoFields(D-16 六字段)、bizType 四值封闭(D-21)、三族 versions DTO(D-22)、工作计划四端点(票 12)。 - 工作区状态核对:git status 中票 12 未 commit 代码(OpportunityWorkPlanAddDTO/UpdateDTO 等 untracked 文件)确认在位且完整;
git log最新 commit 与工作区差异盘点,确认「待打包进 fat jar 的增量」清单。 - 全量单测:
mvn test(10 模块),基线 = 票 09 的 394/0/0 + 票 12 增量;crm-authResourceServiceImplTest.save_editCatalog_noButtonFields既有红灯豁免记录。
验收
- 验收核对清单落盘(23 条 = opportunity-fix D-01 + bugfix D-01~D-22,每条:缺陷 → 修复锚点(文件#行为)→ 代码现状 → 结论 ✅/❌);
- 单测结果记录(模块 × 通过/失败,豁免项单独列);
- 若发现修复缺失/回归 → 记录并按地图 fog 口径处置(少量就地修,成批开新票);
- Answer 记录结论摘要 + 清单文件路径。
Answer
20260831 白盒验收通过:23/23 修复锚点全部在位,0 条 ❌;全量单测 873/0/0(BUILD SUCCESS)。无需修复,票 02 可直接进入 E2E 重跑。
核对清单(23 条逐条:缺陷 → 锚点 → 现状 → 结论):../defect-fix-audit.md(本次产出);原始日志:../mvn-test.log。
① 重点 D-01(opportunity-fix)五点全绿
applyInitialStagefail-fast 在位:无发布中模板 / 版本无节点 →OpportunityIntakeException→ seam 译BusinessErrorException(=ResultCodeEnum.BUSINESS_ERROR60001),stage 三列零值兜底无残留;- 64018 预设保护在位:
disableTemplate/deleteDraft按templateCode=OPP_STAGE_TPL_01拦截(任何版本不可删/停);publish内部直调updateStatus顶替旧版,编辑发布中预设模板再发布不受误拦,不变式保持; buildOpportunity→current_stage_id赋值链完整(三列命中后落位);L96-103 空串/0 兜底仅覆盖 7 个非 stage 字段(线索转入防御),非 D-01 兜底残留。
② bugfix D-01~D-22 全锚点复核
- 19 条已修复项锚点全部在位(6 写端点+66011/12/13 三步事务、ActionGuard 66003×17 接线点/66014 claim 全量预检、三族清三毒、owner 三件套+五端点服务端解析、D-14 create+edit merged、ViewFilter 六视图、fillEchoFields 六字段、submitCard 显式两列回写、recordStatusFlowOplog ×10 流转边、bizType 四值封闭、三族 versions DTO、workplan 四端点含 finishTime 回填);
- 3 条翻案项(D-08/18/19)「非缺陷形态保持」核对通过:close 不拦、surveySeq 必填、surveyDesc 非必填——与裁决一致。
③ 次要瑕疵 3 处(不阻塞,不另开票)
OpportunityIntakeImpl文档残留 ×2:applyInitialStagejavadoc(L128-133)+buildOpportunityL119 注释仍描述已撤销的「零值兜底/走法 A」旧方案,与 fail-fast 方法体矛盾 → 建议票 03 改 demo 时顺手修正;OpportunitySubControllerL36-37import java.util.Set;重复 ×1(javac 合法,纯整洁性);- 错误码 64018 两族同值(
CODE_STAGE_TPL_SEED_PROTECTED与CODE_SCHEME_TPL_INVALID)——D-01 插码时方案卡族区间未顺延的既有债务,排查日志需按接口路径区分,不在本图修。
④ 全量单测(10 模块 reactor,mvn test)
| 关键 | 结果 |
|---|---|
| 总计 | 873/0/0,BUILD SUCCESS,01:26 min(crm-app 无测试段;crm-opportunity 209/0/0 与票 12 一致) |
| 豁免项 | 失效——crm-auth ResourceServiceImplTest.save_editCatalog_noButtonFields 红灯未复现(auth-perms 票 02 已把用例改写为「perms 只读保留原值」语义并实测通过) |
| 工具链 | mvn=D:\apache-maven-3.9.9\bin\mvn.cmd、JDK17=C:\Users\luowj\.jdks\jdk-17.0.15(bugfix 票面 IDEA 捆绑 mvn 路径已失效) |
⑤ 工作区状态核对(待打包增量清单)
- 票 12 增量在位且完整:untracked
OpportunityWorkPlanAddDTO/UpdateDTO+OpportunitySubController/OpportunitySubServiceImpl/IOpportunitySubService的MM二次未暂存修改 + SubServiceImplTest(30 用例);bugfix 主体为已暂存未 commit(HEAD=32ac292)。 - 并行 effort 混入:crm-auth
ResourceServiceImpl(+Test)有 auth-perms 票 02 未暂存改动——票 02 clean package 打包会一并带进 fat jar(auth 域测试全绿,无冲突,知悉即可)。 logs/crm-app.log残留DUunmerged 状态(已被32ac292停止跟踪,不影响构建,commit 时留意)。
对下游票的影响
- 票 02:零缺陷前置,直接 seed 重置 → clean package(留意 auth-perms 混入)→ 起服 → 全量 E2E;
- 票 03:顺手修 §③-1/2 两处小瑕疵(同文件触碰,不必开新票);
- fog「E2E 重跑发现新缺陷的处置口径」维持不变(本轮无新缺陷线索)。