Files
nexus/Project/fonrey/DATA_MODEL/SCHEMA_CHANGES.md
2026-04-30 18:40:55 +08:00

112 lines
3.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.
# Schema 变更记录
> **用途**:记录在初始 Model 创建之后新增/修改的字段,供架构师逐一更新 Migration 脚本。
> **格式**:每条变更含目标表、变更类型、字段定义、变更原因、来源 PRD 依据。
> **状态流转**`待迁移` → `已迁移`(架构师完成 migration 后更新状态)
---
## 变更清单
| # | 状态 | 目标表 | 变更类型 | 字段名 | 提出日期 |
|---|------|--------|----------|--------|----------|
| 1 | 待迁移 | `public.tenants` | 新增字段 | `tenant_code` | 2026-04-30 |
| 2 | 待迁移 | `public.tenants` | 新增字段 | `contact_phone` | 2026-04-30 |
| 3 | 待迁移 | `public.tenants` | 字段修改 | `contact_email`NOT NULL → 可 NULL | 2026-04-30 |
---
## 变更详情
### #1 — `public.tenants` 新增 `tenant_code`
**状态**:待迁移
**提出日期**2026-04-30
**目标表**`public.tenants`Public Schemadjango-tenants 主租户表)
**字段定义**
```sql
tenant_code CHAR(12) UNIQUE NOT NULL
```
**注释**:对外暴露的 12 位纯数字识别码,如 `202500010001`;用户首次登录客户端时输入;由平台运营在注册租户时生成;创建后不可修改。
**推荐加在**`schema_name` 字段之后,`name` 字段之前。
**约束要求**
- `CHAR(12)`:固定 12 位
- `UNIQUE`:全局唯一
- `NOT NULL`:注册时必填
- 禁止 `UPDATE`(应用层 + DB 层双重约束,与 `schema_name` 同等级别)
**建议索引**
```sql
CREATE UNIQUE INDEX idx_tenants_tenant_code ON public.tenants(tenant_code);
```
**变更原因**
登录 PRD §5.1.3 明确用户输入 12 位 Tenant Code 完成租户识别,服务端需通过该码查找对应 `schema_name`,原始 `public.tenants` 表中缺少此字段。
**PRD 依据**
`PRD/登录管理/用户登录管理模块PRD.md` §5.1.3 — Tenant Code 格式规范:
> 格式:固定 12 位纯数字,如 `202500010001`
**登录查询示例**
```sql
SELECT schema_name, name
FROM public.tenants
WHERE tenant_code = '202500010001'
AND status = 'active';
```
---
### #2 — `public.tenants` 新增 `contact_phone`
**状态**:待迁移
**提出日期**2026-04-30
**目标表**`public.tenants`Public Schema
**字段定义**
```sql
contact_phone CHAR(11) NOT NULL
```
**注释**联系人手机号11位纯数字系统开通租户时自动以此手机号创建 Tenant Admin 登录账号;必填字段,平台运营在创建租户时录入。
**推荐加在**`contact_name` 字段之后,`contact_email` 字段之前。
**约束要求**
- `CHAR(11)`:固定 11 位手机号
- `NOT NULL`:开通租户时必填
**变更原因**
登录 PRD v1.5 决策Tenant Admin 账号统一以联系人手机号作为用户名,与普通员工账号规则对齐。需在 tenants 表增加手机号字段作为 Tenant Admin 账号创建的数据来源。
**PRD 依据**
`PRD/登录管理/用户登录管理模块PRD.md` §5.3.2 Tenant Admin 账号规格表
---
### #3 — `public.tenants.contact_email` 改为可 NULL
**状态**:待迁移
**提出日期**2026-04-30
**目标表**`public.tenants`Public Schema
**变更 SQL**
```sql
ALTER TABLE public.tenants
ALTER COLUMN contact_email DROP NOT NULL;
```
**变更原因**
`contact_email` 原为 `NOT NULL`。由于 Tenant Admin 账号创建数据来源改为 `contact_phone`(手机号,必填),邮箱降级为选填,仅用于找回密码功能。为空时 Tenant Admin 无法自助找回密码,需联系平台运营处理。
**PRD 依据**
`PRD/登录管理/用户登录管理模块PRD.md` §5.3.2
---
*后续如有新增字段,按同样格式追加到本文件。*