## Requirements ### Requirement: 内容模板系统 系统 SHALL 提供 `ContentTemplate` 类(`services/content_template.py`),支持从 JSON 文件加载和管理内容模板。每个模板包含 `name`、`description`、`topic_pattern`、`style`、`prompt_override`(可选)、`tags_preset`(可选)字段。 #### Scenario: 模板文件加载 - **WHEN** `ContentTemplate` 初始化时 - **THEN** SHALL 从 `xhs_workspace/templates.json` 加载模板列表;文件不存在时 SHALL 使用内置默认模板(至少包含"好物种草""日常分享""攻略教程"三个模板) #### Scenario: 模板应用于文案生成 - **WHEN** 用户选择模板后点击生成 - **THEN** 系统 SHALL 将模板的 `prompt_override` 附加到 LLM 系统 prompt 中,`tags_preset` 作为标签默认值 ### Requirement: 批量主题生成 系统 SHALL 支持一次生成多个主题的文案内容,通过 `batch_generate(topics: list, style, template=None)` 方法实现。 #### Scenario: 批量生成返回结果 - **WHEN** 调用 `batch_generate(["主题A", "主题B", "主题C"], "好物种草")` - **THEN** SHALL 返回包含 3 个文案结果的列表,每个结果与 `generate_copy()` 返回结构一致,新增 `batch_index` 字段标识序号 #### Scenario: 批量生成部分失败 - **WHEN** 批量生成中某篇文案生成失败 - **THEN** 系统 SHALL 记录该篇的错误信息(`error` 字段),继续生成剩余主题,不中断整个批次 #### Scenario: 批量生成数量限制 - **WHEN** `topics` 列表长度超过 10 - **THEN** 系统 SHALL 返回错误提示,拒绝执行(防止 LLM 配额消耗过大) ### Requirement: 草稿队列管理 批量生成的结果 SHALL 自动存入 `PublishQueue`,状态为 `draft`,用户可在发布队列 UI 中逐篇审核、编辑、排期。 #### Scenario: 批量结果入队 - **WHEN** `batch_generate()` 成功返回 N 篇文案 - **THEN** 系统 SHALL 将每篇文案以 `draft` 状态插入 `PublishQueue`,包含 title、content、tags、sd_prompt 字段 #### Scenario: 草稿可独立操作 - **WHEN** 用户在 UI 中选中某篇草稿 - **THEN** SHALL 支持编辑标题/正文/标签、单独发布、丢弃等操作,不影响同批次其他草稿 ### Requirement: 一键批量导出 系统 SHALL 支持将多篇文案一次性导出到本地,每篇创建独立文件夹(复用 `one_click_export` 逻辑)。 #### Scenario: 批量导出目录结构 - **WHEN** 用户点击批量导出并选中 3 篇文案 - **THEN** 系统 SHALL 在 `xhs_workspace/` 下为每篇创建独立的 `{timestamp}_{title}/` 文件夹,各含 `文案.txt`