Commit Graph

4 Commits

Author SHA1 Message Date
lixi cc538e827f docs: gpt-image-2 取证页错误映射一节按官方 Error codes 页重写
CI / docs-build (push) Successful in 39s
新增三部分:此前猜的五个码名与官方对照(六错五,作为教训留档)、官方表 13 条的
分类一览(全是基础设施与计费,**没有任何内容审核/侵权码**)、逐条抄自文档的映射表。

两处标注清楚的判断:400 的两义用 error.param 的有无区分(推断,附三条依据与取错
代价的不对称分析);Retry-After 暂不接(附可算的理由——Java 侧退避基线已长于服务商
通常给的值)。

另记一条厂商改判:视频过载已从 429 改判为 503,我们两者都归可重试故不受影响,
并说明测试在哪里钉住这个「无影响」。

mkdocs build --strict 通过。
2026-09-21 15:52:41 +08:00
lixi de4e02f805 docs: 新增 OpenAI gpt-image-2 取证页,并修火山页三处过期状态
CI / docs-build (push) Successful in 33s
取证页记录从两份官方文档实际读到的事实:两个端点、参数取舍、尺寸四条算术规则、
响应字段映射、错误映射、同步接口的两笔代价。

两处如实标注的不确定性:
- 尺寸上限「3840x2160」文档未说清逐边还是按像素,本页写明采用的读法与理由
  (逐边理解会禁掉所有高于 2160 的竖图,而 1024x1536 是文档明示的标准竖图)。
- 两份文档都没有错误码表,故错误映射按状态码为主推断,整节挂 ⚠️ 未经证实,
  并写明拿到真实错误数据后的校正路径。

火山页三处已过期的状态:图片适配层已落地(但产物转存仍阻塞,故仍不播种模型)、
HTTP 端点已实现、Java 侧 provider 适配已实现。

mkdocs build --strict 通过。
2026-09-21 12:10:20 +08:00
lixi 8cf8ba41c9 docs: Seedance 取证页补实际开通的两个模型 + 修重构后的过期路径
CI / docs-build (push) Successful in 1m18s
- 新增「账号实际开通的模型」一节(2026-09-20 确认):两个 model ID 的关键限制
  对照表,以及为何限制差异不进目录表而放在 patbond-ai 的 capabilities.py
  (正典 generation_models 无能力列,不发明超出已评审模型的列)。
  记下两处刻意设计:按模型族前缀匹配使小版本升级不必改表;未知模型一律放行,
  使「开通即可用」不退化为「开通还得改代码发版」。
- 说明风格表与图片模型刻意未播种的原因。
- 实现状态表按重构后的分层重写,并记下一处**跨语言约定**:目录表的
  provider_code 必须与适配器的 PROVIDER_CODE 逐字一致,两侧均有测试钉住。
- **修过期路径**:文档头与 §4 还指向重构前已删除的 app/providers/seedance.py
  与 tests/test_errors.py。这正是本项目反复被咬的文档漂移,趁热修掉。

验证:mkdocs build --strict exit 0;secret-scan exit 0。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 15:14:18 +08:00
lixi 0b0317415b docs: 新增火山方舟 Seedance 接口事实与错误码映射取证页
CI / docs-build (push) Successful in 39s
记录从官方文档实际读到的事实,供实现与排查引用,并把开工时「待服务商文档确认
的五项」逐条落定。实现在 patbond-ai(58 测试)。

要点(详见正文):
- **不支持幂等键**:ADR-023 §4 设想的「透传为厂商幂等头」对本供应商不成立,
  风险窗口只能由 max_attempts 兜住。但厂商支持 callback_url,孤儿任务会通过
  回调把 ID 送回——回调在此供应商上是**孤儿回收通道**而非仅延迟优化,
  §4「M4 只做轮询」值得据此复评。
- **产物 URL 仅 24 小时有效**(2.5 另有 100 次下载上限):厂商 URL 不能当存储
  用,存成 external_url 会变死链。**这对挂起中的存储决策是硬约束**——无论选
  本地还是云,都必须在 24 小时内把文件复制到我们自己的存储。
- **两处文档自身的矛盾**已登记并按宽实现:状态枚举在查询文档与回调说明里
  不一致(后者多一个 expired);QuotaExceeded 一码两义(排队超限 vs 额度耗尽,
  只能按 message 判别)。
- 两个免费收益:last_frame_url 可直接作视频封面(R13 把缩略图列为视频成本项,
  实际免费);查询返回 ratio/resolution/fps/duration,Worker 写产物时维度与
  时长在手、无需解码,widthPx/heightPx 债在 AI 产物上零成本可修。
- 取消语义:厂商只支持取消 queued 状态,已 running 的任务取消后仍计费。
- 用户提供的两份文档**文件名与内容装反了**(火山错误码.md 里是查询 API),
  已按实际内容归档并注明,避免他人按文件名读错。

另:V7 目录种子仍待确认账号实际开通的 model ID——文档里的示例值不能直接当种子,
否则 provider_model_name 会指向无权访问的模型(InvalidEndpointOrModel.NotFound)。

验证:secret-scan exit 0;mkdocs build --strict exit 0(已挂导航)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 11:52:01 +08:00