diff --git a/.kiro/steering/development-standards.md b/.kiro/steering/development-standards.md index 2f18909..1ded594 100644 --- a/.kiro/steering/development-standards.md +++ b/.kiro/steering/development-standards.md @@ -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 组件规范 diff --git a/docs/开发文档.md b/docs/开发文档.md index 446508f..5b0f295 100644 --- a/docs/开发文档.md +++ b/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 节说明。