## 功能概述
- 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换
- 从库配置存储在主库中,支持运行时灵活切换从库库名
- 使用现有的 @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} - 移除数据源
113 lines
5.7 KiB
Markdown
113 lines
5.7 KiB
Markdown
# 项目单一真源
|
||
|
||
## 元数据
|
||
- 项目名称:datai
|
||
- 创建时间:2026-01-21
|
||
- 版本:1.0.0
|
||
- 状态:初始化
|
||
|
||
## 项目概述
|
||
datai 是一个基于 Spring Boot 的项目,采用文档驱动开发(Documentation-Driven Development)模式,通过"单一真源"(Single Source of Truth)原则管理项目的所有信息。
|
||
|
||
## 技术栈
|
||
- 后端框架:Spring Boot
|
||
- Java 版本:Java 8+
|
||
- 数据库:MySQL (Druid连接池)
|
||
- ORM框架:MyBatis
|
||
- 缓存:Redis/Ehcache
|
||
- 工作流:Flowable
|
||
- 认证授权:OAuth2/JustAuth
|
||
- 其他技术:Netty、WebSocket、RabbitMQ等
|
||
|
||
## 目录索引
|
||
|
||
### 核心文档
|
||
- [Authentication.canvas](./Authentication.canvas) - 项目组件可视化
|
||
|
||
### 文档目录
|
||
- [API 文档](./api-docs/README.md) - API 相关文档
|
||
- [变更日志](./changelog/README.md) - 变更日志
|
||
- [决策记录](./decisions/README.md) - 决策记录(ADR)
|
||
- [设计文档](./design/README.md) - 设计稿或架构设计
|
||
- [实施方案](./implementation/README.md) - 实施方案
|
||
- [业务逻辑](./method-logic/README.md) - 业务逻辑或算法逻辑
|
||
- [AI 提示词](./prompts/README.md) - AI 提示词库
|
||
- [参考代码](./reference-code/README.md) - 参考代码
|
||
- [需求文档](./requirements/README.md) - 需求文档
|
||
- [复盘文档](./retros/README.md) - 复盘与回顾
|
||
- [会话记录](./sessions/README.md) - 会议或对话记录
|
||
- [技能资料](./skill/README.md) - 技能相关资料
|
||
- [数据库脚本](./sql/README.md) - 数据库脚本
|
||
|
||
### Prompt 目录
|
||
- [元提示词](./Prompt/0001-元提示词.md) - 终极提示词架构师
|
||
- [创建 Trae 项目规则](./Prompt/0002-创建-trae-项目规则.md) - Trae 项目规则生成
|
||
- [需求澄清提示词](./Prompt/0003-需求澄清提示词.md) - 需求澄清专家
|
||
- [单一真源文档驱动架构师](./Prompt/0004-单一真源文档驱动架构师.md) - 文档驱动架构师
|
||
- [项目单一真源初始化专家](./Prompt/0005-项目单一真源初始化专家.md) - 项目初始化专家
|
||
- [API文档提示词](./Prompt/0006-api-docs-提示词.md) - API文档生成提示词
|
||
- [变更日志提示词](./Prompt/0007-changelog-提示词.md) - 变更日志生成提示词
|
||
- [决策记录提示词](./Prompt/0008-decisions-提示词.md) - 决策记录生成提示词
|
||
- [设计文档提示词](./Prompt/0009-design-提示词.md) - 设计文档生成提示词
|
||
|
||
## 模块索引
|
||
- [datai-admin](./../datai-admin/) - 管理后台模块
|
||
- [datai-common](./../datai-common/) - 通用工具模块
|
||
- [datai-framework](./../datai-framework/) - 核心框架模块
|
||
- [datai-models](./../datai-models/) - 模型模块集合
|
||
- datai-flowable - 工作流模块
|
||
- datai-form - 表单模块
|
||
- datai-generator - 代码生成器模块
|
||
- datai-message - 消息模块
|
||
- datai-online - 在线开发模块
|
||
- datai-quartz - 定时任务模块
|
||
- [datai-plugins](./../datai-plugins/) - 插件模块集合
|
||
- datai-atomikos - Atomikos事务管理
|
||
- datai-cache-ehcache - Ehcache缓存实现
|
||
- datai-cache-redis - Redis缓存实现
|
||
- datai-mybatis-interceptor - MyBatis拦截器
|
||
- datai-mybatis-jpa - MyBatis JPA支持
|
||
- datai-mybatis-plus - MyBatis Plus支持
|
||
- datai-netty - Netty通信框架
|
||
- datai-rabbitmq - RabbitMQ消息队列
|
||
- datai-websocket - WebSocket支持
|
||
- [datai-scenes](./../datai-scenes/) - 场景模块集合
|
||
- datai-scene-auth - 认证场景模块
|
||
- datai-scene-file - 文件场景模块
|
||
- datai-scene-pay - 支付场景模块
|
||
- [datai-system](./../datai-system/) - 系统核心模块
|
||
|
||
## 需求追踪
|
||
- [2026-01-21-001-动态数据源延迟加载](./requirements/2026-01-21-001-动态数据源延迟加载.md) - 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换 - 已完成
|
||
- [设计文档](./design/2026-01-21-001-动态数据源延迟加载设计.md) - 动态数据源延迟加载技术方案设计
|
||
- [架构决策](./decisions/2026-01-21-001-ADR-动态数据源延迟加载.md) - ADR-001: 动态数据源延迟加载架构决策
|
||
- [数据库脚本](./sql/2026-01-21-001-sys_datasource_config.sql) - 数据源配置表 SQL 文档
|
||
- [代码生成提示词](./prompts/2026-01-21-001-动态数据源延迟加载代码生成提示词.md) - 动态数据源延迟加载代码生成专用提示词
|
||
- [会话记录](./sessions/2026-01-21-001-session.md) - 动态数据源延迟加载开发会话记录
|
||
- [变更日志](./changelog/2026-01-21-001-changelog.md) - 动态数据源延迟加载变更记录
|
||
- [复盘文档](./retros/2026-01-21-001-retro.md) - 动态数据源延迟加载复盘文档
|
||
- [API 文档](./api-docs/2026-01-21-001-api.md) - 动态数据源延迟加载 API 文档
|
||
|
||
## 更新日志
|
||
- 2026-01-21: 初始化项目单一真源结构
|
||
- 2026-01-21: 新增需求 - 动态数据源延迟加载
|
||
- 2026-01-21: 新增设计文档 - 动态数据源延迟加载技术方案
|
||
- 2026-01-21: 新增架构决策 - ADR-001: 动态数据源延迟加载
|
||
- 2026-01-21: 新增数据库脚本 - sys_datasource_config 表
|
||
- 2026-01-21: 新增代码生成提示词 - 动态数据源延迟加载
|
||
- 2026-01-21: 新增变更日志 - 动态数据源延迟加载变更记录
|
||
- 2026-01-21: 新增复盘文档 - 动态数据源延迟加载复盘
|
||
- 2026-01-21: 新增 API 文档 - 动态数据源延迟加载 API
|
||
|
||
## 使用说明
|
||
1. 本文档是项目的单一真源,包含项目的所有信息
|
||
2. 每个模块都有对应的 index.md 作为模块的单一真源
|
||
3. 所有文档都通过索引关系相互链接
|
||
4. 文档命名格式:YYYY-MM-DD-00X-功能名.md
|
||
5. 遵循阶段化执行流程,每个阶段生成对应的文档
|
||
|
||
## 维护规则
|
||
- 创建新文档时,必须更新相关索引
|
||
- 删除文档时,必须清理索引链接
|
||
- 修改文档时,必须同步更新索引
|
||
- Authentication.canvas 在 index 更新时同步更新 |