datai/docs/index.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

113 lines
5.7 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.

# 项目单一真源
## 元数据
- 项目名称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 更新时同步更新