data model注释补全
This commit is contained in:
@@ -115,7 +115,7 @@ PermissionChangeLog (append-only) ← 所有变更流水
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| code | VARCHAR(150) | UNIQUE, NOT NULL | 权限编码,规则:`{module}.{sub_module}.{action}[.{qualifier}]`,如 `client.private.view.scope` |
|
||||
| module | VARCHAR(50) | NOT NULL | 一级模块枚举(见 §4.1) |
|
||||
| sub_module | VARCHAR(50) | | 二级模块(如 `二手&租赁`、`商圈精耕`) |
|
||||
@@ -132,8 +132,8 @@ PermissionChangeLog (append-only) ← 所有变更流水
|
||||
| is_active | BOOLEAN | NOT NULL DEFAULT TRUE | 下线权限项置 FALSE,历史记录保留 |
|
||||
| is_deprecated | BOOLEAN | NOT NULL DEFAULT FALSE | 废弃标记(不再推荐使用但保持兼容) |
|
||||
| version | INTEGER | NOT NULL DEFAULT 1 | 权限项定义版本,变更时递增,用于缓存失效 |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录创建时间(系统自动) |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录最后更新时间(系统自动) |
|
||||
|
||||
**关键索引**:
|
||||
```sql
|
||||
@@ -153,18 +153,18 @@ CREATE INDEX idx_permission_defs_active ON permission_defs(is_active) WHERE is_a
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| name | VARCHAR(100) | NOT NULL | 角色名称 |
|
||||
| category | VARCHAR(30) | NOT NULL, CHECK | `agent`(置业顾问) / `store_manager`(店管) / `director`(总经) / `operator`(运营) / `custom`(见 §4.3) |
|
||||
| description | TEXT | | 角色描述 |
|
||||
| template_role_id | UUID | FK→roles, SET NULL | 权限模板来源角色(PRD「引用该角色配置」列) |
|
||||
| is_system_builtin | BOOLEAN | NOT NULL DEFAULT FALSE | 系统内置角色(如"最大权限角色"),不可删除、不可改名 |
|
||||
| is_active | BOOLEAN | NOT NULL DEFAULT TRUE | |
|
||||
| is_active | BOOLEAN | NOT NULL DEFAULT TRUE | 角色是否启用;FALSE=禁用(员工无法继承该角色权限) |
|
||||
| created_by | UUID | FK→staff, SET NULL | 创建人(PRD: 角色类别只能由创建者修改) |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| updated_by | UUID | FK→staff, SET NULL | |
|
||||
| deleted_at | TIMESTAMPTZ | | 软删除 |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录创建时间(系统自动) |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录最后更新时间(系统自动) |
|
||||
| updated_by | UUID | FK→staff, SET NULL | 最后修改人(权限管理审计用) |
|
||||
| deleted_at | TIMESTAMPTZ | | 软删除时间戳;NULL=未删除,非NULL=已软删除 |
|
||||
|
||||
**关键索引**:
|
||||
```sql
|
||||
@@ -185,13 +185,13 @@ CREATE INDEX idx_roles_template ON roles(template_role_id);
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| role_id | UUID | NOT NULL, FK→roles, CASCADE | |
|
||||
| permission_def_id | UUID | NOT NULL, FK→permission_defs, RESTRICT | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| role_id | UUID | NOT NULL, FK→roles, CASCADE | 所属角色(稀疏存储:角色删除时级联清理权限值) |
|
||||
| permission_def_id | UUID | NOT NULL, FK→permission_defs, RESTRICT | 权限定义(RESTRICT防止删除仍被引用的权限项) |
|
||||
| value | JSONB | NOT NULL | 统一格式 `{"v": <value>}`,如 `{"v": true}` / `{"v": "store"}` / `{"v": 50}` |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| updated_by | UUID | FK→staff, SET NULL | |
|
||||
| created_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录创建时间(系统自动) |
|
||||
| updated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 记录最后更新时间(系统自动) |
|
||||
| updated_by | UUID | FK→staff, SET NULL | 最后修改人(权限审计用) |
|
||||
|
||||
**关键索引**:
|
||||
```sql
|
||||
@@ -208,12 +208,12 @@ CREATE INDEX idx_role_permissions_def ON role_permissions(permission_def_id);
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | 所属员工(员工删除时级联删除角色关联) |
|
||||
| role_id | UUID | NOT NULL, FK→roles, PROTECT | 角色被员工引用时禁止删除 |
|
||||
| is_primary | BOOLEAN | NOT NULL DEFAULT FALSE | 主角色标识,每个员工有且仅有一个主角色(Issue #5) |
|
||||
| assigned_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| assigned_by | UUID | FK→staff, SET NULL | |
|
||||
| assigned_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 角色分配时间(系统自动) |
|
||||
| assigned_by | UUID | FK→staff, SET NULL | 分配操作人(管理员) |
|
||||
| valid_from | DATE | | 生效日(预留未来"定时生效"功能) |
|
||||
| valid_until | DATE | | 失效日 |
|
||||
|
||||
@@ -232,14 +232,14 @@ CREATE INDEX idx_staff_roles_role ON staff_roles(role_id);
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | |
|
||||
| permission_def_id | UUID | NOT NULL, FK→permission_defs, RESTRICT | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | 所属员工(员工删除时级联删除覆盖记录) |
|
||||
| permission_def_id | UUID | NOT NULL, FK→permission_defs, RESTRICT | 被覆盖的权限项 |
|
||||
| value | JSONB | NOT NULL | 个人权限值,同 `{"v": ...}` 格式 |
|
||||
| override_mode | VARCHAR(10) | NOT NULL DEFAULT 'REPLACE' | `REPLACE`(覆盖角色合并值,PRD 默认) / `RESTRICT`(限制上限) / `GRANT`(仅扩展) — Issue #6 |
|
||||
| reason | TEXT | | 管理员备注(建议强制,为后续审计) |
|
||||
| modified_by | UUID | FK→staff, SET NULL | |
|
||||
| modified_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| modified_by | UUID | FK→staff, SET NULL | 执行个人权限修改的管理员 |
|
||||
| modified_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 最近修改时间(系统自动) |
|
||||
|
||||
**关键索引**:
|
||||
```sql
|
||||
@@ -257,14 +257,14 @@ CREATE INDEX idx_staff_overrides_staff ON staff_permission_overrides(staff_id);
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| staff_id | UUID | NOT NULL, FK→staff, CASCADE | 所属员工(员工删除时级联删除范围记录) |
|
||||
| scope_type | VARCHAR(20) | NOT NULL, CHECK | `self` / `group` / `store` / `area` / `region` / `company` / `custom_unit` |
|
||||
| org_unit_id | UUID | FK→org_units, RESTRICT | `scope_type='custom_unit'` 时必填,指向具体的组织节点;其他类型时 NULL(由 `staff.org_unit_id` 动态推导) |
|
||||
| is_readable | BOOLEAN | NOT NULL DEFAULT TRUE | 可读 |
|
||||
| is_writable | BOOLEAN | NOT NULL DEFAULT FALSE | 可写(默认只读) |
|
||||
| granted_by | UUID | FK→staff, SET NULL | |
|
||||
| granted_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| granted_by | UUID | FK→staff, SET NULL | 授权操作人(管理员) |
|
||||
| granted_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 授权时间(系统自动) |
|
||||
| expires_at | TIMESTAMPTZ | | 临时授权失效时间 |
|
||||
| reason | TEXT | | 授予原因 |
|
||||
|
||||
@@ -288,7 +288,7 @@ CREATE INDEX idx_data_scopes_expires ON staff_data_scopes(expires_at) WHERE expi
|
||||
|
||||
| 字段 | 类型 | 约束 | 业务说明 |
|
||||
|------|------|------|---------|
|
||||
| id | UUID | PK | |
|
||||
| id | UUID | PK | 主键(系统生成,业务无关) |
|
||||
| target_type | VARCHAR(30) | NOT NULL, CHECK | `role` / `role_permission` / `staff_role` / `staff_override` / `staff_scope` |
|
||||
| target_id | UUID | NOT NULL | 被变更对象的 ID(上述各表的主键) |
|
||||
| staff_id | UUID | FK→staff, SET NULL | 被影响员工(target 是 `staff_role/staff_override/staff_scope` 时必填,便于按员工查询) |
|
||||
@@ -301,7 +301,7 @@ CREATE INDEX idx_data_scopes_expires ON staff_data_scopes(expires_at) WHERE expi
|
||||
| operator_ip | INET | | 操作来源 IP |
|
||||
| user_agent | TEXT | | 操作终端 UA |
|
||||
| reason | TEXT | | 操作原因(批量设置角色等场景强制填写) |
|
||||
| operated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | |
|
||||
| operated_at | TIMESTAMPTZ | NOT NULL DEFAULT NOW() | 操作时间(append-only流水,系统自动) |
|
||||
| ⚠️ 无 deleted_at | — | — | 审计日志**不可删除** |
|
||||
|
||||
**关键索引**:
|
||||
|
||||
Reference in New Issue
Block a user