--- description: globs: alwaysApply: false --- # AI写作软件项目全局配置 project_config: name: "ai-novel-assistant" description: "AI驱动的小说创作管理系统" # 后端配置 backend: framework: "spring-boot" version: "3.2.0" java_version: "23" base_package: "com.ainovel" # 前端配置 frontend: framework: "flutter" web_first: true # 数据结构 rule:数据结构,noval和act是一对多关系 act和chapter是一对多关系,chapter和sense是一对多关系,sense和摘要是一对一关系 # AINovalWriter 项目架构说明 ## 项目概述 AINovalWriter 是一个AI辅助小说创作平台,包含前端应用(Flutter)和后端服务(Spring Boot)两个主要部分。 ## 目录结构 ``` AINovalWriter/ ├── DESIGN_DOCUMENT.md # 项目顶层设计文档 ├── OPTIMIZATION_SUMMARY.md # 优化总结文档 ├── temp.java # 临时 Java 文件 (用途待定) ├── 提示词模板生成需求.md # AI 提示词模板生成功能的需求文档 ├── 版本控制功能说明.md # 编辑器版本控制功能的设计或说明文档 ├── 项目架构说明.md # 项目整体架构的说明文档 │ ├── 需求文档/ # 存放项目需求相关文档 │ ├── prd.md # 产品需求文档 (Product Requirement Document) │ ├── requirements_validation.md # 需求验证文档 │ ├── user_flow_and_wireframes.md # 用户流程和线框图文档 │ ├── 前端后台任务系统需求文档.md # 前端后台任务系统的需求文档 │ ├── 前端概要设计文档.md # 前端整体概要设计文档 │ ├── 前端详细设计文档.(小说列表模块,编辑器模块).md # 前端小说列表和编辑器模块的详细设计 │ ├── 前端详细设计文档(AI聊天模块).md # 前端 AI 聊天模块的详细设计 │ ├── 前端详细设计文档(Codex知识库模块).md # 前端 Codex 知识库模块的详细设计 │ ├── 前端详细设计文档(小说计划预览模块).md # 前端小说计划(Plan)预览模块的详细设计 │ ├── 前端详细设计文档(文件导出模块详细设计).md # 前端文件导出模块的详细设计 │ ├── 后台任务系统需求文档.md # 后端后台任务系统的需求文档 │ │ │ └── AI生成场景摘要和场景内容/ # AI 生成功能的特定需求文档 │ ├── 前端 AI 生成与提示词管理需求文档.md # 前端 AI 生成与提示词管理的需求 │ ├── 后端 AI 生成与提示词管理 - 详细设计文档.md # 后端 AI 生成与提示词管理的详细设计 │ └── 后端 AI 生成与提示词管理需求文档.md # 后端 AI 生成与提示词管理的需求 │ ├── 测试计划与文档/ # 存放测试相关计划和文档 │ ├── 后端接口文档.md # 后端 API 接口文档 │ ├── 改进报告.md # 项目改进报告 │ ├── 第一次测试计划与功能点.md # 项目第一次迭代的测试计划和功能点 │ └── 第二次迭代第一次代码评审.md # 第二次迭代的代码评审记录 │ ├── 后端开发文档/ # 存放后端开发过程中的文档 │ ├── AI小说助手系统后端概要设计文档.md # 后端概要设计文档 │ ├── AI小说助手系统敏捷开发计划 - 技术验证阶段(调整版).md # 技术验证阶段的敏捷开发计划 │ ├── AI小说助手系统敏捷开发计划 - 边验证边开发模式.md # 边验证边开发的敏捷计划 │ ├── spint1-2.md # Sprint 1-2 的相关文档或笔记 │ ├── 技术评估.md # 项目涉及的技术评估文档 │ └── 迭代日记.md # 开发迭代过程中的日记或记录 │ ├── 原型图/ # 存放界面原型图及相关说明 │ ├── 实现动态获取模型列表和配置验证功能/ # 动态获取模型列表功能的文档 │ │ └── 实现动态获取模型列表和配置验证功能.md # 该功能的 Markdown 说明文档 │ │ │ ├── 剧情推演html原型图和需求文档/ # 剧情推演(Next Outline)功能的原型和需求 │ │ ├── next_outline_prototype.html # 剧情推演功能的 HTML 原型 │ │ ├── 前端需求.md # 剧情推演功能的前端需求 │ │ └── 后端需求.md # 剧情推演功能的后端需求 │ │ │ └── plan文档和原型图/ # 小说计划(Plan)视图的原型和文档 │ ├── plan.html # Plan 视图的 HTML 原型 │ └── 前端 Plan 视图原型描述.md # Plan 视图原型的 Markdown 描述 │ ├── 前端产品敏捷迭代计划/ # 前端产品的迭代计划 │ └── 前端产品迭代计划.md # 前端产品迭代计划文档 │ ├── target/ # 构建输出目录 (通常由构建工具生成) │ └── performance-reports/ # 性能测试报告目录 │ ├── performance_test_platform_50_users_20250313_101351.md # 平台线程模型的 50 用户性能测试报告 │ └── performance_test_virtual_50_users_20250313_101432.md # 虚拟线程模型的 50 用户性能测试报告 │ ├── postman/ # Postman API 测试集合 │ ├── AINovalWriter_Test_API.json # AINovalWriter 项目的 Postman 测试 API 集合 │ ├── AINoval_API_Collection.json # AINoval 项目的 Postman API 集合 │ └── README.md # Postman 集合的说明文档 │ ├── AINovalServer/ # 后端 Spring Boot 项目目录 │ ├── AINoval_API_Collection.json # (重复) AINoval API Postman 集合 │ ├── AINoval_API_Tests.postman_collection.json # AINoval API 测试 Postman 集合 │ ├── AINoval_Performance_Tests.postman_collection.json # AINoval 性能测试 Postman 集合 │ ├── hs_err_pid53088.log # Java 虚拟机错误日志 │ ├── hs_err_pid73408.log # Java 虚拟机错误日志 │ ├── PERFORMANCE_TESTING.md # 性能测试相关说明文档 │ ├── performance_test_script.js # (可能用于 k6 等工具) 性能测试脚本 │ ├── pom.xml # Maven 项目对象模型文件,定义项目依赖和构建配置 │ ├── README.md # AINovalServer 项目的说明文档 │ ├── Sprint1开发总结.md # Sprint 1 开发总结 │ ├── start-performance-test.sh # 启动性能测试的 Shell 脚本 │ │ │ ├── 设计文档/ # 后端特定模块的设计文档 │ │ ├── 后台任务系统后端任务分解.md # 后台任务系统后端的任务分解文档 │ │ ├── 小说导入功能 - 高性能实施方案.md # 小说导入功能的高性能方案设计 │ │ └── 小说导入功能设计方案 (更新版).md # 小说导入功能的设计方案 (更新版) │ │ │ ├── target/ # Maven 构建输出目录 │ │ ├── test-classes/ # 编译后的测试类目录 │ │ │ └── performance-test-report-template.md # 性能测试报告模板 (测试资源) │ │ ├── classes/ # 编译后的主类目录 │ │ │ ├── application-dev.yml # 开发环境配置文件 │ │ │ ├── application-performance-test.yml # 性能测试环境配置文件 │ │ │ ├── application-test.yml # 测试环境配置文件 │ │ │ ├── application.yml # 主应用程序配置文件 │ │ │ ├── static/ # 静态资源目录 │ │ │ │ └── gemini-test.html # Gemini 测试用的 HTML 文件 │ │ │ └── prompts/ # AI 提示词模板目录 │ │ │ └── next_outline_prompt.txt # 剧情推演的提示词模板 │ │ │ ├── src/ # 源代码目录 │ │ ├── test/ # 测试代码目录 │ │ │ ├── resources/ # 测试资源目录 │ │ │ │ └── performance-test-report-template.md # (重复) 性能测试报告模板 │ │ │ └── java/com/ainovel/server/ # 测试 Java 代码根目录 │ │ │ ├── service/ # 服务层测试 │ │ │ │ ├── NextOutlineServiceTest.java # NextOutlineService 的测试类 │ │ │ │ └── SceneServiceVersionTest.java # SceneService 版本功能的测试类 │ │ │ └── performance/ # 性能测试相关代码 │ │ │ ├── PerformanceTestRunner.java # 性能测试运行器 │ │ │ ├── VirtualThreadPerformanceTest.java # 虚拟线程性能测试类 │ │ │ ├── util/ # 性能测试工具类 │ │ │ │ └── PerformanceTestUtil.java # 性能测试工具类 │ │ │ └── simulation/ # 性能测试模拟场景 │ │ │ ├── AIServiceSimulation.java # AI 服务调用的模拟 │ │ │ ├── NovelServiceSimulation.java # 小说服务的模拟 │ │ │ └── VirtualThreadVsTraditionalSimulation.java # 虚拟线程与传统线程对比的模拟 │ │ │ │ │ └── main/ # 主代码目录 │ │ ├── resources/ # 主资源目录 │ │ │ ├── application-dev.yml # (重复) 开发环境配置文件 │ │ │ ├── application-performance-test.yml # (重复) 性能测试环境配置文件 │ │ │ ├── application-test.yml # (重复) 测试环境配置文件 │ │ │ ├── application.yml # (重复) 主应用程序配置文件 │ │ │ ├── static/ # (重复) 静态资源目录 │ │ │ │ └── gemini-test.html # (重复) Gemini 测试用的 HTML 文件 │ │ │ └── prompts/ # (重复) AI 提示词模板目录 │ │ │ └── next_outline_prompt.txt # (重复) 剧情推演的提示词模板 │ │ │ │ │ └── java/com/ainovel/server/ # 主 Java 代码根目录 │ │ ├── AiNovelServerApplication.java # Spring Boot 应用主入口类 │ │ │ │ │ ├── web/ # Web 层,处理 HTTP 请求 │ │ │ ├── GeminiTestController.java # Gemini 测试相关的控制器 (可能已废弃或测试用) │ │ │ ├── dto/ # Data Transfer Objects (数据传输对象) │ │ │ │ ├── AIModelConfigDto.java # AI 模型配置 DTO │ │ │ │ ├── ApiKeyValidationRequest.java # API Key 验证请求 DTO │ │ │ │ ├── ApiKeyValidationResponse.java # API Key 验证响应 DTO │ │ │ │ ├── AuthorIdDto.java # 作者 ID DTO │ │ │ │ ├── AuthRequest.java # 认证请求 DTO │ │ │ │ ├── AuthResponse.java # 认证响应 DTO │ │ │ │ ├── ChangePasswordRequest.java # 修改密码请求 DTO │ │ │ │ ├── ChapterIdDto.java # 章节 ID DTO │ │ │ │ ├── ChapterSceneDto.java # 章节场景 DTO │ │ │ │ ├── ChapterScenesDto.java # 章节场景列表 DTO │ │ │ │ ├── ConfigIndexDto.java # 配置索引 DTO │ │ │ │ ├── CreatePromptTemplateRequest.java # 创建提示词模板请求 DTO │ │ │ │ ├── CreateUserAIModelConfigRequest.java # 创建用户 AI 模型配置请求 DTO │ │ │ │ ├── ErrorResponse.java # 错误响应 DTO │ │ │ │ ├── GenerateNextOutlinesDTO.java # 生成后续大纲请求 DTO │ │ │ │ ├── GenerateSceneFromSummaryRequest.java # 从摘要生成场景请求 DTO │ │ │ │ ├── GenerateSceneFromSummaryResponse.java # 从摘要生成场景响应 DTO │ │ │ │ ├── IdDto.java # 通用 ID DTO │ │ │ │ ├── ImportStatus.java # 导入状态 DTO │ │ │ │ ├── JobIdResponse.java # 任务 ID 响应 DTO │ │ │ │ ├── ListUserConfigsRequest.java # 列出用户配置请求 DTO │ │ │ │ ├── LoadMoreScenesRequestDto.java # 加载更多场景请求 DTO │ │ │ │ ├── NextOutlineDTO.java # 后续大纲 DTO │ │ │ │ ├── NovelChapterDto.java # 小说章节 DTO │ │ │ │ ├── NovelChapterSceneDto.java # 小说章节场景 DTO │ │ │ │ ├── NovelIdDto.java # 小说 ID DTO │ │ │ │ ├── NovelIdTypeDto.java # 小说 ID 和类型 DTO │ │ │ │ ├── NovelUpdateDto.java # 小说更新 DTO │ │ │ │ ├── NovelWithScenesDto.java # 包含场景的小说 DTO │ │ │ │ ├── NovelWithScenesUpdateDto.java # 包含场景的小说更新 DTO │ │ │ │ ├── NovelWithSummariesDto.java # 包含摘要的小说 DTO │ │ │ │ ├── OptimizationResultDto.java # 优化结果 DTO │ │ │ │ ├── OptimizePromptRequest.java # 优化提示词请求 DTO │ │ │ │ ├── OutlineGenerationChunk.java # 大纲生成块 DTO (用于流式传输) │ │ │ │ ├── PaginatedScenesRequestDto.java # 分页场景请求 DTO │ │ │ │ ├── PromptTemplateDto.java # 提示词模板 DTO │ │ │ │ ├── ProviderModelsRequest.java # Provider 模型列表请求 DTO │ │ │ │ ├── ProxyConfigRequest.java # 代理配置请求 DTO │ │ │ │ ├── RagQueryDto.java # RAG 查询 DTO │ │ │ │ ├── RagQueryResultDto.java # RAG 查询结果 DTO │ │ │ │ ├── RefreshTokenRequest.java # 刷新令牌请求 DTO │ │ │ │ ├── RevisionRequest.java # 版本请求 DTO │ │ │ │ ├── SceneContentUpdateDto.java # 场景内容更新 DTO │ │ │ │ ├── SceneDeleteDto.java # 场景删除 DTO │ │ │ │ ├── SceneRestoreDto.java # 场景恢复 DTO │ │ │ │ ├── SceneSearchDto.java # 场景搜索 DTO │ │ │ │ ├── SceneSummaryDto.java # 场景摘要 DTO │ │ │ │ ├── SceneUpdateDto.java # 场景更新 DTO │ │ │ │ ├── SceneVersionCompareDto.java # 场景版本比较 DTO │ │ │ │ ├── SceneVersionDiff.java # 场景版本差异 DTO │ │ │ │ ├── SessionCreateDto.java # 会话创建 DTO │ │ │ │ ├── SessionMessageDto.java # 会话消息 DTO │ │ │ │ ├── SessionUpdateDto.java # 会话更新 DTO │ │ │ │ ├── SuggestionRequest.java # 建议请求 DTO │ │ │ │ ├── SummarizeSceneRequest.java # 摘要场景请求 DTO │ │ │ │ ├── SummarizeSceneResponse.java # 摘要场景响应 DTO │ │ │ │ ├── UpdatePromptRequest.java # 更新提示词请求 DTO │ │ │ │ ├── UpdatePromptTemplateRequest.java # 更新提示词模板请求 DTO │ │ │ │ ├── UpdateUserAIModelConfigRequest.java # 更新用户 AI 模型配置请求 DTO │ │ │ │ ├── UserAIModelConfigResponse.java # 用户 AI 模型配置响应 DTO │ │ │ │ ├── UserIdConfigIndexDto.java # 用户 ID 和配置索引 DTO │ │ │ │ ├── UserIdDto.java # 用户 ID DTO │ │ │ │ ├── UserPromptTemplateDto.java # 用户提示词模板 DTO │ │ │ │ ├── UserRegistrationRequest.java # 用户注册请求 DTO │ │ │ │ └── UserUpdateDto.java # 用户更新 DTO │ │ │ │ │ │ │ ├── controller/ # REST API 控制器 │ │ │ │ ├── AIChatController.java # AI 聊天功能控制器 │ │ │ │ ├── AIGenerationController.java # AI 生成功能控制器 │ │ │ │ ├── AuthController.java # 用户认证控制器 │ │ │ │ ├── ModelInfoController.java # AI 模型信息控制器 │ │ │ │ ├── MongoTestController.java # MongoDB 测试控制器 (可能已废弃或测试用) │ │ │ │ ├── NextOutlineController.java # 剧情推演控制器 │ │ │ │ ├── NovelAIController.java # 小说相关的 AI 功能控制器 │ │ │ │ ├── NovelController.java # 小说管理控制器 │ │ │ │ ├── PromptTemplateController.java # 提示词模板控制器 │ │ │ │ ├── RagController.java # RAG 功能控制器 │ │ │ │ ├── SceneController.java # 场景管理控制器 │ │ │ │ ├── SecurityTestController.java # 安全测试控制器 (可能已废弃或测试用) │ │ │ │ ├── UserAIModelConfigController.java # 用户 AI 模型配置控制器 │ │ │ │ ├── UserController.java # 用户管理控制器 │ │ │ │ └── UserPromptController.java # 用户提示词控制器 │ │ │ │ │ │ │ └── base/ # Web 层基础类 │ │ │ └── ReactiveBaseController.java # 响应式控制器基类 (可能用于 WebSocket 或 SSE) │ │ │ │ │ ├── service/ # 服务层,包含业务逻辑 │ │ │ ├── AIChatService.java # AI 聊天服务接口 │ │ │ ├── AIProviderRegistryService.java # AI Provider 注册服务接口 │ │ │ ├── AIService.java # 通用 AI 服务接口 │ │ │ ├── EmbeddingService.java # 文本嵌入服务接口 │ │ │ ├── ImportService.java # 文件导入服务接口 │ │ │ ├── IndexingService.java # 索引服务接口 (用于 RAG) │ │ │ ├── JwtService.java # JWT (JSON Web Token) 服务接口 │ │ │ ├── KnowledgeService.java # 知识库服务接口 (可能与 RAG 相关) │ │ │ ├── MetadataService.java # 元数据服务接口 │ │ │ ├── NextOutlineService.java # 剧情推演服务接口 │ │ │ ├── NovelAIService.java # 小说 AI 相关服务接口 │ │ │ ├── NovelParser.java # 小说文件解析器接口 │ │ │ ├── NovelRagAssistant.java # 小说 RAG 助手接口 │ │ │ ├── NovelService.java # 小说管理服务接口 │ │ │ ├── PromptService.java # 提示词服务接口 │ │ │ ├── PromptTemplateService.java # 提示词模板服务接口 │ │ │ ├── SceneService.java # 场景管理服务接口 │ │ │ ├── StorageService.java # 文件存储服务接口 │ │ │ ├── UserAIModelConfigService.java # 用户 AI 模型配置服务接口 │ │ │ ├── UserPromptService.java # 用户提示词服务接口 │ │ │ ├── UserService.java # 用户管理服务接口 │ │ │ │ │ │ │ ├── vectorstore/ # 向量数据库相关接口和类 │ │ │ │ ├── ChromaVectorStore.java # Chroma 向量数据库实现 (可能) │ │ │ │ ├── SearchResult.java # 向量搜索结果类 │ │ │ │ └── VectorStore.java # 向量数据库接口 │ │ │ │ │ │ │ ├── rag/ # RAG (检索增强生成) 相关类 │ │ │ │ ├── ChromaEmbeddingStoreProvider.java # Chroma 嵌入存储提供者 (LangChain4j) │ │ │ │ ├── LangChain4jEmbeddingModel.java # LangChain4j 嵌入模型封装 │ │ │ │ ├── NovelRagAssistant.java # (重复) 小说 RAG 助手接口 │ │ │ │ ├── RagService.java # RAG 服务接口 │ │ │ │ └── RagServiceImpl.java # RAG 服务实现 │ │ │ │ │ │ │ ├── provider/ # 外部服务提供者 (如存储) │ │ │ │ ├── AliOSSStorageProvider.java # 阿里云 OSS 存储提供者实现 │ │ │ │ └── StorageProvider.java # 存储提供者接口 │ │ │ │ │ │ │ ├── impl/ # 服务层接口实现 │ │ │ │ ├── AIChatServiceImpl.java # AI 聊天服务实现 │ │ │ │ ├── AIServiceImpl.java # 通用 AI 服务实现 │ │ │ │ ├── EmbeddingServiceImpl.java # 文本嵌入服务实现 │ │ │ │ ├── ImportServiceImpl.java # 文件导入服务实现 │ │ │ │ ├── IndexingServiceImpl.java # 索引服务实现 │ │ │ │ ├── JwtServiceImpl.java # JWT 服务实现 │ │ │ │ ├── KnowledgeServiceImpl.java # 知识库服务实现 │ │ │ │ ├── MetadataServiceImpl.java # 元数据服务实现 │ │ │ │ ├── NextOutlineServiceImpl.java # 剧情推演服务实现 │ │ │ │ ├── NovelAIServiceImpl.java # 小说 AI 相关服务实现 │ │ │ │ ├── NovelRagAssistantImpl.java # 小说 RAG 助手实现 │ │ │ │ ├── NovelServiceImpl.java # 小说管理服务实现 │ │ │ │ ├── PromptServiceImpl.java # 提示词服务实现 │ │ │ │ ├── PromptTemplateServiceImpl.java # 提示词模板服务实现 │ │ │ │ ├── SceneServiceImpl.java # 场景管理服务实现 │ │ │ │ ├── StorageServiceImpl.java # 文件存储服务实现 │ │ │ │ ├── TxtNovelParser.java # TXT 格式小说解析器实现 │ │ │ │ ├── UserAIModelConfigServiceImpl.java # 用户 AI 模型配置服务实现 │ │ │ │ ├── UserPromptServiceImpl.java # 用户提示词服务实现 │ │ │ │ └── UserServiceImpl.java # 用户管理服务实现 │ │ │ │ │ │ │ └── ai/ # AI 模型提供者相关代码 │ │ │ ├── AbstractAIModelProvider.java # AI 模型提供者抽象基类 │ │ │ ├── AIModelProvider.java # AI 模型提供者接口 │ │ │ ├── AnthropicModelProvider.java # Anthropic 模型提供者 (可能直接调用 API) │ │ │ ├── GeminiModelProvider.java # Gemini 模型提供者 (可能直接调用 API) │ │ │ ├── GrokModelProvider.java # Grok 模型提供者 (可能直接调用 API) │ │ │ ├── OpenAIModelProvider.java # OpenAI 模型提供者 (可能直接调用 API) │ │ │ ├── SiliconFlowModelProvider.java # SiliconFlow 模型提供者 (可能直接调用 API) │ │ │ │ │ │ │ ├── registry/ # AI Provider 注册表 │ │ │ │ └── AIProviderRegistry.java # AI Provider 注册表实现 │ │ │ │ │ │ │ ├── langchain4j/ # LangChain4j 集成实现 │ │ │ │ ├── AnthropicLangChain4jModelProvider.java # Anthropic LangChain4j 提供者 │ │ │ │ ├── GeminiLangChain4jModelProvider.java # Gemini LangChain4j 提供者 │ │ │ │ ├── LangChain4jModelProvider.java # LangChain4j 提供者接口/基类 │ │ │ │ ├── OpenAILangChain4jModelProvider.java # OpenAI LangChain4j 提供者 │ │ │ │ ├── OpenRouterLangChain4jModelProvider.java # OpenRouter LangChain4j 提供者 │ │ │ │ ├── SiliconFlowLangChain4jModelProvider.java # SiliconFlow LangChain4j 提供者 │ │ │ │ └── TogetherAILangChain4jModelProvider.java # TogetherAI LangChain4j 提供者 │ │ │ │ │ │ │ ├── factory/ # 工厂模式 (用于创建 Provider) │ │ │ │ └── AIModelProviderFactory.java # AI 模型提供者工厂 │ │ │ │ │ │ │ └── capability/ # AI Provider 能力检测 │ │ │ ├── AnthropicCapabilityDetector.java # Anthropic 能力检测器 │ │ │ ├── GeminiCapabilityDetector.java # Gemini 能力检测器 │ │ │ ├── GrokCapabilityDetector.java # Grok 能力检测器 │ │ │ ├── OpenAICapabilityDetector.java # OpenAI 能力检测器 │ │ │ ├── OpenRouterCapabilityDetector.java # OpenRouter 能力检测器 │ │ │ ├── ProviderCapabilityDetector.java # Provider 能力检测器接口 │ │ │ ├── ProviderCapabilityService.java # Provider 能力服务 │ │ │ ├── SiliconFlowCapabilityDetector.java # SiliconFlow 能力检测器 │ │ │ └── TogetherAICapabilityDetector.java # TogetherAI 能力检测器 │ │ │ │ │ ├── security/ # 安全配置和组件 │ │ │ ├── CurrentUser.java # 获取当前用户注解 │ │ │ ├── CurrentUserMethodArgumentResolver.java # 解析 @CurrentUser 注解的参数解析器 │ │ │ ├── JwtAuthenticationManager.java # JWT 认证管理器 │ │ │ └── JwtServerAuthenticationConverter.java # JWT 服务器认证转换器 (用于 Spring Security WebFlux) │ │ │ │ │ ├── repository/ # 数据仓库层 (数据库交互) │ │ │ ├── AIChatMessageRepository.java # AI 聊天消息仓库接口 │ │ │ ├── AIChatSessionRepository.java # AI 聊天会话仓库接口 │ │ │ ├── KnowledgeChunkRepository.java # 知识块仓库接口 │ │ │ ├── NextOutlineRepository.java # 后续大纲仓库接口 │ │ │ ├── NovelRepository.java # 小说仓库接口 │ │ │ ├── PromptTemplateRepository.java # 提示词模板仓库接口 │ │ │ ├── SceneRepository.java # 场景仓库接口 │ │ │ ├── UserAIModelConfigRepository.java # 用户 AI 模型配置仓库接口 │ │ │ ├── UserPromptTemplateRepository.java # 用户提示词模板仓库接口 │ │ │ ├── UserRepository.java # 用户仓库接口 │ │ │ │ │ │ │ ├── impl/ # 数据仓库层实现 (部分自定义实现) │ │ │ │ ├── NextOutlineRepositoryImpl.java # NextOutlineRepository 自定义实现 │ │ │ │ └── UserRepositoryImpl.java # UserRepository 自定义实现 │ │ │ │ │ │ │ └── custom/ # 自定义仓库接口 (用于复杂查询) │ │ │ └── CustomUserRepository.java # 自定义用户仓库接口 │ │ │ │ │ ├── exception/ # 自定义异常类 │ │ │ └── VectorStoreException.java # 向量存储异常 │ │ │ │ │ ├── domain/ # 领域模型和 DTO │ │ │ ├── model/ # 核心领域模型 (对应数据库实体) │ │ │ │ ├── AIChatMessage.java # AI 聊天消息实体 │ │ │ │ ├── AIChatSession.java # AI 聊天会话实体 │ │ │ │ ├── AIFeatureType.java # AI 功能类型枚举 │ │ │ │ ├── AIInteraction.java # AI 交互记录实体 (可能) │ │ │ │ ├── AIRequest.java # AI 请求实体 (可能) │ │ │ │ ├── AIResponse.java # AI 响应实体 (可能) │ │ │ │ ├── BaseAIRequest.java # AI 请求基类 (可能) │ │ │ │ ├── Character.java # 角色实体 │ │ │ │ ├── GenerateNextOutlinesDTO.java # (重复) 生成后续大纲 DTO (位置可能不当) │ │ │ │ ├── KnowledgeChunk.java # 知识块实体 │ │ │ │ ├── ModelInfo.java # 模型信息实体 │ │ │ │ ├── ModelListingCapability.java # 模型列表能力枚举 │ │ │ │ ├── NextOutline.java # 后续大纲实体 │ │ │ │ ├── Novel.java # 小说实体 │ │ │ │ ├── OptimizationResult.java # 优化结果实体 │ │ │ │ ├── OptimizationSection.java # 优化部分实体 │ │ │ │ ├── OptimizationStatistics.java # 优化统计实体 │ │ │ │ ├── OptimizationStyle.java # 优化风格枚举 │ │ │ │ ├── PromptTemplate.java # 提示词模板实体 │ │ │ │ ├── Scene.java # 场景实体 │ │ │ │ ├── SceneVersionDiff.java # (重复) 场景版本差异 DTO (位置可能不当) │ │ │ │ ├── Setting.java # 设定实体 │ │ │ │ ├── User.java # 用户实体 │ │ │ │ ├── UserAIModelConfig.java # 用户 AI 模型配置实体 │ │ │ │ └── UserPromptTemplate.java # 用户提示词模板实体 │ │ │ │ │ │ │ └── dto/ # 领域层 DTO (特定于领域逻辑) │ │ │ ├── ApiKeyTestRequest.java # API Key 测试请求 DTO │ │ │ ├── ParsedNovelData.java # 解析后的小说数据 DTO │ │ │ └── ParsedSceneData.java # 解析后的场景数据 DTO │ │ │ │ │ ├── controller/ # (重复) 控制器目录 (结构可能需要调整) │ │ │ └── ProviderCapabilityController.java # Provider 能力控制器 │ │ │ │ │ ├── config/ # 应用配置类 │ │ │ ├── AIServiceConfig.java # AI 服务相关配置 │ │ │ ├── CacheConfig.java # 缓存配置 (如 Caffeine) │ │ │ ├── ChatLanguageModelConfig.java # 聊天语言模型配置 (可能与 LangChain4j 相关) │ │ │ ├── MongoConfig.java # MongoDB 配置 │ │ │ ├── MongoQueryCounterAspect.java # MongoDB 查询计数切面 (用于监控或调试) │ │ │ ├── MonitoringConfig.java # 监控配置 (如 Micrometer, Actuator) │ │ │ ├── PasswordConfig.java # 密码加密配置 (如 BCryptPasswordEncoder) │ │ │ ├── ProviderServiceConfig.java # Provider 服务配置 │ │ │ ├── ProxyConfig.java # 网络代理配置 │ │ │ ├── RagConfig.java # RAG 配置 │ │ │ ├── SecurityConfig.java # Spring Security 配置 │ │ │ ├── StorageConfig.java # 文件存储配置 │ │ │ ├── StorageStartupTester.java # 存储服务启动测试器 │ │ │ ├── TestSecurityConfig.java # 测试环境安全配置 │ │ │ ├── VectorStoreConfig.java # 向量存储配置 │ │ │ ├── VirtualThreadConfig.java # 虚拟线程执行器配置 │ │ │ └── WebConfig.java # Web 相关配置 (如 CORS, ArgumentResolvers) │ │ │ │ │ └── common/ # 通用工具和类 │ │ ├── util/ # 通用工具类 │ │ │ ├── MockDataGenerator.java # 模拟数据生成器 │ │ │ ├── PerformanceTestUtil.java # (重复) 性能测试工具类 │ │ │ └── PromptUtil.java # 提示词处理工具类 │ │ │ │ │ ├── security/ # 通用安全类 │ │ │ └── CurrentUser.java # (重复) 获取当前用户注解 │ │ │ │ │ ├── model/ # 通用模型类 │ │ │ └── ErrorResponse.java # (重复) 通用错误响应模型 │ │ │ │ │ └── exception/ # 通用异常类 │ │ ├── ResourceNotFoundException.java # 资源未找到异常 │ │ └── ValidationException.java # 验证异常 │ └── AINoval/ # 前端 Flutter 项目目录 ├── analysis_options.yaml # Dart 代码分析器选项 ├── devtools_options.yaml # Dart 开发者工具选项 ├── firebase.json # Firebase CLI 配置文件 ├── pubspec.yaml # Flutter 项目配置文件 (依赖项, 资源等) ├── README.md # AINoval 前端项目说明文档 │ ├── 设计文档/ # 前端特定模块的设计文档 │ └── 前端后台任务系统任务分解.md # 前端后台任务系统的任务分解 │ ├── web/ # Web 平台特定文件 │ ├── index.html # Web 应用主 HTML 文件 │ └── manifest.json # Web 应用清单文件 │ ├── scripts/ # Dart 脚本目录 │ └── replace_print_with_logger.dart # 用于替换 print 为 logger 的脚本 │ ├── lib/ # Flutter 应用主要代码目录 │ ├── firebase_options.dart # Firebase 初始化选项 (自动生成) │ ├── main.dart # Flutter 应用入口文件 │ │ │ ├── widgets/ # 可重用的小部件目录 │ │ └── common/ # 通用小部件 │ │ ├── empty_state_placeholder.dart # 空状态占位符小部件 │ │ └── loading_indicator.dart # 加载指示器小部件 │ │ │ ├── utils/ # 工具类目录 │ │ ├── app_theme.dart # 应用主题工具类 │ │ ├── date_formatter.dart # 日期格式化工具类 │ │ ├── date_time_parser.dart # 日期时间解析工具类 │ │ ├── debouncer.dart # 防抖动工具类 │ │ ├── logger.dart # 日志记录工具类 │ │ ├── logger_guide.md # 日志记录器使用指南 │ │ ├── logger_usage_examples.dart # 日志记录器使用示例 │ │ ├── mock_data.dart # 模拟数据 │ │ ├── mock_data_generator.dart # 模拟数据生成器 │ │ └── word_count_analyzer.dart # 字数统计分析器 │ │ │ ├── ui/ # UI 相关目录 (可能包含通用 UI 元素) │ │ ├── screens/ # (旧结构?) 屏幕目录 │ │ │ └── editor_screen.dart # (旧结构?) 编辑器屏幕 │ │ ├── dialogs/ # 对话框目录 │ │ │ └── scene_history_dialog.dart # 场景历史对话框 │ │ └── common/ # 通用 UI 组件 │ │ ├── loading_indicator.dart # (重复) 加载指示器 │ │ └── no_data_placeholder.dart # 无数据占位符 │ │ │ ├── theme/ # 主题和样式目录 │ │ └── text_styles.dart # 文本样式定义 │ │ │ ├── services/ # 应用服务目录 │ │ ├── auth_service.dart # 认证服务 │ │ ├── context_provider.dart # 上下文提供者 (可能用于全局访问) │ │ ├── local_storage_service.dart # 本地存储服务 │ │ ├── sync_service.dart # 同步服务 (可能用于离线/在线同步) │ │ ├── websocket_service.dart # WebSocket 服务 │ │ │ │ │ └── api_service/ # API 服务目录 (与后端交互) │ │ ├── README.md # API 服务说明 │ │ ├── repositories/ # API 仓库接口 │ │ │ ├── chat_repository.dart # 聊天 API 仓库接口 │ │ │ ├── editor_repository.dart # 编辑器 API 仓库接口 │ │ │ ├── next_outline_repository.dart # 剧情推演 API 仓库接口 │ │ │ ├── novel_repository.dart # 小说 API 仓库接口 │ │ │ ├── prompt_repository.dart # 提示词 API 仓库接口 │ │ │ ├── storage_repository.dart # 存储 API 仓库接口 │ │ │ └── user_ai_model_config_repository.dart # 用户 AI 配置 API 仓库接口 │ │ │ │ │ ├── repositories/impl/ # API 仓库实现 │ │ │ ├── aliyun_oss_storage_repository.dart # 阿里云 OSS 存储仓库实现 │ │ │ ├── chat_repository_impl.dart # 聊天 API 仓库实现 │ │ │ ├── editor_repository_impl.dart # 编辑器 API 仓库实现 │ │ │ ├── next_outline_repository_impl.dart # 剧情推演 API 仓库实现 │ │ │ ├── novel_repository_impl.dart # 小说 API 仓库实现 │ │ │ ├── prompt_repository_impl.dart # 提示词 API 仓库实现 │ │ │ ├── storage_repository_impl.dart # 存储 API 仓库实现 │ │ │ └── user_ai_model_config_repository_impl.dart # 用户 AI 配置 API 仓库实现 │ │ │ │ │ └── base/ # API 服务基础类 │ │ ├── api_client.dart # API 客户端 (如 Dio 封装) │ │ ├── api_exception.dart # API 异常类 │ │ └── sse_client.dart # Server-Sent Events (SSE) 客户端 │ │ │ ├── screens/ # 应用屏幕 (主要页面) 目录 │ │ ├── settings/ # 设置屏幕 │ │ │ ├── settings_panel.dart # 设置面板主屏幕 │ │ │ └── widgets/ # 设置屏幕相关小部件 │ │ │ ├── ai_assist_toolbar.dart # AI 辅助工具栏 │ │ │ ├── ai_config_form.dart # AI 配置表单 │ │ │ ├── custom_model_dialog.dart # 自定义模型对话框 │ │ │ ├── model_group_list.dart # 模型分组列表 │ │ │ ├── model_service_card.dart # 模型服务卡片 │ │ │ ├── model_service_header.dart # 模型服务列表头部 │ │ │ ├── model_service_list_page.dart # 模型服务列表页面 │ │ │ ├── optimization_result_view.dart # 优化结果视图 │ │ │ ├── processing_indicator.dart # 处理中指示器 │ │ │ ├── prompt_editor_panel.dart # 提示词编辑面板 │ │ │ ├── prompt_management_panel.dart # 提示词管理面板 │ │ │ ├── prompt_template_library.dart # 提示词模板库 │ │ │ ├── provider_list.dart # AI Provider 列表 │ │ │ ├── searchable_model_dropdown.dart # 可搜索的模型下拉菜单 │ │ │ └── template_permission_indicator.dart # 模板权限指示器 │ │ │ │ │ ├── novel_list/ # 小说列表屏幕 │ │ │ ├── novel_list_screen.dart # 小说列表主屏幕 │ │ │ └── widgets/ # 小说列表屏幕相关小部件 │ │ │ ├── continue_writing_section.dart # 继续写作区域 │ │ │ ├── empty_novel_view.dart # 空小说列表视图 │ │ │ ├── header_section.dart # 头部区域 │ │ │ ├── import_novel_dialog.dart # 导入小说对话框 │ │ │ ├── loading_view.dart # 加载视图 │ │ │ ├── novel_card.dart # 小说卡片 │ │ │ ├── novel_list_error_view.dart # 小说列表错误视图 │ │ │ └── search_filter_bar.dart # 搜索和过滤栏 │ │ │ │ │ ├── next_outline/ # 剧情推演屏幕 │ │ │ ├── next_outline_screen.dart # 剧情推演主屏幕 │ │ │ ├── next_outline_view.dart # 剧情推演视图 (可能包含主要 UI) │ │ │ └── widgets/ # 剧情推演屏幕相关小部件 │ │ │ ├── outline_generation_config_card.dart # 大纲生成配置卡片 │ │ │ ├── results_grid.dart # 结果网格布局 │ │ │ └── result_card.dart # 结果卡片 │ │ │ │ │ ├── editor/ # 编辑器屏幕 │ │ │ ├── editor_screen.dart # 编辑器主屏幕 │ │ │ ├── widgets/ # 编辑器屏幕通用小部件 │ │ │ │ ├── ai_chat_button.dart # AI 聊天按钮 │ │ │ │ ├── ai_generation_panel.dart # AI 生成面板 │ │ │ │ ├── ai_scene_generation_side_panel.dart # AI 场景生成侧边面板 │ │ │ │ ├── ai_stream_generation_display.dart # AI 流式生成显示 │ │ │ │ ├── ai_summary_panel.dart # AI 摘要面板 │ │ │ │ ├── ai_summary_side_panel.dart # AI 摘要侧边面板 │ │ │ │ ├── custom_dropdown.dart # 自定义下拉菜单 │ │ │ │ ├── dialogs.dart # 编辑器相关对话框 │ │ │ │ ├── dropdown_guide.md # 下拉菜单使用指南 │ │ │ │ ├── dropdown_manager.dart # 下拉菜单管理器 │ │ │ │ ├── editor_toolbar.dart # 编辑器工具栏 │ │ │ │ ├── enhanced_menu_item.dart # 增强型菜单项 │ │ │ │ ├── generate_scene_dialog.dart # 生成场景对话框 │ │ │ │ ├── menu_builder.dart # 菜单构建器 │ │ │ │ ├── menu_definitions.dart # 菜单定义 │ │ │ │ ├── novel_settings_view.dart # 小说设置视图 │ │ │ │ ├── selection_toolbar.dart # 文本选择工具栏 │ │ │ │ └── word_count_display.dart # 字数显示 │ │ │ │ │ │ │ ├── managers/ # 编辑器屏幕管理器 │ │ │ │ ├── editor_dialog_manager.dart # 编辑器对话框管理器 │ │ │ │ ├── editor_layout_manager.dart # 编辑器布局管理器 │ │ │ │ └── editor_state_manager.dart # 编辑器状态管理器 │ │ │ │ │ │ │ ├── controllers/ # 编辑器屏幕控制器 (可能与 BLoC 结合) │ │ │ │ └── editor_screen_controller.dart # 编辑器屏幕控制器 │ │ │ │ │ │ │ └── components/ # 编辑器屏幕的主要 UI 组件 │ │ │ ├── act_section.dart # 幕/卷区域组件 │ │ │ ├── chapter_section.dart # 章区域组件 │ │ │ ├── draggable_divider.dart # 可拖动分隔线 │ │ │ ├── editor_app_bar.dart # 编辑器应用栏 │ │ │ ├── editor_layout.dart # 编辑器整体布局 │ │ │ ├── editor_main_area.dart # 编辑器主编辑区域 │ │ │ ├── editor_sidebar.dart # 编辑器侧边栏 (大纲/章节/场景列表) │ │ │ ├── multi_ai_panel_view.dart # 多 AI 面板视图 │ │ │ ├── plan_view.dart # 小说计划 (Plan) 视图 │ │ │ └── scene_editor.dart # 场景编辑器组件 │ │ │ │ │ ├── chat/ # AI 聊天屏幕 │ │ │ ├── chat_screen.dart # AI 聊天主屏幕 │ │ │ └── widgets/ # AI 聊天屏幕相关小部件 │ │ │ ├── ai_chat_sidebar.dart # AI 聊天侧边栏 │ │ │ ├── chat_input.dart # 聊天输入框 │ │ │ ├── chat_message_bubble.dart # 聊天消息气泡 │ │ │ ├── chat_sidebar.dart # 聊天侧边栏 (可能包含会话列表) │ │ │ ├── context_panel.dart # 上下文面板 │ │ │ ├── model_selector_dropdown.dart # 模型选择下拉菜单 │ │ │ └── typing_indicator.dart # 输入中指示器 │ │ │ │ │ ├── auth/ # 认证屏幕 │ │ │ └── login_screen.dart # 登录屏幕 │ │ │ │ │ └── ai_config/ # AI 配置管理屏幕 │ │ ├── ai_config_management_screen.dart # AI 配置管理主屏幕 │ │ └── widgets/ # AI 配置屏幕相关小部件 │ │ ├── add_edit_ai_config_dialog.dart # 添加/编辑 AI 配置对话框 │ │ ├── ai_config_list_item.dart # AI 配置列表项 │ │ └── ai_model_selector.dart # AI 模型选择器 │ │ │ ├── repositories/ # 数据仓库目录 (顶层, 可能需要整合) │ │ └── codex_repository.dart # Codex (知识库) 仓库接口 │ │ │ ├── models/ # 数据模型目录 │ │ ├── ai_model_group.dart # AI 模型分组模型 │ │ ├── chat_message.dart # 聊天消息模型 │ │ ├── chat_models.dart # 聊天相关模型 (可能包含会话等) │ │ ├── editor_content.dart # 编辑器内容模型 │ │ ├── editor_settings.dart # 编辑器设置模型 │ │ ├── import_status.dart # 导入状态模型 │ │ ├── model_info.dart # 模型信息模型 │ │ ├── novel_structure.dart # 小说结构模型 (卷/章/场景) │ │ ├── novel_summary.dart # 小说摘要模型 │ │ ├── prompt_models.dart # 提示词相关模型 │ │ ├── revision.dart # 版本/修订模型 │ │ ├── scene_version.dart # 场景版本模型 │ │ ├── user_ai_model_config_model.dart # 用户 AI 模型配置模型 │ │ │ │ │ ├── next_outline/ # 剧情推演相关模型 │ │ │ ├── next_outline_dto.dart # 剧情推演 DTO │ │ │ └── outline_generation_chunk.dart # 大纲生成块 (SSE) │ │ │ │ │ └── api/ # API 数据传输对象 (DTO) │ │ └── editor_dtos.dart # 编辑器相关的 DTO │ │ │ ├── l10n/ # 本地化目录 │ │ └── l10n.dart # 本地化工具类/入口 │ │ │ ├── docs/ # 文档目录 (嵌入代码中) │ │ └── logger_guide.md # (重复) 日志记录器使用指南 │ │ │ ├── config/ # 应用配置目录 │ │ └── app_config.dart # 应用配置 (如 API 地址) │ │ │ ├── components/ # 可重用组件目录 (类似 widgets) │ │ └── editable_title.dart # 可编辑标题组件 │ │ │ └── blocs/ # BLoC 状态管理目录 │ ├── editor_version_bloc.dart # 编辑器版本 BLoC │ ├── editor_version_event.dart # 编辑器版本事件 │ ├── editor_version_state.dart # 编辑器版本状态 │ │ │ ├── prompt/ # 提示词管理 BLoC │ │ ├── prompt_bloc.dart # 提示词 BLoC │ │ ├── prompt_event.dart # 提示词事件 │ │ ├── prompt_state.dart # 提示词状态 │ │ └── prompt_template_events.dart # 提示词模板事件 (可能应合并或重构) │ │ │ ├── plan/ # 小说计划 (Plan) BLoC │ │ ├── plan_bloc.dart # Plan BLoC │ │ ├── plan_event.dart # Plan 事件 │ │ └── plan_state.dart # Plan 状态 │ │ │ ├── novel_list/ # 小说列表 BLoC │ │ ├── novel_list_bloc.dart # 小说列表 BLoC │ │ └── novel_list_event.dart # 小说列表事件 │ │ # novel_list_state.dart missing? (可能在 novel_list_bloc.dart 中定义) │ │ │ ├── novel_import/ # 小说导入 BLoC │ │ ├── novel_import_bloc.dart # 小说导入 BLoC │ │ ├── novel_import_event.dart # 小说导入事件 │ │ └── novel_import_state.dart # 小说导入状态 │ │ │ ├── next_outline/ # 剧情推演 BLoC │ │ ├── next_outline_bloc.dart # 剧情推演 BLoC │ │ ├── next_outline_event.dart # 剧情推演事件 │ │ └── next_outline_state.dart # 剧情推演状态 │ │ │ ├── editor/ # 编辑器 BLoC │ │ ├── editor_bloc.dart # 编辑器 BLoC │ │ ├── editor_event.dart # 编辑器事件 │ │ └── editor_state.dart # 编辑器状态 │ │ │ ├── chat/ # AI 聊天 BLoC │ │ ├── chat_bloc.dart # 聊天 BLoC │ │ ├── chat_event.dart # 聊天事件 │ │ └── chat_state.dart # 聊天状态 │ │ │ ├── auth/ # 认证 BLoC │ │ └── auth_bloc.dart # 认证 BLoC │ │ # auth_event.dart, auth_state.dart missing? │ │ │ └── ai_config/ # AI 配置 BLoC │ ├── ai_config_bloc.dart # AI 配置 BLoC │ ├── ai_config_event.dart # AI 配置事件 │ └── ai_config_state.dart # AI 配置状态 │ ├── fix_dollar_e/ # 一个独立的 Dart 包/工具 (修复 $e 问题?) │ └── bin/ # 可执行脚本目录 │ └── fix_dollar_e.dart # 主要执行脚本 │ └── build/ # Flutter 构建输出目录 ├── flutter_assets/ # Flutter 资源文件 │ ├── AssetManifest.bin.json # 二进制资源清单 │ ├── AssetManifest.json # JSON 资源清单 │ ├── FontManifest.json # 字体清单 │ └── packages/ # 包资源 │ └── fluttertoast/ # fluttertoast 包资源 │ └── assets/ # fluttertoast 资源 │ ├── toastify.css # toastify CSS │ └── toastify.js # toastify JS │ └── ce49e7d90cd902197f9a9cbc84219d23/ # (内部构建目录) └── outputs.json # 构建输出信息 ``` ## 技术架构 ### 前端技术栈 - **框架**: Flutter - **状态管理**: Bloc模式 - **网络请求**: 服务层与仓库模式 - **国际化**: l10n支持 ### 后端技术栈 - **框架**: Spring Boot - **安全**: Spring Security - **数据访问**: Spring Data - **API文档**: Swagger/OpenAPI - **测试**: JUnit, Postman ## 开发流程 项目采用敏捷开发方法,通过迭代方式进行开发。前端和后端团队协作,使用Git进行版本控制,通过Postman进行API测试。 ## 文档资源 - 需求文档: 详细的功能需求说明 - 原型图: UI/UX设计原型 - 测试计划与文档: 测试策略和测试用例 - 后端开发文档: API设计和实现说明 - 前端产品敏捷迭代计划: 前端开发计划和里程碑