Files
dreamweaver/docs/archive/stories-split-analysis-legacy.md

1.9 KiB

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 行