Page:
T-277
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-277
ila edited this page 2026-08-07 16:37:14 +08:00
同步来源:
docs/tasks/T-277.md· commitafc651f75a3a
id: T-277 title: 使用节点 JSON 和本机 VLM 兜底规格与价格 phase: 2 deps:
- T-272
- T-276 status: DONE created: 2026-08-01 context_ref: 258fc1b work_branch: null write_paths:
- docs/tasks/T-277.md
- docs/current-state.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- docs/api.md
- android-buyer/app/src/main/**
- android-buyer/app/src/test/**
- backend-api/migrations/**
- backend-api/internal/**
问题 / 背景
确定性无障碍解析在拼多多把“券后”“¥”“10.49”拆成多个节点、规格节点没有可靠
selected 状态或“已选择”摘要缺失时,会保存空 sku_text/price_text。T-272 已能用
受限节点 JSON 和本机 VLM 定位规格选项,但最终复核只证明颜色/尺码,没有从同一快照
恢复 SKU 摘要和拆分价格,也没有把未知状态显式回传后台。
行为契约
- 颜色、尺码选择和价格读取始终先执行确定性规则;只有目标选择、已选摘要或唯一组合价 无法确认时,才允许调用 Roubao 本机已配置模型。
- 复用 T-272 当前规格快照:最多 200 个节点、深度 12、单节点文字 160 字,附带当前
规格截图;禁止上传完整
AccessibilityNodeInfo.toString()、订单、店铺或设备凭证。 - 模型严格返回目标颜色/尺码证据 node ID、价格 node ID、置信度和稳定状态。App 必须 复核 node ID 属于当前快照、节点可见/启用、结构 hash 未变化,并由代码按节点顺序拼接 和解析人民币价格;不接受模型独立生成的金额或坐标。
- 颜色和尺码仍逐项单步点击,每次点击后重新获取根节点;最终模型只能证明当前快照中 两项目标同时选中,不能声明历史点击成功。
- 候选显式回传
sku_verification_status=MATCH|MISMATCH|UNVERIFIED、price_verification_status=VERIFIED|UNVERIFIED和value_source=DETERMINISTIC|LOCAL_VLM。空 SKU/价格必须对应UNVERIFIED,不得伪装 成匹配或已验证。 - Admin 保存并展示上述状态。
LOCAL_VLM只表示值的解析来源,不降低商品身份、证据、 人工确认、授权、下单或支付边界。 - 第二轮
FALLBACK不调用规格模型;只显式回传UNVERIFIED,供采购员人工判断。
方案
- 将规格 VLM schema 升级,最终
verify响应增加受限价格节点集合;通过当前节点原文 计算selectedSummary,通过共享人民币解析器计算PinduoduoSpecificationPrice。 - 当确定性目标已选但摘要/价格缺失时也执行一次最终复核;接受后把 proof、摘要、价格
和
LOCAL_VLM来源绑定同一截图 SHA-256 并写入现有进度快照。 - Android 候选 outbox 增加三个状态字段;Go API 严格校验状态组合,migration 为候选 observation 增加审计列,仓储和 Admin 详情透传展示。
- 增加模型输出伪造价格、未知 node ID、结构变化、低置信度、空价格和 fallback 禁用模型 的回归测试。
验收要点
- 确定性规格和价格完整时零模型调用,状态为
MATCH/VERIFIED/DETERMINISTIC。 - 拆分价格节点可经最终 VLM 选择后由代码解析,SKU 和价格不再为空。
- 未知节点、模型自报金额、旧快照、低置信度和不安全内容全部失败关闭。
- 无法读取价格时可回传
UNVERIFIED候选,但不能显示为价格已验证。 - 第二轮 fallback 不调用模型并显式回传两个
UNVERIFIED状态。 - Admin 保存并显示验证状态和来源;历史候选默认按
UNVERIFIED读取。 - migration up/down/up、Go 全量测试、Android 双变体单测、lint 和构建通过。
边界
- 本任务不修改任务价格为空时的授权上限策略,该策略由 T-278 完成。
- 不把模型配置移到 Admin,不把节点 JSON、截图或模型原始响应写日志/数据库。
- 不在订单 dry-run 使用本兜底;确认商品后的下单链路由 T-279 接入。
执行记录
- 2026-08-01:复用 T-272 安全节点快照和本机模型边界创建任务,状态
TODO。 - 2026-08-01:完成规格/价格节点复核、显式验证状态、数据库审计列和 Admin 展示;
Go 全量测试及 Android Debug/Release 共 934 项测试、lint、构建通过,状态
DONE。