档口入库码批量回写只提交可回写项并固定确认范围 #351

Open
opened 2026-09-29 14:51:59 +08:00 by ila · 1 comment
Owner

当前状态

已实施、验证、合并 main 并按授权部署至 167;待用户验收。无迁移、无真实 SYB 回写。

原始需求及事实

用户反馈混选很多入库码记录,只有 1 条可回写,但确认弹窗被不可回写项阻塞。基线 main 4959f3d:按钮数字只统计 ready,而 openApply/confirmApply 提交 selected 的所有 ID;服务端对任一非 ready 项拒绝整批,预览 blocked 也会禁用整批确认。
目标:批量混选时仅操作当前页选中的 ready 项,其他项明确跳过;显示数量、预览和实际提交范围一致。

范围、依赖与非目标

交付单元仅 Web:syb-inner-codes 页面及受影响测试。依赖 #350 已合并发布的匹配及 rematch 能力,依赖已满足;不与 #340 捆绑。Server API、字段、数据库、权限、订单、匹配算法及 SYB 回写执行器不变;无需迁移。不自动执行真实 SYB 回写。

轻量设计证据 v1(复用现有页面/Element Plus 弹窗)

沿用列表勾选和“回写 N”按钮。N 由当前页勾选且 ready 的唯一记录计算;N=0、加载失败、匹配/回写/提交进行中禁用。
点击按钮时固定本次当前页勾选与合格 ID,预览只发送合格项;确认期间列表刷新/勾选改变不更改固定范围。弹窗标题“确认回写 N 条业务记录”,展示“选中 X 条,可回写 N 条,跳过 Y 条”,保留入库码总数/占位/替换旧码指标。跳过为说明,不阻塞合法项。确认按钮“回写 N 条”,只提交通过预览的固定 ID。
预览时部分候选已不合格:明确显示并剔除,使用剩余合格项重新取得准确预览,剩余为零则禁用;不自动回写。预览异常、返回范围不一致时显示错误并禁用,不能将空预览当成功。确认期间及提交中不能重复提交;请求结果未知不自动重试,仍由原回写状态/只读复核流程处理。
加载/预览失败、无可用项、状态变化、原权限边界和取消均保留。小范围恢复既有批量按钮含义,无新页面,复用现有弹窗,无需完整独立原型。
确认来源:用户在上述最小方案后明确“建工单,做,合并,部署”;确认人用户,时间 2026-09-29,覆盖全部上述最小范围。

验收和验证

混选已回写/失败/ready 只预览并提交 ready;数量真实一致;候选 ID 去重、排除离页项;打开后更改选择/列表不扩大范围;预览 blocked 剔除并刷新准确指标,零合格项及网络失败禁用;后端状态冲突仍明确失败、不盲目重试。按钮互斥/防双击/取消及原匹配、回写行为回归。
执行 Web 单元测试、浏览器隔离 mock、受影响 ESLint、生产构建、diff 检查;部署保持原 Server/config/static/temp,切换 dist 与重启 GoAuto/Nginx,检查首页、资源、API及无运行中任务。不调用真实 /apply 接口测试。

风险与文档

只过滤提交范围,不放宽后端校验。发布已获用户明确授权;真实回写仍须采购员在页面人工确认。保留旧发布用于回滚。
长期文档更新 Business-Rules-and-Glossary 的批量回写确认范围;无 API/schema/权限变化,其他契约不改。Wiki-first 在线回读 revision 后一轮 sync/check。实现/提交/上线验证回写本单,保持待验收。

## 当前状态 已实施、验证、合并 main 并按授权部署至 167;待用户验收。无迁移、无真实 SYB 回写。 ## 原始需求及事实 用户反馈混选很多入库码记录,只有 1 条可回写,但确认弹窗被不可回写项阻塞。基线 main 4959f3d:按钮数字只统计 ready,而 openApply/confirmApply 提交 selected 的所有 ID;服务端对任一非 ready 项拒绝整批,预览 blocked 也会禁用整批确认。 目标:批量混选时仅操作当前页选中的 ready 项,其他项明确跳过;显示数量、预览和实际提交范围一致。 ## 范围、依赖与非目标 交付单元仅 Web:syb-inner-codes 页面及受影响测试。依赖 #350 已合并发布的匹配及 rematch 能力,依赖已满足;不与 #340 捆绑。Server API、字段、数据库、权限、订单、匹配算法及 SYB 回写执行器不变;无需迁移。不自动执行真实 SYB 回写。 ## 轻量设计证据 v1(复用现有页面/Element Plus 弹窗) 沿用列表勾选和“回写 N”按钮。N 由当前页勾选且 ready 的唯一记录计算;N=0、加载失败、匹配/回写/提交进行中禁用。 点击按钮时固定本次当前页勾选与合格 ID,预览只发送合格项;确认期间列表刷新/勾选改变不更改固定范围。弹窗标题“确认回写 N 条业务记录”,展示“选中 X 条,可回写 N 条,跳过 Y 条”,保留入库码总数/占位/替换旧码指标。跳过为说明,不阻塞合法项。确认按钮“回写 N 条”,只提交通过预览的固定 ID。 预览时部分候选已不合格:明确显示并剔除,使用剩余合格项重新取得准确预览,剩余为零则禁用;不自动回写。预览异常、返回范围不一致时显示错误并禁用,不能将空预览当成功。确认期间及提交中不能重复提交;请求结果未知不自动重试,仍由原回写状态/只读复核流程处理。 加载/预览失败、无可用项、状态变化、原权限边界和取消均保留。小范围恢复既有批量按钮含义,无新页面,复用现有弹窗,无需完整独立原型。 确认来源:用户在上述最小方案后明确“建工单,做,合并,部署”;确认人用户,时间 2026-09-29,覆盖全部上述最小范围。 ## 验收和验证 混选已回写/失败/ready 只预览并提交 ready;数量真实一致;候选 ID 去重、排除离页项;打开后更改选择/列表不扩大范围;预览 blocked 剔除并刷新准确指标,零合格项及网络失败禁用;后端状态冲突仍明确失败、不盲目重试。按钮互斥/防双击/取消及原匹配、回写行为回归。 执行 Web 单元测试、浏览器隔离 mock、受影响 ESLint、生产构建、diff 检查;部署保持原 Server/config/static/temp,切换 dist 与重启 GoAuto/Nginx,检查首页、资源、API及无运行中任务。不调用真实 /apply 接口测试。 ## 风险与文档 只过滤提交范围,不放宽后端校验。发布已获用户明确授权;真实回写仍须采购员在页面人工确认。保留旧发布用于回滚。 长期文档更新 Business-Rules-and-Glossary 的批量回写确认范围;无 API/schema/权限变化,其他契约不改。Wiki-first 在线回读 revision 后一轮 sync/check。实现/提交/上线验证回写本单,保持待验收。
Author
Owner

实施、合并与线上发布完成,待验收(2026-09-29)

实现与设计证据

仅修改 Web 档口入库码页面及测试。沿用现有列表/Element Plus 弹窗,设计按用户已确认的 v1 最小方案执行。ui-ux-pro-max 用于明确批量操作范围与跳过反馈,不增加页面、审批或权限。

  • 回写按钮统计当前页勾选且 ready 的唯一记录,零项、加载失败、匹配/提交忙碌时禁用。
  • 打开后冻结选中数量及合格 ID,预览与确认提交仅使用该范围;列表刷新、重新勾选不扩大确认范围。展示选中/可回写/跳过数量及合格项指标,不再因混选已回写等记录阻塞。
  • 预览中的 blocked 候选剔除后最多再读一次预览,刷新剩余指标;无候选、失败、范围不一致或再次变化时不能提交。确认中阻止双击;未知提交结果不自动重试,原服务端 ready/计划校验不变。

验证

  • Web 单元 11/11(新增 6 项,原匹配 5 项);合并后再次 11/11 通过。
  • 隔离浏览器 mock 8/8(新增混选回写、预览状态变化、预览失败 3 项,原匹配 5 项)。所有提交均拦截为模拟响应,没有访问生产 /apply。开发测试服务已停止。
  • 受影响页面 ESLint、pnpm build:prod、git diff --check 通过。既有 CSS/包体积警告不在本单扩展修复。
  • 生产外部入口返回新 Admin SPA,index/入库码模块 JS 与构建逐字节一致,入口资源正常。管理员只读预览中可回写项不再混入其他状态,blocked=0;未提交真实回写。

Git 与文档

源码 ee8f80f987e386c75fa05752e77b0524687d0d87;文档 d72d77d;main 合并 1e582cd868bf8d23b599147dcbd11c69d61bca0c,已推送并回读一致。#340 未合并。
Wiki Business-Rules-and-Glossary 在线更新/回读 revision 32c6b496de47b54ca04e081271114c28ff439e0c,一轮 sync 与一轮 sync --check 通过(17 页一致)。无 API/schema/权限变化,不改其他契约。docs/12-syb-erp-interface.md 无关镜像差异未提交。

发布

线上目录 /home/goauto/releases/20260929-351-web;原 /home/goauto/releases/20260929-350-v2-4959f3d 保留用于回滚。
只发布 Web dist;复制原 Server/config/static/temp,不改凭据或定时任务,不执行迁移。Web 发布包 SHA-256 b6df030ca308535e051a4860bc1e8940dfd034eab3744a97c45f41a7e03a7bb5;原 Server SHA-256 4a980df95a6e27429b62e82f6cbea2646642e6f262ba307243e7a6a82f5cfd59,上传/复制后均已核对。
发布前无运行中采集/采购/匹配/回写;原子切换 current、重启 GoAuto、nginx -t/reload 通过;服务 active,启动后无 panic/fatal/1146/1054。发布前后全部入库码记录状态及更新时间完全相同;没有 SQL 生产状态修改、匹配或 SYB 回写。

验收与边界

请强刷档口入库码页,全选混合状态记录,确认“回写 N”及弹窗跳过数量正确,只操作合法项。真实 SYB 回写留给采购员人工确认,本轮未执行,工单保持开放待验收。MCP 不可用按既有记录使用 Gitea API。

## 实施、合并与线上发布完成,待验收(2026-09-29) ### 实现与设计证据 仅修改 Web 档口入库码页面及测试。沿用现有列表/Element Plus 弹窗,设计按用户已确认的 v1 最小方案执行。ui-ux-pro-max 用于明确批量操作范围与跳过反馈,不增加页面、审批或权限。 - 回写按钮统计当前页勾选且 ready 的唯一记录,零项、加载失败、匹配/提交忙碌时禁用。 - 打开后冻结选中数量及合格 ID,预览与确认提交仅使用该范围;列表刷新、重新勾选不扩大确认范围。展示选中/可回写/跳过数量及合格项指标,不再因混选已回写等记录阻塞。 - 预览中的 blocked 候选剔除后最多再读一次预览,刷新剩余指标;无候选、失败、范围不一致或再次变化时不能提交。确认中阻止双击;未知提交结果不自动重试,原服务端 ready/计划校验不变。 ### 验证 - Web 单元 11/11(新增 6 项,原匹配 5 项);合并后再次 11/11 通过。 - 隔离浏览器 mock 8/8(新增混选回写、预览状态变化、预览失败 3 项,原匹配 5 项)。所有提交均拦截为模拟响应,没有访问生产 /apply。开发测试服务已停止。 - 受影响页面 ESLint、pnpm build:prod、git diff --check 通过。既有 CSS/包体积警告不在本单扩展修复。 - 生产外部入口返回新 Admin SPA,index/入库码模块 JS 与构建逐字节一致,入口资源正常。管理员只读预览中可回写项不再混入其他状态,blocked=0;未提交真实回写。 ### Git 与文档 源码 ee8f80f987e386c75fa05752e77b0524687d0d87;文档 d72d77d;main 合并 1e582cd868bf8d23b599147dcbd11c69d61bca0c,已推送并回读一致。#340 未合并。 Wiki Business-Rules-and-Glossary 在线更新/回读 revision 32c6b496de47b54ca04e081271114c28ff439e0c,一轮 sync 与一轮 sync --check 通过(17 页一致)。无 API/schema/权限变化,不改其他契约。docs/12-syb-erp-interface.md 无关镜像差异未提交。 ### 发布 线上目录 /home/goauto/releases/20260929-351-web;原 /home/goauto/releases/20260929-350-v2-4959f3d 保留用于回滚。 只发布 Web dist;复制原 Server/config/static/temp,不改凭据或定时任务,不执行迁移。Web 发布包 SHA-256 b6df030ca308535e051a4860bc1e8940dfd034eab3744a97c45f41a7e03a7bb5;原 Server SHA-256 4a980df95a6e27429b62e82f6cbea2646642e6f262ba307243e7a6a82f5cfd59,上传/复制后均已核对。 发布前无运行中采集/采购/匹配/回写;原子切换 current、重启 GoAuto、nginx -t/reload 通过;服务 active,启动后无 panic/fatal/1146/1054。发布前后全部入库码记录状态及更新时间完全相同;没有 SQL 生产状态修改、匹配或 SYB 回写。 ### 验收与边界 请强刷档口入库码页,全选混合状态记录,确认“回写 N”及弹窗跳过数量正确,只操作合法项。真实 SYB 回写留给采购员人工确认,本轮未执行,工单保持开放待验收。MCP 不可用按既有记录使用 Gitea API。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#351