fix: decouple puzzle draft generation lifecycle

This commit is contained in:
kdletters
2026-06-05 23:21:55 +08:00
parent 60709395d0
commit 8e1a62d130
8 changed files with 350 additions and 28 deletions

View File

@@ -71,6 +71,8 @@ spacetime sql <database> "SELECT * FROM puzzle_gallery_card_view LIMIT 1" --serv
VectorEngine 图片生成 / 编辑在 `request_send` 阶段出现 `timeout``connect` 错误时,`platform-image` 会对同一请求最多发送 3 次multipart 图片编辑每次重试都会重新构造 form避免复用已消费的 body。日志中 `VectorEngine 图片请求发送失败,准备重试` 表示本次失败已进入下一次尝试;最终仍失败时才会写入 `external_api_call_failure` 并返回 504。排查生产失败时应同时统计 retry 前的尝试日志和最终 audit避免把一次用户请求内的多次发送误判成多个用户请求。
拼图入口直创的 `compile_puzzle_draft` 是长耗时链路:后端会先快速编译草稿并返回 `image_refining` / `generating` 快照,然后在 api-server 后台任务中完成首图、UI 资产、OSS 持久化、作品投影、计费退款和失败态回写。生产排查小程序 `Failed to fetch` 时,若 Nginx access log 里 action POST 是 `499``upstream_status=-`,说明客户端或 WebView 先断开;此时不应再把长 POST 是否返回作为生成成败依据,而应继续按实际 `session_id` 查后台任务日志、VectorEngine provider 日志、`external_api_call_failure` 和后续 GET 轮询结果。同一用户可能先轮询旧的 `puzzle-session-*`,随后 POST 新建实际生成 session必须用 action POST 的 `request_id``/api/runtime/puzzle/agent/sessions/<session_id>/actions` 路径对齐真实失败请求,避免被前端显示的“来源草稿”误导。
查看本地 Rust / SpacetimeDB 日志:
```bash