docs(puzzle): record reference asset upload flow

This commit is contained in:
kdletters
2026-05-21 19:22:51 +08:00
parent 5834a99107
commit fda916ac63
6 changed files with 24 additions and 10 deletions

View File

@@ -62,13 +62,13 @@
- 验证:`SELECT event_id, scope_id AS provider, metadata_json, occurred_at FROM tracking_event WHERE event_key = 'external_api_call_failure' ORDER BY occurred_at DESC LIMIT 50;`;如果查不到同时看 tracking outbox 目录权限和 sealed 文件是否堆积。
- 关联:`server-rs/crates/api-server/src/external_api_audit.rs``server-rs/crates/api-server/src/openai_image_generation.rs``docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md``docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`
## release 创作接口 413 先查 Nginx 请求体上限
## release 创作接口 413 先查是否还在提交 Data URL
- 现象release 上 `POST /api/runtime/puzzle/agent/sessions/{session_id}/actions` 携带参考图 Data URL 时返回 `413 Request Entity Too Large`access log 显示 `request_time=0.000``upstream_status=-`
- 原因Nginx 默认 `client_max_body_size` 只有 1 MiB请求在反代层被拒绝,根本没有到达 `api-server`即使 Rust 路由已通过 `DefaultBodyLimit` 放宽到更大的参考图请求体也不会生效
- 处理:在 release、development-http 和容器 Nginx 模板的通用 `/api` location 设置 `client_max_body_size 64m`;该值只负责放行到 `api-server`,真实业务上限继续由路由 `DefaultBodyLimit` 和解码后字节校验承担。发布后运行 `nginx -t && nginx -s reload`
- 验证:`nginx -T 2>/dev/null | grep client_max_body_size` 应能看到 `client_max_body_size 64m;`;再次提交大于 1 MiB 的参考图请求时,access log 应出现正常 `upstream_status`不再是 Nginx 直接 413
- 关联:`deploy/nginx/genarrative.conf``deploy/nginx/genarrative-dev-http.conf``deploy/container/nginx.conf``deploy/nginx/README.md``docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`
- 原因Nginx 默认 `client_max_body_size` 只有 1 MiB请求在反代层被拒绝,根本没有到达 `api-server`即使模板放宽到 `64m`,把图片 base64 放进创作 JSON body 仍会放大请求体并把上限问题推给下一层
- 处理:长期修复不是继续调大 Nginx而是让浏览器先走 `/api/assets/direct-upload-tickets` 直传 OSS`/api/assets/objects/confirm` 确认 `asset_object`,拼图 action 只提交 `referenceImageAssetObjectId(s)`;后端校验 owner / bucket / kind / MIME / size 后签只读 URL 给 VectorEngine。Nginx `client_max_body_size 64m` 只保留为旧客户端和兼容输入兜底,发布后仍需 `nginx -t && nginx -s reload`
- 验证:前端 action payload 不应再出现大段 `data:image/...;base64``nginx -T 2>/dev/null | grep client_max_body_size` 可确认反代兜底;再次提交参考图时 access log 应正常 `upstream_status`后端测试 `puzzle_reference_image_sources_prefer_asset_object_ids` / `puzzle_asset_object_reference_requires_matching_owner` 应通过
- 关联:`src/services/puzzle-works/puzzleAssetClient.ts``server-rs/crates/api-server/src/puzzle/vector_engine.rs``deploy/nginx/genarrative.conf``deploy/nginx/genarrative-dev-http.conf``deploy/container/nginx.conf``docs/【玩法创作】平台入口与玩法链路-2026-05-15.md``docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`
## 汪汪声浪入口不要再回到独立配置阶段