Commit Graph

35 Commits

Author SHA1 Message Date
24b7fd8373 fix(audit): 模块下拉中文化,消除 image_embeddings 等英文遗留值
问题
----
模块筛选下拉仍出现 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 → 系统元素;中文模块名原样保留。
2026-09-10 14:59:22 +08:00
6068625562 feat(audit): 审计日志业务化——对象名与字段中文化、操作来源与类型筛选
一、target_name 业务化(后端 audit_listener.py)
  优先级:业务标识(request_no/outbound_no/borrow_no/sku/bom_no…)→
          名称字段 → 关联物料名 → 「中文表名 - 业务号或ID」。
  新增 TABLE_LABELS 表名到中文的映射(18 张白名单表全覆盖)。
  用户看到的从 scrap_approval ID:371 变为
  「出库申请单 - APR-OUT-20260805-1550-0005」这类可理解的对象描述。

二、前端字段中文化(AuditLog.vue)
  · fieldMap 由 11 项扩充到 110+ 项,覆盖审批单/流水/库存/主数据/系统管理五类;
  · 修复关键 bug:fieldMap 原先只作用于「变更对比」区,「删除快照」与
    「新增详情」两区直接渲染原始 key(label 直接取 String(key)),
    这正是详情里满是英文列名的直接原因。现三区统一经 fieldLabel() 取值。

三、时间显示修正
  后端已改写北京时间,前端原先补 Z 当 UTC 解析会造成二次 +8 小时,
  改为按 +08:00 理解该字符串。

四、新增两类筛选
  · 操作来源(真实用户 / 系统操作 / 全部),默认「真实用户」。
    历史存量含约 1.8 万条 username=system 的噪声日志,会把列表刷屏。
  · 操作类型别名归一:历史数据中 action 有两套写法(早期装饰器写中文
    新增/修改/删除,现行监听器写大写 CREATE/UPDATE/DELETE),导致下拉
    同时出现二者、且选中文项只能搜到 3-4 月的老数据。现 ACTION_ALIASES
    把任意写法归一化后展开匹配,下拉只暴露 3 个规范值,
    历史数据无需迁移即可被正确检索。
2026-09-10 14:16:39 +08:00
9ceb6ddc1d debug: 诊断出库审批/借库审批的 operationCode 是否被正确识别 2026-07-21 10:19:21 +08:00
29de22b575 fix: crossDomain 重复收集 — 真实树中的 system_mgmt/crossDomain 与虚拟 global_privileges 冲突,从真实树中移除 crossDomain 避免双重收集 2026-07-17 16:22:59 +08:00
0e6294890c debug: crossDomain 收集逻辑加精确断点日志 2026-07-17 16:20:22 +08:00
0074d96163 fix: 权限配置页 GET 请求加 _t 防浏览器缓存 + 保存后自动刷新 UI 2026-07-17 16:13:12 +08:00
96eb56766e fix: 回退权限保存后的 auto-refresh,改为手动刷新提示 2026-07-17 16:07:54 +08:00
c9cf4e0901 fix: 权限保存后自动刷新 UI 回显,确保勾选框状态与数据库同步 2026-07-17 16:02:51 +08:00
8d78ed9306 feat: 全局跨域公司选择器 + 权限页crossDomain开关
- 新增CompanySelector组件: 仅crossDomain权限或SUPER_ADMIN可见
- 权限分配页: 全局系统特权下新增"允许全局跨域"操作权限checkbox
- 入库汇总/出库记录搜索栏嵌入CompanySelector
- PermissionConfig: transformData识别crossDomain为操作权限码
2026-07-15 11:11:49 +08:00
4f5965db02 feat: JWT多租户数据权限隔离 & 主管系统管理权限 & 含税单价补齐
## 多租户公司数据隔离
- 新增 get_current_company_filter() 工具函数 (decorators.py)
  SUPER_ADMIN: 可传company_name参数过滤或传ALL看全量
  其他角色: 强制隔离到JWT中的company_name
- 重构 base_service.py / buy_service.py: 用集中式函数替换内联公司过滤
- SysRolePermission 表新增 company_name 字段,支持同角色不同公司权限
- get_user_permissions() 新增 company_name 参数,查公司定制+全局模板权限
- permission.py API 新增 @permission_required 拦截 + 公司过滤
- 19个API/service文件传递 company_name 到权限查询

## 主管系统管理权限
- delete_user() 允许SUPERVISOR删除同公司用户 (原仅SUPER_ADMIN)
- get_all_users() 新增 company_name 参数过滤
- 用户列表/权限分配 API 应用 get_current_company_filter()
- 前端 UserCreate.vue: 超管可见公司下拉框,主管隐藏部门字段

## 前端多租户适配
- material/list.vue / buy.vue: 公司下拉框仅超管可见,默认ALL
- UserCreate.vue: 新增搜索栏公司筛选,部门字段按角色显隐
- auth.ts: getUserList() 支持 params 参数

## Bug修复: 含税单价字段补齐
- buy.vue: 表格列/高级筛选/排序/权限映射新增 post_tax_unit_price
- buy_service.py: allowed_fields/sort_field_map 新增 post_tax_unit_price
2026-07-13 15:12:22 +08:00
DXC
1205d9c7e8 feat(audit): 优化审计日志的人性化展示 2026-04-22 10:44:13 +08:00
DXC
59a6a10803 fix(audit): 完善前端审计日志详情展示,支持同时渲染changes/deleted_snapshot/created结构 2026-04-20 16:11:14 +08:00
DXC
9a0982e76d feat(audit-ui): 重新应用前端审计详情弹窗渲染逻辑,支持高级对比结构 2026-04-20 13:20:23 +08:00
dxc
becd3cb010 审计日志修改完善 2026-04-20 11:39:28 +08:00
DXC
7d683f3e65 fix: implement strict regex validation (no pure numbers, no special chars) on both frontend user creation form and backend auth service 2026-04-17 13:33:51 +08:00
DXC
d651d19e86 feat(system): implement robust batch user creation integrating existing pinyin logic and backend duplication prevention 2026-04-17 12:16:45 +08:00
DXC
6c0e13e52d fix(frontend): reclassify global cross-company privilege as an operation to fix UI placement, and strictly enforce permission-driven table columns by bypassing localstorage 2026-04-17 09:36:23 +08:00
DXC
bd93a3d70b feat: implement clean global cross-organization permission node and backend service isolation logic 2026-04-17 08:59:55 +08:00
DXC
edf09508f6 fix(frontend): resolve cross-page selection loss, add destroy-on-close to dialogs, and fix row-key collision in stocktake 2026-04-02 18:35:11 +08:00
DXC
06677ee92c style: format user creation time to display only date 2026-03-18 16:43:44 +08:00
DXC
cd192624b9 fix: 统一系统生成时间为北京时间(UTC+8)并优化审计日志表格列展示 2026-03-10 17:33:14 +08:00
DXC
be6575344a feat: 新增企业级操作审计日志闭环模块(包含底层模型、记录装饰器与前端看板) 2026-03-10 12:15:26 +08:00
dxc
8f6d0cd40b 修改采购件页面金额显示,修改权限管理页面非字段级内容可见与可编辑联动 2026-02-28 09:10:51 +08:00
dxc
4324e5a688 feat: add field-level data protection for BOM and user management
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-27 15:16:11 +08:00
dxc
00c45c72fb inventory-web/src/views/system/UserCreate.vue
```vue
<<<<<<< SEARCH
          <el-button type="primary" @click="handleCreate">
            + 新增员工
          </el-button>
=======
          <el-button v-if="userStore.hasPermission('system_user:operation')" type="primary" @click="handleCreate">
            + 新增员工
          </el-button>
>>>>>>> REPLACE
```

Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-27 14:34:48 +08:00
dxc
6fa5233ea6 feat: implement RBAC and field masking for system_user module
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-27 14:28:48 +08:00
dxc
4c1c61065e fix: exclude operation columns from field permission dropdown
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-27 11:08:00 +08:00
dxc
25487dbede fix: operation permission detection for codes ending with :operation
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-27 11:00:44 +08:00
dxc
7431f1f41e 权限管理,没有页面修改之前版本 2026-02-25 16:10:12 +08:00
dxc
82a9a4c2ba 修改登录,实现中文名称显示,以及修改登录逻辑 2026-02-25 11:18:01 +08:00
dxc
1c3f116c50 修改登录,添加超级管理员权限 2026-02-25 11:02:06 +08:00
dxc
88d32067ae 将邮箱设定为必选项 2026-02-10 11:50:07 +08:00
dxc
596f366fc4 进入界面的调整 2026-02-04 15:55:20 +08:00
dxc
ea17413bc1 新增用户页面更新以及调整 2026-02-04 15:16:14 +08:00
dxc
13590b1fac 超级管理员登录设置 2026-02-04 13:30:07 +08:00