## Requirements ### Requirement: 内容生成函数迁移至独立模块 系统 SHALL 将内容生成、图片生成、发布及导出相关函数从 `main.py` 提取至 `services/content.py`,包括:`generate_copy`、`generate_images`、`one_click_export`、`publish_to_xhs`、`batch_generate_copy`、`generate_copy_with_topic_engine`。 #### Scenario: 模块导入成功 - **WHEN** `main.py` 执行 `from services.content import generate_copy, generate_images, publish_to_xhs, one_click_export, batch_generate_copy, generate_copy_with_topic_engine` - **THEN** 所有函数可正常调用,行为与迁移前完全一致 #### Scenario: 内容生成保留现有验证逻辑 - **WHEN** 调用 `publish_to_xhs` 时标题超过 20 字或图片数量不合法 - **THEN** 函数 SHALL 返回与迁移前相同的错误提示,不改变验证行为 #### Scenario: 临时文件清理逻辑保留 - **WHEN** `publish_to_xhs` 执行完毕(成功或失败) - **THEN** `finally` 块中的 AI 临时文件清理逻辑 SHALL 正常执行 #### Scenario: 智能选题创作入口 - **WHEN** 调用 `generate_copy_with_topic_engine(count=N)` 时 - **THEN** 系统 SHALL 先通过 `TopicEngine().recommend(count=N)` 获取推荐选题,再对排名第一的选题自动调用 `generate_copy()`,返回文案结果和使用的选题信息 #### Scenario: 批量创作入口 - **WHEN** 调用 `batch_generate_copy(topics: list, style: str, persona=None)` 时 - **THEN** 系统 SHALL 对列表中的每个 `topic` 依次调用 `generate_copy(topic, style, persona)`,并将所有结果以列表形式返回,单个 topic 失败时记录错误并继续处理后续项,不中断整体流程