Files
cmroubao/docs/tasks/T-206.md
T

5.4 KiB
Raw Blame History

id, title, phase, deps, status, created, context_ref, work_branch, write_paths
id title phase deps status created context_ref work_branch write_paths
T-206 App 接入手动领取和执行进度 2
T-202
T-205
TODO 2026-07-27 45d4d11 null
README.md
android-buyer/**
backend-api/**
docs/00-ai-start-here.md
docs/02-requirements.md
docs/04-architecture.md
docs/05-coding-rules.md
docs/07-user-stories.md
docs/08-interaction-checklist.md
docs/api.md
docs/current-state.md
docs/routes.md
docs/tasks/T-206.md
progress.md

问题 / 背景

T-205 已实现 BUYER + 设备联合鉴权、readiness heartbeat、原子 claim、任务参考图、 start、租约 heartbeat、release 和取消确认,但当前 Android 仍只消费本地 fixture。 管理员创建的 PENDING 任务无法在手机领取,真实端到端流程因此被阻塞。

现有 Roubao 基线包含端上模型服务商、Base URL 和 API Key 设置。正式采购工作流必须 把模型调用收口到肉包后端,避免采购手机持有供应商密钥或由执行员改变模型策略。

关联需求与交互

  • 功能:F-003、F-007、F-009。
  • 用户故事:US-003、US-006、US-007、US-009。
  • 交互:IX-004、IX-005、IX-006、IX-008、IX-010。
  • 架构/API:HttpTaskSource、设备联合身份、claim 租约状态机、前台服务和后端托管 VLM 边界。

已定合约

  1. 采购 App 只配置肉包后端 HTTPS 地址,不直接配置或调用 VLM 服务商。模型名称、 Base URL 和 API Key 不进入生产采购页面、任务缓存、日志或网络响应。
  2. Debug 技术探针可保留本机直连 OpenAI 兼容 mock,但必须位于 Debug source set, 不得进入 Release APK,也不得用于后端任务。
  3. BUYER 登录必须同时提交预授权 device ID/secret;access token、device secret、 claim token 和幂等 key 使用 Android Keystore 支撑的安全存储。敏感值不进入 SavedState、普通 SharedPreferences、崩溃报告或日志。
  4. App 每次领取前先发设备 heartbeat。无障碍未连接、拼多多未安装、网络不可用、 服务端认为设备不就绪或已有活跃任务时不生成新的 claim 请求。
  5. claim token 和幂等 key 必须在请求前持久化;结果不确定时原样重放,不能生成新 token。领取成功后下载 task-scoped 参考图并校验媒体类型、大小和解码结果。
  6. 用户在预览页确认后调用 start 并启动前台服务;运行中每 30 秒 heartbeat。服务端 version、generation、execution 和租约是权威状态。
  7. T-206 先验证登录、领取、预览、start、前台步骤、续租、release、取消安全停止和 进程恢复。真实后端 VLM、候选/截图/事件/结果回传属于 T-207。
  8. T-206 的执行进度使用 fake/受控步骤到达明确的“等待 T-207 AI 接入”结果,不把 未上传的本地结果伪装成服务端完成,也不触发拼多多不可逆操作。

方案

  1. 在 Android 增加严格的后端配置、认证 client、token 安全存储和稳定错误映射; Release 只接受 HTTPS,Debug 可显式信任开发证书或使用受控本机测试路径。
  2. 实现 HttpTaskSource,把 claim 响应和参考图规范化为现有 ProbeTask/领域输入, workflow 不判断任务来自 fixture 还是 HTTP。
  3. 按已确认原型接入登录、任务主页、任务预览、运行和结果状态;重复点击、空队列、 登录过期、租约过期和服务端冲突都有稳定反馈。
  4. 使用前台服务持有当前 execution、定时 heartbeat 并轮询取消标志;取消只在 workflow 安全检查点停止,再调用 cancel-ack。
  5. App 重启后先用 heartbeat/任务详情核对服务端活跃任务;不能证明可恢复时停止 自动化并显示人工处理,不自行领取第二条任务。
  6. 后端如缺少 App 当前任务查询所需字段,只做兼容性最小补充,不改变 T-205 的 token、幂等、租约和状态机语义。

验收要点

  • 预授权 BUYER 在真机登录成功,错误账号、错误设备、禁用和过期状态均不能进入 任务页;敏感值不出现在日志和普通存储。
  • 真机 heartbeat 后点击“获取任务”能领取管理 Web 创建的一条 PENDING 任务, 显示标题、SKU、数量、描述和参考图;无任务显示空状态。
  • 重复点击和模拟响应丢失不会重复领取;App 重启后能继续同一 CLAIMED 任务。
  • 预览可开始或释放;开始后前台服务显示步骤并按约 30 秒续租,不领取第二条任务。
  • 管理 Web 请求安全停止后,App 在安全检查点停止并确认,服务端最终为 CANCELED;过期租约不会被 App 擅自续作。
  • 生产采购页面没有 VLM 服务商、Base URL 或 API Key 输入;后端任务不会读取 Roubao 旧的端上 provider 配置;Release APK 不含 Debug mock 配置。
  • Android 单元/集成测试、后端回归测试、根 init.ps1 和 OnePlus PKG110 Android 16 真机端到端 smoke 通过。

边界

  • 不实现真实 VLM 代理、候选/截图/事件、complete/fail 和人工理由回传;属于 T-207。
  • 不实现后台推送、自动领取、自动下单、支付、多任务并行或跨设备调度。
  • 不允许生产 App 绕过后端直连任意模型地址,不提交真实账号、设备 secret 或订单。

执行记录

  • 尚未开始。