Page:
T-212
Pages
00-ai-start-here
01-vision
02-requirements
03-tech-stack
04-architecture
05-coding-rules
06-tasks
07-user-stories
08-interaction-checklist
Design
Home
Integrations-shunyunbao-contract
PPT
T-001
T-002
T-003
T-004
T-101
T-102
T-103
T-104
T-201
T-202
T-203
T-204
T-205
T-206
T-207
T-208
T-209
T-210
T-211
T-212
T-213
T-214
T-215
T-216
T-217
T-218
T-219
T-220
T-221
T-222
T-223
T-224
T-225
T-226
T-227
T-228
T-229
T-230
T-231
T-232
T-233
T-234
T-235
T-236
T-237
T-238
T-239
T-240
T-241
T-242
T-243
T-244
T-245
T-246
T-247
T-248
T-249
T-250
T-251
T-252
T-253
T-254
T-255
T-256
T-257
T-258
T-259
T-260
T-261
T-262
T-263
T-264
T-265
T-266
T-267
T-268
T-269
T-270
T-271
T-272
T-273
T-274
T-275
T-276
T-277
T-278
T-279
T-280
T-281
Task-Template
Tasks
agent-context
api
clean-state-checklist
current-state
routes
Clone
1
T-212
ila edited this page 2026-08-07 16:36:31 +08:00
同步来源:
docs/tasks/T-212.md· commitafc651f75a3a
id: T-212 title: 修复 Top 5 候选 ordinal 与证据映射 phase: 2 deps:
- T-211
status: DONE
created: 2026-07-27
context_ref:
edfee2cwork_branch: null write_paths: - docs/tasks/T-212.md
- docs/current-state.md
- android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
- android-buyer/app/src/main/java/com/roubao/autopilot/procurement/**
- android-buyer/app/src/main/java/com/roubao/autopilot/vlm/**
- android-buyer/app/src/test/java/com/roubao/autopilot/procurement/**
- android-buyer/app/src/test/java/com/roubao/autopilot/vlm/**
问题 / 背景
T-211 对通过 SKU 硬约束的候选重新排序并生成连续回传 ordinal,但人工接受仍使用
VLM 原始候选 ordinal 查找已经重排的 ExecutionCandidateDraft。当原始候选 3 得分
最高并被重排为回传候选 1 时,现有查找可能错误选择回传候选 3,导致人工结论与推荐、
截图证据不一致。
关联需求与交互
- 功能:F-007、F-008、F-009。
- 用户故事:US-005、US-008。
- 交互:IX-007、IX-009 的建议候选接受、拒绝和结果回传。
- 架构/API:不修改后端 candidate batch schema;修复 Android 本地从原始曝光 ordinal 到回传 ordinal、证据和人工终态候选的映射。
方案
- 增加纯 Kotlin 的候选重排结果模型,同时保存
source_ordinal、连续ranked_ordinal、评估结果和证据 SHA-256,不再靠两个列表的位置或相同整数隐式关联。 - 候选批次、推荐项和人工接受结果从同一份重排结果生成。非空批次推荐固定指向排序 后的候选 1;人工接受候选也必须使用该候选及其同源证据。
- 拒绝、无匹配和空候选路径不携带候选;不得回退到“找不到就取第一个”掩盖映射错误。
- 保持 T-211 的
0..5、颜色/尺码硬约束、阈值和排序规则不变。
验收要点
- 原始候选 3 得分最高时,回传候选 1、推荐项和人工接受终态都引用原候选 3 的证据。
- 过滤后只剩原始候选 2、5 时,回传 ordinal 为 1、2,证据分别保持 2、5 的来源。
- 相同分数按置信度和原始曝光顺序稳定排序,重试不会改变映射。
- 空候选、单候选、拒绝和无匹配路径不产生越界或错误 fallback。
- 后端 schema v2 的推荐首项、连续 ordinal 和证据资产校验继续通过。
- Android 单元测试和 Debug 构建通过;人工接受仍保持
order_submitted=false。
边界
- 不改变拼多多页面自动化、VLM prompt 或 SKU 匹配含义。
- 不增加候选数量,不实现 T-208 人工标签数据集。
- 不加入购物车、不选择规格、不提交订单或支付。
执行记录
- 2026-07-27:从 T-211 完成后的代码审查登记。先修复结果身份映射,再扩展规格弹窗 采集,避免把错误候选写入后续优化数据。
- 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 ./...通过。