## 功能概述
- 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换
- 从库配置存储在主库中,支持运行时灵活切换从库库名
- 使用现有的 @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} - 移除数据源
5.7 KiB
5.7 KiB
项目单一真源
元数据
- 项目名称: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 - 项目组件可视化
文档目录
- API 文档 - API 相关文档
- 变更日志 - 变更日志
- 决策记录 - 决策记录(ADR)
- 设计文档 - 设计稿或架构设计
- 实施方案 - 实施方案
- 业务逻辑 - 业务逻辑或算法逻辑
- AI 提示词 - AI 提示词库
- 参考代码 - 参考代码
- 需求文档 - 需求文档
- 复盘文档 - 复盘与回顾
- 会话记录 - 会议或对话记录
- 技能资料 - 技能相关资料
- 数据库脚本 - 数据库脚本
Prompt 目录
- 元提示词 - 终极提示词架构师
- 创建 Trae 项目规则 - Trae 项目规则生成
- 需求澄清提示词 - 需求澄清专家
- 单一真源文档驱动架构师 - 文档驱动架构师
- 项目单一真源初始化专家 - 项目初始化专家
- API文档提示词 - API文档生成提示词
- 变更日志提示词 - 变更日志生成提示词
- 决策记录提示词 - 决策记录生成提示词
- 设计文档提示词 - 设计文档生成提示词
模块索引
- datai-admin - 管理后台模块
- datai-common - 通用工具模块
- datai-framework - 核心框架模块
- datai-models - 模型模块集合
- datai-flowable - 工作流模块
- datai-form - 表单模块
- datai-generator - 代码生成器模块
- datai-message - 消息模块
- datai-online - 在线开发模块
- datai-quartz - 定时任务模块
- 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-scene-auth - 认证场景模块
- datai-scene-file - 文件场景模块
- datai-scene-pay - 支付场景模块
- datai-system - 系统核心模块
需求追踪
- 2026-01-21-001-动态数据源延迟加载 - 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换 - 已完成
更新日志
- 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
使用说明
- 本文档是项目的单一真源,包含项目的所有信息
- 每个模块都有对应的 index.md 作为模块的单一真源
- 所有文档都通过索引关系相互链接
- 文档命名格式:YYYY-MM-DD-00X-功能名.md
- 遵循阶段化执行流程,每个阶段生成对应的文档
维护规则
- 创建新文档时,必须更新相关索引
- 删除文档时,必须清理索引链接
- 修改文档时,必须同步更新索引
- Authentication.canvas 在 index 更新时同步更新