liuyun 3afd009420 docs(openspec): C1 待遇档案 change 提案 + 归档 C0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 14:21:25 +08:00

56 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` 即生效,无需改代码