Files
PoJie/ruoyi-modules/ruoyi-ai/MODULE_STRUCTURE.md
T
2026-02-22 12:12:02 +08:00

1067 lines
43 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.
# AI模块结构说明
## 模块简介
`ruoyi-ai` 是 PoJie 项目的 AI 服务中心模块,提供统一的 AI 能力接入,标准化接入主流模型与平台,支持聊天、流式对话、AI创作、智能PPT、多模态理解、代码助手、RAG增强与统一监控等功能。
## 模块结构
`ruoyi-ai` 是一个独立的业务模块,采用分层架构设计:
```
org.dromara.ai
├── config/ # 模块配置类
│ ├── AiAutoConfiguration.java # 自动配置类
│ ├── AiGatewayProperties.java # 网关配置属性
│ ├── AiProviderRegistrar.java # Provider注册器
│ ├── AiConfigurationManager.java # 配置管理器
│ ├── AiApiConfig.java # API配置
│ └── *ProviderConfig.java # 各Provider配置类(OpenAI、Azure、Qwen、Zhipu等)
├── controller/ # REST API控制器
│ ├── admin/ # 管理端接口
│ │ ├── AdminAiChatRecordController.java # 聊天记录管理接口
│ │ ├── AdminAiUsageStatsController.java # 使用统计管理接口
│ │ ├── AdminAiRatingRecordController.java # 评价记录管理接口
│ │ ├── AdminAiProviderController.java # Provider管理接口
│ │ ├── AdminAiProviderConfigController.java # Provider配置管理接口
│ │ ├── AdminAiProviderConfigHistoryController.java # Provider配置历史管理接口
│ │ ├── AdminAiSensitiveWordController.java # 敏感词管理接口
│ │ ├── AdminAiPaintingRecordController.java # 绘画历史记录管理接口
│ │ ├── AdminAiPaintingTemplateController.java # 绘画参数模板管理接口
│ │ ├── AdminAiPaintingFavoriteController.java # 绘画作品收藏管理接口
│ │ ├── AdminAiUserQuotaController.java # 用户配额管理接口
│ │ └── AdminSysModelController.java # 系统模型管理接口
│ └── app/ # 用户端接口
│ ├── AiChatController.java # 聊天接口
│ ├── AiAssistantController.java # 代码助手接口
│ ├── AiPaintingController.java # 绘画接口
│ ├── AiImageController.java # DALL·E-3接口
│ ├── PptController.java # PPT生成接口
│ ├── MultimodalController.java # 多模态接口
│ ├── SimpleAiController.java # Simple AI接口
│ ├── FastGptController.java # FastGPT接口
│ ├── CozeController.java # Coze接口
│ ├── DifyController.java # DIFY接口
│ ├── McpController.java # MCP工具接口
│ ├── QueueMetricsController.java # 队列指标接口
│ ├── AppAiRatingRecordController.java # 评价记录接口(用户端)
│ ├── AppAiPaintingFavoriteController.java # 绘画作品收藏接口(用户端)
│ └── AppAiUserQuotaController.java # 用户配额接口(用户端)
├── domain/ # 领域对象
│ ├── AiChatRecord.java # 聊天记录实体
│ ├── AiUsageStats.java # 使用统计实体
│ ├── AiRatingRecord.java # 评价记录实体
│ ├── AiProviderConfig.java # Provider配置实体
│ ├── AiProviderConfigHistory.java # Provider配置历史实体
│ ├── AiSensitiveWord.java # 敏感词实体
│ ├── AiPaintingRecord.java # 绘画历史记录实体
│ ├── AiPaintingTemplate.java # 绘画参数模板实体
│ ├── AiPaintingFavorite.java # 绘画作品收藏实体
│ ├── AiUserQuota.java # 用户配额实体
│ ├── bo/ # 业务对象(BO)
│ │ ├── AiChatRecordBo.java # 聊天记录BO
│ │ ├── AiUsageStatsBo.java # 使用统计BO
│ │ ├── AiRatingRecordBo.java # 评价记录BO
│ │ ├── AiProviderConfigBo.java # Provider配置BO
│ │ ├── AiProviderConfigHistoryBo.java # Provider配置历史BO
│ │ ├── AiSensitiveWordBo.java # 敏感词BO
│ │ ├── AiPaintingRecordBo.java # 绘画历史记录BO
│ │ ├── AiPaintingTemplateBo.java # 绘画参数模板BO
│ │ ├── AiPaintingFavoriteBo.java # 绘画作品收藏BO
│ │ └── AiUserQuotaBo.java # 用户配额BO
│ ├── vo/ # 视图对象(VO)
│ │ ├── AiChatRecordVo.java # 聊天记录VO
│ │ ├── AiUsageStatsVo.java # 使用统计VO
│ │ ├── AiRatingRecordVo.java # 评价记录VO
│ │ ├── AiProviderConfigVo.java # Provider配置VO
│ │ ├── AiProviderConfigHistoryVo.java # Provider配置历史VO
│ │ ├── AiSensitiveWordVo.java # 敏感词VO
│ │ ├── AiPaintingRecordVo.java # 绘画历史记录VO
│ │ ├── AiPaintingTemplateVo.java # 绘画参数模板VO
│ │ ├── AiPaintingFavoriteVo.java # 绘画作品收藏VO
│ │ └── AiUserQuotaVo.java # 用户配额VO
│ ├── dto/ # 数据传输对象(DTO)
│ │ ├── AiChatRequest.java # 聊天请求DTO
│ │ ├── AiChatResponse.java # 聊天响应DTO
│ │ └── AiModelInfo.java # 模型信息DTO
│ └── enums/ # 枚举类
│ └── AiProviderType.java # Provider类型枚举
├── provider/ # 模型 Provider 实现
│ ├── AiProvider.java # Provider接口
│ ├── AbstractAiProvider.java # Provider抽象基类
│ ├── AiProviderManager.java # Provider管理器
│ ├── OpenAiProvider.java # OpenAI Provider
│ ├── AzureOpenAiProvider.java # Azure OpenAI Provider
│ ├── QwenProvider.java # 通义千问 Provider
│ ├── ZhipuAiProvider.java # 智谱AI Provider
│ ├── FastGptProvider.java # FastGPT Provider
│ ├── CozeProvider.java # Coze Provider
│ ├── DifyProvider.java # DIFY Provider
│ └── impl/ # Provider实现
│ └── MockAiProvider.java # Mock Provider(测试用)
├── service/ # 核心业务服务
│ ├── AiChatService.java # 聊天服务
│ ├── AiChatHistoryService.java # 聊天历史服务
│ ├── AiCodingAssistantService.java # 代码助手服务
│ ├── AiModelService.java # 模型服务
│ ├── AiPaintingService.java # 绘画服务
│ └── SimpleAiService.java # Simple AI服务
├── orchestration/ # AI 编排引擎
│ └── AiOrchestrationEngine.java # 编排引擎(智能路由、负载均衡、降级)
├── painting/ # 绘画服务与 Provider
│ ├── PaintingEngineType.java # 绘画引擎类型枚举
│ ├── PaintingTask.java # 绘画任务模型
│ ├── PaintingStatus.java # 绘画状态枚举
│ ├── PaintingProvider.java # 绘画Provider接口
│ └── provider/ # 绘画Provider实现
│ ├── DallE3Provider.java # DALL·E-3 Provider
│ ├── MidJourneyProvider.java # MidJourney Provider
│ └── StableDiffusionProvider.java # Stable Diffusion Provider
├── platform/ # 外部平台集成
│ ├── FastGptService.java # FastGPT服务
│ ├── CozeService.java # Coze服务
│ └── DifyClientService.java # DIFY客户端服务
├── mcp/ # MCP 工具链与集成
│ ├── McpToolRegistry.java # MCP工具注册表
│ ├── McpTool.java # MCP工具接口
│ ├── McpIntegrationService.java # MCP集成服务
│ └── tools/ # MCP工具实现
│ ├── ProjectScaffoldTool.java # 项目脚手架工具
│ ├── DataTransformTool.java # 数据转换工具
│ ├── ApiCallTool.java # API调用工具
│ ├── AlgorithmComputeTool.java # 算法计算工具
│ ├── FileParseTool.java # 文件解析工具
│ └── HttpFetchTool.java # HTTP获取工具
├── queue/ # 任务队列服务
│ └── TaskQueueService.java # 任务队列服务(优先级队列、任务状态管理)
├── security/ # 安全管理器
│ ├── AiSecurityManager.java # 安全管理器
│ ├── AiContentFilterService.java # 内容过滤服务
│ └── AiAccessControlService.java # 访问控制服务
├── monitor/ # 监控指标与度量
│ ├── AiMonitorService.java # 监控服务
│ ├── BaseMetrics.java # 基础指标
│ ├── SystemMetrics.java # 系统指标
│ ├── ProviderMetrics.java # Provider指标
│ ├── ModelMetrics.java # 模型指标
│ └── UserMetrics.java # 用户指标
├── websocket/ # WebSocket 处理器
│ ├── ChatWebSocketConfig.java # WebSocket配置
│ └── ChatWebSocketHandler.java # WebSocket处理器
├── error/ # 全局异常处理
│ └── AiErrorHandler.java # AI异常处理器
└── model/ # 通用模型
└── ApiResult.java # API结果模型
```
## 已完成工作
### 1. 模块结构
- ✅ 创建了完整的模块目录结构
- ✅ 创建了 `pom.xml` 配置文件
- ✅ 配置了模块依赖关系(ruoyi-common-*、ruoyi-knowledge等)
### 2. 自动配置
- ✅ 创建了 `AiAutoConfiguration` 自动配置类
- ✅ 配置了组件扫描
- ✅ 支持通过 `ruoyi.ai.enabled` 配置启用/禁用模块
### 3. Provider 管理与编排 ✅
- ✅ 统一接口:`AiProviderManager` 管理所有模型提供商,支持热切换
- ✅ 智能路由:`AiOrchestrationEngine` 支持最快响应、最佳质量、成本最优、负载均衡等策略
- ✅ 自动降级:错误率>30%或响应超时自动熔断与故障转移
- ✅ 多模型接入:统一调度 OpenAI、Azure、ChatGLM、通义千问、智谱等主流模型
- ✅ Provider配置管理:支持数据库配置和动态更新
- ✅ Provider配置可视化界面(管理端):CRUD管理、启用/禁用、导出功能
- ✅ Provider配置历史管理:自动记录配置变更历史,支持查询、导出
### 4. 聊天与流式交互 ✅
- ✅ 同步/异步聊天接口
- ✅ SSE 流式推送
- ✅ WebSocket 实时通道 (`/ws/ai/chat`)
- ✅ 聊天历史管理:自动保存聊天记录到Redis和数据库,支持历史查询、清除和会话统计
- ✅ 聊天记录持久化:Redis + 数据库双重存储
- ✅ 聊天记录管理:查询、导出、批量删除
- ✅ 批量聊天支持
### 5. AI 辅助编码 ✅
- ✅ 代码分析:提供代码审查与重构建议
- ✅ 脚手架生成:自动生成项目结构与配置
### 6. Simple AI & RAG ✅
- ✅ 知识库问答:基于知识库的精准问答
- ✅ 向量检索:支持多模型向量相似度搜索
- ✅ 知识库统计
### 7. AI 创作与多模态 ✅
- ✅ 绘画调度:统一管理 DALL·E-3、MidJourney、Stable Diffusion 任务
- ✅ 绘画历史管理:数据库存储、CRUD管理、查询、导出功能
- ✅ 绘画参数模板:数据库存储、CRUD管理、公开/私有模板、用户模板管理
- ✅ 绘画作品收藏:数据库存储、CRUD管理、收藏/取消收藏、收藏列表查询
- ✅ 智能 PPT:文本生成 PPTX,支持导出图片序列
- ✅ 多模态:文件解析(PDF/Word)、OCR识别、图像理解(部分占位)
### 8. 平台集成 ✅
- ✅ FastGPT:深度对接 FastGPT 平台
- ✅ Coze:深度对接 Coze 平台(SSE流式)
- ✅ DIFY:深度对接 DIFY 平台
### 9. MCP 生态 ✅
- ✅ 工具注册:`McpToolRegistry` 支持动态工具加载与调用
- ✅ 工具模板:提供多个内置工具(ProjectScaffold、DataTransform、ApiCall、AlgorithmCompute、FileParse、HttpFetch
### 10. 安全与监控 ✅
- ✅ 安全卫士:`AiSecurityManager` 提供内容过滤、IP黑白名单、速率限制
- ✅ 敏感词库管理:数据库存储、CRUD管理、启用/禁用、导出功能
- ✅ 全链路监控:实时监控队列深度、模型健康度、响应时间与 Token 消耗
- ✅ 使用统计:记录和统计AI使用情况
### 11. 数据库
- ✅ 创建了 `script/sql/ry_ai.sql` 文件
- ✅ 添加了 Provider配置表(`ai_provider_config`
- ✅ 添加了 Provider配置历史表(`ai_provider_config_history`
- ✅ 添加了聊天记录表(`ai_chat_record`
- ✅ 添加了使用统计表(`ai_usage_stats`
- ✅ 添加了评价记录表(`ai_rating_record`
- ✅ 添加了敏感词库表(`ai_sensitive_word`
- ✅ 添加了绘画历史记录表(`ai_painting_record`
- ✅ 添加了绘画参数模板表(`ai_painting_template`
- ✅ 添加了绘画作品收藏表(`ai_painting_favorite`
- ✅ 添加了用户配额管理表(`ai_user_quota`
### 12. 文档
- ✅ 创建了模块 README.md 文件
## 数据库表结构说明
### 1. AI Provider配置表 (ai_provider_config)
- **功能**: 存储AI模型提供商的配置信息
- **关键字段**: `provider_name`, `provider_type`, `enabled`, `priority`, `weight`, `max_concurrency`, `timeout_seconds`, `max_retries`, `api_config`, `model_config`
- **索引**: `uk_provider_name` (唯一), `idx_provider_type`, `idx_enabled`, `idx_priority`
- **状态说明**:
- `enabled`: 0=禁用, 1=启用
- **配置说明**:
- `priority`: 优先级(数字越小优先级越高)
- `weight`: 权重(用于负载均衡)
- `max_concurrency`: 最大并发数
- `timeout_seconds`: 超时时间(秒)
- `max_retries`: 最大重试次数
- `api_config`: API配置(JSON格式,包含apiKey、baseUrl等)
- `model_config`: 模型配置(JSON格式,包含defaultModel、supportedModels等)
### 2. AI Provider配置历史表 (ai_provider_config_history)
- **功能**: 记录Provider配置的变更历史
- **关键字段**: `config_id`, `provider_name`, `config_data`, `operation_type`, `operation_time`, `operation_by`
- **索引**: `idx_config_id`, `idx_provider_name`, `idx_operation_time`
- **操作类型说明**:
- CREATE: 创建配置
- UPDATE: 更新配置
- DELETE: 删除配置
### 3. AI聊天记录表 (ai_chat_record)
- **功能**: 存储AI聊天记录
- **关键字段**: `session_id`, `user_id`, `provider_name`, `model_name`, `message_type`, `content`, `tokens_used`, `cost`, `response_time`, `is_stream`
- **索引**: `idx_session_id`, `idx_user_id`, `idx_provider_name`, `idx_create_time`
- **消息类型说明**:
- USER: 用户消息
- ASSISTANT: AI助手消息
- **状态说明**:
- `is_stream`: 0=非流式, 1=流式响应
### 4. AI使用统计表 (ai_usage_stats)
- **功能**: 按用户、Provider、模型、日期统计AI使用情况
- **关键字段**: `user_id`, `provider_name`, `model_name`, `stat_date`, `request_count`, `success_count`, `error_count`, `total_tokens`, `total_cost`, `avg_response_time`
- **索引**: `uk_user_provider_date` (唯一), `idx_provider_name`, `idx_stat_date`
- **统计说明**:
- `request_count`: 请求次数
- `success_count`: 成功次数
- `error_count`: 错误次数
- `total_tokens`: 总Token数
- `total_cost`: 总成本
- `avg_response_time`: 平均响应时间(毫秒)
### 5. AI评价记录表 (ai_rating_record)
- **功能**: 记录用户对AI回复的评价
- **关键字段**: `message_id`, `user_id`, `provider_name`, `rating`, `feedback`, `dimension`, `anonymous`
- **索引**: `uk_message_user` (唯一), `idx_provider_name`, `idx_rating`, `idx_create_time`
- **评价说明**:
- `rating`: 评分(1-5
- `dimension`: 评价维度(可选)
- `anonymous`: 0=非匿名, 1=匿名
## 功能清单
### 已实现功能 ✅
#### 1. Provider 管理与编排
- ✅ Provider配置管理(数据库配置、动态更新)
- ✅ Provider注册与发现
- ✅ 智能路由策略(最快响应、最佳质量、成本最优、负载均衡)
- ✅ 自动降级与熔断
- ✅ Provider健康检查
- ✅ Provider统计与监控
#### 2. 聊天与流式交互
- ✅ 同步聊天接口
- ✅ 异步聊天接口
- ✅ SSE流式推送
- ✅ WebSocket实时通道
- ✅ 聊天历史管理(Redis存储)
- ✅ 会话统计
- ✅ 批量聊天支持
#### 3. AI 辅助编码
- ✅ 代码分析(代码审查、重构建议)
- ✅ 项目脚手架生成
#### 4. Simple AI & RAG
- ✅ 知识库问答(基于ruoyi-knowledge模块)
- ✅ 向量检索
- ✅ 知识库统计
#### 5. AI 创作与多模态
- ✅ 绘画任务管理(DALL·E-3、MidJourney、Stable Diffusion
- ✅ 绘画任务状态查询
- ✅ 绘画任务流式进度推送(SSE
- ✅ 智能PPT生成(文本生成PPTX)
- ✅ PPT导出PNG序列
- ✅ 文件解析(PDF/Word等,基于Apache Tika
- ✅ 文本分析
- ✅ OCR识别(占位接口,需配置OCR服务)
- ⏳ 图像识别(占位接口)
- ⏳ 图生文(占位接口)
#### 6. 平台集成
- ✅ FastGPT平台集成(知识搜索、工作流运行、上下文管理)
- ✅ Coze平台集成(SSE流式对话)
- ✅ DIFY平台集成(应用列表、创建/更新应用)
#### 7. MCP 生态
- ✅ MCP工具注册与管理
- ✅ 工具调用接口
- ✅ 内置工具(ProjectScaffold、DataTransform、ApiCall、AlgorithmCompute、FileParse、HttpFetch
#### 8. 安全与监控
- ✅ 内容过滤
- ✅ IP访问控制(黑白名单)
- ✅ 速率限制
- ✅ 全链路监控(队列深度、模型健康度、响应时间、Token消耗)
- ✅ 使用统计(用户、Provider、模型维度)
#### 9. AI评价功能 ✅
- ✅ 评价记录管理(用户评价AI回复)
- ✅ 评价记录查询与导出
- ✅ 评价记录统计(平均评分)
- ✅ 用户端评价接口(提交评价、查询评价)
#### 10. 系统模型管理
- ✅ 模型信息查询
- ✅ 模型可用性检查
### 待实现功能 ⏳
#### 1. 聊天功能增强
- ✅ 聊天记录持久化到数据库(Redis + 数据库双重存储)
- ✅ 聊天记录导出(Excel格式)
- ✅ 聊天记录搜索(支持多条件查询)
- ✅ 聊天记录批量删除
- ✅ 聊天记录归档(删除指定日期之前的记录)
- [ ] 多轮对话上下文优化
#### 2. Provider管理增强
- ✅ Provider配置可视化界面(管理端)
- ✅ Provider配置导入导出(Excel导出)
- ✅ Provider配置版本管理增强(配置历史记录、查询、导出)
- [ ] Provider性能分析报告
- [ ] Provider成本分析
- [ ] Provider自动故障恢复
#### 3. 监控与统计增强
- ✅ 使用统计报表导出(Excel格式)
- [ ] 使用趋势分析(图表)
- [ ] 成本分析报表
- [ ] 性能分析报表
- [ ] 异常告警(邮件、短信、Webhook等)
- [ ] 实时大屏展示
#### 4. 安全功能增强
- ✅ 敏感词库管理(可配置):数据库存储、CRUD管理、启用/禁用、导出功能
- ✅ 用户配额管理:数据库存储、CRUD管理、配额重置、使用量统计
- [ ] 内容审核规则配置
- [ ] 企业级权限控制
- [ ] 审计日志
#### 5. 多模态功能完善
- [ ] OCR识别完整实现(集成OCR服务)
- [ ] 图像识别完整实现
- [ ] 图生文完整实现
- [ ] 视频理解(占位)
- [ ] 音频处理(占位)
#### 6. 绘画功能增强
- ✅ 绘画历史管理:数据库存储、CRUD管理、查询、导出功能
- ✅ 绘画参数模板:数据库存储、CRUD管理、公开/私有模板、用户模板管理
- ✅ 绘画作品收藏:数据库存储、CRUD管理、收藏/取消收藏、收藏列表查询
- ✅ 绘画作品分享:分享码生成、取消分享、通过分享码查看作品(无需登录)
- [ ] 批量绘画任务
#### 7. PPT功能增强
- [ ] PPT主题模板管理
- [ ] PPT样式自定义
- [ ] PPT动画支持
- [ ] PPT导出PDF
- [ ] PPT在线预览
#### 8. MCP工具生态扩展
- [ ] 工具市场/插件系统
- [ ] 工具版本管理
- [ ] 工具权限控制
- [ ] 工具性能监控
- [ ] 自定义工具开发框架
#### 9. 代码助手增强
- [ ] 代码生成(根据需求生成代码)
- [ ] 代码优化建议
- [ ] 代码测试用例生成
- [ ] 代码文档生成
- [ ] 代码安全扫描集成
#### 10. RAG功能增强
- [ ] 多知识库联合检索
- [ ] 检索结果排序优化
- [ ] 检索结果来源标注
- [ ] RAG效果评估
- [ ] 知识库更新通知
#### 11. 平台集成扩展
- [ ] 更多平台集成(如:LangChain、LlamaIndex等)
- [ ] 平台配置管理界面
- [ ] 平台使用统计
#### 12. 其他功能
- [ ] 用户评价反馈系统完善
- [ ] 客服机器人集成
- [ ] 多语言支持
- [ ] API限流策略细化
- [ ] 任务队列持久化(当前仅内存)
- [ ] 分布式任务调度
## API接口详细说明
### 管理端接口
#### 1. AI聊天记录管理 (`/ai/chat/record`)
- `GET /ai/chat/record/list` - 查询AI聊天记录列表(分页、多条件搜索)
- `GET /ai/chat/record/{id}` - 获取AI聊天记录详情
- `DELETE /ai/chat/record/{ids}` - 批量删除AI聊天记录
- `POST /ai/chat/record/export` - 导出AI聊天记录到Excel
- `POST /ai/chat/record/archive` - 归档聊天记录(删除指定日期之前的记录)
#### 2. AI使用统计管理 (`/ai/usage/stats`)
- `GET /ai/usage/stats/list` - 查询AI使用统计列表(分页、多条件搜索)
- `GET /ai/usage/stats/{id}` - 获取AI使用统计详情
- `POST /ai/usage/stats/export` - 导出AI使用统计到Excel
- `GET /ai/usage/stats/summary` - 获取汇总统计
- `GET /ai/usage/stats/user/{userId}` - 获取用户统计
- `GET /ai/usage/stats/provider/{providerName}` - 获取Provider统计
- `GET /ai/usage/stats/trend` - 获取趋势数据
#### 3. Provider管理 (`/ai/provider`)
- `GET /ai/provider/list` - 列出所有Provider
- `GET /ai/provider/models` - 列出所有模型
- `GET /ai/provider/default` - 获取默认Provider
- `POST /ai/provider/setDefault` - 设置默认Provider
- `GET /ai/provider/stats/system` - 系统统计
- `GET /ai/provider/stats/providers` - Provider统计
- `POST /ai/provider/stats/reset` - 重置统计
#### 3.1. Provider配置管理 (`/ai/provider/config`)
- `GET /ai/provider/config/list` - 查询Provider配置列表(分页、多条件搜索)
- `GET /ai/provider/config/{id}` - 获取Provider配置详情
- `POST /ai/provider/config` - 新增Provider配置
- `PUT /ai/provider/config` - 修改Provider配置
- `DELETE /ai/provider/config/{ids}` - 批量删除Provider配置
- `POST /ai/provider/config/export` - 导出Provider配置到Excel
- `PUT /ai/provider/config/changeEnabled` - 启用/禁用Provider配置
- `GET /ai/provider/config/name/{providerName}` - 根据Provider名称查询配置
#### 3.2. Provider配置历史管理 (`/ai/provider/config/history`)
- `GET /ai/provider/config/history/list` - 查询Provider配置历史列表(分页、多条件搜索)
- `GET /ai/provider/config/history/{id}` - 获取Provider配置历史详情
- `GET /ai/provider/config/history/config/{configId}` - 根据配置ID查询历史记录列表
- `DELETE /ai/provider/config/history/{ids}` - 批量删除Provider配置历史
- `POST /ai/provider/config/history/export` - 导出Provider配置历史到Excel
#### 4. 系统模型管理 (`/system/model`)
- `GET /system/model/modelList` - 获取模型列表(用于前端下拉选择)
- `GET /system/model/list` - 根据分类获取模型列表
#### 5. AI评价记录管理 (`/ai/rating/record`)
- `GET /ai/rating/record/list` - 查询AI评价记录列表(分页、多条件搜索)
- `GET /ai/rating/record/{id}` - 获取AI评价记录详情
- `DELETE /ai/rating/record/{ids}` - 批量删除AI评价记录
- `POST /ai/rating/record/export` - 导出AI评价记录到Excel
- `GET /ai/rating/record/average/{providerName}` - 获取指定Provider的平均评分
#### 6. AI敏感词管理 (`/ai/sensitive/word`)
- `GET /ai/sensitive/word/list` - 查询AI敏感词列表(分页、多条件搜索)
- `GET /ai/sensitive/word/{id}` - 获取AI敏感词详情
- `POST /ai/sensitive/word` - 新增AI敏感词
- `PUT /ai/sensitive/word` - 修改AI敏感词
- `DELETE /ai/sensitive/word/{ids}` - 批量删除AI敏感词
- `POST /ai/sensitive/word/export` - 导出AI敏感词到Excel
- `PUT /ai/sensitive/word/changeEnabled` - 启用/禁用敏感词
#### 7. AI绘画历史记录管理 (`/ai/painting/record`)
- `GET /ai/painting/record/list` - 查询AI绘画历史记录列表(分页、多条件搜索)
- `GET /ai/painting/record/{id}` - 获取AI绘画历史记录详情
- `GET /ai/painting/record/task/{taskId}` - 根据任务ID获取记录
- `DELETE /ai/painting/record/{ids}` - 批量删除AI绘画历史记录
- `POST /ai/painting/record/export` - 导出AI绘画历史记录到Excel
- `POST /ai/painting/record/{id}/share` - 生成分享码
- `DELETE /ai/painting/record/{id}/share` - 取消分享
#### 8. AI绘画参数模板管理 (`/ai/painting/template`)
- `GET /ai/painting/template/list` - 查询AI绘画参数模板列表(分页、多条件搜索)
- `GET /ai/painting/template/{id}` - 获取AI绘画参数模板详情
- `POST /ai/painting/template` - 新增AI绘画参数模板
- `PUT /ai/painting/template` - 修改AI绘画参数模板
- `DELETE /ai/painting/template/{ids}` - 批量删除AI绘画参数模板
- `POST /ai/painting/template/export` - 导出AI绘画参数模板到Excel
#### 9. AI绘画作品收藏管理 (`/ai/painting/favorite`)
- `GET /ai/painting/favorite/list` - 查询AI绘画作品收藏列表(分页、多条件搜索)
- `GET /ai/painting/favorite/{id}` - 获取AI绘画作品收藏详情
- `DELETE /ai/painting/favorite/{ids}` - 批量删除AI绘画作品收藏
- `POST /ai/painting/favorite/export` - 导出AI绘画作品收藏到Excel
#### 10. AI用户配额管理 (`/ai/user/quota`)
- `GET /ai/user/quota/list` - 查询AI用户配额列表(分页、多条件搜索)
- `GET /ai/user/quota/{id}` - 获取AI用户配额详情
- `GET /ai/user/quota/user/{userId}` - 根据用户ID获取配额信息
- `POST /ai/user/quota` - 新增AI用户配额
- `PUT /ai/user/quota` - 修改AI用户配额
- `DELETE /ai/user/quota/{ids}` - 批量删除AI用户配额
- `POST /ai/user/quota/reset/{userId}` - 重置用户配额(按日/按月)
- `POST /ai/user/quota/export` - 导出AI用户配额到Excel
### 用户端接口
#### 1. 聊天接口 (`/ai/chat`)
#### 同步聊天
- `POST /ai/chat/sync` - 同步聊天(返回完整响应)
- 请求体:`AiChatRequest`(包含model、messages、sessionId等)
- 响应:`AiChatResponse`(包含content、tokensUsed、cost等)
#### 异步聊天
- `POST /ai/chat/async` - 异步聊天(返回任务ID
- 请求体:`AiChatRequest`
- 响应:`CompletableFuture<AiChatResponse>`
#### 流式聊天
- `POST /ai/chat/stream` - SSE流式聊天
- 请求体:`AiChatRequest`stream=true
- 响应:SSE流(事件类型:chunk、done、error
- `POST /ai/chat/stream-chunks` - 流式聊天(分块返回)
- 请求体:`AiChatRequest`
- 响应:分块响应列表
#### 批量聊天
- `POST /ai/chat/batch` - 批量聊天请求
- 请求体:批量`AiChatRequest`列表
- 响应:批量`AiChatResponse`列表
#### 聊天历史
- `GET /ai/chat/history/{sessionId}` - 获取聊天历史
- 路径参数:`sessionId`(会话ID
- 查询参数:`limit`(限制数量,可选)
- 响应:聊天记录列表
- `DELETE /ai/chat/history/{sessionId}` - 清除聊天历史
- 路径参数:`sessionId`(会话ID
#### 会话统计
- `GET /ai/chat/stats/{sessionId}` - 获取会话统计
- 路径参数:`sessionId`(会话ID
- 响应:会话统计数据(消息数、Token数、成本等)
#### 2. AI代码助手接口 (`/ai/assistant`)
- `POST /ai/assistant/analyze` - 代码分析
- 请求参数:`code`(代码内容)、`model`(模型名称,可选)
- 响应:代码分析结果(审查建议、重构建议等)
- `POST /ai/assistant/scaffold` - 生成项目脚手架
- 请求参数:`appType`(应用类型)、`options`(选项JSON
- 响应:项目结构(文件列表、内容等)
#### 3. Simple AI接口 (`/ai`)
- `POST /ai/ask` - 知识库问答
- 查询参数:`knowledgeId`(知识库ID)、`question`(问题)
- 响应:问答结果
- `POST /ai/search` - 向量搜索
- 查询参数:`knowledgeId`(知识库ID)、`queryText`(查询文本)、`topK`(返回数量,可选)
- 响应:搜索结果列表
- `GET /ai/stats/{knowledgeId}` - 知识库统计
- 路径参数:`knowledgeId`(知识库ID
- 响应:知识库统计数据
- `GET /ai/model/check/{modelName}` - 检查模型可用性
- 路径参数:`modelName`(模型名称)
- 响应:模型可用性状态
- `GET /ai/models` - 获取可用模型列表
- 响应:可用模型列表
- `GET /ai/health` - 健康检查
- 响应:健康状态
#### 4. 绘画接口 (`/ai/painting`)
- `POST /ai/painting/task` - 创建绘画任务
- 请求体:`{"engine": "DALL_E_3", "prompt": "描述", "params": {...}}`
- 响应:`{"taskId": "..."}`
- `GET /ai/painting/status/{taskId}` - 查询任务状态
- 路径参数:`taskId`(任务ID
- 响应:任务状态(pending、processing、completed、failed
- `GET /ai/painting/stream/{taskId}` - SSE流式获取任务进度
- 路径参数:`taskId`(任务ID
- 响应:SSE流(任务状态更新)
#### 5. AI绘画参数模板 (`/ai/painting/template`)
- `GET /ai/painting/template/list/{engineType}` - 查询可用的模板列表(公开模板 + 用户私有模板)
- `GET /ai/painting/template/{id}` - 获取模板详情
- `POST /ai/painting/template` - 新增用户私有模板
- `PUT /ai/painting/template` - 修改用户私有模板
- `DELETE /ai/painting/template/{id}` - 删除用户私有模板
#### 6. AI绘画作品收藏 (`/ai/painting/favorite`)
- `GET /ai/painting/favorite/list` - 查询当前用户的收藏列表
- `POST /ai/painting/favorite` - 收藏绘画作品
- `DELETE /ai/painting/favorite/{paintingRecordId}` - 取消收藏
- `GET /ai/painting/favorite/check/{paintingRecordId}` - 检查是否已收藏
#### 6.1. AI绘画作品分享 (`/app/ai/painting/record`)
- `POST /app/ai/painting/record/{id}/share` - 生成分享码
- `DELETE /app/ai/painting/record/{id}/share` - 取消分享
- `GET /app/ai/painting/record/share/{shareCode}` - 根据分享码查看作品(无需登录)
#### 7. DALL·E-3接口 (`/dall3`)
- `POST /dall3` - 文生图
- 请求体:`{"prompt": "描述", "size": "1024x1024"}`
- 响应:图片URL或Base64
- `POST /dall3/edit` - 图片编辑(image+mask
- 请求体:`{"prompt": "描述", "image": "base64", "mask": "base64", "size": "1024x1024"}`
- 响应:编辑后的图片URL或Base64
- `POST /dall3/variations` - 图片变体
- 请求体:`{"image": "base64", "size": "1024x1024"}`
- 响应:变体图片URL或Base64
#### 8. 智能PPT接口 (`/ppt`)
- `POST /ppt/generate` - 生成PPTX文件
- 查询参数:`content`(内容,按行分隔,空行分隔不同页)
- 响应:PPTX文件(下载)
- `POST /ppt/export/pngs` - 导出PNG序列
- 查询参数:`content`(内容)
- 响应:PNG图片Base64列表
#### 9. 多模态接口 (`/multimodal`)
- `POST /multimodal/extract` - 文件解析(PDF/Word等)
- 请求:`multipart/form-data`,字段:`file`
- 响应:解析后的文本内容
- `POST /multimodal/ocr` - OCR识别
- 请求:`multipart/form-data`,字段:`file`
- 响应:OCR识别结果(需配置OCR服务)
- `POST /multimodal/analyze/text` - 文本分析
- 请求体:`{"text": "文本内容"}`
- 响应:分析结果(title、summary、keywords等)
- `POST /multimodal/analyze/image` - 图像识别(占位)
- 请求:`multipart/form-data`,字段:`file`
- 响应:识别结果(占位接口)
- `POST /multimodal/caption` - 图生文(占位)
- 请求:`multipart/form-data`,字段:`file`
- 响应:图片描述(占位接口)
#### 10. 平台集成接口
##### FastGPT (`/ai/fastgpt`)
- `POST /ai/fastgpt/knowledge/search` - 知识搜索
- 请求体:`{"query": "查询内容"}`
- 响应:搜索结果
- `POST /ai/fastgpt/workflow/run` - 运行工作流
- 请求体:`{"workflowId": "...", "inputs": {...}}`
- 响应:工作流执行结果
- `GET /ai/fastgpt/context/{sessionId}` - 获取上下文
- 路径参数:`sessionId`(会话ID
- 响应:上下文信息
##### Coze (`/ai/coze`)
- `POST /ai/coze/stream` - SSE流式对话
- 请求体:`{"botId": "...", "message": "消息内容"}`
- 响应:SSE流
##### DIFY (`/ai/dify`)
- `GET /ai/dify/apps` - 获取应用列表
- 响应:应用列表
- `POST /ai/dify/apps` - 创建/更新应用
- 请求体:应用配置
- 响应:应用信息
#### 11. MCP工具接口 (`/ai/mcp`)
- `GET /ai/mcp/tools` - 获取工具列表
- 响应:可用工具列表
- `POST /ai/mcp/invoke/{name}` - 调用工具
- 路径参数:`name`(工具名称)
- 请求体:工具参数(JSON
- 响应:工具执行结果
#### 12. 队列指标接口 (`/ai/queue`)
- `GET /ai/queue/metrics` - 获取队列指标
- 响应:队列指标(队列深度、处理速率等)
#### 13. AI评价接口 (`/ai/rating`)
- `POST /ai/rating/submit` - 提交评价(用户对AI回复进行评价)
- 请求体:`AiRatingRecordBo`(包含messageId、rating、feedback等)
- `GET /ai/rating/{messageId}` - 查询评价记录(根据消息ID查询当前用户的评价记录)
#### 13. AI用户配额 (`/ai/user/quota`)
- `GET /ai/user/quota` - 查询当前用户的配额信息
## WebSocket实时通道
### 聊天WebSocket
- **端点**: `ws://localhost:8080/ws/ai/chat`
- **协议**: JSON格式,支持实时双向对话
- **消息格式**: `AiChatRequest`JSON
- **响应格式**: `AiChatResponse`JSON
## 模块依赖关系
```
ruoyi-ai (AI模块)
├── 依赖: ruoyi-common-core (通用核心工具)
├── 依赖: ruoyi-common-web (Web通用组件)
├── 依赖: ruoyi-common-redis (Redis缓存)
├── 依赖: ruoyi-common-security (安全组件)
├── 依赖: ruoyi-common-log (日志组件)
├── 依赖: ruoyi-common-mybatis (MyBatis组件)
├── 依赖: ruoyi-common-doc (文档组件)
├── 依赖: ruoyi-knowledge (知识库模块,RAG增强)
└── 外部依赖:
├── okhttp (HTTP客户端)
├── okhttp-sse (SSE支持)
├── jackson (JSON解析)
├── spring-boot-starter-websocket (WebSocket支持)
├── poi-ooxml (PPT生成)
└── tika-core (文件解析)
```
## 技术栈与开发规范
### 技术栈
- **框架**: Spring Boot 3.x
- **ORM**: MyBatis-Plus(部分功能)
- **数据库**: MySQL 8.0+
- **缓存**: Redis
- **认证**: Sa-Token(通过ruoyi-common-security
- **API文档**: Swagger/OpenAPI 3.0
- **构建工具**: Maven
- **HTTP客户端**: OkHttp
- **JSON解析**: Jackson
- **WebSocket**: Spring WebSocket
### 开发规范
#### 包结构规范
- `config` - 配置类(自动配置类、属性配置类)
- `controller` - 控制器层(REST API
- `controller/admin` - 管理端接口(需要权限控制)
- `controller/app` - 用户端接口
- `domain` - 数据传输对象(包含 `dto``enums` 子包)
- `provider` - Provider实现(模型提供商实现)
- `service` - 服务接口和实现
- `orchestration` - 编排引擎
- `painting` - 绘画相关(任务模型、Provider等)
- `platform` - 外部平台集成
- `mcp` - MCP工具链
- `queue` - 任务队列
- `security` - 安全管理
- `monitor` - 监控指标
- `websocket` - WebSocket处理器
- `error` - 异常处理
#### 代码规范
- 统一使用 Lombok 简化代码
- 统一异常处理,使用 `ServiceException` 抛出业务异常
- 统一返回格式,使用 `R<T>` 封装返回结果
- 统一日志记录,使用 `@Log` 注解记录操作日志
- 统一权限控制,管理端接口使用 `@SaCheckPermission` 注解
- Provider实现需继承 `AbstractAiProvider` 或实现 `AiProvider` 接口
- 配置类使用 `@ConfigurationProperties` 绑定配置属性
#### 数据库设计规范
- 表名使用 `ai_` 前缀
- 字段命名使用下划线命名法(snake_case)
- 必须包含 `create_by`, `create_time`, `update_by`, `update_time` 字段
- 删除标记使用逻辑删除(`deleted` 字段,如需要)
- 状态字段统一使用 `status``enabled`0表示禁用/异常,1表示启用/正常
- JSON字段使用 `json` 类型存储配置信息
#### API设计规范
- RESTful 风格设计
- 接口路径:
- 管理端接口:`/ai/{module}/{resource}``/system/{resource}`
- 用户端接口:`/ai/{module}/{resource}`
- 使用 HTTP 标准方法:GET(查询)、POST(新增/操作)、PUT(修改)、DELETE(删除)
- 统一使用 JSON 格式进行数据交互
- 使用 Swagger 注解完善接口文档
- 管理端接口使用 `@SaCheckPermission` 进行权限控制
- 流式接口使用 SSEServer-Sent Events)或 WebSocket
## 模块集成说明
### 知识库模块集成 (ruoyi-knowledge)
- **集成方式**: Maven依赖
- **核心功能**:
- RAG增强(知识库问答)
- 向量检索
- 知识库管理
- **配置要求**: 在 `application.yml` 中配置知识库相关配置
### Redis集成
- **用途**:
- 聊天历史存储
- 任务状态缓存
- 会话管理
- 缓存热点数据
- **配置要求**: 在 `application.yml` 中配置Redis连接信息
### 外部服务集成
- **OpenAI**: 通过API Key访问
- **Azure OpenAI**: 通过Endpoint和API Key访问
- **通义千问**: 通过API Key访问
- **智谱AI**: 通过API Key访问
- **FastGPT/Coze/DIFY**: 通过平台API访问
- **OCR服务**: 需配置OCR服务地址(可选)
## 开发指南
### 新增Provider开发步骤
1. **创建Provider配置类**
-`config` 包下创建配置类(如 `XxxProviderConfig.java`
- 使用 `@ConfigurationProperties` 绑定配置
2. **实现Provider接口**
- 实现 `AiProvider` 接口或继承 `AbstractAiProvider`
- 实现核心方法:`chat()``chatStream()`
3. **注册Provider**
-`AiProviderRegistrar` 中注册Provider
-`AiProviderType` 枚举中添加新的Provider类型
4. **配置数据库**
-`ai_provider_config` 表中添加Provider配置记录
- 配置API密钥等信息
5. **测试验证**
- 编写单元测试
- 使用Swagger UI测试接口
- 验证Provider功能
### 新增MCP工具开发步骤
1. **实现工具接口**
- 实现 `McpTool` 接口
- 实现 `execute()` 方法
2. **注册工具**
-`McpToolRegistry` 中注册工具(可通过Spring Bean自动注册)
- 工具会自动出现在工具列表中
3. **测试验证**
- 使用 `/ai/mcp/tools` 接口查看工具列表
- 使用 `/ai/mcp/invoke/{name}` 接口测试工具调用
### 新增功能开发步骤
1. **数据库设计**(如需要)
-`script/sql/ry_ai.sql` 中设计表结构
- 确保字段命名规范,包含必要的索引
2. **创建DTO/实体类**(如需要)
-`domain/dto` 包下创建DTO类
- 创建对应的请求/响应对象
3. **创建Service**
-`service` 包下创建Service接口
-`service/impl` 包下创建Service实现类(如需要)
4. **创建Controller**
- 管理端接口:在 `controller/admin` 包下创建Controller
- 用户端接口:在 `controller/app` 包下创建Controller
- 添加Swagger注解完善接口文档
- 管理端接口添加权限控制注解(`@SaCheckPermission`
5. **测试验证**
- 编写单元测试(可选)
- 使用Swagger UI测试接口
- 验证业务逻辑正确性
## 后续功能完善计划
### 短期计划(1-2个月)
1. **聊天功能增强** ✅(大部分已完成)
- ✅ 聊天记录持久化到数据库
- ✅ 聊天记录导出功能(Excel
- ✅ 聊天记录搜索功能
- ✅ 聊天记录批量删除功能
2. **监控与统计增强**
- 使用统计报表导出
- 使用趋势分析图表
- 异常告警功能
3. **多模态功能完善**
- OCR识别完整实现
- 图像识别完整实现
- 图生文完整实现
4. **安全功能增强**
- 敏感词库管理
- 用户配额管理
- 审计日志
### 中期计划(3-6个月)
1. **Provider管理增强**
- Provider配置可视化界面
- Provider性能分析报告
- Provider成本分析
2. **绘画功能增强**
- 绘画历史管理
- 绘画作品收藏
- 批量绘画任务
3. **PPT功能增强**
- PPT主题模板管理
- PPT样式自定义
- PPT导出PDF
4. **代码助手增强**
- 代码生成功能
- 代码优化建议
- 代码测试用例生成
5. **RAG功能增强**
- 多知识库联合检索
- 检索结果排序优化
- RAG效果评估
### 长期计划(6个月以上)
1. **MCP工具生态扩展**
- 工具市场/插件系统
- 工具版本管理
- 自定义工具开发框架
2. **平台集成扩展**
- 更多平台集成
- 平台配置管理界面
3. **系统优化**
- 分布式任务调度
- 任务队列持久化
- 性能优化与扩展
4. **企业级功能**
- 多租户支持
- 企业级权限控制
- 数据隔离
## 注意事项
1. **密钥安全**:生产环境务必通过环境变量注入 API Key,不要将密钥写入配置文件或代码中
2. **流式代理**Nginx/Gateway 需配置 `proxy_buffering off` 以支持 SSE
3. **依赖服务**:Redis 必须可用,用于存储任务状态与缓存
4. **性能优化**:建议对热点数据使用Redis缓存
5. **错误处理**:模块提供自动降级和熔断机制,但建议监控错误率
6. **并发控制**:Provider支持最大并发数配置,合理设置以避免资源耗尽
7. **成本控制**:建议设置使用配额和成本预警,避免意外高额费用
8. **内容安全**:启用内容过滤和安全检查,防止不当内容生成
9. **数据隐私**:注意用户数据隐私保护,敏感信息加密存储
10. **API限流**:合理配置API限流策略,防止API滥用
11. **监控告警**:建议配置监控告警,及时发现和解决问题
12. **版本兼容**:升级Provider SDK时注意API兼容性
13. **文档更新**:新增功能时及时更新API文档和README
14. **测试覆盖**:关键功能建议编写单元测试和集成测试
15. **日志规范**:关键操作记录日志,便于问题排查