Android-Agent-API-Contract
spec_probe
stock/direct_select
color
size
状态流程:
新建 SYB 采购任务 → spec_probe 待领取 → Agent 只读遍历并回传候选 → 服务端校验 → 标准化唯一匹配 → 必要时 AI 封闭候选匹配 → 固化任务级执行规格 → 第二次领取/下发 → Agent 精确选择 → 继续既有核价、地址及创建订单门禁
关键安全约束:
预计修改范围:
server/app/goauto/purchase/
server/app/goauto/aimatching/
android/app/src/main/java/cn/ilapage/goauto/agent/
Business-Rules-and-Glossary
需要记录强制双阶段采购、当次候选来源、确定性优先、AI 封闭候选、一次探测及失败收敛规则。按 Wiki-first 在线更新、回读 revision,再执行一次 sync 和一次 sync --check。
sync
sync --check
2026-09-04 已收到用户“授权执行工单 #215”。开始实施。
基线:683aa9c,分支 feat/214-verified-purchase-actions(#215 依赖 #214 的 Android 可验证规格动作)。当前工作区存在与本单无关的用户改动,将保留且不纳入本单提交。
683aa9c
feat/214-verified-purchase-actions
安全边界:本轮只做代码、自动测试、Debug 构建和只读契约验证;不运行真机 live 采购,不修改地址,不创建真实订单,不执行付款。若发现需要数据库迁移,将停止并另行申请迁移授权。
已按 2026-09-04 用户授权完成 #215,未执行真机 live 采购、地址修改、真实订单创建或付款。
unresolved
purchase_spec_match_work_item
start
PURCHASE_SPEC_REPROBE_REJECTED
order-submit-started
phase=spec_probe
通过:
go test -count=1 ./app/goauto/purchase ./app/goauto/aimatching ./app/goauto/purchasecontract ./app/goauto/purchaserule
go build
android\gradlew.bat testDebugUnitTest assembleDebug
PurchaseRehearsalExecutorTest
python dev_scripts/harness.py check --strict
git diff --check
docs/12-syb-erp-interface.md
全量 go test ./... 中采购及其他 Server 包通过,只有无关 apprelease 的 TestParseBuiltAgentAPKWhenAvailable 失败:工作区 Debug APK 为 0.9.39 (52),该测试仍使用旧固定版本预期;未混入本单修复。
go test ./...
apprelease
TestParseBuiltAgentAPKWhenAvailable
0.9.39 (52)
069248c1466d54273900a4c87d1285436f7d50f9
a022259ba39db7588eaa3b6579c799e2eb6a6f9e
feat/215-mandatory-live-spec-probe
c09ddc8 feat(purchase): 强制真机探测规格后匹配 (#215)
origin/feat/215-mandatory-live-spec-probe
工单保持 open / 待验收,等待用户验收。
No dependencies set.
The note is not visible to the blocked user.
基本信息
依赖与并行
子项目影响
Android-Agent-API-Contract原始需求
要解决什么
spec_probe慢路径;因此并非每次采购都以当次 PDD 页面候选重新决策。stock/direct_select没有 SYB 待采购规格,不在本单扩展范围;如需同样强制探测,应单独确认其目标规格来源和失败语义。做什么 / 不做什么
做
spec_probe阶段;长期映射只能作为审计/已有事实,不能跳过当次页面探测。color、size原始候选并回传;动作、耗时和滚动次数继续有上限。不做
已确认方案
状态流程:
新建 SYB 采购任务 → spec_probe 待领取 → Agent 只读遍历并回传候选 → 服务端校验 → 标准化唯一匹配 → 必要时 AI 封闭候选匹配 → 固化任务级执行规格 → 第二次领取/下发 → Agent 精确选择 → 继续既有核价、地址及创建订单门禁关键安全约束:
预计修改范围:
server/app/goauto/purchase/:创建、领取/载荷、探测结果处理、状态机与测试。server/app/goauto/aimatching/:复用确定性优先、AI 封闭候选校验,按需补测试,不放宽 Provider 输出。android/app/src/main/java/cn/ilapage/goauto/agent/:强制探测阶段执行及第二阶段精确选择契约。Android-Agent-API-Contract、Business-Rules-and-Glossary及其本地只读镜像。需求变化记录
设计与原型门禁
文档影响
需要记录强制双阶段采购、当次候选来源、确定性优先、AI 封闭候选、一次探测及失败收敛规则。按 Wiki-first 在线更新、回读 revision,再执行一次
sync和一次sync --check。交付文档影响
任务记录与可选快照
验收标准
spec_probe,不得直接进入正式采购阶段。验证方式
风险和回退
2026-09-04 已收到用户“授权执行工单 #215”。开始实施。
基线:
683aa9c,分支feat/214-verified-purchase-actions(#215 依赖 #214 的 Android 可验证规格动作)。当前工作区存在与本单无关的用户改动,将保留且不纳入本单提交。安全边界:本轮只做代码、自动测试、Debug 构建和只读契约验证;不运行真机 live 采购,不修改地址,不创建真实订单,不执行付款。若发现需要数据库迁移,将停止并另行申请迁移授权。
实施完成,待验收
已按 2026-09-04 用户授权完成 #215,未执行真机 live 采购、地址修改、真实订单创建或付款。
实现
unresolved/ 空映射开始。purchase_spec_match_work_item,首次领取后start固定进入spec_probe。PURCHASE_SPEC_REPROBE_REJECTED收敛。spec_probeattempt 不能调用order-submit-started。phase=spec_probe已只执行只读规格探测。本单补充回归测试,证明即使载荷含历史映射也不会执行地址、订单或支付动作。验证
通过:
go test -count=1 ./app/goauto/purchase ./app/goauto/aimatching ./app/goauto/purchasecontract ./app/goauto/purchaserulego buildandroid\gradlew.bat testDebugUnitTest assembleDebugPurchaseRehearsalExecutorTestpython dev_scripts/harness.py check --strictgit diff --checksync与一次sync --check(检查时临时隔离并随后逐字恢复用户已有的docs/12-syb-erp-interface.md未提交改动)全量
go test ./...中采购及其他 Server 包通过,只有无关apprelease的TestParseBuiltAgentAPKWhenAvailable失败:工作区 Debug APK 为0.9.39 (52),该测试仍使用旧固定版本预期;未混入本单修复。Wiki
Business-Rules-and-Glossaryrevision069248c1466d54273900a4c87d1285436f7d50f9Android-Agent-API-Contractrevisiona022259ba39db7588eaa3b6579c799e2eb6a6f9eGit
feat/215-mandatory-live-spec-probec09ddc8 feat(purchase): 强制真机探测规格后匹配 (#215)origin/feat/215-mandatory-live-spec-probe未验证
工单保持 open / 待验收,等待用户验收。