Page:
T-273
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-273
ila edited this page 2026-08-07 16:37:12 +08:00
同步来源:
docs/tasks/T-273.md· commitafc651f75a3a
id: T-273 title: 在 Roubao API 设置中测试本地模型配置 phase: 2 deps:
- T-207
- T-272 status: DONE created: 2026-08-01 context_ref: c0011d4 work_branch: null write_paths:
- docs/tasks/T-273.md
- docs/current-state.md
- docs/02-requirements.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- android-buyer/app/src/main/**
- android-buyer/app/src/test/**
问题 / 背景
Roubao 设置页可以保存本机 provider、Base URL、API Key 和模型,也可以通过
GET /models 获取模型列表,但该请求不能证明所选模型支持实际采购链路使用的 OpenAI
兼容多模态 chat/completions。配置错误目前只能在领取任务后暴露,既浪费搜索轮次,也
容易把模型不可用误判为规格或自动化失败。
本任务在“API 配置”分组增加显式测试按钮,只检查当前手机本地配置,不经过 Admin。
行为契约
- “测试模型”使用当前已保存的 provider、Base URL、API Key 和 model;测试开始前执行 与正式 VLM 相同的必填项和端点安全校验,不读取任务、相册、截图或采购数据。
- 请求使用内置、固定且不含业务信息的测试图和固定提示词,对
POST <baseUrl>/chat/completions发出一次多模态请求,以证明鉴权、模型名、请求格式和 图片输入均可用。不得自动重试或跟随重定向。 - 按钮执行期间显示测试中并保持禁用,避免重复付费请求;离开页面或 Activity 销毁时 协程取消必须取消 HTTP call。
- 成功只显示“模型可用”;失败按本地配置、端点安全、鉴权、模型不存在/不支持、限流、 服务端、网络/超时和响应格式分类。UI、日志和崩溃记录不得包含 API Key、完整 endpoint、 固定测试图 Base64 或供应商响应正文。
- 测试结果只存在当前 UI 状态,不写 SharedPreferences、数据库、outbox 或 Admin;成功 也不替代真实任务质量验收。
方案
- 增加 provider-neutral 的模型连通性测试器和稳定结果枚举,使用有界响应、单次请求、 禁止重定向的 OkHttp client。
- 在设置页增加带状态的“测试模型”命令项,并由
MainActivity使用当前设置执行测试。 - 使用 MockWebServer 覆盖请求契约、Bearer 脱敏边界、成功、鉴权、模型、限流、服务端、 超大/非法响应、网络失败和协程取消。
验收要点
- 配置完整时点击一次只产生一个带固定测试图的
chat/completions请求。 - 测试中不能再次触发;成功和分级失败均在设置页明确显示。
- 非安全 endpoint、空 model 和要求凭证但 Key 为空时不发网络请求。
- 响应正文、API Key、完整 endpoint 和图片 Base64 不进入 UI、日志或持久化。
- Android 单测、lint、Debug/Release APK 构建通过。
边界
- 不新增后端模型代理、Admin 配置、数据库字段或任务 payload 字段。
- 不使用真实任务图片,不评价模型的商品匹配质量、价格或供应商稳定性。
- 不把测试成功作为自动下单授权,也不改变 execution 已冻结的模式。
执行记录
- 2026-08-01:根据设置页需要主动验证本机模型配置的需求创建任务,状态
TODO。 - 2026-08-01:完成设置页“测试模型”按钮、执行中防重、当前配置校验和无持久化结果;
新增单次固定红色测试图请求以及鉴权、模型、限流、服务端、网络、超时和响应异常分类。
Debug/Release 各 448 项单测、
lintDebug、assembleDebug、assembleRelease全部通过, 状态改为DONE。真实 provider 未调用,本任务不声明真实供应商质量或稳定性。