From 24b7fd83737fce1883040e94e3aa077e3f2081fe Mon Sep 17 00:00:00 2001 From: yueli Date: Thu, 10 Sep 2026 14:59:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(audit):=20=E6=A8=A1=E5=9D=97=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E4=B8=AD=E6=96=87=E5=8C=96=EF=BC=8C=E6=B6=88=E9=99=A4?= =?UTF-8?q?=20image=5Fembeddings=20=E7=AD=89=E8=8B=B1=E6=96=87=E9=81=97?= =?UTF-8?q?=E7=95=99=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题 ---- 模块筛选下拉仍出现 image_embeddings、purchase_request、sys_element 等 英文值。它们来自改造前的全局监听器:那时无白名单,系统表/草稿表/向量表 都会被审计,而 _infer_module_name 对未登记的类名直接回退成表名。 下拉取 DISTINCT module,这些英文值就混了进来。 处理 ---- 新增 moduleMap(21 项)+ moduleLabel(),并应用到**三处**渲染: 下拉选项、列表列、详情弹窗的模块标签。 value 保留原始字符串,筛选行为完全不变。 除覆盖现存 3 个英文值外,另预置了 18 个白名单表名(sys_user / stock_buy / trans_outbound 等)。新监听器已保证 module 为中文,但若将来有数据从旧 路径写入或手工导入,这些值会再次出现,预置可避免同类问题复发。 其中 image_embeddings 标注为「图像特征(历史)」以提示其为改造前的产物。 实测:image_embeddings → 图像特征(历史),purchase_request → 采购申请, sys_element → 系统元素;中文模块名原样保留。 --- inventory-web/src/views/system/AuditLog.vue | 54 +++++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/inventory-web/src/views/system/AuditLog.vue b/inventory-web/src/views/system/AuditLog.vue index eaf76c1..8b8c998 100644 --- a/inventory-web/src/views/system/AuditLog.vue +++ b/inventory-web/src/views/system/AuditLog.vue @@ -21,8 +21,14 @@ - - + + + @@ -70,7 +76,7 @@ @@ -121,7 +127,7 @@ {{ currentLog.id }} {{ currentLog.username }} ({{ currentLog.display_name }}) - {{ currentLog.module }} + {{ moduleLabel(currentLog.module) }} {{ actionMap[currentLog.action] || currentLog.action }} @@ -380,6 +386,46 @@ const fieldLabel = (key: string | number): string => { return fieldMap[k] || k } +// ============================================================ +// 模块名中文化 +// +// 现行监听器写出的 module 已是中文(出库管理/BOM管理…),但历史数据里残留了 +// 一批英文模块名 —— 它们来自早期全局监听器:那时无白名单,系统表、草稿表、 +// 向量表都会被审计,而 _infer_module_name 对未登记的类名直接回退成表名。 +// 下拉框取 DISTINCT module,于是这些英文值就混了进来。 +// +// 处理:仅在前端做展示翻译,value 仍用原始字符串,筛选行为完全不变。 +// ============================================================ +const moduleMap: Record = { + 'image_embeddings': '图像特征(历史)', + 'purchase_request': '采购申请', + 'sys_element': '系统元素', + 'sys_menu': '系统菜单', + 'sys_user': '系统用户', + 'sys_role': '系统角色', + 'sys_role_permission': '角色权限', + 'sys_warehouse_location': '库位设置', + 'material_base': '物料主数据', + 'material_warning_settings': '物料预警设置', + 'stock_buy': '采购库存', + 'stock_semi': '半成品库存', + 'stock_product': '成品库存', + 'stock_adjustment': '库存调整', + 'trans_outbound': '出库流水', + 'trans_borrow': '借还流水', + 'trans_scrap': '报废流水', + 'trans_repair': '维修单', + 'bom_table': 'BOM配方', + 'bom_draft_table': 'BOM草稿', + 'stocktake_draft': '盘点草稿', +} + +// 模块名解析:命中映射取中文,否则原样返回 +const moduleLabel = (m: string | number): string => { + const k = String(m) + return moduleMap[k] || k +} + // 时间格式化 // // ★ 改造说明:后端 audit_listener 现在显式写入**北京时间**(beijing_time),