datai/docs/design/template.md
Kris b7163d555b feat: 实现动态数据源延迟加载功能 (2026-01-21-001)
## 功能概述
- 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换
- 从库配置存储在主库中,支持运行时灵活切换从库库名
- 使用现有的 @DataSource 注解进行数据源切换,业务代码无需修改

## 新增功能
- 动态数据源管理接口 IDynamicDataSourceManager
- 动态数据源服务接口 IDynamicDataSourceService
- 动态数据源服务实现 DynamicDataSourceServiceImpl
- 数据源管理控制器 DatasourceController
- 数据源配置表 sys_datasource_config

## 新增文档
- 需求文档: docs/requirements/2026-01-21-001-动态数据源延迟加载.md
- 设计文档: docs/design/2026-01-21-001-动态数据源延迟加载设计.md
- 决策记录: docs/decisions/2026-01-21-001-ADR-动态数据源延迟加载.md
- SQL 脚本: docs/sql/2026-01-21-001-sys_datasource_config.sql
- 提示词: docs/prompts/2026-01-21-001-动态数据源延迟加载代码生成提示词.md
- 会话记录: docs/sessions/2026-01-21-001-session.md
- 变更日志: docs/changelog/2026-01-21-001-changelog.md
- 复盘文档: docs/retros/2026-01-21-001-retro.md
- API 文档: docs/api-docs/2026-01-21-001-api.md
- 根目录变更日志: CHANGELOG.md

## 修改功能
- 扩展 DataSourceManager 类,添加动态数据源管理方法
- 扩展 SysDatasourceConfigMapper 接口,添加 selectSysDatasourceConfigByDsName 方法
- 更新项目索引和 Authentication.canvas

## 修复问题
- 修复循环依赖问题:创建 IDynamicDataSourceManager 接口解决 datai-system 和 datai-framework 互相依赖
- 修复导入错误:删除 DynamicDataSourceServiceImpl 中未使用的导入
- 修复异常处理:将 setFilters() 调用移到 try-catch 块内

## API 接口
- POST /system/datasource/loadSlave - 加载从库数据源
- POST /system/datasource/switchSlave/{dbName} - 切换从库库名
- GET /system/datasource/getSlaveConfig - 获取从库配置
- POST /system/datasource/switch/{dsName} - 切换数据源
- DELETE /system/datasource/{dsName} - 移除数据源
2026-01-21 18:24:24 +08:00

136 lines
2.4 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.

# 设计文档模板
## 元数据
- 需求编号:
- 创建时间YYYY-MM-DD
- 创建人:
- 状态:进行中/已完成
## 设计概述
[设计概述]
## 架构设计
### 系统架构图
```
[系统架构的可视化表示]
```
### 模块关系图
```
[模块之间的依赖关系]
```
### 核心组件
| 组件名称 | 职责描述 | 交互关系 |
| ------ | ------ | ------ |
| 组件1 | 组件1职责 | 与组件2、组件3交互 |
| 组件2 | 组件2职责 | 与组件1、组件4交互 |
## 技术方案
### 技术栈
| 类别 | 技术 | 版本 | 用途 |
| ---- | ---- | ---- | ---- |
| 后端框架 | Spring Boot | 3.0 | 应用框架 |
| 数据库 | MySQL | 8.0 | 数据存储 |
| 缓存 | Redis | 7.0 | 缓存 |
### 关键技术点
- 技术点1
- 技术点2
## 数据设计
### 数据模型
```
[数据模型的可视化表示]
```
### 数据库表结构
#### 表1[表名]
| 字段名 | 数据类型 | 约束 | 描述 |
| ------ | ------ | ---- | ---- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键 |
| name | VARCHAR(50) | NOT NULL | 名称 |
| create_time | DATETIME | NOT NULL | 创建时间 |
### 数据流转
```
[数据在系统中的流动路径]
```
## 接口设计
### 内部 API
| 接口名称 | 方法 | 路径 | 描述 |
| ------ | ---- | ---- | ---- |
| 接口1 | GET | /api/internal/xxx | 内部接口1 |
| 接口2 | POST | /api/internal/xxx | 内部接口2 |
### 外部 API
| 接口名称 | 方法 | 路径 | 描述 |
| ------ | ---- | ---- | ---- |
| 接口1 | GET | /api/external/xxx | 外部接口1 |
| 接口2 | POST | /api/external/xxx | 外部接口2 |
## 交互设计
### 时序图
```
[关键业务流程的时序图]
```
### 状态转换图
```
[状态转换图]
```
## 非功能性设计
### 性能要求
- 响应时间:
- 吞吐量:
- 并发数:
### 安全性要求
- 认证方式:
- 授权机制:
- 数据加密:
### 可用性要求
- 可用性指标:
- 容错机制:
- 灾备方案:
### 可扩展性要求
- 扩展方式:
- 负载均衡:
## 实现要点
### 核心算法
[核心算法描述]
### 关键代码结构
[关键代码结构描述]
### 依赖关系
[依赖关系描述]
## 部署设计
### 部署架构图
```
[系统的部署架构]
```
### 部署流程
[部署流程描述]
## 相关文档
- [需求文档](../requirements/YYYY-MM-DD-00X-需求名.md)
- [决策记录](../decisions/YYYY-MM-DD-00X-ADR-决策名.md)