mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-05 14:48:40 +08:00
docs(architecture): activate search chain refactor
This commit is contained in:
@@ -137,8 +137,8 @@ canonical 主程序;兼容只经统一 Compat/SDK 门面提供。
|
||||
| S3-L1 TransferChain | `VERIFIED` | S1-L1 | 旧 `transfer.py`/`_transfer.py` 单体退役,由 `app.chain.transfer` 同名职责包承接;queue/recovery、plan、execute、settle、history/notify 各有唯一 owner,原 836 行执行方法消失,包根只保留稳定 ABI |
|
||||
| S3-L2 SubscribeChain | `VERIFIED` | S1-L5 | 旧 `subscribe.py` 单体退役,由 `app.chain.subscribe` 同名职责包承接;search、match、refresh、completion、reference reconciliation、notification 各有唯一 owner,包根只保留稳定 `SubscribeChain` |
|
||||
| S3-L3 Scheduler | `VERIFIED` | S2-L3 | 旧 `app/scheduler.py` 已退役并迁入 `app.scheduler` 同名包;catalog、execution/bridge/progress、`ExecutionRegistry`、reconciler、lifecycle 与 maintenance 已分离,业务 callable 由 startup 经 `SchedulerServices` 注入,包内无参 Chain 构造清零;功能/生命周期 215 项、架构/兼容/文档 189 项通过,官方插件基线语义未变化 |
|
||||
| S3-L4 DownloadChain | `VERIFIED` | S1-L6 | 旧单体退役;selection、submission、batch、history、post-processing 等职责进入同名包单一 owner,提交后动作遵守新完成语义 |
|
||||
| S3-L5 SearchChain | `PLANNED` | S2-L7 | plan、provider fan-out、result state、pagination 分离,状态 owner 唯一 |
|
||||
| S3-L4 DownloadChain | `DELIVERED` | S1-L6 | `7941fd921`:旧单体退役;selection、submission、batch、history、post-processing 等职责进入同名包单一 owner,提交后动作遵守新完成语义;锁定全量 `7162 passed, 9 skipped`,远端 `0/0` |
|
||||
| S3-L5 SearchChain | `ACTIVE` | S2-L7 | plan、provider fan-out、result state、pagination 分离,状态 owner 唯一 |
|
||||
| S3-L6 MediaChain | `PLANNED` | S2-L2 | recognition、source projection、music alignment、cache 分离,兼容仅经统一层 |
|
||||
| S3-L7 Agent/System/Plugin API | `PLANNED` | S2,S1-L6 | WebAgent SSE/file/audio、nettest/log/update/market 用例进入 Application,endpoint 只做传输适配 |
|
||||
|
||||
@@ -171,26 +171,25 @@ canonical 主程序;兼容只经统一 Compat/SDK 门面提供。
|
||||
|
||||
## 4. 当前活动叶子
|
||||
|
||||
### S3-L4 DownloadChain
|
||||
### S3-L5 SearchChain
|
||||
|
||||
**Status:** `VERIFIED`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
**Outcome**
|
||||
|
||||
退役 `app/chain/download.py` 单体,由同名 `app.chain.download` 包分别承接选择、提交、批量执行、
|
||||
缺集判断、失败冷却、历史结算、提交后处理、字幕和任务控制。包根只惰性保留稳定
|
||||
`DownloadChain`,Facade 只组合 owner 与稳定事件入口;主程序不保留 `source.py`、旧实现或内部
|
||||
owner/port 重复导出。
|
||||
退役 `app/chain/search.py` 单体,由同名 `app.chain.search` 包承接搜索计划、provider fan-out、
|
||||
分页、结果状态、AI 推荐、字幕与音乐搜索等职责。包根只惰性保留稳定 `SearchChain`,Facade 只组合
|
||||
职责 owner 与稳定入口;主程序不保留 `source.py`、旧实现或内部 owner/port 重复导出。
|
||||
|
||||
下载成功时,历史、文件和 durable Outbox intent 必须在同一事务内提交;通知、后台后处理和即时
|
||||
事件只能在 commit 成功后执行。提交失败不得留下业务历史、通知或事件副作用。
|
||||
同步、异步和流式入口必须复用同一组纯规则与状态 owner;provider 并发、取消、分页推进和结果发布
|
||||
各自只有一个执行所有者,不能通过复制现有大方法形成多套业务实现。
|
||||
|
||||
**Acceptance**
|
||||
|
||||
- 公开 `DownloadChain` 类身份、方法签名、MRO、pickle 身份和官方插件调用形态不变。
|
||||
- 公开 `SearchChain` 类身份、方法签名、MRO、pickle 身份和官方插件调用形态不变。
|
||||
- `app/plugins/**` 不扫描、不修改;官方插件仓通过独立宿主兼容基线验证。
|
||||
- 事件事实扫描完整识别包内 producer/consumer,不得以刷新 baseline 丢弃合法事实。
|
||||
- Download 专项、事务/Outbox、架构/兼容、mypy/Ruff/complexity、scoped Pylint 全部通过。
|
||||
- 搜索计划、provider fan-out、分页、取消和状态发布的同步/异步/流式行为保持一致并有回归覆盖。
|
||||
- Search 专项、架构/兼容、mypy/Ruff/complexity、scoped Pylint 全部通过;广泛变更运行锁定全量。
|
||||
- 本叶提交推送后确认远端 SHA、祖先关系和 ahead/behind `0/0`。
|
||||
|
||||
### S1-L1.1 Durable admission
|
||||
|
||||
Reference in New Issue
Block a user