### 1. 计划预测新增批注列(列表/编辑/详情/下单信息弹窗) **旭东 → OpenClaw:** > 继续优化8.186环境下的系统以下几点 > 1、在计划预测里面品牌列后面添加一列为批注列 > 2、批注列需要在编辑弹窗里面可以进行修改 > 3、批注需要在详情弹窗中体现 > 4、下单信息弹窗中,成品下单信息列表下,货品名称右侧添加一列为批注列,同步外面列表里面的批注内容 **OpenClaw 响应:** 已在 8.186 测试环境完成批注功能,四点需求全部落地: - products 表新增 `remark` 字段(varchar(500),迁移脚本同步更新) - 计划预测列表:品牌列右侧新增「批注」列(默认显示,跟随字段设置/冻结列/权限体系) - 编辑弹窗:批注可编辑(PLAN_EDITABLE_FIELDS + 保存链路 batch_update 已支持 remark 字段) - 详情弹窗:基础信息区展示批注(showProductDetail / showBomProductDetail) - 下单信息弹窗:成品下单信息表格货品名称右侧新增「批注」列,读取 products.remark 与外面列表批注内容同源同步 - 接口验证:planning_list / detail_with_bom / planning_detail 均返回批注;编辑保存后回读一致;测试数据已清理 - Python/JavaScript 语法检查通过,测试服务重启后 HTTP 200 - Git 提交:`5a0a7d1`(计划预测新增批注列) 已记录 ### 2. 批注展示优化(编辑弹窗置底大文本框 + 下单信息弹窗独立批注编辑框) **旭东 → OpenClaw:** > 继续优化以下几点 > 1、编辑弹窗中的批注需要放在最后一个字段,并且整个文本框需要设置大一些,或者设置成根据内容自适应高度,能够将内容全部显示出来 > 2、下单信息弹窗里面的批注需要单独展示出来,在成品下单信息、包材下单信息中间单独做一个批注信息,用一个等宽的文本编辑框来显示 **OpenClaw 响应:** 已在 8.186 测试环境完成批注展示优化: - 编辑弹窗:批注字段固定排在所有可编辑字段的最后,文本框改为大号 textarea,跨满整行(grid-column:1/-1),高度根据内容行数和长度自适应(min-height 120px,可手动拖拽),内容可全部显示 - 下单信息弹窗:批注从成品下单信息表格列中移出,在「成品下单信息」和「包材下单信息」之间单独新增「📝 批注信息」区块,使用等宽字体(Consolas/Menlo)文本编辑框展示批注内容 - 保存链路:下单信息弹窗保存时,批注编辑框内容自动同步到 `products.remark`(调用 batch_update),与计划预测批注列、编辑弹窗批注同源一致 - 编辑弹窗保存逻辑已同步支持 textarea 收集(原只收集 input) - JavaScript 语法检查通过,测试服务重启后 HTTP 200 - Git 提交:`8551ca5`(批注展示优化:编辑弹窗批注置底大文本框自适应高度,下单信息弹窗批注独立等宽编辑框并保存同步) 已记录 ### 3. 修复下单信息弹窗批注保存失败 **旭东 → OpenClaw:** > 下单信息弹窗里面,修改编辑批注信息之后,点击保存按钮也需要能够保存,目前点击保存保存失败 **OpenClaw 响应:** 已修复下单信息弹窗批注保存失败问题: - 根因1:saveBomData 中批注读取逻辑放在弹窗关闭(DOM移除)之后,读取不到批注编辑框内容 - 根因2:批注保存走 `/api/product/batch_update`,该接口仅管理员有产品编辑权限,非管理员保存会 403 - 修复:批注读取移到弹窗关闭之前;新增轻量接口 `/api/product/remark/save`(使用下单信息编辑权限 purchase/edit,与弹窗权限一致),只更新 products.remark;保存按钮启用条件从「实际下单数量可编辑」放宽为「实际下单数量或批注任一可编辑」 - 端到端验证:保存 → DB写入 → detail_with_bom 回读一致 → 清理还原 - Python/JavaScript 语法检查通过,服务重启 HTTP 200 - Git 提交:`b589701`(修复下单信息弹窗批注保存失败) 已记录 ### 4. 批注保存后外面批注列即时同步 **旭东 → OpenClaw:** > 发现一个异常,我在下单信息弹窗中修改了批注信息,外面的批注列里面的内容并不能及时同步,需要刷新之后才会变化 **OpenClaw 响应:** 已修复批注列不同步问题: - 根因:下单信息弹窗保存批注成功后,没有刷新外面的计划预测列表,批注列仍显示旧值 - 修复:批注保存接口返回成功后立即调用 `loadPlanPage` 刷新当前页列表,批注列内容即时同步,无需手动刷新 - 服务重启 HTTP 200,Git 提交:`61f5149`(批注保存后即时刷新计划预测列表,外面批注列无需手动刷新) 已记录 ### 5. 批注功能同步到云端系统(82.156.135.91) **旭东 → OpenClaw:** > 把刚刚这个批注功能同步添加到云端系统里面,包括批注列、编辑弹窗里面的批注、详情弹窗里面的批注、下单信息里面的批注 **OpenClaw 响应:** 已将批注功能完整同步到云端系统(82.156.135.91): - 数据库:products 表新增 `remark` 字段(迁移前已备份) - 计划预测列表:品牌列后新增「批注」列(planning.py 两处 SELECT 返回 p.remark AS 批注) - 编辑弹窗:批注字段置底大文本框,保存走 batch_update(allowed_fields 已加 remark) - 详情弹窗:detail_with_bom / planning_detail 均返回批注,基础信息区展示 - 下单信息弹窗:成品/包材区之间新增「批注信息」等宽编辑框,保存走新增 `/api/product/remark/save` 接口(下单编辑权限),保存后即时刷新列表 - 同步方式:products.py 最小 patch(仅批注相关,不夹带 bca300e 供应商改动);app.js / planning.py / migrate_db.py 与本地 dc5ed50 基线一致,直接覆盖本地最新版本 - 更新前已备份:`~/dy_backups/remark_sync_pre_20260826_1556/` - 验证:Python/JS 语法通过,服务重启 HTTP 200;端到端实测 remark/save 保存 → planning_list / detail_with_bom / planning_detail 回读一致 → 测试数据清理还原 已记录 ### 6. 均线表产品批注导入(8.186 + 云端) **旭东 → OpenClaw:** > 我现在发你一个表格,需要你根据货品编号匹配,将对应的批注导入到8.186环境系统和云端系统里面 **OpenClaw 响应:** 已根据 `260826-均线表产品批注.xlsx`(2571 行)按货品编号匹配并导入批注: - 表格共 2571 行,非空批注 867 行(510 行含多行内容) - 8.186 测试环境:864 行匹配成功导入,3 行未匹配(POZ-MS-0224-TM、POZ-MM-1673-TM-P、JWTBS-LLT-5844-ALJK-P) - 云端 82.156.135.91:865 行匹配成功导入,2 行未匹配(POZ-MM-1673-TM-P、JWTBS-LLT-5844-ALJK-P) - 批注写入 `products.remark`,两端导入前均备份;空批注行不覆盖 - 两端服务 HTTP 200,抽查回读一致 - 未匹配行主要为片状面膜/理疗贴等 -P 后缀编码,云端/8.186 products 表中不存在 已记录