# 2026-06-30 数据概览与待下单管理多项优化 ## 1. 待下单管理—新增"下单时间"列+下单人改名 **旭东 → OpenClaw:** > 计划预测和采购订单里面继续完善补充功能 **OpenClaw 响应:** 在待下单管理中新增"下单时间"列(显示 `created_at`),放在"下单人员"列(原"下单人"改名)右侧。同步更新字段设置弹窗、确认下单弹窗标签、下单备份管理标签。 ## 2. 数据概览—统计逻辑调整 **旭东 → OpenClaw:** > 修改一下数据概览下的一些统计逻辑: > 1. 产品总数SKU改名为SKU总数 > 2. 增加SPU总数卡片 > 3. SKU=成品数,SPU=包材-内料 > 4. 增加库存成本卡片 > 5. 低库存预警只统计成品 **OpenClaw 响应:** 后端 SQL 修改:SKU = COUNT 成品(1466),SPU = COUNT 包材中 name NOT LIKE '%内料%'(4358),库存成本 = SUM(available_qty × cost_price) 最新日期去重后(约3,095万),低库存 = 仅成品 SUM 库存<100。前端新增 SPU 和库存成本卡片,所有卡片按 SKU→SPU→出库总记录→出库总数量→[出库总成本]→库存成本→总供应商→低库存预警 排列。 ## 3. 数据概览—删除三个出库卡片+删除卡片副标题 **旭东 → OpenClaw:** > 删除出库总记录、出库总数量、出库总成本三个卡片 **OpenClaw 响应:** 移除三个出库相关卡片和所有卡片副标题文字,页面仅保留 SKU总数、SPU总数、库存成本、总供应商、低库存预警 5个卡片。 ## 4. 修复库存成本与低库存预警数据异常 **旭东 → OpenClaw:** > 库存成本太大了,数值不对。低库存预警数量1428,SKU总数才1466,等于全部都是低库存,这里数据异常 **OpenClaw 响应:** 两个问题根因相同: - 库存明细表(inventory_detail)存有从5月27日到6月29日的所有历史快照数据,每次导入追加而非替换 - 原SQL未过滤 `data_date`,对全部日期进行 SUM(重复计算) - 低库存预警按行判断 `available_qty < 100`,一个产品有多个仓库行时只要有1个仓库<100就算 修复:所有库存明细查询加 `data_date = 最新日期` 过滤,库存成本按产品 GROUP BY 汇总后计算,低库存按 HAVING SUM(available_qty) < 100 判断。正确数据:库存成本约3,095万,低库存成品257个。 ## 5. 修复数组括号笔误导致全站JS报错 **旭东 → OpenClaw:** > Uncaught SyntaxError: Unexpected token ')' + kbSwitchTab/loadPage is not defined **OpenClaw 响应:** `renderDashboardCharts` 函数的 `statItems` 数组 `[` 被 `)` 关闭而非 `]`,导致全站 app.js 解析失败。所有函数未定义引发连锁报错。修复后 `node --check` 和浏览器运行正常。 ## 6. 数据概览—品牌/店铺排行排除NA脏数据 **旭东 → OpenClaw:** > 数据概览菜单下,店铺出库排行、品牌出库排行里面还有NA数据,这是脏数据需要清洗掉,之前有设定过这个规则 **OpenClaw 响应:** 品牌和店铺排行SQL增加 WHERE 过滤排除空值和 `'NA'` 脏数据。店铺排除 40,372 条空值 + 6 条 NA,品牌排除 289 条空值 + 6 条 NA。 ## 7. 计划预测—供应商名称筛选框支持回车确认 **旭东 → OpenClaw:** > 计划预测里面供应商名称筛选框加一个回车确认筛选功能 **OpenClaw 响应:** 供应商名称 input 增加 `onkeydown="if(event.key==='Enter')planFilterApply()"`,回车直接触发筛选。 ## 8. 修复确认下单500错误—packaging_orders缺列 **旭东 → OpenClaw:** > 待下单管理界面,我点击确认下单之后,提示❌ 网络错误: Unexpected token '<', " 需要在包材订单管理新加一列下单备注列,在待下单管理点击确认下单时,同步下单备注过去 > 包材订单管理里面的下单备注同步的是包材的下单备注,不是成品的,同步错了 **OpenClaw 响应:** ALTER TABLE 给 `packaging_orders` 增加 `下单备注` 列,INSERT 同步补回。但第一次同步使用了成品备注(`row.get('remark')`),修正为使用每个包材在 BOM 数据中自身的 remark(`bm.get('remark')`),确保每个包装物料独立携带自己的备注信息。 ## 10. 升级生产环境 **旭东 → OpenClaw:** > 升级一下新系统 **OpenClaw 响应:** 提供 rsync 同步代码 + SSH 重启服务的升级命令给旭东自行执行。