Files
shaguabijia-app-server/docs/api/compare-price-step.md
T
marco aa34ad7d0b feat(compare): 外卖比价 2 端点透传到 pricebot-backend (food MVP)
仿 coupon_step 在 app/api/v1/compare.py 加纯 body 透传 2 端点(MVP 不鉴权,只读
device_id/trace_id/step 打日志,不做 schema 校验)。client /api/v1/{intent/recognize,
price/step} → backend 去掉 /v1 转发到 PRICEBOT_BASE_URL,接通外卖比价
client→server→pricebot-backend 链路。

- compare.py: _passthrough helper + intent/recognize + price/step
- config.py: PRICEBOT_COMPARE_TIMEOUT_SEC=60(意图识别大上下文 LLM、price/step
  每帧 LLM,比领券 30s 长;对齐客户端 agent ApiClient 的 60s 读超时)
- main.py: 注册 compare_router
- tests/test_compare_proxy.py: 2 端点参数化测试(透传/5xx→502/不可达→502/坏 JSON→400)
- docs/api/{compare-intent-recognize,compare-price-step}.md + 更新 README 索引
- 待办与技术债.md P2 外卖 2 端点标 (2026-05-27);电商 2 个待接(compare.py
  加两行即可)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 10:29:20 +08:00

1.5 KiB
Raw Blame History

POST /api/v1/price/step — 外卖比价 Phase 2 步进(透传到 pricebot

所属:Compare 组(前缀 /api/v1,外卖比价) | 鉴权:无(MVP 阶段不鉴权) | ← 返回 API 索引

入参

任意 JSON body,不做 schema 校验,原样透传给上游。后端仅从中读 device_idtrace_idstep 用于日志。 客户端逐帧上报 screen_state + 上一步 action_result;step=0 还带 query + calibration(来自 Phase 1)。

出参

pricebot-backend 的响应原样返回JSON object)。含 actiontap / set_text / launch / wait / done…)、continuestatus;最终 done 帧带 comparison_results(源 + 各目标平台到手价,按价升序)。

错误码

  • 400 body 不是合法 JSON
  • 502 pricebot 上游不可达(网络错误)或返回 5xx

说明

把请求体原样转发到 PRICEBOT_BASE_URL/api/price/step(去掉 /v1,async httpx)。多轮循环:客户端按返回的 action 操作手机、再上报下一帧,直到 continue=false。真正的目标驱动比价逻辑(多目标平台串行复现订单、读到手价、聚合排序)在 pricebot-backend,本接口只是"透传壳"。

⚠️ MVP 阶段不鉴权(同 coupon/step)。

相关配置:

  • PRICEBOT_BASE_URL(默认 http://localhost:8000;生产部署应与 pricebot-backend 同内网——比价一单 30~80 步、逐帧多一跳,走公网延迟会累积)
  • PRICEBOT_COMPARE_TIMEOUT_SEC(默认 60s,price/step 每帧都是 LLM