Agent 当前设备任务历史、编号搜索及采集采购列表详情 #90

Closed
opened 2026-08-25 15:00:53 +08:00 by ila · 7 comments
Owner

所属与门禁

  • 父 MVP:#86
  • 依赖:#87 v3 原型已审核、#88 四 Tab UI 外壳验收。
  • 涉及 server、android 和共享 API 契约。

目标

让 Agent 使用 Device Token 查看当前设备自身的采集和采购记录、按任务编号搜索,并查看结构化结果与错误。

做什么

  • 新增分页的 Agent 采集历史列表/详情和采购历史列表/详情接口。
  • 服务端以认证 Device Token 对应的 deviceId 强制过滤;详情越权统一按不可见处理。
  • 列表默认返回当前设备最近 30 天任务,并支持状态筛选。
  • 采集列表支持任务编号搜索:接受 35 / #35,去除首尾空格;只匹配采集任务编号。
  • 采购列表支持任务编号搜索:接受 12 / CG-12,去除首尾空格且前缀不区分大小写;只匹配采购任务编号。
  • 编号搜索与状态筛选同时生效;清空搜索恢复默认列表;搜索无结果与普通空列表分别展示。
  • 采集详情返回标题、店铺、销量、评价、颜色价格、尺码、SKU、缺失项和错误。
  • 采购详情返回任务号、蝦皮订单号、PDD 商品、目标规格数量、实际价格、状态、订单号/下单时间和错误。
  • Android 实现搜索中、结果、无结果、清空、加载、空、错误、刷新、分页、列表和详情;服务端为最终事实来源。

不做什么

  • 不搜索 goods_id、商品标题、蝦皮订单号、PDD 订单号或其他业务字段。
  • 不返回其他设备任务、Token、完整地址、控件树、截图、完整规则快照或凭据。
  • 采购页不提供重新采购、取消、改地址、创建订单或支付。
  • 第一版不承诺完整离线历史。

验收

  • Device A 无法查看 Device B 的任务。
  • 采集编号 35 / #35 和采购编号 12 / CG-12 规范化后得到一致结果。
  • 编号搜索只匹配当前设备任务,并与状态筛选组合生效。
  • 正常、部分完成、失败、普通空列表和搜索无结果均可读。
  • 采购详情只读且无订单写操作。
  • Go 契约/权限测试、Android 测试、APK 构建和真机查看通过。

文档影响

更新 Android Agent API 契约、数据最小化和 Android 页面入口。

## 所属与门禁 - 父 MVP:#86 - 依赖:#87 v3 原型已审核、#88 四 Tab UI 外壳验收。 - 涉及 server、android 和共享 API 契约。 ## 目标 让 Agent 使用 Device Token 查看当前设备自身的采集和采购记录、按任务编号搜索,并查看结构化结果与错误。 ## 做什么 - 新增分页的 Agent 采集历史列表/详情和采购历史列表/详情接口。 - 服务端以认证 Device Token 对应的 deviceId 强制过滤;详情越权统一按不可见处理。 - 列表默认返回当前设备最近 30 天任务,并支持状态筛选。 - 采集列表支持任务编号搜索:接受 `35` / `#35`,去除首尾空格;只匹配采集任务编号。 - 采购列表支持任务编号搜索:接受 `12` / `CG-12`,去除首尾空格且前缀不区分大小写;只匹配采购任务编号。 - 编号搜索与状态筛选同时生效;清空搜索恢复默认列表;搜索无结果与普通空列表分别展示。 - 采集详情返回标题、店铺、销量、评价、颜色价格、尺码、SKU、缺失项和错误。 - 采购详情返回任务号、蝦皮订单号、PDD 商品、目标规格数量、实际价格、状态、订单号/下单时间和错误。 - Android 实现搜索中、结果、无结果、清空、加载、空、错误、刷新、分页、列表和详情;服务端为最终事实来源。 ## 不做什么 - 不搜索 goods_id、商品标题、蝦皮订单号、PDD 订单号或其他业务字段。 - 不返回其他设备任务、Token、完整地址、控件树、截图、完整规则快照或凭据。 - 采购页不提供重新采购、取消、改地址、创建订单或支付。 - 第一版不承诺完整离线历史。 ## 验收 - [ ] Device A 无法查看 Device B 的任务。 - [ ] 采集编号 `35` / `#35` 和采购编号 `12` / `CG-12` 规范化后得到一致结果。 - [ ] 编号搜索只匹配当前设备任务,并与状态筛选组合生效。 - [ ] 正常、部分完成、失败、普通空列表和搜索无结果均可读。 - [ ] 采购详情只读且无订单写操作。 - [ ] Go 契约/权限测试、Android 测试、APK 构建和真机查看通过。 ## 文档影响 更新 Android Agent API 契约、数据最小化和 Android 页面入口。
ila changed title from Agent 当前设备任务历史接口及采集采购列表详情 to Agent 当前设备任务历史、编号搜索及采集采购列表详情 2026-08-25 16:25:45 +08:00
Author
Owner

开始实施 #90(2026-08-26)。依赖 #87 v3 原型和已验收的 #88 已满足;#89 已验收。按工单范围实现 Device Token 强制隔离的当前设备采集/采购历史列表与详情,以及 Agent 两个任务 Tab 的编号搜索、筛选、分页和状态反馈。采购详情保持只读,不增加重新采购、取消、改地址、创建订单或支付。工作区未跟踪文件 gitea.zip 与本工单无关,保持不动。

开始实施 #90(2026-08-26)。依赖 #87 v3 原型和已验收的 #88 已满足;#89 已验收。按工单范围实现 Device Token 强制隔离的当前设备采集/采购历史列表与详情,以及 Agent 两个任务 Tab 的编号搜索、筛选、分页和状态反馈。采购详情保持只读,不增加重新采购、取消、改地址、创建订单或支付。工作区未跟踪文件 `gitea.zip` 与本工单无关,保持不动。
Author
Owner

实施前契约检查发现:现有采购任务仅持久化 reference_unit_price_cent 与价格区间,Agent 执行时读取的实际单价只进入创建订单前的本地脱敏确认快照,没有提交到服务端;因此 #90 不能准确返回原型要求的“实际单价”。建议最小修复为新增可空 purchase_task.actual_unit_price_cent,新版 Agent 在演练完成或正式订单结果中提交,旧任务显示“未记录”,禁止用参考价冒充实际价。该方案涉及数据库迁移,按仓库门禁等待用户明确确认后继续。其余范围不变。

实施前契约检查发现:现有采购任务仅持久化 `reference_unit_price_cent` 与价格区间,Agent 执行时读取的实际单价只进入创建订单前的本地脱敏确认快照,没有提交到服务端;因此 #90 不能准确返回原型要求的“实际单价”。建议最小修复为新增可空 `purchase_task.actual_unit_price_cent`,新版 Agent 在演练完成或正式订单结果中提交,旧任务显示“未记录”,禁止用参考价冒充实际价。该方案涉及数据库迁移,按仓库门禁等待用户明确确认后继续。其余范围不变。
Author
Owner

实施完成,待人工验收

提交:b885a4e(已推送 main)

实现

  • 新增当前 Device Token 所属设备最近 30 天的采集/采购任务列表与只读详情 API。
  • 支持状态与编号组合筛选;采集编号兼容 35/#35,采购编号兼容 12/CG-12(不区分大小写)。
  • 服务端强制设备隔离、最大 50 条分页和最小化返回;跨设备及超过 30 天的详情按不存在处理。
  • Agent 的采集/采购 Tab 已替换占位页,包含加载、普通空、搜索空、失败重载、状态筛选、分页、列表及结构化详情。
  • 采购详情保持只读,不提供重试、取消、创建订单或支付入口。
  • 增加可空的实际单价字段 purchase_task.actual_unit_price_cent;只保存 Agent 实际观察值,旧数据保持空值。
  • Agent 版本升级为 0.4.0(versionCode 5)。

数据库

  • 已获用户授权并在本机 MySQL 执行迁移 1787690000000,字段和约束已成功创建;未回填旧数据。

验证

  • go test -p 1 ./app/goauto/task ./app/goauto/purchase ./cmd/migrate/...:通过。
  • .\scripts\verify.ps1 -Component server:全量测试及构建通过。
  • .\scripts\verify.ps1 -Component android:Debug/Release 单测及 Debug APK 构建通过。
  • python dev_scripts/harness.py check --strict:通过。
  • python dev_scripts/harness.py sync --check:通过。
  • git diff --check:通过。
  • 当前 adb devices 无已连接设备,因此 APK 未安装,真机页面验收明确保留。

长期文档

  • Android-Agent-API-Contract:0f83e8f7333f2bec36f7b42f9ab558ec3b1e265e
  • Architecture-and-Code-Map:3b7a0cad581f615124aeeee8f8d3baf83e1dca28
  • Business-Rules-and-Glossary:c956def096806541d5060c771504928d121eb127
  • 已同步到 docs/ 镜像并完成一致性检查。

状态保持待验收。连接手机后还需安装 android/app/build/outputs/apk/debug/app-debug.apk,人工检查采集/采购列表、搜索、筛选、详情及只读边界。

## 实施完成,待人工验收 提交:`b885a4e`(已推送 `main`) ### 实现 - 新增当前 Device Token 所属设备最近 30 天的采集/采购任务列表与只读详情 API。 - 支持状态与编号组合筛选;采集编号兼容 `35/#35`,采购编号兼容 `12/CG-12`(不区分大小写)。 - 服务端强制设备隔离、最大 50 条分页和最小化返回;跨设备及超过 30 天的详情按不存在处理。 - Agent 的采集/采购 Tab 已替换占位页,包含加载、普通空、搜索空、失败重载、状态筛选、分页、列表及结构化详情。 - 采购详情保持只读,不提供重试、取消、创建订单或支付入口。 - 增加可空的实际单价字段 `purchase_task.actual_unit_price_cent`;只保存 Agent 实际观察值,旧数据保持空值。 - Agent 版本升级为 `0.4.0`(versionCode 5)。 ### 数据库 - 已获用户授权并在本机 MySQL 执行迁移 `1787690000000`,字段和约束已成功创建;未回填旧数据。 ### 验证 - `go test -p 1 ./app/goauto/task ./app/goauto/purchase ./cmd/migrate/...`:通过。 - `.\scripts\verify.ps1 -Component server`:全量测试及构建通过。 - `.\scripts\verify.ps1 -Component android`:Debug/Release 单测及 Debug APK 构建通过。 - `python dev_scripts/harness.py check --strict`:通过。 - `python dev_scripts/harness.py sync --check`:通过。 - `git diff --check`:通过。 - 当前 `adb devices` 无已连接设备,因此 APK 未安装,真机页面验收明确保留。 ### 长期文档 - Android-Agent-API-Contract:`0f83e8f7333f2bec36f7b42f9ab558ec3b1e265e` - Architecture-and-Code-Map:`3b7a0cad581f615124aeeee8f8d3baf83e1dca28` - Business-Rules-and-Glossary:`c956def096806541d5060c771504928d121eb127` - 已同步到 `docs/` 镜像并完成一致性检查。 状态保持待验收。连接手机后还需安装 `android/app/build/outputs/apk/debug/app-debug.apk`,人工检查采集/采购列表、搜索、筛选、详情及只读边界。
Author
Owner

三星真机补充验证(2026-08-26)

  • 设备:Samsung SM-G9700(ADB 序列号已脱敏,不写入工单)
  • 使用保留数据的覆盖安装升级到 Agent 0.4.0 / versionCode 5。
  • 已重启 Supervisor 的 goauto-admin-api,新历史接口无 Token 返回 401,确认路由存在且鉴权生效。
  • 手机能够连通已保存的局域网服务地址;服务器设置、Device Token 数据、无障碍服务和常亮设置均保留。
  • 真机依次切换“采集”和“采购”Tab,两个 TaskHistoryFragment 均进入可见状态,Android 日志未发现崩溃。
  • 未读取或保存控件树、截图;未触发采集、采购、创建订单或支付。

#90 继续保持待用户人工验收;请在三星屏幕上检查任务列表文案、编号搜索、状态筛选和详情展示是否符合原型。

## 三星真机补充验证(2026-08-26) - 设备:Samsung SM-G9700(ADB 序列号已脱敏,不写入工单) - 使用保留数据的覆盖安装升级到 Agent `0.4.0` / versionCode `5`。 - 已重启 Supervisor 的 `goauto-admin-api`,新历史接口无 Token 返回 401,确认路由存在且鉴权生效。 - 手机能够连通已保存的局域网服务地址;服务器设置、Device Token 数据、无障碍服务和常亮设置均保留。 - 真机依次切换“采集”和“采购”Tab,两个 `TaskHistoryFragment` 均进入可见状态,Android 日志未发现崩溃。 - 未读取或保存控件树、截图;未触发采集、采购、创建订单或支付。 #90 继续保持待用户人工验收;请在三星屏幕上检查任务列表文案、编号搜索、状态筛选和详情展示是否符合原型。
Author
Owner

#90 验收反馈:任务搜索区域紧凑化

用户确认直接并入 #90 实施,不另建工单。

需求

  • 删除采集、采购搜索框上方重复的“采集任务编号 / 采购任务编号”提示词。
  • 两个搜索框减少纵向占位,输入文字和搜索按钮文字略微缩小。
  • 尽量让任务列表更早进入首屏。

设计证据与尺寸

  • 搜索区域继续保持“输入框 + 搜索按钮”单行布局。
  • 占位文字调整为:
    • 采集:输入编号,如 35 或 #35
    • 采购:输入编号,如 12 或 CG-12
  • 输入框与按钮文字统一为 14sp。
  • 移除标签后压缩搜索容器上下内边距,并保持输入框与按钮至少 48dp 高、二者间距 8dp。
  • EditText 增加明确的无障碍描述,避免删除可见标签后失去字段语义。
  • 搜索解析、错误提示、状态筛选、分页和详情行为不变。

这是一处已确认页面中的小范围布局调整,明确复用 #87 v3 / #90 已确认的深色样式和现有交互,不需要重新制作完整 QuantUX。

## #90 验收反馈:任务搜索区域紧凑化 用户确认直接并入 #90 实施,不另建工单。 ### 需求 - 删除采集、采购搜索框上方重复的“采集任务编号 / 采购任务编号”提示词。 - 两个搜索框减少纵向占位,输入文字和搜索按钮文字略微缩小。 - 尽量让任务列表更早进入首屏。 ### 设计证据与尺寸 - 搜索区域继续保持“输入框 + 搜索按钮”单行布局。 - 占位文字调整为: - 采集:`输入编号,如 35 或 #35` - 采购:`输入编号,如 12 或 CG-12` - 输入框与按钮文字统一为 `14sp`。 - 移除标签后压缩搜索容器上下内边距,并保持输入框与按钮至少 `48dp` 高、二者间距 `8dp`。 - EditText 增加明确的无障碍描述,避免删除可见标签后失去字段语义。 - 搜索解析、错误提示、状态筛选、分页和详情行为不变。 这是一处已确认页面中的小范围布局调整,明确复用 #87 v3 / #90 已确认的深色样式和现有交互,不需要重新制作完整 QuantUX。
Author
Owner

#90 紧凑搜索区已实施,待验收

提交:77fdbeb(已推送 main)

  • 删除采集/采购搜索框上方的重复标签。
  • 占位文字改为更短的编号示例。
  • 输入框与搜索按钮字体统一为 14sp。
  • 搜索容器上下内边距改为 8dp,左右 12dp,底部间距改为 8dp。
  • 输入框和按钮高度统一为 48dp,二者保持 8dp 间距。
  • 输入框保留明确的无障碍字段描述;搜索逻辑、错误反馈、筛选和分页行为未改变。
  • Agent 升级为 0.4.1 / versionCode 6。

验证:

  • .\scripts\verify.ps1 -Component android:Debug/Release 单测及 Debug APK 构建通过。
  • git diff --check:通过。
  • 已覆盖安装到 Samsung SM-G9700;采集与采购 Tab 均可切换,未发现崩溃。
  • 无长期产品、契约、配置或运行方式变化,因此不更新 Wiki。

请直接在三星手机上验收两个搜索区域的占位高度和字体大小。

## #90 紧凑搜索区已实施,待验收 提交:`77fdbeb`(已推送 `main`) - 删除采集/采购搜索框上方的重复标签。 - 占位文字改为更短的编号示例。 - 输入框与搜索按钮字体统一为 14sp。 - 搜索容器上下内边距改为 8dp,左右 12dp,底部间距改为 8dp。 - 输入框和按钮高度统一为 48dp,二者保持 8dp 间距。 - 输入框保留明确的无障碍字段描述;搜索逻辑、错误反馈、筛选和分页行为未改变。 - Agent 升级为 `0.4.1` / versionCode `6`。 验证: - `.\scripts\verify.ps1 -Component android`:Debug/Release 单测及 Debug APK 构建通过。 - `git diff --check`:通过。 - 已覆盖安装到 Samsung SM-G9700;采集与采购 Tab 均可切换,未发现崩溃。 - 无长期产品、契约、配置或运行方式变化,因此不更新 Wiki。 请直接在三星手机上验收两个搜索区域的占位高度和字体大小。
Author
Owner

验收通过

用户于 2026-08-26 明确确认 #90 验收通过。三星真机上的当前设备任务历史、编号搜索、状态筛选、采集/采购只读详情,以及紧凑搜索区域均通过验收。

关闭本单。验收阶段没有新增长期事实,不重复更新或同步 Wiki。

## 验收通过 用户于 2026-08-26 明确确认 #90 验收通过。三星真机上的当前设备任务历史、编号搜索、状态筛选、采集/采购只读详情,以及紧凑搜索区域均通过验收。 关闭本单。验收阶段没有新增长期事实,不重复更新或同步 Wiki。
ila closed this issue 2026-08-26 09:43:32 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#90