Files
Auto_Bangumi/docs/dev/plugins/points/conflict-policy.md
Estrella Pan 3258fcca4b docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
2026-10-08 14:51:00 +02:00

19 lines
1.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 版本冲突策略(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`。