fix(t212): preserve ranked candidate identity

This commit is contained in:
QiuSW
2026-07-27 22:31:17 +08:00
parent ca60cc1edc
commit 4b795a4224
7 changed files with 382 additions and 115 deletions
+15 -7
View File
@@ -4,7 +4,7 @@ title: 修复 Top 5 候选 ordinal 与证据映射
phase: 2
deps:
- T-211
status: DOING
status: DONE
created: 2026-07-27
context_ref: edfee2c
work_branch: null
@@ -44,12 +44,12 @@ VLM 原始候选 ordinal 查找已经重排的 `ExecutionCandidateDraft`。当
## 验收要点
- [ ] 原始候选 3 得分最高时,回传候选 1、推荐项和人工接受终态都引用原候选 3 的证据。
- [ ] 过滤后只剩原始候选 2、5 时,回传 ordinal 为 1、2,证据分别保持 2、5 的来源。
- [ ] 相同分数按置信度和原始曝光顺序稳定排序,重试不会改变映射。
- [ ] 空候选、单候选、拒绝和无匹配路径不产生越界或错误 fallback。
- [ ] 后端 schema v2 的推荐首项、连续 ordinal 和证据资产校验继续通过。
- [ ] Android 单元测试和 Debug 构建通过;人工接受仍保持
- [x] 原始候选 3 得分最高时,回传候选 1、推荐项和人工接受终态都引用原候选 3 的证据。
- [x] 过滤后只剩原始候选 2、5 时,回传 ordinal 为 1、2,证据分别保持 2、5 的来源。
- [x] 相同分数按置信度和原始曝光顺序稳定排序,重试不会改变映射。
- [x] 空候选、单候选、拒绝和无匹配路径不产生越界或错误 fallback。
- [x] 后端 schema v2 的推荐首项、连续 ordinal 和证据资产校验继续通过。
- [x] Android 单元测试和 Debug 构建通过;人工接受仍保持
`order_submitted=false`。
## 边界
@@ -64,3 +64,11 @@ VLM 原始候选 ordinal 查找已经重排的 `ExecutionCandidateDraft`。当
采集,避免把错误候选写入后续优化数据。
- 2026-07-27:基于 `1d9dd08` 领取任务,先建立可单测的显式映射模型,再接入候选
批次和人工接受路径。
- 2026-07-27:新增 `RankedCandidateAssessment` 和
`ExecutionCandidateSourceIdentity`,显式保存原始 ordinal、重排 ordinal 和证据
SHA-256。候选批次、推荐和人工接受均从同一映射生成;删除按原始 ordinal 查找和
“找不到就取第一个”的 fallback,映射不一致时进入受控证据失败。
- 2026-07-27:新增原候选 3 重排为 1、过滤后原候选 2/5 重排为 1/2、空候选和
缺失 ordinal 回归测试。`.\gradlew.bat :app:testDebugUnitTest :app:assembleDebug
--no-daemon` 通过,21 个 suite 共 113 个测试、0 失败;
`GOTOOLCHAIN=local go test -count=1 ./...` 通过。