diff --git a/pipeline_platform/platform_ability.py b/pipeline_platform/platform_ability.py index 850797a..3ce7ef7 100644 --- a/pipeline_platform/platform_ability.py +++ b/pipeline_platform/platform_ability.py @@ -1165,8 +1165,21 @@ def _tpl_from_example(example, capability): if v == '' or v is None: out[k] = _put('{{ params.%s|tojson }}' % k) # 无示例值:调用必传 else: - out[k] = _put('{{ params.%s|default(%s)|tojson }}' - % (k, json.dumps(v, ensure_ascii=False))) + # 数值强转(2026-09-06 真实调用实抓):wan3.0 零媒体 t2v 提交 + # 报 InvalidParameter "Input should be a valid integer: + # parameters.duration"——params 来自表单/agent 时常为字符串 "5", + # 直接 tojson 出 "5"(带引号)被 API 拒。文档示例是 int/float 的 + # 参数按示例类型强转,字符串数字也能落到正确 JSON 类型。 + # bool 是 int 子类须先排除(bool 不加 |int,避免 UI 真值语义被改写)。 + coerce = '' + if isinstance(v, bool): + pass + elif isinstance(v, int): + coerce = '|int' + elif isinstance(v, float): + coerce = '|float' + out[k] = _put('{{ (params.%s|default(%s))%s|tojson }}' + % (k, json.dumps(v, ensure_ascii=False), coerce)) return out body = walk(tree)