# `stories.py` 拆分分析 (Phase 2 准备) ## 当前职责 `app/api/stories.py` (591 行) 承担了以下职责: | 职责 | 行数 | 描述 | |---|---|---| | Pydantic 模型 | ~50 行 | `GenerateRequest`, `StoryResponse`, `FullStoryResponse` 等 | | 验证逻辑 | ~40 行 | `_validate_profile_and_universe` | | 路由 + 业务 | ~300 行 | `generate_story`, `generate_story_full`, `generate_story_stream` | | 绘本逻辑 | ~170 行 | `generate_storybook_api` (含并行图片生成) | | 成就查询 | ~30 行 | `get_story_achievements` | ## 缺失端点 测试中引用但 **未实现** 的端点(这些应在拆分时一并补充): - `GET /api/stories` — 故事列表 (分页) - `GET /api/stories/{id}` — 故事详情 - `DELETE /api/stories/{id}` — 故事删除 - `POST /api/image/generate/{id}` — 封面图片生成 - `GET /api/audio/{id}` — 语音朗读 ## 建议拆分结构 ``` app/ ├── schemas/ │ └── story_schemas.py # [NEW] Pydantic 模型 ├── services/ │ └── story_service.py # [NEW] 核心业务逻辑 └── api/ ├── stories.py # [SLIM] 路由定义 + 依赖注入 └── stories_storybook.py # [NEW] 绘本相关端点 (可选) ``` ### `story_schemas.py` - 迁移所有 Pydantic 模型 - 包括 `GenerateRequest`, `StoryResponse`, `FullStoryResponse`, `StorybookRequest`, `StorybookResponse` 等 ### `story_service.py` - `validate_profile_and_universe()` — 验证逻辑 - `create_story()` — 故事入库 - `generate_and_save_story()` — 生成 + 保存联合操作 - `generate_storybook_with_images()` — 绘本并行图片生成 - 补充: `list_stories()`, `get_story()`, `delete_story()` ### `stories.py` (瘦路由层) - 仅保留 `@router` 装饰器和依赖注入 - 调用 service 层完成业务逻辑 - 预计 150-200 行