112 lines
3.7 KiB
Markdown
112 lines
3.7 KiB
Markdown
# 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 Schema,django-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
|
||
|
||
---
|
||
|
||
*后续如有新增字段,按同样格式追加到本文件。*
|