Commit Graph

2 Commits

Author SHA1 Message Date
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