Skip to content

feat(providers): 新增 Fal 队列协议面 #568

Description

@johnnyzhang-eng

背景

#332 的接缝已由 #561 落地:JobProtocol 与 OpenAI 面实现在 providers/protocol/。本 issue 承接第二步,只新增 Fal 队列面的协议实现与脱网单测,不接线、不换主力模型。

问题

veo / seedance / vidu 与 kling 的多数型号只在队列面,/v1/videos 的 model 枚举里没有它们。而队列面与 OpenAI 面有三处形态不同,没有一处能靠拼字符串推出来:

  • 鉴权头是 Authorization: Key,不是 Bearer
  • 首帧字段名按型号族不同:fal-ai/kling-video/o1start_image_url,seedance / veo / vidu 是 image_url
  • 轮询与取结果的地址不是提交路径加 /requests,而是取提交端点的前两段

另有两处只能靠实测发现的行为:/status 对成功与失败都返回 COMPLETED,成败只在取结果那一步显形;取结果时的 HTTP 400 可能表示「还没好」而非请求错。

范围

  • providers/protocol/fal_queue.pyFalQueueVideoProtocol,端点 → 首帧字段名走显式表,不按字符串猜
  • JobProtocolparse_fetch:原五函数接口没有解析取结果响应的位置,而这一面的成败恰在那一步
  • 脱网单测,用实测响应体当 fixture

不包含

验收

  • 鉴权头、queue 前缀、两种首帧字段名、轮询前缀规则各有用例
  • COMPLETED 但取结果 500」判失败、「取结果 400 且体内 IN_PROGRESS」判未就绪,各有用例
  • 同一个 VideoRequest 分别过两个协议,AdapterResult 字段集一致
  • ruff check .lint-importspytest -qexport_openapiopenapi.json 无漂移

Refs #332

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions