feat(client): A3 客户与行业目录(两级行业、客户组、字段审批)
背景:A3 需把行业 / 客户 / 客户组 / 客户级字段立为资产根节点;用户确认两级行业树与混搭 UI(行业 B / 客户列表 A / 详情 A / 新建 B / 客户组 B / 字段 A)。 改动: - 新增 ADR-002,行业改为两级树,客户挂末级行业;同步 PRD / 技术架构 / 开发计划。 - 新增 client 模块:industries / customers / customer-groups / customer-fields 接口、真实 PrismaCustomerDirectory、客户状态机与客户转交、客户组数据范围解析、跨客户 404。 - 新增迁移与幂等种子(电商/金融两级行业、2 客户、1 客户组、4 条字段)。 - 前端新增行业/客户/客户组/字段审批页面与路由、导航更名(客户管理 / 行业管理 / 客户组),复用现有 token。 - 补充 shared 契约单测、client 集成用例、A3 浏览器 e2e。 影响面:client 模块与 client 表、shared 契约、web 路由/导航、ScopeContext 数据范围、OpenAPI 与种子;A1 客户转交占位由 client 实现替换。 回滚:回滚本提交;数据库保留新增表或按报告执行 down SQL;CUSTOMER_DIRECTORY 可切回空集实现。 验证:format:check / lint / typecheck / test 全绿(shared 131 / api 90 / web 125,共 346);test:int 5 文件 39 条;A3 e2e 1/1;build 8/8;真实浏览器六页验证通过。
This commit is contained in:
1 parent
8626996bb1
commit
140dc386c1
54 files changed
+9018
-147
No files matched your search
@@ -830,7 +830,7 @@ erDiagram
|
||||
| 组织权限 | `role_permissions` | 角色 → 权限点 | 复合主键 |
|
||||
| 组织权限 | `user_roles` | 用户 → 角色(可多) | 复合主键 |
|
||||
| 组织权限 | `data_scopes` | 角色数据范围 | `scope_type` + 目标 ID |
|
||||
| 客户与行业 | `industries` | 行业目录(业务属性) | 名称全局唯一 |
|
||||
| 客户与行业 | `industries` | 行业目录(两级树:一级 → 二级) | 一级名称全局唯一;二级同一父级下唯一;最多两级 |
|
||||
| 客户与行业 | `customers` | 客户 | `(industry_id, name)` 唯一;`short_name` 必填 |
|
||||
| 客户与行业 | `customer_groups` | 客户组 | 授权与范围最小单位 |
|
||||
| 客户与行业 | `customer_group_members` | 客户组 ↔ 客户 | 复合主键 |
|
||||
@@ -900,7 +900,7 @@ erDiagram
|
||||
| **字段** | **类型** | **说明** |
|
||||
| --- | --- | --- |
|
||||
| `id` | ulid PK | — |
|
||||
| `industry_id` | ulid FK → industries | 不可为空;跨行业移动禁止(应用层 + 触发器可选) |
|
||||
| `industry_id` | ulid FK → industries | 不可为空;必须指向**末级行业**(有子行业的一级行业不可选);跨行业移动禁止(应用层 + 触发器可选) |
|
||||
| `name` | text | 同行业内唯一 |
|
||||
| `short_name` | text | **必填**,用于自动命名,需满足通用字符规则 |
|
||||
| `status` | enum | 在服务 / 暂停 / 结束 |
|
||||
@@ -1102,7 +1102,7 @@ sequenceDiagram
|
||||
|
||||
| **方法** | **路径** | **权限点** | **说明** |
|
||||
| --- | --- | --- | --- |
|
||||
| GET/POST/PATCH | `/industries`、`/industries/{id}` | `industry_pack:view` / `customer:manage` | 行业目录;删除前校验 |
|
||||
| GET/POST/PATCH | `/industries`、`/industries/{id}` | `customer:read` / `customer:manage` | 两级行业树;删除前校验无子行业 / 客户 / 资产;有启用子行业禁止停用 |
|
||||
| GET/POST/PATCH | `/customers`、`/customers/{id}` | `customer:view` / `customer:manage` | 客户;`short_name` 必填 |
|
||||
| GET/POST | `/customer-groups`、`/customer-groups/{id}/members` | `customer_group:manage` | 客户组与成员 |
|
||||
| POST | `/customers/{id}/apply-industry-pack` | `customer:manage` | 套用行业资产包(冷启动) |
|
||||
|
||||
Reference in new issue
Block a user