dy-dashboard/vault/知识库/工作指南/训练记录/2026-08-24-2026-08-24 每日训练笔记.md
2026-10-28 11:14:17 +08:00

249 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-08-24 每日训练笔记
> 来源:旭东与 OpenClaw 每日训练,2026-08-24
> 类型:训练记录
### 1. 钉盘数据更新至 8.186 与云端
**旭东 → OpenClaw:**
> 现在钉盘里面数据已更新,你去读取并更新到8.186系统和云端系统中
**OpenClaw 响应:**
核对钉盘最新数据:库存 `20260824-wdt-kcmx`(20 个仓库文件),日出库最新 `20260823-wdt-cksj.csv`。按现有增量导入规则更新 8.186(新增库存 20,740 条、日出库补齐 3,515 条),再同步云端(云端与本地记录总量一致,未覆盖云端业务数据),未操作 11.79 生产环境。
### 2. 接入 OpenLux DeepSeek V4 Pro 模型
**旭东 → OpenClaw:**
> 我现在要继续接入一个大模型,信息如下
> 接口地址:https://api.openlux.ai/
> API Key:sk-IebGOYmpc1gi5XBvsYbxmVQziULJvRayUQPO4nIAfSoDfujy
> 模型ID:deepseek-v4-pro-0813
**OpenClaw 响应:**
新增 OpenLux 的 `deepseek-v4-pro-0813` 模型配置,采用 OpenAI 兼容接口协议,路由为 `openlux/deepseek-v4-pro-0813`,配置校验通过、模型列表可识别,API Key 已写入本机配置。
### 3. 模型选择库未显示 OpenLux
**旭东 → OpenClaw:**
> 但是目前在模型选择库里面没有看见这个openlux/deepseek-v4-pro-0813
**OpenClaw 响应:**
查明原因:模型已配置但未加入 OpenClaw 模型选择库允许列表。已补充 `openlux/deepseek-v4-pro-0813` 到允许列表,配置校验与模型识别均通过。
### 4. 确认下单按采购跟单列钉钉通知(可行性)
**旭东 → OpenClaw:**
> 我现在想实现一个功能,在待下单管理子菜单里面,点击确认下单之后,想要根据采购跟单列的信息进行钉钉通知,能做到吗?
**OpenClaw 响应:**
确认可行。确认下单(单个/批量)统一走后端 `POST /api/purchase/confirm_order`(routes/purchase.py),在该处加通知逻辑即可;采购跟单列有两种形态(组名或人员姓名列表)。
### 5. 按组别发到对应钉钉群
**旭东 → OpenClaw:**
> 想要实现的是在群里通知,根据不同组别,钉钉会有对应的钉钉群
**OpenClaw 响应:**
梳理出群映射:跟单一组→采购1组群、跟单二组→采购2组群、跟单三组→采购3组群、现货小组→现货采购群,与旭东逐一确认。
### 6. 确认群映射与通知格式
**旭东 → OpenClaw:**
> 1、群映射完全正确
> 2、通知内容格式如下:
> 备货通知
> 货品编号:等于货品编号
> 货品名称:等于货品名称
> 成品数量:等于正式下单数量
> 包材数量:等于下单时,对应包材得实际下单数量
**OpenClaw 响应:**
实现「确认下单 → 钉钉群备货通知」:按组别映射群,采购跟单列支持组名/成员姓名两种形态解析;通知按群聚合一条消息,后台线程发送不阻塞下单,发送失败仅记日志。语法检查、组别解析 12 组测试、dry-run 验证均通过,测试服务重载 HTTP 200,Git 提交 `0b12fc0`。
### 7. 包材数量按物料分别展示
**旭东 → OpenClaw:**
> 📦 备货通知
> 货品编号:POZ-XXXX
> 货品名称:XXXX
> 成品数量:100(=正式下单数量)
> 包材数量:500(=本次下单包材实际下单数量合计)
> 这里有一个问题,包材数量不是本次下单包材实际下单数量的合计,而是包材分别的数量,比如彩盒500,瓶子500,泵头500这种形式
**OpenClaw 响应:**
修正为按物料逐行展示实际下单数量(彩盒:500 / 瓶子:500 / 泵头:500),不再合计。Git 提交 `8682265`。
### 8. 确认下单报网络错误
**旭东 → OpenClaw:**
> 发现一个异常,现在在待下单管理里面点击下单,提示❌ 网络错误: Unexpected token '<', "
**OpenClaw 响应:**
定位根因:确认下单时若前端未传 BOM 修改数据,后端从 bom 表加载的 `quantity` 为 Decimal 类型,`json.dumps` 崩溃返回 500 HTML,前端解析 JSON 失败。该 bug 在钉钉通知改动前已存在。在 json.dumps 增加 `default` 转换 Decimal→float 修复。Git 提交 `6e7af78`。
### 9. 通知样式美化(换行)
**旭东 → OpenClaw:**
> 📦 备货通知 货品编号:(Qsimelr-FXS-8454) 货品名称:Qsimelr防晒霜 成品数量:300 包材数量: Qsimelr防晒霜-瓶子:500 Qsimelr防晒霜-彩盒:500
> 现在发送的通知是这样的,我想要样式美观一下变成这样
> 📦 备货通知
> 货品编号:(Qsimelr-FXS-8454)
> 货品名称:Qsimelr防晒霜
> 成品数量:300
> 包材数量: Qsimelr防晒霜-瓶子:500 Qsimelr防晒霜-彩盒:500
**OpenClaw 响应:**
因钉钉 markdown 单个 `\n` 不换行,改用 `<br/>` 强制换行,字段逐行展示;包材明细改同行空格分隔。Git 提交 `5ae4e7b`、`c1e4e6b`。
### 10. 通知格式再调整(每个包材单独一行)
**旭东 → OpenClaw:**
> 📦 备货通知
> 货品编号:(WPK-TMG-7991)
> 货品名称:【WOPUKA】脱毛膏
> 成品数量:200
> 包材数量:【WOPUKA】脱毛膏【软管】:200
> 包材数量:【WOPUKA】脱毛膏【彩盒】:200
> 修改成这样的通知格式
**OpenClaw 响应:**
每个包材单独一行,且每行带「包材数量:」前缀。Git 提交 `f65264a`。
### 11. 模型切换后自动回退到官方模型
**旭东 → OpenClaw:**
> 为什么我在模型选择这里切换成了DeepSeek V4 Pro 0813(OpenLux),但是使用过程中还是会自动切换成DeepSeek官方模型
**OpenClaw 响应:**
根因是配置层级问题(非 bug):助手 `dingtalk-assistant` 的模型仍受全局默认模型配置约束。已将 `dingtalk-assistant` 默认模型设为 `openlux/deepseek-v4-pro-0813`,重启 gateway 后生效(新进程 PID 173844)。
**旭东 → OpenClaw:**
> 确认修改
### 12. 下单备份回退订单未回到待下单
**旭东 → OpenClaw:**
> 发现一个异常,从下单备份管理里面回退订单的时候,订单没有回退到待下单管理中
**OpenClaw 响应:**
根因:`pending_orders` 表唯一索引 `uk_product_code` 与「保留历史备份 + 复制新 pending 记录」的设计冲突,回退 INSERT 触发唯一约束冲突(1062 Duplicate entry)。修复:移除唯一索引改普通索引 `idx_product_code`,`migrate_db.py` 加自动迁移,`add_pending` 改按 status='pending' 行 id 更新,并补建两条被卡住记录。Git 提交 `8e88989`。
### 13. 计划预测下单信息弹窗包材未重算
**旭东 → OpenClaw:**
> 发现一个异常
> 在计划预测里面,下单信息弹窗中,修改成品实际下单数量的时候,包材下单信息里面的下单后包材会随之变化,但是当包材实际下单数量同步有数据之后,下单后包材的数据没有计算准确,比如POZ-RCG-0658-TM这个品,现在点击下单信息弹窗后,下单后包材是7000,我修改成品下单数量为3000后,下单后包材为6000,但是将这个3000同步到包材下单信息中的实际下单数量后,下单后包材数量应该为7000,但是目前还是显示6000
**OpenClaw 响应:**
根因:同步包材实际下单数量时用 `mInp.value = newMatQty` 程序化赋值,不触发 input/change 事件,`refreshPostPackValues()` 未重跑。修复:同步后显式调用 `refreshPostPackValues()` 重算下单后包材。Git 提交 `4751a30`。
(期间旭东追问「异常解决了吗?」「继续解决异常」,已最终修复验证。)
### 14. 库存数据看板加载慢优化
**旭东 → OpenClaw:**
> 发现一个异常,采销协同下的库存数据看板每次加载时间都太久了,检查一下原因并优化以下
**OpenClaw 响应:**
定位瓶颈:看板「缺货监控」查询在 `inventory_detail` 近 200 万行上按月份全量聚合、临时表/排序,单条约 2.3 秒,叠加当月+环比计算首次加载约 4 秒。优化:缺货判断加 `available_qty = 0` 条件缩小扫描范围(统计口径不变),清理并重建当月及环比月份缓存。Git 提交 `a58d164`。
### 15. 新品下单菜单优化
**旭东 → OpenClaw:**
> 新品下单菜单下需要优化一下几点
> 1、增加新品包材管理子菜单
> 2、新品管理改名为新品成品管理
> 3、新品管理里面BOM涉及到的物料,都需要根据BOM弹窗中的表头,同步到新品包材管理中。
**OpenClaw 响应:**
新增「新品包材管理」子菜单(直接读取 `new_product_bom`,与 BOM 弹窗同表头实时展示,避免重复维护);「新品管理」更名「新品成品管理」。支持成品/物料/供应商筛选和分页。Git 提交 `5449992`。
### 16. 新品BOM含税字段、成品与包材导出、包材固定表头
**旭东 → OpenClaw:**
> 继续优化下面几点
> 1、新品成品管理的BOM弹窗里面添加一个字段列叫是否含税,税点不为0时,自动为是,税点为0时,自动为否
> 2、新品成品管理、新品包材管理下新增导出功能,并且可以选择字段列,可以保存导出方案,方便下次继续沿用
> 3、新品包材管理下表头固定住,不随上下滑动内容而变。
> (期间追问「处理完了吗?」)
**OpenClaw 响应:**
完成三项:BOM 弹窗新增「是否含税」派生字段(税点非0显示"是"、为0或空显示"否",同步到包材管理与导出);成品/包材管理新增可选字段 Excel 导出,可保存/加载/设默认/删除导出方案,沿用当前筛选;包材管理表头固定。Git 提交 `e5e12f2`。
### 17. 新品成品管理同步权限确认
**旭东 → OpenClaw:**
> 发现一个异常,在新品成品管理界面,同步功能是不是只能管理员有权限点击同步,非管理员点击同步会提示没有操作权限
**OpenClaw 响应:**
确认当前逻辑:同步按钮对非管理员也会显示,但点击后后端 `operation_required('product_new','sync')` 校验,仅管理员/超级管理员可执行,非管理员会提示无操作权限。
### 18. 新品BOM数量与用量分离
**旭东 → OpenClaw:**
> 发现一个异常,新品成品管理里面录入的数量,同步到计划预测时,误同步到用量了,这不是对应关系的,所以做以下优化
> 1、新品成品管理下BOM弹窗中新增一列为用量列,放在物料名称的右侧,默认为1,但是设置为可编辑文本框状态
> 2、新加的用量列,同步到物料清单时,对应的是用量
**OpenClaw 响应:**
新增独立「用量」字段(默认 1、可编辑),原「数量」继续保留为新品采购数量;同步物料清单时只取新「用量」字段,不再误用采购数量。数据库已具备 `usage_quantity` 字段。Git 提交待提交。
### 19. 产品信息管理详情/编辑提示无产品信息
**旭东 → OpenClaw:**
> 还发现一个异常,基础数据下的产品信息管理中,有的产品点击详情或者编辑之后,有异常提示,无产品信息。
**OpenClaw 响应:**
根因:操作列用 HTML 转义直接拼接产品编码到 onclick 参数,特殊编码(空格、& 等)导致详情/编辑传参异常,接口无法按原编码查询。改为统一 JS 字符串安全转义,详情/编辑/BOM 按钮均可正确传参。语法、导入、特殊编码检查通过,测试服务重载 HTTP 200。Git 提交待提交。
### 20. 生产环境两阶段打包部署
**旭东 → OpenClaw:**
> 1、需要打包8.186测试环境下所有的功能代码、数据库结构、数据库字段、知识库,更新部署到云端环境下,不要覆盖云端环境的数据
> 2、等待第一步完成之后,打包云端环境下的全部内容包含所有数据,升级到11.79生产环境中
> 云端服务器 IP:82.156.135.91
> SSH登录用户名:ubuntu
> SSH登录密码:dieya123,.
**OpenClaw 响应:**
第一步已完成:8.186 功能代码、数据库结构/字段、知识库已部署到云端(实际目录 `/opt/dy-dashboard`),云端原有数据库数据未覆盖,已留存回滚备份,云端 47 张表/893 字段。第二步已导出云端完整数据库(约 82MB 压缩包 + 项目 36MB,均校验哈希),**尚未操作 11.79 生产**。已在第二步执行前停下,等待旭东回复「确认覆盖生产」后再继续。
---
## 自动任务(当日,非旭东直接沟通)
- 03:00 知识库每日检查:lint_knowledge.py 通过,自动清理 1 处已删除文章索引,483 个问题均为孤立页面(正常)。
- 07:00 数据自动更新:无新 CSV,日出库/日库存导入及完整性检查通过。
- 08:00 数据清洗:本次无脏数据需要修复。
- 08:30 数据库备份:导出 79M,备份包 394M,清理 30 天前旧备份。
- 12:00 数据自动更新:无新文件,数据完整性检查通过。
## 关键决策汇总
| 时间 | 决策点 | 结果 |
|------|--------|------|
| 09:47 | 钉盘数据更新范围 | 库存 20260824(20仓)、日出库 20260823 更新至 8.186 与云端,不碰生产 |
| 09:58 | 新模型接入 | 接入 OpenLux `deepseek-v4-pro-0813`(openlux 路由) |
| 10:02 | 模型可见性 | 将 openlux 模型加入选择库允许列表 |
| 11:31 | 模型默认值 | `dingtalk-assistant` 默认模型设为 `openlux/deepseek-v4-pro-0813` |
| 10:47–11:22 | 确认下单钉钉通知 | 4 组群映射确认;通知格式含货品编号/名称/成品数量/包材数量(按物料逐行) |
| 11:51 | 下单备份回退 | 移除 `pending_orders` 唯一索引,改普通索引 |
| 14:09 | 计划预测包材重算 | 同步后显式调用 `refreshPostPackValues()` |
| 15:02 | 库存看板性能 | 缺货监控只扫描 `available_qty=0` 记录 |
| 16:07 | 新品下单结构 | 新增新品包材管理子菜单,新品管理改名新品成品管理 |
| 16:49 | 新品BOM扩展 | 是否含税派生字段 + 可选字段导出方案 + 包材表头固定 |
| 18:06 | 数量与用量 | 新增独立「用量」字段,与采购「数量」分离 |
| 18:28 | 产品信息传参 | 操作列改 JS 安全转义 |
| 18:37 | 生产部署 | 第一步(8.186→云端)完成;第二步(云端→11.79)待确认 |
## 待办
- [ ] 生产部署第二步:等待旭东回复「确认覆盖生产」后,将云端完整数据覆盖升级到 11.79(先留生产备份)。
- [ ] 产品信息管理详情/编辑修复 Git 提交(当前标注"待提交")。
- [ ] 新品BOM数量与用量分离 Git 提交(当前标注"待提交")。
- [ ] 新品成品管理「同步」权限:确认是否需要放开给非管理员。
---
*由 OpenClaw 每日训练任务自动生成*