56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
# shared/data-model Specification
|
||
|
||
## Purpose
|
||
定义服务机构端 C0 的数据模型字段字典——机构/人员/服务目录四层/字典/属地配置的实体、字段、枚举与多租户键约定,作为前后端字段命名的唯一锚点。
|
||
|
||
## Requirements
|
||
|
||
### Requirement: 多租户键约定
|
||
服务机构端所有业务实体 MUST 携带 `tenant_code` 字段作为多租户隔离键,其值为机构唯一标识(= 脚手架租户 code)。
|
||
|
||
#### Scenario: 跨机构隔离
|
||
- **WHEN** 业务表写入一条记录
|
||
- **THEN** 该记录 MUST 带 `tenant_code`,且读操作按当前租户自动过滤,不返回其他租户数据
|
||
|
||
### Requirement: 机构实体 org
|
||
`org` 表 MUST 存在,主键为机构 code(与 `tenant_code` 同值),承载机构业务字段:org_name、org_type、credit_code、loc_code、loc_name、svc_source、license_no、address、contact_name、contact_phone、bed_count、sign_date。
|
||
|
||
#### Scenario: 机构唯一标识
|
||
- **WHEN** 创建一个机构
|
||
- **THEN** 其 code 与脚手架的 tenant code 一致且全局唯一
|
||
|
||
### Requirement: 人员实体 staff
|
||
`staff` 表 MUST 存在,承载人员/资质字段(name、id_card_no、phone、job_type、work_type、employ_status、cert_type/cert_no/cert_level/cert_expire/cert_status、group_leader_id),并 MUST 带 `user_id` 关联脚手架 `user.id`(可空、1:1)。
|
||
|
||
#### Scenario: 账号关联人员
|
||
- **WHEN** 护理员登录并定位本人 staff
|
||
- **THEN** 通过 `staff.user_id = user.id` 唯一定位到一条 staff 记录
|
||
|
||
### Requirement: 软删约定
|
||
服务机构端业务实体 MUST 采用脚手架 `deleted_at`(时间戳)软删,不物理删除。
|
||
|
||
#### Scenario: 软删保留
|
||
- **WHEN** 删除一条业务记录
|
||
- **THEN** 记录置 `deleted_at`,读操作默认排除,物理数据保留
|
||
|
||
### Requirement: 主键约定
|
||
业务实体主键 MUST 采用脚手架 UUID v7;业务码(机构 code、项目代码)MUST 建唯一索引。
|
||
|
||
#### Scenario: 主键唯一
|
||
- **WHEN** 新增业务记录
|
||
- **THEN** 生成 UUID v7 主键,业务码唯一索引防重复
|
||
|
||
### Requirement: 目录四层实体
|
||
`svc_national`(L1)、`svc_local`(L2)、`svc_mapping`(L3)、`svc_org`(L4) 四表 MUST 存在,字段按 PRD §7.2 定义;L3 映射表不提供机构侧接口。
|
||
|
||
#### Scenario: 目录分层
|
||
- **WHEN** 加载某机构属地目录
|
||
- **THEN** 按 L1/L2 取目录、L4 取机构勾选与配价、L3 仅内部映射
|
||
|
||
### Requirement: 字典与属地配置实体
|
||
`dict_abnormal_type`、`dict_photo_tier`、`loc_config` 三表 MUST 存在,承载异常分类、拍照分档、属地目录来源与项数规则配置。
|
||
|
||
#### Scenario: 属地配置驱动目录
|
||
- **WHEN** 新增一个州市
|
||
- **THEN** 插入一条 `loc_config` + 一批 `svc_local` 即生效,无需改代码
|