# 拼图图片提示词脚本拆分 ## 背景 拼图结果页的图片生成已经由 `server-rs/crates/api-server/src/puzzle.rs` 负责外部 I/O 编排、DashScope 请求、候选图落 OSS 与 SpacetimeDB 持久化。原先正式提示词和反向提示词也内联在同一文件里,后续调整拼图图片画面约束时容易误碰生成任务、资产绑定或候选池逻辑。 ## 本轮落地边界 1. 拼图图片提示词统一放到 `server-rs/crates/api-server/src/prompt/puzzle/image.rs`。 2. `puzzle.rs` 只负责读取提示词构建结果,并继续处理 DashScope、OSS、SpacetimeDB 写回。 3. 提示词模块只暴露: - `build_puzzle_image_prompt(level_name, prompt)` - `PUZZLE_DEFAULT_NEGATIVE_PROMPT` 4. 文生图和图生图继续共用同一份最终提示词,避免同一玩法下出现两套画面约束。 ## 编码约束 1. 不把图片生成逻辑下沉到 SpacetimeDB reducer;外部 I/O 必须留在 `api-server`。 2. 不改候选图 JSON 持久化结构,仍使用 `module-puzzle::PuzzleGeneratedImageCandidate` 对应的 snake_case 字段。 3. 不改前端 UI 文案和交互;本轮只拆后端提示词脚本。 4. 后续若调整拼图图片风格、尺寸、禁止元素或切块可读性要求,优先修改 `prompt/puzzle/image.rs`,再按需补测试。 ## 验收 1. `cargo test -p api-server puzzle_image` 通过。 2. `npm run check:encoding` 通过,确认新增中文文档和 Rust 注释仍是 UTF-8。