mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-31 12:45:41 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
19 lines
1.2 KiB
Markdown
19 lines
1.2 KiB
Markdown
# 版本冲突策略(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`。
|