版本冲突策略(conflict_policy)
新种子的规范文件名已被另一个种子占用时,决定保留旧的还是替换。典型场景:同一集的 v2 发布。@provider(points.CONFLICT_POLICY, id=...) 返回 ConflictPolicy。
python
from ab_sdk.rename import ConflictDecision, ConflictRequest
class ReplaceUpgradesOnly:
def decide(self, request: ConflictRequest) -> ConflictDecision:
if request.strict_upgrade:
return ConflictDecision("replace")
return ConflictDecision("hold", "不是同一发布的更高版本")ConflictRequest:target_path、incoming(新种子)、owners(占用者)、strict_upgrade(唯一占用者与新种子是同一发布,且新种子版本号更高)。hold保留旧文件,新种子等待;reason展示给用户。replace删除旧任务及其文件。- 宿主只在「唯一占用者、双方都是单文件种子、双方解析身份完整」时执行
replace,其它情况一律按hold处理。 - 宿主自带
hold与replace,即设置项「版本冲突策略」的两个选项。用plugins.slots.conflict_policy选择(默认hold)。选中的 id 未登记时,退回hold。