# 2026-07-16 测试环境全面优化 --- ### 1. 测试问题页面优化 **旭东 → OpenClaw:** > 1、测试问题菜单视图总览下的4个卡片,需要支持跳转功能,点击卡片,自动跳转到对应内容板块 > 2、处理中卡片名字更改为待处理 > 3、审核问题下的待审核tab页下边问题排序更改为按照时间从远到近排序 **OpenClaw 响应:** - 视图总览4张卡片(待审核/待处理/已完成/全部)支持点击跳转到对应tab页 - 「处理中」改为「待处理」 - 待审核tab按 created_at ASC 排序(从远到近) --- ### 2. 测试问题页面Bug修复 **旭东 → OpenClaw:** (点击已完成卡片显示内容不对、审核未通过→待审核跳转异常、胡孟怡审核权限) **OpenClaw 响应:** - 修复异步竞态:有预设状态时跳过首次 loadFbActiveList,避免请求覆盖 - 修复 `_fbReviewSubTab` 未重置导致跳转显示错误内容 - 胡孟怡 role 从 admin 升为 super_admin(同步到生产) --- ### 3. 供应商管理 - 导出/导入功能 **旭东 → OpenClaw:** > 供应商管理菜单下需要支持以下功能 > 1、导出功能,根据字段内容进行全部导出,导出格式为xlsx > 2、导入功能,通过导入来维护供应商的简称、合同简称两个字段 > 3、导入时需要根据现有的供应商名称来新增简称、合同简称字段 **OpenClaw 响应:** - 导出 API `/api/suppliers/export`:支持按筛选条件导出全部供应商为 xlsx,含表头样式、冻结首行 - 导入 API `/api/suppliers/import`:按「供应商名称」匹配更新「简称」「合同简称」,显示成功/未匹配/跳过数 - 导入弹窗优化:支持拖拽上传 + 下载模板 - 合同简称大写校验:预检查所有行的合同简称,非大写直接报错并提示具体行号和供应商 --- ### 4. BOM/产品优化 **旭东 → OpenClaw:** > 1、产品信息管理更改货品名称,物料清单里对应的名称没有自动变更 > 2、物料清单管理里面,货品/物料编号更改为物料编号,名称更改为物料名称 **OpenClaw 响应:** - 产品改名时同步更新 BOM 表的 product_name(作为成品时)和 material_name(作为物料时) - BOM表头「货品/物料编号」→「物料编号」、「名称」→「物料名称」 --- ### 5. 计划预测BOM下单清单优化 **旭东 → OpenClaw:** > 1、计划预测BOM下单清单里面,成品的实际下单数量无法为0,修改为可以为0 > 2、修改成品下单数量为0的情况,可以自动同步到待下单管理详情弹窗中的实际下单数量 > 3、总之一句话,BOM下单清单中修改填写的数据优先级最高 **OpenClaw 响应:** - BOM清单成品实际下单数量可为0(前端校验 `newQty <= 0` 已删除,后台判断改为 `>= 0`) - 待下单确认弹窗/渲染函数均改为 `>= 0` 判断,0 也能正常传递和显示 --- ### 6. 待下单确认跳转规则 **旭东 → OpenClaw:** > 1、成品下单数量为0,包材下单数量不为0,不跳转国内/海外订单管理,但跳转包材订单管理和下单备份 > 2、成品下单数量不为0,包材下单数量为0,不跳转包材订单管理,但跳转国内/海外订单管理和下单备份 **OpenClaw 响应:** - 后端 `confirm_order` 增加 `has_product_order`/`has_packaging_order` 追踪 - 成品数量为0时跳过创建国内/海外订单 - 前端增加 `showConfirmRedirect()` 弹窗,根据实际创建类型显示对应跳转链接 --- ### 7. 国内订单管理 - 包材订单合计→金额 **旭东 → OpenClaw:** > 包材订单管理合计列改名为金额列 **OpenClaw 响应:** 包材订单管理所有「合计」→「金额」(表头、导出表头、列配置、字段渲染) --- ### 8. 订单管理金额列公式化 **旭东 → OpenClaw:** > 国内订单管理、海外订单管理、包材订单管理金额列设置公式,等于单价×数量,当修改某一个单价的时候,对应金额数据自动计算发生变化 **OpenClaw 响应:** - 三个列表的金额列均改为 `单价 × 数量` 实时计算 - 单价输入框增加 `oninput="recalcAmount(this)"`,即时重算同行金额 - 数量/金额列增加 `qty-cell`/`amt-cell` class 用于定位 --- ### 9. 到货批次同步优化 **旭东 → OpenClaw:** > 1、详情弹窗合计行订单未完结数量应该等于实际下单数量-到货数量,默认三行为空时不应是0 > 2、登记到货批次后,列表的实际到货数量和未到货数应与详情弹窗合计行保持一致 **OpenClaw 响应:** - 修复合计行未完结数量:空白行时显示 `orderQty` 而非 0 - 新增 `sync_order_arrival_totals()` 后端函数 - 新增 `实际到货数量`/`未到货数` 列到 `packaging_orders` 表 - 到货批次增/改/删均自动同步到订单表 - `domestic_orders`/`overseas_orders` 补齐 `订单下达供应商时间` 列 - 修复 f-string 反引号转义导致的 SQL 语法错误 --- ### 10. 待提数量独立字段 **旭东 → OpenClaw:** > 待提数量应该只保留手动编辑,不自动计算 > 未到货数列应该跟随到货批次合计行的订单未完结数量 **OpenClaw 响应:** - 新增 `待提数量` 列到三张订单表 - 详情弹窗 `待提数量` 保存到独立列,不覆盖 `未到货数` - `未到货数` 继续由到货批次自动计算 --- ### 11. saveDetailChanges 卡顿修复 **旭东 → OpenClaw:** > 修改待提数量点击保存一直显示保存中 **OpenClaw 响应:** - 修复 `function doneCheck()` 在 forEach 内的函数提升(hoisting)问题 - 改用 `var doneCheck = function()` 表达式 + `Promise.all` 替代手动计数 - 修复遗漏的空格号导致 syntax error - 修复 datetime 空字符串 '' 传参导致 MySQL 500 错误 --- ### 12. 显示 0 代替空 **旭东 → OpenClaw:** > 实际到货数量不要为空,写0就好 > 未到货数当为0也不要为空,写0 **OpenClaw 响应:** - 国内/海外/包材三个列表的 `实际到货数量` 和 `未到货数` 渲染统一改为显示 0 - 负数也能正常显示(去掉 `max(0,)` 截断) --- ### 13. 实际到货日期自动跟随 **旭东 → OpenClaw:** > 实际到货日期应该等于到货批次里最近一次日期,可以覆盖 **OpenClaw 响应:** - `sync_order_arrival_totals` 同步时自动取批次最新日期更新 `实际到货日期` - 删除全部批次时设为 NULL --- ### 14. priceSave 按API判定刷新 **旭东 → OpenClaw:** > 修改海外订单管理的单价后回车保存报错 Cannot set properties of null **OpenClaw 响应:** - 修复 `priceSave` 总是刷新国内订单列表的 bug - 改为根据 `api` 参数路径判定刷新哪个列表(overseas/packaging/domestic) --- ### 15. 日期格式规范化 **旭东 → OpenClaw:** > The specified value "2026/4/22" does not conform to the required format **OpenClaw 响应:** - 详情弹窗 `` 补上 `_padDateStr` 格式转换 - "2026/4/22" → "2026-04-22" --- ### 涉及文件 | 文件 | 改动 | |------|------| | `static/js/feedback.js` | 卡片跳转、改名、bug修复 | | `routes/feedback.py` | 待审核排序 | | `routes/products.py` | 供应商导出/导入/模板/大写校验、产品改名同步BOM | | `static/js/app.js` | 供应商导入导出弹窗、BOM表头、下单确认跳转、金额公式、到货批次、待提数量、显示0、priceSave修复、日期格式化 | | `routes/purchase.py` | confirm_order跳转逻辑、到货批次同步、sync_order_arrival_totals、空值转NULL、实际到货日期跟随 | | `templates/base.html` | 缓存版本号更新(v=1609) |