docs(db): 添加双数据库架构规范文档
- 在开发规范 steering 文件中新增第九节:双数据库架构规范 - 在开发文档中新增第八节:双数据库架构说明 - 明确 Admin 库与 Business 库的职责划分 - 定义配置数据分离规则和 DbContext 映射关系 - 规定跨库访问只读原则
This commit is contained in:
parent
8489b4300c
commit
2c3940895f
|
|
@ -443,7 +443,90 @@ entity.UpdateTime = DateTime.Now;
|
|||
await _dbContext.SaveChangesAsync();
|
||||
```
|
||||
|
||||
## 九、状态值定义
|
||||
## 九、双数据库架构规范
|
||||
|
||||
### 9.1 数据库划分
|
||||
|
||||
本项目采用双数据库架构,严格区分后台管理数据与业务数据:
|
||||
|
||||
| 数据库 | 名称 | 职责 |
|
||||
|--------|------|------|
|
||||
| Admin 库 | `MiAssessment_Admin` | 后台管理系统自身运行所需数据(RBAC、审计、运营配置) |
|
||||
| Business 库 | `MiAssessment_Business` | C端用户产生的或直接服务C端的业务数据 |
|
||||
|
||||
### 9.2 Admin 库表清单
|
||||
|
||||
| 表名 | 说明 |
|
||||
|------|------|
|
||||
| `admin_users` | 后台管理员 |
|
||||
| `roles` | 角色 |
|
||||
| `menus` | 菜单 |
|
||||
| `departments` | 部门 |
|
||||
| `permissions` | 权限 |
|
||||
| `role_menus` | 角色-菜单关联 |
|
||||
| `role_permissions` | 角色-权限关联 |
|
||||
| `user_roles` | 用户-角色关联 |
|
||||
| `operation_logs` | 操作日志 |
|
||||
| `refresh_tokens` | 刷新令牌 |
|
||||
| `admin_configs` | 运营配置(支付、小程序、上传、短信等) |
|
||||
| `dict_types` | 字典类型 |
|
||||
| `dict_items` | 字典项 |
|
||||
|
||||
### 9.3 Business 库表清单
|
||||
|
||||
| 表名 | 说明 |
|
||||
|------|------|
|
||||
| `configs` | 业务配置(测评价格、佣金比例、提现限额、联系方式、协议等) |
|
||||
| `banners` | 轮播图 |
|
||||
| `promotions` | 宣传图 |
|
||||
| `assessment_types` | 测评类型 |
|
||||
| `questions` | 题目 |
|
||||
| `report_categories` | 报告分类 |
|
||||
| `question_category_mappings` | 题目-分类映射 |
|
||||
| `report_conclusions` | 报告结论 |
|
||||
| `assessment_records` | 测评记录 |
|
||||
| `assessment_answers` | 测评答案 |
|
||||
| `assessment_results` | 测评结果 |
|
||||
| `users` | C端用户 |
|
||||
| `orders` | 订单 |
|
||||
| `planners` | 规划师 |
|
||||
| `planner_bookings` | 规划预约 |
|
||||
| `invite_codes` | 邀请码 |
|
||||
| `commissions` | 佣金记录 |
|
||||
| `withdrawals` | 提现记录 |
|
||||
| `business_pages` | 业务页面 |
|
||||
|
||||
### 9.4 配置数据分离规则
|
||||
|
||||
| 配置类型 | 所在库 | 表名 | 示例 Key |
|
||||
|----------|--------|------|----------|
|
||||
| 运营配置 | Admin 库 | `admin_configs` | `weixinpay_setting`, `miniprogram_setting`, `upload_setting`, `sms_setting`, `app_setting`, `base` |
|
||||
| 业务配置 | Business 库 | `configs` | `assessment_price`, `commission_rate_direct`, `commission_rate_indirect`, `withdraw_min_amount`, `contact_wechat`, `user_agreement`, `privacy_policy` |
|
||||
|
||||
### 9.5 DbContext 映射
|
||||
|
||||
| DbContext | 所在项目 | 连接数据库 | 读写权限 | 用途 |
|
||||
|-----------|----------|------------|----------|------|
|
||||
| `AdminDbContext` | MiAssessment.Admin | Admin 库 | 读写 | 后台管理系统主上下文 |
|
||||
| `AdminBusinessDbContext` | MiAssessment.Admin.Business | Business 库 | 读写 | 后台管理业务数据 |
|
||||
| `AdminConfigDbContext` | MiAssessment.Admin.Business | Admin 库 | 只读 | Business 项目读取运营配置 |
|
||||
| `AdminConfigReadDbContext` | MiAssessment.Model | Admin 库 | 只读 | Core/API 项目读取运营配置 |
|
||||
| `MiAssessmentDbContext` | MiAssessment.Model | Business 库 | 读写 | 小程序 API 主上下文 |
|
||||
|
||||
### 9.6 跨库访问规则
|
||||
|
||||
1. **Business 项目对 Admin 库只读**:通过 `AdminConfigDbContext` 读取运营配置,禁止写入
|
||||
2. **Core/API 项目对 Admin 库只读**:通过 `AdminConfigReadDbContext` 读取运营配置,禁止写入
|
||||
3. **Admin 库的写操作只通过 Admin 项目进行**:所有运营配置的增删改必须通过 `AdminDbContext`
|
||||
4. **连接字符串命名**:Admin 库使用 `AdminConnection`,Business 库使用 `DefaultConnection`
|
||||
|
||||
### 9.7 新增配置项规则
|
||||
|
||||
- 如果配置是**运营/系统级别**(支付密钥、上传凭证、短信配置等)→ 存入 Admin 库 `admin_configs` 表
|
||||
- 如果配置是**业务级别**(价格、佣金比例、协议内容等)→ 存入 Business 库 `configs` 表
|
||||
- 新增 DbContext 时必须明确标注读写权限,跨库上下文必须标注 `只读`
|
||||
|
||||
## 十、状态值定义
|
||||
|
||||
### 9.1 通用状态
|
||||
|
||||
|
|
@ -471,7 +554,7 @@ await _dbContext.SaveChangesAsync();
|
|||
| 2 | 合伙人 |
|
||||
| 3 | 渠道合伙人 |
|
||||
|
||||
## 十、测试规范
|
||||
## 十一、测试规范
|
||||
|
||||
### 10.1 测试框架
|
||||
|
||||
|
|
@ -504,7 +587,7 @@ public Property PaginationReturnsCorrectCount()
|
|||
}
|
||||
```
|
||||
|
||||
## 十一、Git 提交规范
|
||||
## 十二、Git 提交规范
|
||||
|
||||
### 11.1 提交信息格式
|
||||
|
||||
|
|
@ -536,7 +619,7 @@ feat(user): 添加用户列表分页查询功能
|
|||
- 添加分页参数验证
|
||||
```
|
||||
|
||||
## 十二、前端开发规范(小程序)
|
||||
## 十三、前端开发规范(小程序)
|
||||
|
||||
### 12.1 Vue 组件规范
|
||||
|
||||
|
|
|
|||
45
docs/开发文档.md
45
docs/开发文档.md
|
|
@ -715,17 +715,54 @@ Content-Type: application/json
|
|||
|
||||
---
|
||||
|
||||
## 八、附录
|
||||
## 八、双数据库架构
|
||||
|
||||
### 8.1 设计图地址
|
||||
### 8.1 架构说明
|
||||
|
||||
本项目采用双数据库架构,严格区分后台管理数据与业务数据:
|
||||
|
||||
| 数据库 | 名称 | 职责 |
|
||||
|--------|------|------|
|
||||
| Admin 库 | `MiAssessment_Admin` | 后台管理系统自身运行所需数据(RBAC、审计、运营配置) |
|
||||
| Business 库 | `MiAssessment_Business` | C端用户产生的或直接服务C端的业务数据 |
|
||||
|
||||
### 8.2 配置数据分离
|
||||
|
||||
| 配置类型 | 所在库 | 表名 | 说明 |
|
||||
|----------|--------|------|------|
|
||||
| 运营配置 | Admin 库 | `admin_configs` | 支付密钥、小程序配置、上传凭证、短信配置等 |
|
||||
| 业务配置 | Business 库 | `configs` | 测评价格、佣金比例、提现限额、联系方式、协议内容等 |
|
||||
|
||||
### 8.3 DbContext 映射
|
||||
|
||||
| DbContext | 所在项目 | 连接数据库 | 读写权限 |
|
||||
|-----------|----------|------------|----------|
|
||||
| `AdminDbContext` | MiAssessment.Admin | Admin 库 | 读写 |
|
||||
| `AdminBusinessDbContext` | MiAssessment.Admin.Business | Business 库 | 读写 |
|
||||
| `AdminConfigDbContext` | MiAssessment.Admin.Business | Admin 库 | 只读 |
|
||||
| `AdminConfigReadDbContext` | MiAssessment.Model | Admin 库 | 只读 |
|
||||
| `MiAssessmentDbContext` | MiAssessment.Model | Business 库 | 读写 |
|
||||
|
||||
### 8.4 跨库访问规则
|
||||
|
||||
1. Business 项目对 Admin 库**只读**,通过 `AdminConfigDbContext`
|
||||
2. Core/API 项目对 Admin 库**只读**,通过 `AdminConfigReadDbContext`
|
||||
3. Admin 库的**写操作只通过 Admin 项目**的 `AdminDbContext` 进行
|
||||
4. 连接字符串:Admin 库 = `AdminConnection`,Business 库 = `DefaultConnection`
|
||||
|
||||
---
|
||||
|
||||
## 九、附录
|
||||
|
||||
### 9.1 设计图地址
|
||||
Figma: https://www.figma.com/design/88edYGASUcyID6afiwILdf/项目?node-id=432-1991
|
||||
|
||||
### 8.2 相关文档
|
||||
### 9.2 相关文档
|
||||
- 需求文档:`docs/需求文档.md`
|
||||
- 题库文档:`docs/题库和结论/`
|
||||
- 设计切图:`docs/切图/`
|
||||
- 设计图:`docs/设计图/`
|
||||
|
||||
### 8.3 题目-分类映射汇总
|
||||
### 9.3 题目-分类映射汇总
|
||||
|
||||
详见各分析报告对应题目文档,核心映射关系已在 3.5 节说明。
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user