From 05570f8cb37d40e7b7f24a3bab86b4d8295c0cab Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 29 Aug 2026 06:42:35 +0800 Subject: [PATCH] docs(architecture): activate search chain refactor --- docs/architecture-refactor-roadmap.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/architecture-refactor-roadmap.md b/docs/architecture-refactor-roadmap.md index 8d75a3627..7bf1e1096 100644 --- a/docs/architecture-refactor-roadmap.md +++ b/docs/architecture-refactor-roadmap.md @@ -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