docs(architecture): v0.3 为多人、多登录方式预留表结构(AR11、AR12)

团队版、企业版、飞书 / 企业微信登录都不在早期版本,但 MVP 的表结构先按
多人、多登录方式建,以后接入不用重构:
- 身份拆成人 / 登录方式 / 成员身份三层,一人一企业在服务层限制
- 项目成员表、统一的权限检查点和可见范围过滤先建好
- 记录「谁」的字段指向人,人不做物理删除;订阅带席位数

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-11-03 17:19:21 +08:00
parent 819e66519a
commit 47242ba9d7
4 changed files with 72 additions and 10 deletions

View File

@@ -7,7 +7,10 @@
```mermaid
erDiagram
Tenant ||--o{ User : "成员"
Tenant ||--o{ Membership : "成员"
User ||--o{ Membership : "成员身份"
User ||--o{ LoginIdentity : "登录方式"
Project ||--o{ ProjectMember : "项目成员"
Tenant ||--o{ Subscription : "订阅"
Tenant ||--|| QuotaAccount : "额度账户"
QuotaAccount ||--o{ QuotaEntry : "流水"
@@ -34,15 +37,18 @@ erDiagram
QuotaEntry }o--o| CheckRun : "关联任务"
```
所有业务实体都带 `tenant_id`,按租户隔离(PRD 7)。
所有业务实体都带 `tenant_id`,按租户隔离(PRD 7)。User 和 LoginIdentity 例外,是全局的(技术架构 §3.14)。
## 2. 实体说明
| 实体 | 关键字段 | 说明 |
|---|---|---|
| **Tenant** 企业主体 | 名称、统一社会信用代码(可空)、当前套餐 | 额度和数据的归属单位(PRD 4.3:额度绑定企业主体) |
| **User** 用户 | 手机号、所属租户、角色 | MVP 一个租户一个成员;角色字段先留着,给 V1 用 |
| **Subscription** 订阅 | 套餐、起止日期、来源(注册赠送 / 人工开通 / 线上支付) | |
| **User** 用户 | 显示名、状态 | 一个自然人,不属于某个租户;不做物理删除 |
| **LoginIdentity** 登录方式 | 来源(手机号 / 飞书 / 企业微信 / 账号密码 / OIDC / LDAP)、外部组织编号、外部用户编号 | 一个人可以有多种登录方式 |
| **Membership** 成员身份 | 用户、租户、企业角色、状态 | MVP 一个人只属于一个企业、一个企业一个成员(所有者);团队版放开成多席位(技术架构 §3.14) |
| **ProjectMember** 项目成员 | 项目、用户、项目角色(负责人 / 编标 / 只读) | MVP 只有建项目的人,自动成为负责人 |
| **Subscription** 订阅 | 套餐、起止日期、来源(注册赠送 / 人工开通 / 线上支付)、席位数 | MVP 席位数是 1 |
| **QuotaAccount / QuotaEntry** 额度 | 单位(解析 / 检查 / 生成 / 查重)、类型(发放 / 预扣 / 结算 / 退回 / 过期 / 调整 / 免扣)、数量、关联任务、原因 | 只追加、不修改;余额由流水算出来 |
| **Qualification** 资质 | 名称、类型、等级、证书号、发证机构、有效期、附件 | MVP 最小资质库 |
| **Project** 投标项目 | 名称、编号、采购人、代理机构、采购方式、**法律体系**、截止时间、状态、所投包 | 基本信息来自 FR-M2-03,用户可以改 |