feat(web): 批量采购记住当前用户上次选择的Android设备 #233

Open
opened 2026-09-07 11:13:32 +08:00 by ila · 1 comment
Owner

原始需求与事实

2026-09-07 用户反馈:批量创建采购任务的Android设备每次都要重选,要求默认上次选择。当前SYB商品openPurchaseBatch每次deviceId=null。

方案与范围

仅Web的SYB商品“批量创建采购任务”弹窗。按当前登录用户ID及当前前端/API环境保存本地设备偏好;选择或主动清空立即记忆。打开时先加载现有可选设备/能力过滤结果,恢复有效设备后以相同deviceId预检。记忆设备不可用时保留记忆、显示不可用项及就近提示,要求用户选择或明确清空,避免静默改派。读取/写入存储失败不阻断手动选择。沿用现有退出登录清理浏览器存储行为,不扩大认证逻辑。
服务端现有getinfo已返回userId,Web保留该字段用于偏好分区,不使用昵称或Token。预检失败/未结束不得提交,过期预检不覆盖当前设备结果。
非目标:其他创建入口、采集、采购重试、后端分派、数据库、权限、APK及线上发布。

设计证据

复用现有SYB批量采购弹窗、Element Plus设备下拉和就近提示规范,用户已确认方案,无新页面或完整原型。正常恢复/首次为空/主动清空/上次不可用/加载失败/保存失败均覆盖。ui-ux-pro-max用于表单状态与错误反馈检查。

依赖与并行

无前置数据库或服务依赖,使用既有设备列表与批量预检接口;同弹窗修改不并行。

验收与验证

同用户重新打开、页面刷新恢复;用户之间隔离;清空保持不指定;离线/停用/能力不符不默认其他设备;预检与创建payload一致;失败禁用创建;浏览器模拟接口验证,不创建真实任务。Web lint、构建与相关自动化测试通过,提交推送、证据回写后待验收。

风险与文档

低风险Web偏好,不改变采购资格或权限校验。长期行为新增,在Business-Rules-and-Glossary记录浏览器本地偏好范围并按Wiki流程同步。生产发布需另行授权。
Gitea MCP不可用,按规则回退本机忽略配置API,凭据不输出。

## 原始需求与事实 2026-09-07 用户反馈:批量创建采购任务的Android设备每次都要重选,要求默认上次选择。当前SYB商品openPurchaseBatch每次deviceId=null。 ## 方案与范围 仅Web的SYB商品“批量创建采购任务”弹窗。按当前登录用户ID及当前前端/API环境保存本地设备偏好;选择或主动清空立即记忆。打开时先加载现有可选设备/能力过滤结果,恢复有效设备后以相同deviceId预检。记忆设备不可用时保留记忆、显示不可用项及就近提示,要求用户选择或明确清空,避免静默改派。读取/写入存储失败不阻断手动选择。沿用现有退出登录清理浏览器存储行为,不扩大认证逻辑。 服务端现有getinfo已返回userId,Web保留该字段用于偏好分区,不使用昵称或Token。预检失败/未结束不得提交,过期预检不覆盖当前设备结果。 非目标:其他创建入口、采集、采购重试、后端分派、数据库、权限、APK及线上发布。 ## 设计证据 复用现有SYB批量采购弹窗、Element Plus设备下拉和就近提示规范,用户已确认方案,无新页面或完整原型。正常恢复/首次为空/主动清空/上次不可用/加载失败/保存失败均覆盖。ui-ux-pro-max用于表单状态与错误反馈检查。 ## 依赖与并行 无前置数据库或服务依赖,使用既有设备列表与批量预检接口;同弹窗修改不并行。 ## 验收与验证 同用户重新打开、页面刷新恢复;用户之间隔离;清空保持不指定;离线/停用/能力不符不默认其他设备;预检与创建payload一致;失败禁用创建;浏览器模拟接口验证,不创建真实任务。Web lint、构建与相关自动化测试通过,提交推送、证据回写后待验收。 ## 风险与文档 低风险Web偏好,不改变采购资格或权限校验。长期行为新增,在Business-Rules-and-Glossary记录浏览器本地偏好范围并按Wiki流程同步。生产发布需另行授权。 Gitea MCP不可用,按规则回退本机忽略配置API,凭据不输出。
Author
Owner

实现完成,待人工验收(2026-09-07)

最终实现

  • 仅修改 SYB 商品页“批量创建采购任务”:按用户 ID、浏览器来源与 API 环境记忆设备 ID,选择或清空立即保存,重新打开及刷新后恢复。
  • 复用既有弹窗与设备下拉,按 UI/UX 表单反馈建议添加就近提示。设备仍符合现有在线/可选/采购能力条件才恢复有效选中;不可用时显示禁用项,必须重选或明确清空,不静默切换到其他设备。
  • 恢复的设备参与预检;加载、失败、不可用时禁止提交。旧弹窗/旧请求结果不覆盖新选择;浏览器存储异常不阻断手动操作。
  • Web 使用既有 getinfo.userId,不改接口或鉴权;主动退出登录仍沿用现有清空 localStorage 行为,因此退出后需重新选择。

验证

  • Jest:3/3 通过,覆盖用户隔离、清空、无身份、损坏/禁用存储。
  • Playwright:4/4 通过,覆盖重开/刷新、预检和创建参数一致、记忆设备不可用、主动清空、同名用户按 ID 隔离、预检失败禁用、旧预检响应不覆盖新选择。所有业务 API 均模拟,未创建真实采购任务或订单。
  • 已查看模拟界面截图,设备选择、就近说明和预检失败反馈显示正常。
  • 本次 4 个生产代码文件定向 ESLint 通过;pnpm run build:prod 通过(既有样式/包体积警告保留)。
  • 全量 scripts/verify.ps1 -Component web:依赖安装通过,停在全量 lint,原因是未修改的 web/src/views/goauto/purchase-tasks/index.vue 存在 24 项既有缩进错误;该文件与基线 HEAD 一致,最近提交 dce4a4f。本工单未扩展修复,不能宣称全量 Web 检查通过;已从构建步骤单独继续且通过。
  • DevHarness check --strict、一次 Wiki sync 和一次 sync --check 通过,git diff --check 通过。

文档与交付

  • Wiki Business-Rules-and-Glossary 已在线更新并回读,revision:670a5592a6db8301cd115295bf820f7f4b6e06d7;本地镜像随提交保存。
  • 提交:1900dab32e9c21af3b59c60448e69a7452a6cf03,已推送 origin/fix/230-horizontal-spec-selection。
  • 本地 Vite 服务读取当前源码,刷新 Admin 即可验收;无需重启 API、数据库迁移或新 APK。未部署线上,未执行真实采购测试。
  • 原有 settings.yml、SYB 文档镜像及未跟踪文件均保留,未纳入本提交;为 Wiki 同步临时保存的用户镜像改动已恢复。

验收建议:选择设备后返回列表,再打开弹窗及刷新页面确认自动恢复;需要不指定设备时明确清空。工单保持 open,等待用户验收。

## 实现完成,待人工验收(2026-09-07) ### 最终实现 - 仅修改 SYB 商品页“批量创建采购任务”:按用户 ID、浏览器来源与 API 环境记忆设备 ID,选择或清空立即保存,重新打开及刷新后恢复。 - 复用既有弹窗与设备下拉,按 UI/UX 表单反馈建议添加就近提示。设备仍符合现有在线/可选/采购能力条件才恢复有效选中;不可用时显示禁用项,必须重选或明确清空,不静默切换到其他设备。 - 恢复的设备参与预检;加载、失败、不可用时禁止提交。旧弹窗/旧请求结果不覆盖新选择;浏览器存储异常不阻断手动操作。 - Web 使用既有 getinfo.userId,不改接口或鉴权;主动退出登录仍沿用现有清空 localStorage 行为,因此退出后需重新选择。 ### 验证 - Jest:3/3 通过,覆盖用户隔离、清空、无身份、损坏/禁用存储。 - Playwright:4/4 通过,覆盖重开/刷新、预检和创建参数一致、记忆设备不可用、主动清空、同名用户按 ID 隔离、预检失败禁用、旧预检响应不覆盖新选择。所有业务 API 均模拟,未创建真实采购任务或订单。 - 已查看模拟界面截图,设备选择、就近说明和预检失败反馈显示正常。 - 本次 4 个生产代码文件定向 ESLint 通过;pnpm run build:prod 通过(既有样式/包体积警告保留)。 - 全量 scripts/verify.ps1 -Component web:依赖安装通过,停在全量 lint,原因是未修改的 web/src/views/goauto/purchase-tasks/index.vue 存在 24 项既有缩进错误;该文件与基线 HEAD 一致,最近提交 dce4a4f。本工单未扩展修复,不能宣称全量 Web 检查通过;已从构建步骤单独继续且通过。 - DevHarness check --strict、一次 Wiki sync 和一次 sync --check 通过,git diff --check 通过。 ### 文档与交付 - Wiki Business-Rules-and-Glossary 已在线更新并回读,revision:670a5592a6db8301cd115295bf820f7f4b6e06d7;本地镜像随提交保存。 - 提交:1900dab32e9c21af3b59c60448e69a7452a6cf03,已推送 origin/fix/230-horizontal-spec-selection。 - 本地 Vite 服务读取当前源码,刷新 Admin 即可验收;无需重启 API、数据库迁移或新 APK。未部署线上,未执行真实采购测试。 - 原有 settings.yml、SYB 文档镜像及未跟踪文件均保留,未纳入本提交;为 Wiki 同步临时保存的用户镜像改动已恢复。 验收建议:选择设备后返回列表,再打开弹窗及刷新页面确认自动恢复;需要不指定设备时明确清空。工单保持 open,等待用户验收。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#233