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

184 lines
6.6 KiB
Markdown
Raw Permalink 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-06-24 每日训练笔记
> 来源:旭东与 OpenClaw 每日训练,2026-06-24
> 类型:训练记录
# 2026-06-24 每日训练笔记
> 来源:旭东与 OpenClaw 每日训练,2026-06-24
> 类型:训练记录
## 今日总览
今日集中在产品信息管理、物料清单管理、仓库信息管理三大模块进行深度优化。从早上到下午共完成 9 项主要任务:物流时间字段校验、产品回收站功能、货品类型动态切换/补齐、供应商模糊搜索+采购跟单记忆、BOM管理全量改名物料清单管理、BOM弹窗同步功能与展示优化、仓库导入改为CSV直传、测试脏数据清理等。
---
### 1. 物流时间字段加数值限制
**旭东 → OpenClaw:**
> 产品信息管理里面,我编辑商品的时候,物流时间字段有什么限制吗,我输入很长的数字之后,提示(1264, "Out of range value for column 'logistics_time' at row 1")
**OpenClaw 响应:**
MySQL `logistics_time` 字段为 int 类型,最大 2,147,483,647,输入超长数字报错。
**修复:**
- 前端新增/编辑弹窗 input 加 `max="999"`
- 后端 INSERT 截断:`min(int(value), 999)`
- 后端 batch_update 校验超过 999 返回友好提示
---
### 2. 新增产品回收站功能(含两轮迭代)
**旭东 → OpenClaw(第一轮):**
> 我需要在成品列表的右边新增一个回收站功能,我删除的商品全部转移到回收站中
**实现:**
- products 表新增 `deleted_at` DATETIME 列(软删除)
- 删除改为 UPDATE SET deleted_at=NOW()
- 主列表查询全部加 `AND p.deleted_at IS NULL`
**旭东 → OpenClaw(第二轮):**
> 回收站功能改为点击按钮之后出现大弹窗显示,弹窗设置为分页显示,一页20条
> 回收站的数据少很多字段
**实现:**
- 工具栏新增红色"🗑 回收站"按钮,点击弹出大弹窗(90vw)
- 弹窗内部全字段显示(PROD_COLUMNS 所有列 + 删除时间 + 操作列)
- 操作列固定右侧(不随滚动移动)
- 分页20条,页头搜索栏支持货品编号/名称筛选
- 恢复商品后关闭弹窗自动刷新主列表
---
### 3. 新建弹窗货品类型动态切换
**旭东 → OpenClaw:**
> 非成品基础表tab页下的新增弹窗里面的货品类型也应该跟现有字段保持一致,应该只有包材和其他
**实现:**
- 新增 `updateAddTypeOptions()` 函数
- 成品基础表→选项:成品、现货、清库存、赠品、原材料
- 非成品基础表→选项:包材、其他
---
### 4. 编辑弹窗货品类型补齐
**旭东 → OpenClaw:**
> 编辑之后数据消失
**排查:** 编辑弹窗 `_buildProductEditForm` 货品类型下拉只配了 `['成品','现货','清库存','赠品','原材料']`,漏了 `包材`、`其他`,导致包材类商品编辑时自动选中"成品"→ product_type 被改→在非成品列表中被过滤掉("消失")。
**修复:** 选项补齐为全量:`['成品','现货','清库存','赠品','原材料','包材','其他']`
---
### 5. 供应商模糊搜索 + 采购跟单记忆
**旭东 → OpenClaw:**
> 供应商名称可以模糊搜索、供应商编码自动匹配、采购跟单记忆
**实现:**
- 新增弹窗供应商输入 oninput 弹出匹配列表(模糊匹配 suppliers 表,最多20条)
- 选中自动填入供应商编码(只读框)
- 采购跟单 localStorage 存储20条历史记录
---
### 6. BOM管理 → 物料清单管理(全量改名 + 新增功能)
**旭东 → OpenClaw:**
> BOM管理改名为物料清单管理
**全量改名:** 侧边栏、页面标题、权限注册、注释全部修改
**旭东 → OpenClaw:**
> 添加新增、导入、导出功能
**实现:**
- 后端:新增 `/api/bom/create` 和 `/api/bom/export`
- 前端:新建弹窗、导入弹窗、导出按钮、页码居中
---
### 7. BOM弹窗优化(同步功能 + 供应商修复 + 展示改进)
**旭东 → OpenClaw:**
> BOM弹窗左下角加个同步按钮,把成品包材同步到物料清单管理里面
**实现:**
- 弹窗左下角新增「🔄 同步」按钮,调用 `/api/product/sync_bom`
- 同步同时确保物料已作为包材产品创建
**隐藏修复(连带发现):**
- `product_detail_with_bom` 缺少 LEFT JOIN suppliers,供应商字段为空 → 补上 LEFT JOIN
- BOM 表头关闭按钮 `×` → `✕`(解决部分设备渲染成"1"的问题)
- 物料清单管理:新增独立「用量」列,名称和用量不再拼接显示(原名"名称 × 用量"混淆)
- 排序改为 `ORDER BY b.id DESC`,最新同步排最前
- 修复 DISTINCT + MAX() 不能共用的 SQL 错误
---
### 8. 仓库导入改为直接上传 CSV
**旭东 → OpenClaw:**
> 仓库数据导入的方式改成直接提交文件,不要在前端解析CSV
**实现:**
- 前端去掉 FileReader 解析 CSV,改为 FormData 直传文件
- 后端自动识别编码(utf-8-sig → gbk → utf-8)
- 后端用 csv.reader 解析,支持引号内逗号
- 列名校验 + 逐行报错
---
### 9. 清理测试脏数据
月底同步完成后发现 bom 表和 products 表混入了若干条测试脏数据(如"测试包材001"、"原材料1"等),已逐条核实并清理。
---
### 10. 其他
- Service Worker v5→v6,app.js v307→v311
- HTML 添加 `Cache-Control: no-cache`
- SW 注册 URL 加版本号 `/static/sw.js?v=6`
- Git 提交:
- `5ed829e`:产品回收站功能(4文件,+296/-17)
- `1ac7073`:新品建档、物料清单改名/新增/导入/导出(4文件,+292/-21)
- 后续提交:BOM同步、仓库CSV直传等
---
## 关键决策汇总
| 序号 | 决策内容 | 影响范围 |
|------|----------|----------|
| 1 | logistics_time 前端 max=999 + 后端截断 | 产品信息管理表单 |
| 2 | products 表加 deleted_at 做软删除 | 全产品模块查询 |
| 3 | 回收站弹窗全字段显示 + 操作列固定 | 用户体验 |
| 4 | 货品类型动态切换:成品表 vs 非成品表不同选项 | 新建弹窗逻辑 |
| 5 | 编辑弹窗货品类型全量选项(7种) | 编辑弹窗 |
| 6 | 供应商模糊搜索 + 采购跟单 localStorage | 新增弹窗 |
| 7 | BOM管理全量改名为物料清单管理 | 前端+后端+权限 |
| 8 | BOM弹窗同步按钮将包材同步到 bom 表 | 物料清单管理 |
| 9 | 仓库导入改为直传CSV + 后端解析 | 仓库模块 |
| 10 | 清理测试脏数据 | bom 表 + products 表 |
## 待办
- [ ] 确认 BOM 同步功能在各包材产品上测试通过
- [ ] 关注仓库 CSV 导入的编码兼容情况(GBK/UTF-8)
- [ ] 检查产品回收站软删除对导出功能的影响
---
*由 OpenClaw 每日训练任务(晚间)自动生成*
---
*由 OpenClaw 每日训练任务自动生成*