This commit is contained in:
2026-05-14 14:21:17 +08:00
parent 7a75f5d612
commit d33c937ebc
191 changed files with 1916 additions and 1549 deletions

View File

@@ -32,8 +32,8 @@
5. 参考图入口继续在画面描述输入框右下角,模型选择在左下角,两者不得遮挡文本。
6. 表单创建 session、自动保存表单草稿、首图生成失败重试时都要保留当前模型选择。
7. 结果页关卡重新生成时将当前模型随 `generate_puzzle_images` action 传给后端。
8. “生成草稿”和关卡详情“生成画面 / 重新生成画面”按钮文本右侧展示 `消耗2点`
9. 关卡详情点击“生成画面 / 重新生成画面”后先弹出确认消耗点弹窗,确认后开始请求;按钮区域切换为 30 秒倒计时进度条,并展示预计剩余生成完成时间。
8. “生成草稿”和关卡详情“生成画面 / 重新生成画面”按钮文本右侧展示 `消耗2点`
9. 关卡详情点击“生成画面 / 重新生成画面”后先弹出确认消耗点弹窗,确认后开始请求;按钮区域切换为 30 秒倒计时进度条,并展示预计剩余生成完成时间。
## 后端路由
@@ -49,7 +49,7 @@
7. `save_puzzle_generated_images` 写回草稿时若遇到 SpacetimeDB 连接级 `503` 或断线API 层基于本次生成结果合成 session 快照返回给前端,避免 VectorEngine 已成功出图却被后置持久化误报成服务不可用。余额不足、参数错误、上游生图失败仍按原错误返回,不做伪成功。
8. 结果页 `generate_puzzle_images` 会携带当前作品信息和 `levelsJson`。当 SpacetimeDB 在读取 session 阶段就返回连接级 `503` 或断线时,后端必须先用这份结果页快照构造最小内存 session再继续调用 VectorEngine外部图片已经生成后仍按第 6、7 条处理持久化降级。余额不足、参数错误、缺少草稿快照、关卡不存在等业务错误不走此降级。
9. VectorEngine 错误统一映射为 `502 UPSTREAM_ERROR``details.provider = "vector-engine"`,保留上游状态码、业务 message 和截断后的 raw excerpt。
10. 拼图首图生成 `compile_puzzle_draft` 与关卡图片生成 `generate_puzzle_images` 每次预扣 `2` 点;余额不足仍返回 `409 CONFLICT`SpacetimeDB 连接级 503 仍按既有降级策略处理。
10. 拼图首图生成 `compile_puzzle_draft` 与关卡图片生成 `generate_puzzle_images` 每次预扣 `2` 点;余额不足仍返回 `409 CONFLICT`SpacetimeDB 连接级 503 仍按既有降级策略处理。
## 关卡名多模态生成
@@ -79,6 +79,6 @@ VECTOR_ENGINE_IMAGE_REQUEST_TIMEOUT_MS=180000
4. 历史 `original` 或空模型值不会再触发 DashScope统一按 `gpt-image-2` 请求 VectorEngine。
5. 选择图片模型时,请求 `POST {VECTOR_ENGINE_BASE_URL}/v1/images/generations`,使用 `Authorization: Bearer {VECTOR_ENGINE_API_KEY}`,上游 `model = gpt-image-2-all`,不携带 `official_fallback``size = 1024x1024`
6. 首图和结果页关卡重新生图成功后Network 中应先完成 VectorEngine 图片生成,再调用 APIMart `POST {APIMART_BASE_URL}/chat/completions`,请求模型为 `gpt-4o-mini`,消息同时包含画面描述文本和正式图 `image_url` Data URL。
7. “生成草稿”和关卡详情生图按钮展示 `消耗2点`;关卡详情确认后展示 30 秒预计剩余进度条。
7. “生成草稿”和关卡详情生图按钮展示 `消耗2点`;关卡详情确认后展示 30 秒预计剩余进度条。
8. 不改 SpacetimeDB 表结构,因此无需更新 `migration.rs` 或重新生成 bindings。
9. 后端改动后运行对应 Rust 测试,并按项目约束用 `npm run api-server` 重启验证。