马良AI写作初始化仓库
This commit is contained in:
23
.cursor/rules/backend_structure.mdc
Normal file
23
.cursor/rules/backend_structure.mdc
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Backend Structure (AINovalServer - Spring Boot)
|
||||
|
||||
- **Entry Point**: [src/main/java/com/ainovel/server/AiNovelServerApplication.java](mdc:AINovalServer/src/main/java/com/ainovel/server/AiNovelServerApplication.java)
|
||||
- **Dependencies**: [pom.xml](mdc:AINovalServer/pom.xml)
|
||||
- **Main Configuration**: [src/main/resources/application.yml](mdc:AINovalServer/src/main/resources/application.yml)
|
||||
- **Environment Configs**: Located in `src/main/resources/` (e.g., `application-dev.yml`)
|
||||
- **Source Code**: `src/main/java/com/ainovel/server/`
|
||||
- `common/`: Common utilities and constants
|
||||
- `config/`: Configuration classes (DB, Security, etc.)
|
||||
- `domain/`: Domain models/entities
|
||||
- `repository/`: Data access layer (JPA Repositories)
|
||||
- `security/`: Security configuration and components
|
||||
- `service/`: Business service layer
|
||||
- `web/`: Web controllers (REST APIs)
|
||||
- **Resources**: `src/main/resources/`
|
||||
- **Tests**: `src/test/`
|
||||
|
||||
|
||||
23
.cursor/rules/documentation_links.mdc
Normal file
23
.cursor/rules/documentation_links.mdc
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Documentation Links
|
||||
|
||||
This file provides links to important documentation within the project.
|
||||
|
||||
- **Overall Architecture**: [项目架构说明.md](mdc:项目架构说明.md)
|
||||
- **Version Control Guide**: [版本控制功能说明.md](mdc:版本控制功能说明.md)
|
||||
- **Frontend README**: [AINoval/README.md](mdc:AINoval/README.md)
|
||||
- **Backend README**: [AINovalServer/README.md](mdc:AINovalServer/README.md)
|
||||
- **Backend Performance Testing**: [AINovalServer/PERFORMANCE_TESTING.md](mdc:AINovalServer/PERFORMANCE_TESTING.md)
|
||||
|
||||
**Documentation Directories:**
|
||||
|
||||
- **Requirements**: `需求文档/`
|
||||
- **Prototypes/Designs**: `原型图/`
|
||||
- **Testing Plans**: `测试计划与文档/`
|
||||
- **Backend Development Docs**: `后端开发文档/`
|
||||
- **Frontend Iteration Plans**: `前端产品敏捷迭代计划/`
|
||||
- **Postman Collections**: `postman/`
|
||||
274
.cursor/rules/frontbackapiguide.mdc
Normal file
274
.cursor/rules/frontbackapiguide.mdc
Normal file
@@ -0,0 +1,274 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
一、统一前置约定
|
||||
1. Base URL
|
||||
AppConfig.apiBaseUrl 内部已拼接 “/api/v1/” 前缀,所有请求 path 必须以 “/” 开头,禁止再次写 /api/v1/**。
|
||||
示例:`post('/ai-chat/sessions/create')` ✅ `post('/api/v1/ai-chat/sessions/create')` ❌
|
||||
|
||||
2. HTTP 方法
|
||||
• 除个别 GET-SSE(小说导入进度)外,所有接口一律使用 POST。
|
||||
• 请求体、响应体统一 JSON;SSE 数据位于 data 字段内,亦是 JSON。
|
||||
|
||||
3. 必备请求头
|
||||
Authorization: Bearer {token}
|
||||
X-User-Id: {userId}
|
||||
Content-Type: application/json (Multipart 上传除外)
|
||||
SSE 额外头:
|
||||
Accept: text/event-stream
|
||||
Cache-Control: no-cache
|
||||
Connection: keep-alive
|
||||
|
||||
4. novelId 隔离
|
||||
所有 AI 聊天 / 记忆模式 / 剧情推演及小说相关接口均需 novelId。前端省略将直接 4XX。旧版不带 novelId 方法已 @Deprecated。
|
||||
|
||||
────────────────────────────────────────
|
||||
二、非流式(普通 HTTP)调用规范
|
||||
1. 调用方式
|
||||
await apiClient.post('/路径', data: {…});
|
||||
Options 可选;大部分接口已经在 ApiClient 二次封装,优先调用对应 repository 方法。
|
||||
|
||||
2. 超时
|
||||
connect 30s / send 30s / receive 5min(已在 ApiClient 配置)
|
||||
|
||||
3. 错误处理
|
||||
后端统一错误 JSON:`{ "code": -1, "message": "错误描述", "error": "可选详情" }`
|
||||
ApiClient 已将 401 拦截并自动调用 AuthService.logout()。其它错误统一抛 ApiException(statusCode,msg)。
|
||||
|
||||
────────────────────────────────────────
|
||||
三、SSE 流式请求规范
|
||||
1. 前端封装
|
||||
使用 SseClient().streamEvents<T>(…) 或 ApiClient.postStream + _processStream。
|
||||
|
||||
2. 通用请求头与 Options
|
||||
见「统一请求头」,并在 Dio Options 中声明 responseType: ResponseType.stream。
|
||||
|
||||
3. 事件格式(后端 ServerSentEvent)
|
||||
id: {uuid} ❘ 可选
|
||||
event: {eventName}
|
||||
data: {JSON 字符串或 [DONE]}
|
||||
\n\n 分隔多条记录
|
||||
|
||||
4. 事件名称白名单
|
||||
chat-message AI 聊天普通/流式块
|
||||
chat-error AI 聊天错误
|
||||
chat-message-memory 记忆模式聊天
|
||||
outline-chunk 剧情推演
|
||||
message 通用 AI
|
||||
complete 通用 AI 结束(data 为 {"data":"[DONE]"})
|
||||
|
||||
5. 结束判定
|
||||
• 收到一条 data: [DONE] → 正常结束
|
||||
• 收到 event: complete → 正常结束
|
||||
• 服务器主动关闭连接 → onDone
|
||||
• 本地 5 分钟未收包 → ApiClient 内置心跳超时会自动 addError & close
|
||||
|
||||
6. 前端过滤范式(示例 chat_repository_impl)
|
||||
.streamEvents(...).where((event)=>
|
||||
event.sessionId == currentSession && event.content != 'heartbeat');
|
||||
|
||||
────────────────────────────────────────
|
||||
四、路径与 DTO 命名
|
||||
1. 路径
|
||||
POST /{模块}/{动作} 例:/novels/create
|
||||
POST /{模块}/{资源}/{动作} 例:/ai-chat/messages/stream
|
||||
SSE 路径保持同 POST 规则,仅响应类型不同。
|
||||
|
||||
2. 请求 DTO/VO
|
||||
• {Action}{Resource}Dto / Request / Response
|
||||
• SessionCreateDto, ImportPreviewRequest …
|
||||
• 流式请求的 DTO 放 body,不走 query。
|
||||
|
||||
────────────────────────────────────────
|
||||
五、文件上传 & 导入
|
||||
1. Multipart FormData 字段
|
||||
file 文件
|
||||
userId (备用)
|
||||
2. 三步导入
|
||||
/upload-preview → 返回 previewSessionId
|
||||
/preview → 返回章节解析预览
|
||||
/confirm → 返回 jobId
|
||||
进度监听 GET /novels/import/{jobId}/status SSE event: data = ImportStatus JSON
|
||||
3. 长连接心跳
|
||||
ApiClient.connectToLongRunningSSE 已内建 15s 心跳日志;2min 静默 → 本地进度提醒;5min → 超时断线。
|
||||
|
||||
────────────────────────────────────────
|
||||
六、特殊模块注意
|
||||
1. AI 聊天
|
||||
• 创建会话 /ai-chat/sessions/create
|
||||
• 流式发消息 /ai-chat/messages/stream Body 必含 userId、novelId、sessionId、content
|
||||
• metadata 可携带 aiConfig(详见 extractAIConfigFromMetadata)
|
||||
• 事件过滤:status==streaming 可用于打字机效果,最终完整消息 id 不以 temp_chunk_ 开头。
|
||||
|
||||
2. 记忆模式
|
||||
• 路径加 -with-memory;event 名改为 chat-message-memory / chat-error-memory。
|
||||
• 需要 memoryConfig 字段。
|
||||
|
||||
3. 剧情推演
|
||||
• POST /novels/{novelId}/next-outlines/generate-stream
|
||||
• event: outline-chunk
|
||||
• 如遇 code+message 错误 JSON,解析器需 throw ApiException。
|
||||
|
||||
4. Universal AI(多功能 AI)
|
||||
• 非流式 /ai/universal/request
|
||||
• 流式 /ai/universal/stream event: message / complete
|
||||
• 预估费用 /ai/universal/estimate-cost
|
||||
• 预览提示 /ai/universal/preview
|
||||
|
||||
────────────────────────────────────────
|
||||
七、客户端实现要点(Dart 侧)
|
||||
1. ApiClient 已封装常用 CRUD;优先通过各 Repository,避免重复实现。
|
||||
2. 401 在拦截器中自动登出,无需额外判断。
|
||||
3. 日志等级:AppConfig.logLevel;生产默认 info,调试可设 warning 输出请求/响应体。
|
||||
4. 模型 & 配置缓存
|
||||
ChatRepositoryImpl 内部维护 novelId→sessionId→UniversalAIRequest 缓存,注意同步 & 清理。
|
||||
5. 批量场景上传
|
||||
统一使用 /novels/upsert-chapter-scenes-batch,数据结构符合 ChapterScenesDto。
|
||||
|
||||
────────────────────────────────────────
|
||||
八、测试 Checklist(提交前自检)
|
||||
☐ 请求 path 无 “/api/v1” 重复
|
||||
☐ 必填头 Authorization / X-User-Id 已附加
|
||||
☐ POST body 为 JSON;SSE 请求 Accept:text/event-stream
|
||||
☐ novelId 已在 body 或 path 中提供
|
||||
☐ 错误码 & message 正确解析,401 能触发登出
|
||||
☐ SSE 解析:支持 event/data/id,多行合并,识别 [DONE]/complete
|
||||
☐ 心跳或空行已过滤,打字机流块保留
|
||||
☐ 长连接超时重连(最多 3 次)逻辑正常
|
||||
☐ 文件上传 Multipart/form-data,字段 file / userId
|
||||
☐ 日志在 debug 模式下可输出请求体 & 响应体
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
后端约束
|
||||
|
||||
一、通用约束
|
||||
|
||||
1. 路径前缀
|
||||
所有 Controller 均挂载在 “/api/v1/**”,切勿在内部拼接重复前缀。
|
||||
|
||||
2. 返回类型
|
||||
• 非流式:Mono<T> / Flux<T> ↔ HTTP 200|201。
|
||||
• 流式 :Flux<ServerSentEvent<…>> ↔ Content-Type text/event-stream。
|
||||
|
||||
3. DTO & 命名
|
||||
• 输入 DTO:SessionCreateDto / ImportPreviewRequest / PaginatedScenesRequestDto …
|
||||
• 输出 DTO:NovelWithScenesDto / ChaptersForPreloadDto …
|
||||
• 统一放在 web.dto 包;禁止 Controller 直接暴露实体 Entity。
|
||||
|
||||
4. 参数校验
|
||||
• 使用 jakarta.validation @Valid,并在 DTO 字段加 @NotBlank @NotNull。
|
||||
• Controller 若自行拼 Map<String,String>,在进入 Service 前必须手动判空并抛 ResponseStatusException 400。
|
||||
|
||||
5. 身份认证
|
||||
• 使用 @CurrentUser 解析出 userId;如为空必须回退表单 userId;仍为空则返回 401。
|
||||
• 鉴权逻辑统一在 Service 层做二次校验(session 属主、novel 属主等)。
|
||||
• jwt配置 SecurityConfig需要增加新端点
|
||||
|
||||
6. novelId 隔离
|
||||
• AIChatService / NovelService 等新接口必须带 novelId 版本,旧方法保留 @Deprecated 标记。
|
||||
• Controller 在调用旧 Service 时,先 getSession(userId, novelId, sessionId) 校验归属。
|
||||
|
||||
7. 错误响应规范
|
||||
```json
|
||||
{ "code": -1, "message": "错误描述", "error": "可选堆栈/详情" }
|
||||
```
|
||||
• Controller 捕获异常后统一封装,避免直接返回 500 HTML。
|
||||
• SSE 端点 onErrorResume 时应推送 chat-error / outline-error 之类事件,或者 data: {"code":-1,"message":"xxx"}。
|
||||
|
||||
────────────────────────────────────────
|
||||
二、SSE 端点实现要求
|
||||
|
||||
1. 标准包装
|
||||
```java
|
||||
ServerSentEvent.<T>builder()
|
||||
.id(UUID.randomUUID().toString())
|
||||
.event("chat-message") // 见事件白名单
|
||||
.data(payload) // payload 为对象,框架自动 JSON 序列化
|
||||
.retry(Duration.ofSeconds(10))
|
||||
.build();
|
||||
```
|
||||
|
||||
2. 事件名称
|
||||
chat-message | chat-error | chat-message-memory | outline-chunk | message | complete
|
||||
其它请先在前后端约定后再扩展。
|
||||
|
||||
3. 结束规则
|
||||
• 业务方最后 concat 一个 complete / data:[DONE] 信号,或正常 close。
|
||||
• 服务器不得无限保持空闲长连接;无事件 2-3min 应考虑心跳注释 “:heartbeat”。
|
||||
|
||||
4. 流速控制
|
||||
使用 `.delayElements(Duration.ofMillis(50))` 或下游 buffer,避免单秒百条刷屏。
|
||||
|
||||
5. 订阅日志
|
||||
`doOnSubscribe` 记录连接;`doOnCancel` / `doOnError` 记录关闭与异常,方便排障。
|
||||
|
||||
────────────────────────────────────────
|
||||
三、模块专项
|
||||
|
||||
1. AI 聊天 (AIChatController)
|
||||
• createSession / getSession / listSessions / update / delete / count 全量支持 novelId。
|
||||
• streamMessage() 必须先 extractAIConfigFromMetadata() → UniversalAIRequestDto;如无配置降级旧接口。
|
||||
• 错误时返回 chat-error 事件,data 为 AIChatMessage(role=system, status=ERROR)。
|
||||
|
||||
2. 记忆模式
|
||||
• routes 加后缀 -with-memory;事件名 chat-message-memory / chat-error-memory。
|
||||
• ChatMemoryConfigDto 转 domain,Service 侧负责窗口剪裁。
|
||||
|
||||
3. Novel 管理 (NovelController)
|
||||
• get-with-paginated-scenes 等分页接口必须校验 chaptersLimit 1-10。
|
||||
• load-more-scenes direction 仅允许 up/down/center;非法值 400。
|
||||
• 细粒度增删改(add-act-fine / delete-scene-fine 等)只处理局部,无需回整本 DTO,前端自动拉取最新结构。
|
||||
• /import 流程:upload-preview → preview → confirm;每步严格校验必要字段并返回友好错误。
|
||||
|
||||
4. Next-Outline (剧情推演)
|
||||
• generate-stream / regenerate-option 均推 outline-chunk。
|
||||
• Service 内部 chunk.size 建议 ≤ 5KB;过大前端解析慢。
|
||||
|
||||
5. Universal AI
|
||||
• /stream 结尾必须 concat 完成事件 `event:complete data:{"data":"[DONE]"}`。
|
||||
• /estimate-cost 返回 {success, estimatedCost, errorMessage},不可抛异常给前端。
|
||||
|
||||
────────────────────────────────────────
|
||||
四、性能 & 稳定性
|
||||
|
||||
1. I/O 超时
|
||||
• WebClient/DQL 调 OpenAI 等第三方应限 2min;大任务另行异步处理并用 SSE 推进度。
|
||||
|
||||
2. 压力保护
|
||||
• 单 userId 并发流连接 ≤ 10;可在 Service 层做计数。
|
||||
• 若超额返回 429 JSON 并在 SSE 推送 error 事件。
|
||||
|
||||
3. 日志
|
||||
• slf4j 级别:info 记录业务流程 & 关键ID;debug 打开 JSON 细节;error 打印堆栈。
|
||||
• 不得在生产输出完整 prompt / apiKey。
|
||||
|
||||
────────────────────────────────────────
|
||||
五、代码质量守则
|
||||
|
||||
1. Controller 只做参数检查 + 日志 + 调 Service;禁止业务逻辑堆叠。
|
||||
2. Service 返回 Mono.error 时务必带语义化 message,前端直接展示。
|
||||
3. DTO 层禁止 Lombok @Data;使用 @Getter/@Setter 或 record,避免 JSON 循环引用。
|
||||
4. 所有 Mono/Flux 链路结尾必须 `onErrorResume` 友好处理,不能把 Reactor 异常原样抛给客户。
|
||||
5. 不得在 SSE 控制器里使用 `share()` 导致多次订阅;一个请求一个冷流或 Service 级共享 hot 流。
|
||||
|
||||
────────────────────────────────────────
|
||||
六、提交前检查清单(后端)
|
||||
☐ 路径不含重复 /api/v1
|
||||
☐ DTO 字段 @NotBlank 检验通过,全局异常处理返回统一结构
|
||||
☐ novelId 校验正确,跨用户/跨小说数据隔离
|
||||
☐ SSE 事件名符合白名单,结尾发送 complete 或 [DONE]
|
||||
☐ 日志不输出敏感信息(apiKey, prompt)
|
||||
☐ 新增接口在 Controller + Service + DTO 均写单元测试
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
21
.cursor/rules/frontend_structure.mdc
Normal file
21
.cursor/rules/frontend_structure.mdc
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Frontend Structure (AINoval - Flutter)
|
||||
|
||||
- **Entry Point**: [lib/main.dart](mdc:AINoval/lib/main.dart)
|
||||
- **Dependencies**: [pubspec.yaml](mdc:AINoval/pubspec.yaml)
|
||||
- **Configuration**: [lib/config/app_config.dart](mdc:AINoval/lib/config/app_config.dart)
|
||||
- **Source Code**: `lib/`
|
||||
- `blocs/`: Business logic components (State Management)
|
||||
- `config/`: Configuration files
|
||||
- `l10n/`: Internationalization resources
|
||||
- `models/`: Data models
|
||||
- `repositories/`: Data repositories
|
||||
- `screens/`: Screen/Page components
|
||||
- `services/`: Service layer (API calls, etc.)
|
||||
- `utils/`: Utility classes
|
||||
- **Assets**: `assets/`
|
||||
- **Tests**: `test/`
|
||||
773
.cursor/rules/gloalrule.mdc
Normal file
773
.cursor/rules/gloalrule.mdc
Normal file
@@ -0,0 +1,773 @@
|
||||
---
|
||||
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设计和实现说明
|
||||
- 前端产品敏捷迭代计划: 前端开发计划和里程碑
|
||||
15
.cursor/rules/project_overview.mdc
Normal file
15
.cursor/rules/project_overview.mdc
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Project Overview
|
||||
|
||||
AINovalWriter is an AI-assisted novel writing platform consisting of a frontend application (Flutter) and a backend service (Spring Boot).
|
||||
|
||||
- Frontend Entry Point: [AINoval/lib/main.dart](mdc:AINoval/lib/main.dart)
|
||||
- Backend Entry Point: [AINovalServer/src/main/java/com/ainovel/server/AiNovelServerApplication.java](mdc:AINovalServer/src/main/java/com/ainovel/server/AiNovelServerApplication.java)
|
||||
- Project Structure Documentation: [项目架构说明.md](mdc:项目架构说明.md)
|
||||
- Frontend README: [AINoval/README.md](mdc:AINoval/README.md)
|
||||
- Backend README: [AINovalServer/README.md](mdc:AINovalServer/README.md)
|
||||
- Overall Documentation: See [documentation_links.mdc](mdc:.cursor/rules/documentation_links.mdc)
|
||||
6
.cursor/rules/web.mdc
Normal file
6
.cursor/rules/web.mdc
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
在前端实现组件的时候,要设置合理的长宽,使得布局不臃肿也不拥挤,同时使用全局主题和全局样式,使用纯黑和纯白的组合,保持flutter现代和简洁的风格,尽量使用和创建全局通用组件,并添加相关的说明注释
|
||||
Reference in New Issue
Block a user