# 2026-07-15 产品信息管理多tab与权限系统重构 ## 关键对话 ### 1. 产品导入模板删除无用字段 **旭东 → OpenClaw:** > 产品信息管理下面2个tab页里面的导入模板中字段,删除规格、一级类目、二级类目、三级类目这几个列 **旭东 → OpenClaw:** > 我手动新增成品的时候,保存之后会提示我绑定包材,那么我怎么样通过导入的方式来把包材绑定在成品下边组合成物料清单呢 **OpenClaw 响应:** 删除了成品导入模板中的规格、一级/二/三级类目;包材导入模板新增"绑定成品编码"、"用量"列,导入包材时自动创建BOM绑定关系。 ### 2. 包材导入模板优化 **旭东 → OpenClaw:** > 包材导入模板里面删除品牌、 **旭东 → OpenClaw:** > 包材导入模板里面删除品牌、采购跟单、采购计划、运营专员、开发专员、归属平台这几列 **OpenClaw 响应:** 包材模板精简为:绑定成品编码、货品编号、货品名称、用量、产品类型、成本价、生产货期、物流时间、最低起订量、供应商编号、供应商名称。 ### 3. 产品表结构优化 **旭东 → OpenClaw:** > 继续帮我优化一下几点: > 1、成品基础信息表tab页下,在货期左侧添加成本价列,在物流时间右侧添加最低起订量列 > 2、包材基础信息表tab页下的导入模板里面,产品类型默认为包材 > 3、包材基础信息表tab页下,在货品类型右侧添加4列,分别是成本价、生产货期、物流时间、最低起订量 > 4、当导入包材自动跟随成品绑定成物料清单时,对应包材的成本价也要带入到物料清单里面 > 5、物料清单中成品的成本价应该等于其绑定的包材的成本价之和,并不是直接等于成品的成本价 **OpenClaw 响应:** 实现了5项优化:PROD_COLUMNS重新排序列顺序;包材导入默认产品类型为"包材";包材表显示成本价/货期/物流/起订量;BOM绑定带成本价写入material_cost_price;BOM视图成品成本价改为SUM(包材成本价×用量)。 ### 4. 详情/编辑弹窗字段同步 **旭东 → OpenClaw:** > 产品信息管理下的两个tab页里面,详情和编辑按钮之后的弹窗,要和实际列内容保持一致,没有字段的就添加,多余字段的就删除,你检查一下 **OpenClaw 响应:** 详情弹窗新增成本价、最低起订量;编辑弹窗新增成本价、最低起订量数字输入框;包材tab的编辑弹窗隐藏品牌、采购跟单/计划、平台、运营、开发专员。 ### 5. 反馈模块解耦(测试环境→生产环境独立) **旭东 → OpenClaw:** > 测试环境与生产环境的测试问题菜单不用互通了,我以后直接去生产环境上查看问题以及审核问题了,你直接把生产环境上测试问题的图片上传问题修复一下,后续我大家全部使用生产环境系统去新增问题及上传图片 **OpenClaw 响应:** 将 `routes/feedback.py` 从 `prod_db`(SSH隧道连生产)切回本地数据库 `services.db`;移除 `_sync_file_to_prod()` SCP同步机制;修复前端图片附件 `isImage` 判断问题(数据库type存的是文件扩展名,不是MIME类型);修复附件链接缺 `/static` 前缀问题。 ### 6. 权限系统重构(角色级>用户级) **旭东 → OpenClaw:** > 我有个疑问,似乎权限配置下配置的权限并不是优先级最高的,有时候配置好了之后,实际上的权限还是没有 **旭东 → OpenClaw:** > 因为角色的数量始终是大于单个用户角色数量的,那么我给角色级修改权限之后,再可以单独给某个用户设置用户级权限,所以优先级应该是角色级>用户级吧 **OpenClaw 响应:** 修改 `app.py` 中 `inject_user_permissions` 逻辑:先加载角色级权限,用户级只能增加(permission=1),不能减少(permission=0不生效)。删除黄静、范世澄等用户 user_permissions 中的7条错误覆盖。 ### 7. 用户权限配置页面改造 **旭东 → OpenClaw:** > 每个用户的用户权限配置页面应该和角色权限配置页面保持一样的字段和排版,这样我才知道我设置完角色权限之后,用户权限是否跟随角色权限变化 **旭东 → OpenClaw:** > 权限配置里面单个用户无法点开进行配置权限了,你看一下 **OpenClaw 响应:** 改造 `/api/permissions/user/field-perms` 后端API一次性返回有效权限(角色+用户合并);改造前端 `loadUserFieldPerms` 用单API+分组卡片布局;新增 `openUserPermPanel` 用户权限编辑弹窗(勾选框+保存按钮,中文显示)。 ### 8. 权限配置入口统一 **旭东 → OpenClaw:** > 帮我删除用户管理菜单下边的角色权限配置按钮功能,以后所有的权限配置只能在权限配置菜单里面进行,不要这么多的接口配置 **OpenClaw 响应:** 删除用户管理页面的"🔐 角色权限配置"按钮、permModal弹窗、以及`openPermissionConfig`、`_renderPermUserModal`等7个相关函数。 ### 9. 生产环境部署(多次) 按照记忆规则,每次优化完成后同步部署到生产环境(明确指令时才部署)。使用 scp 分步推送 routes/products.py、routes/auth.py、routes/feedback.py、static/js/app.js、templates/base.html 到生产机器,不覆盖数据库。 ### 10. BOM增强 - `bom` 表已有 `material_cost_price` 字段(decimal(12,4),默认0.0000) - 包材导入自动绑定BOM时,成本价写入 `material_cost_price` - BOM视图改为 SUM(包材成本价×用量) 计算成品成本 ### 11. 图片附件问题 - 数据库存 `type` 为文件扩展名(如 "png"),非MIME类型(如 "image/png") - 前端 `isImage` 判断改为 `['png','jpg'].indexOf(a.type) >= 0` - 附件链接缺 `/static` 前缀,已修复 - 14个历史附件文件已丢失(数据库有记录但磁盘不存在) ## 关键文件改动 | 文件 | 改动内容 | |------|---------| | `routes/products.py` | 导入模板、BOM绑定、产品列表SQL(加min_order_qty) | | `routes/auth.py` | `/api/permissions/user/field-perms` 返回角色+用户合并有效权限 | | `routes/feedback.py` | 切本地数据库、移除SCP同步 | | `app.py` | 权限优先级改为角色>用户 | | `static/js/app.js` | 表格列/弹窗/权限页面/反馈图片等多处重构 | | `templates/base.html` | JS版本号v98→v99 |