mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
refactor: 推进后端分层架构治理
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""阶段 4 六个重点 Chain 的纵向切片数量守卫。"""
|
||||
|
||||
import inspect
|
||||
|
||||
import pytest
|
||||
|
||||
from app.chain.download import DownloadChain
|
||||
from app.chain.media import MediaChain
|
||||
from app.chain.message import MessageChain
|
||||
from app.chain.search import SearchChain
|
||||
from app.chain.subscribe import SubscribeChain
|
||||
from app.chain.transfer import TransferChain
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("chain_type", "method_tokens"),
|
||||
[
|
||||
(
|
||||
SubscribeChain,
|
||||
{
|
||||
"exists": "_subscription_query",
|
||||
"get_subscribe_by_source": "_subscription_query",
|
||||
"has_music_subscribe": "_subscription_query",
|
||||
},
|
||||
),
|
||||
(
|
||||
SearchChain,
|
||||
{
|
||||
"save_last_search_params": "_search_state",
|
||||
"last_search_params": "_search_state",
|
||||
"last_search_results": "_search_state",
|
||||
},
|
||||
),
|
||||
(
|
||||
TransferChain,
|
||||
{
|
||||
"put_to_queue": "_transfer_queue_service",
|
||||
"remove_from_queue": "_transfer_queue_service",
|
||||
"get_queue_tasks": "_transfer_queue_service",
|
||||
},
|
||||
),
|
||||
(
|
||||
DownloadChain,
|
||||
{
|
||||
"downloading": "_download_task_service",
|
||||
"set_downloading": "_download_task_service",
|
||||
"remove_downloading": "_download_task_service",
|
||||
},
|
||||
),
|
||||
(
|
||||
MediaChain,
|
||||
{
|
||||
"normalize_music_candidates": "MusicCatalogService",
|
||||
"search_music": "_music_catalog",
|
||||
"async_search_music": "_music_catalog",
|
||||
},
|
||||
),
|
||||
(
|
||||
MessageChain,
|
||||
{
|
||||
"remote_clear_session": "_message_session_service",
|
||||
"remote_stop_agent": "_message_session_service",
|
||||
"remote_session_status": "_message_session_service",
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_key_chain_keeps_three_application_service_slices(
|
||||
chain_type: type,
|
||||
method_tokens: dict[str, str],
|
||||
) -> None:
|
||||
"""每个重点 Chain 至少三个公开方法必须继续委托窄应用服务。"""
|
||||
assert len(method_tokens) >= 3
|
||||
missing = []
|
||||
for method_name, service_token in method_tokens.items():
|
||||
method = getattr(chain_type, method_name)
|
||||
if service_token not in inspect.getsource(method):
|
||||
missing.append(f"{chain_type.__name__}.{method_name}->{service_token}")
|
||||
assert missing == []
|
||||
Reference in New Issue
Block a user