档口入库码:Vue 管理页面、权限与全栈联调 #122

Closed
opened 2026-08-27 23:30:17 +08:00 by ila · 3 comments
Owner

所属与来源

  • 父 MVP:#117。
  • 来源:用户于 2026-08-27 要求先按已确认的全栈分析方案建单并制作总原型,审核通过后才能实施。
  • 前置依赖:#118 原型审核通过,#119~#121 对应 API 可用。

目标

按已确认总原型实现 GoAuto 原生 Vue/Element Plus 页面、菜单、权限和完整前后端联调。

方案

  • 新增 /syb-inner-codes 路由、API 封装和独立页面,不复制源项目 html/template、CSS 或共享 app.js。
  • 列表支持日期、状态、关键词筛选,分页 20/50/100/200,默认 100。
  • 实现 Excel 导入摘要和逐行错误、导入后自动匹配进度、异常项重新匹配、匹配证据详情、执行确认、批次轮询、部分失败、needs_check 只读复核和批量物理删除。
  • 写入确认展示记录数、单件码总数、预计占位明细数、替换旧码数,以及“不确定结果不会自动重试”。
  • 状态使用标签加文字,不只依赖颜色;加载时禁用重复操作并保留恢复路径。
  • 采购员拥有查看、导入、自动匹配、回写、只读复核和批量删除全部运营权限;服务端仍通过 Casbin 校验采购员角色。
  • 列表筛选、页码和返回位置应在详情/对话框关闭后保持。
  • 删除弹窗固定文案:确定删除已选择的 N 条数据吗?删除后不可恢复,可重新导入 Excel。;后端拒绝 queued、applying、needs_check 时列出阻塞项,不做部分删除。

非目标

  • 不改变已确认的数据、匹配或写入规则。
  • 不增加 Android 页面。
  • 不实现历史数据导入工具。

验收标准

  • 页面结构、文案、权限和异常流程与 #118 已确认原型一致。
  • 导入后自动匹配,无常驻批量匹配按钮;异常项重新匹配、写入、进度和复核链路可操作。
  • 勾选后删除弹窗显示数量与不可恢复说明;确认后物理删除,三个禁止状态提示清楚。
  • 空、加载、失败、禁用、无权限和部分成功状态完整。
  • 重复点击不会创建重复导入或执行批次。
  • 采购员具备全部运营权限,未认证或非采购员请求由服务端拒绝。
  • Web lint/build、Router/API 测试、权限迁移测试和浏览器验收通过。
  • 浏览器验收不调用真实 SYB 写接口,除非用户单独授权。

设计证据与文档

唯一实现依据为 #118 用户确认版本;结构或风险交互变化必须先出新版本原型重新确认。完成后更新架构、业务规则、MVP、接口、验证和运行说明 Wiki。

## 所属与来源 - 父 MVP:#117。 - 来源:用户于 2026-08-27 要求先按已确认的全栈分析方案建单并制作总原型,审核通过后才能实施。 - 前置依赖:#118 原型审核通过,#119~#121 对应 API 可用。 ## 目标 按已确认总原型实现 GoAuto 原生 Vue/Element Plus 页面、菜单、权限和完整前后端联调。 ## 方案 - 新增 `/syb-inner-codes` 路由、API 封装和独立页面,不复制源项目 html/template、CSS 或共享 `app.js`。 - 列表支持日期、状态、关键词筛选,分页 20/50/100/200,默认 100。 - 实现 Excel 导入摘要和逐行错误、导入后自动匹配进度、异常项重新匹配、匹配证据详情、执行确认、批次轮询、部分失败、`needs_check` 只读复核和批量物理删除。 - 写入确认展示记录数、单件码总数、预计占位明细数、替换旧码数,以及“不确定结果不会自动重试”。 - 状态使用标签加文字,不只依赖颜色;加载时禁用重复操作并保留恢复路径。 - 采购员拥有查看、导入、自动匹配、回写、只读复核和批量删除全部运营权限;服务端仍通过 Casbin 校验采购员角色。 - 列表筛选、页码和返回位置应在详情/对话框关闭后保持。 - 删除弹窗固定文案:`确定删除已选择的 N 条数据吗?删除后不可恢复,可重新导入 Excel。`;后端拒绝 `queued`、`applying`、`needs_check` 时列出阻塞项,不做部分删除。 ## 非目标 - 不改变已确认的数据、匹配或写入规则。 - 不增加 Android 页面。 - 不实现历史数据导入工具。 ## 验收标准 - [ ] 页面结构、文案、权限和异常流程与 #118 已确认原型一致。 - [ ] 导入后自动匹配,无常驻批量匹配按钮;异常项重新匹配、写入、进度和复核链路可操作。 - [ ] 勾选后删除弹窗显示数量与不可恢复说明;确认后物理删除,三个禁止状态提示清楚。 - [ ] 空、加载、失败、禁用、无权限和部分成功状态完整。 - [ ] 重复点击不会创建重复导入或执行批次。 - [ ] 采购员具备全部运营权限,未认证或非采购员请求由服务端拒绝。 - [ ] Web lint/build、Router/API 测试、权限迁移测试和浏览器验收通过。 - [ ] 浏览器验收不调用真实 SYB 写接口,除非用户单独授权。 ## 设计证据与文档 唯一实现依据为 #118 用户确认版本;结构或风险交互变化必须先出新版本原型重新确认。完成后更新架构、业务规则、MVP、接口、验证和运行说明 Wiki。
Author
Owner

开始实施。按 #118 v1 revision 3 原型落地 Vue/Element Plus 页面、菜单、采购员权限和 API 联调。UI 评审采用 data-dense dashboard 规范,重点保证明确文字状态、键盘可达、加载禁用、危险操作确认、进度反馈与 reduced-motion;不新增原型范围外流程。浏览器验收不得调用真实 SYB 写接口。

开始实施。按 #118 v1 revision 3 原型落地 Vue/Element Plus 页面、菜单、采购员权限和 API 联调。UI 评审采用 data-dense dashboard 规范,重点保证明确文字状态、键盘可达、加载禁用、危险操作确认、进度反馈与 reduced-motion;不新增原型范围外流程。浏览器验收不得调用真实 SYB 写接口。
Author
Owner

实施完成,待用户验收

实现提交:941b7b1;后端依赖提交:5c6655f;文档提交:fd15ce0、68395ca、2f54155。

  • 按 #118 已确认原型新增“档口入库码”路由、菜单、API 封装和 Vue/Element Plus 页面。
  • 工具栏顺序为 Excel 选择/导入、日期范围、统一关键词、清除/搜索、右侧回写/删除;列表最左侧勾选框,列为营业日期、订单号、入库码、档口、本地规格、SYB 规格、状态、操作,不展示店铺和单件码列。
  • 导入后自动匹配并轮询;异常项可重新匹配,needs_check 只显示只读复核。详情保留店铺作为匹配证据并展示全部入库码。
  • 回写确认展示四项统计;删除确认展示选中/可删除/阻塞数量,阻塞状态禁用整批确认。补齐 loading、empty、error、disabled、文字状态和 reduced-motion。
  • Playwright 使用全量 mock API 验证页面和风险门禁,未调用真实 SYB。

共同验证与文档证据

  • .\scripts\verify.ps1 -Component all:通过(服务端 go test ./... 与构建、Web lint/生产构建、Android 单测与 debug APK 构建);Web lint 仅有 30 条存量 warning,0 error。
  • 专项浏览器验收:npx playwright test tests/e2e/syb-inner-codes.spec.ts,1 passed。
  • 线上 Wiki revision:架构 6ed5b970878ff0211946fbba02c64eaccfe8d8bb;业务规则 4236dd1d219cc6235537adfd8d0411308c449971;产品索引 0d9924b4566e567edf167ba678fedde28a41cfd3;SYB 契约 f596931468caf524cbd9d90b3c299b32a8cf8228。
  • harness.py sync 已完整导出。独立 sync --check 因 Gitea 直连读取超时未返回成功码;随后通过 Gitea MCP 对上述四页逐字比较正文并核对镜像 revision,四页均 content_equal=true、revision_equal=true。
  • 保留无关未跟踪文件 gitea.zip,未纳入提交。
## 实施完成,待用户验收 实现提交:`941b7b1`;后端依赖提交:`5c6655f`;文档提交:`fd15ce0`、`68395ca`、`2f54155`。 - 按 #118 已确认原型新增“档口入库码”路由、菜单、API 封装和 Vue/Element Plus 页面。 - 工具栏顺序为 Excel 选择/导入、日期范围、统一关键词、清除/搜索、右侧回写/删除;列表最左侧勾选框,列为营业日期、订单号、入库码、档口、本地规格、SYB 规格、状态、操作,不展示店铺和单件码列。 - 导入后自动匹配并轮询;异常项可重新匹配,needs_check 只显示只读复核。详情保留店铺作为匹配证据并展示全部入库码。 - 回写确认展示四项统计;删除确认展示选中/可删除/阻塞数量,阻塞状态禁用整批确认。补齐 loading、empty、error、disabled、文字状态和 reduced-motion。 - Playwright 使用全量 mock API 验证页面和风险门禁,未调用真实 SYB。 ### 共同验证与文档证据 - `.\scripts\verify.ps1 -Component all`:通过(服务端 `go test ./...` 与构建、Web lint/生产构建、Android 单测与 debug APK 构建);Web lint 仅有 30 条存量 warning,0 error。 - 专项浏览器验收:`npx playwright test tests/e2e/syb-inner-codes.spec.ts`,1 passed。 - 线上 Wiki revision:架构 `6ed5b970878ff0211946fbba02c64eaccfe8d8bb`;业务规则 `4236dd1d219cc6235537adfd8d0411308c449971`;产品索引 `0d9924b4566e567edf167ba678fedde28a41cfd3`;SYB 契约 `f596931468caf524cbd9d90b3c299b32a8cf8228`。 - `harness.py sync` 已完整导出。独立 `sync --check` 因 Gitea 直连读取超时未返回成功码;随后通过 Gitea MCP 对上述四页逐字比较正文并核对镜像 revision,四页均 `content_equal=true`、`revision_equal=true`。 - 保留无关未跟踪文件 `gitea.zip`,未纳入提交。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:24 +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#122