From 55c80c87da26d5432fc1481ad76c79da3ec0ee89 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 23 Aug 2026 03:15:21 +0800 Subject: [PATCH] refactor: route indexer module settings through runtime --- app/modules/indexer/parser/__init__.py | 4 +++- app/modules/indexer/parser/rousi.py | 6 +++-- app/modules/indexer/spider/__init__.py | 4 +++- app/modules/indexer/spider/haidan.py | 4 +++- app/modules/indexer/spider/hddolby.py | 4 +++- app/modules/indexer/spider/mtorrent.py | 4 +++- app/modules/indexer/spider/rousi.py | 4 +++- app/modules/indexer/spider/sunnypt.py | 4 +++- app/modules/indexer/spider/tnode.py | 4 +++- app/modules/indexer/spider/torrentleech.py | 4 +++- app/modules/indexer/spider/yema.py | 4 +++- .../backend-architecture-next-stage.md | 2 ++ .../configuration-debt-baseline.json | 13 +--------- .../architecture/dependency-baseline.json | 24 +++++++++---------- 14 files changed, 49 insertions(+), 36 deletions(-) diff --git a/app/modules/indexer/parser/__init__.py b/app/modules/indexer/parser/__init__.py index 2dad3d202..8247160aa 100644 --- a/app/modules/indexer/parser/__init__.py +++ b/app/modules/indexer/parser/__init__.py @@ -8,7 +8,9 @@ from urllib.parse import urljoin, urlsplit from requests import Session -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.adapters.network.cloudflare import under_challenge from app.runtime.log import logger from app.adapters.network.http import RequestUtils diff --git a/app/modules/indexer/parser/rousi.py b/app/modules/indexer/parser/rousi.py index 26d079ae7..28978b186 100644 --- a/app/modules/indexer/parser/rousi.py +++ b/app/modules/indexer/parser/rousi.py @@ -4,7 +4,9 @@ from urllib.parse import urljoin from typing import Optional, Tuple from app.runtime.log import logger -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.adapters.network.http import RequestUtils from app.domain import site as site_rules from app.foundation import temporal as time_tools @@ -232,4 +234,4 @@ class RousiSiteUserInfo(SiteParserBase): proxies=settings.PROXY if self._proxy else None ).post_res( url=urljoin(self._base_url, "api/messages/read-all") - ) \ No newline at end of file + ) diff --git a/app/modules/indexer/spider/__init__.py b/app/modules/indexer/spider/__init__.py index 24f768812..5f8e4f38b 100644 --- a/app/modules/indexer/spider/__init__.py +++ b/app/modules/indexer/spider/__init__.py @@ -9,7 +9,9 @@ from fastapi.concurrency import run_in_threadpool from jinja2 import Template from pyquery import PyQuery -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.schemas.types import MediaType from app.adapters.system import rust as rust_accel diff --git a/app/modules/indexer/spider/haidan.py b/app/modules/indexer/spider/haidan.py index 5ebba3885..bad502493 100644 --- a/app/modules/indexer/spider/haidan.py +++ b/app/modules/indexer/spider/haidan.py @@ -1,7 +1,9 @@ import urllib.parse from typing import Tuple, List -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.application.configuration import get_configured_system_config as SystemConfigOper from app.runtime.log import logger from app.schemas.types import MediaType diff --git a/app/modules/indexer/spider/hddolby.py b/app/modules/indexer/spider/hddolby.py index 1b60c3488..76367095b 100644 --- a/app/modules/indexer/spider/hddolby.py +++ b/app/modules/indexer/spider/hddolby.py @@ -1,6 +1,8 @@ from typing import Tuple, List, Optional -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.application.configuration import get_configured_system_config as SystemConfigOper from app.runtime.log import logger from app.schemas.types import MediaType diff --git a/app/modules/indexer/spider/mtorrent.py b/app/modules/indexer/spider/mtorrent.py index 4e4b8023c..cd5313604 100644 --- a/app/modules/indexer/spider/mtorrent.py +++ b/app/modules/indexer/spider/mtorrent.py @@ -4,7 +4,9 @@ import re from typing import Tuple, List, Optional from urllib.parse import urlparse -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.application.configuration import get_configured_system_config as SystemConfigOper from app.runtime.log import logger from app.schemas.types import MediaType diff --git a/app/modules/indexer/spider/rousi.py b/app/modules/indexer/spider/rousi.py index 342734ced..4040f585d 100644 --- a/app/modules/indexer/spider/rousi.py +++ b/app/modules/indexer/spider/rousi.py @@ -2,7 +2,9 @@ import base64 import json from typing import List, Optional, Tuple -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.application.configuration import get_configured_system_config as SystemConfigOper from app.runtime.log import logger from app.schemas.types import MediaType diff --git a/app/modules/indexer/spider/sunnypt.py b/app/modules/indexer/spider/sunnypt.py index b8aaac039..ea4d702a0 100644 --- a/app/modules/indexer/spider/sunnypt.py +++ b/app/modules/indexer/spider/sunnypt.py @@ -3,7 +3,9 @@ import json import time from typing import List, Optional, Tuple -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.schemas.types import MediaType from app.adapters.network.http import AsyncRequestUtils, RequestUtils diff --git a/app/modules/indexer/spider/tnode.py b/app/modules/indexer/spider/tnode.py index 19bbcd6c0..0773c5cd4 100644 --- a/app/modules/indexer/spider/tnode.py +++ b/app/modules/indexer/spider/tnode.py @@ -2,7 +2,9 @@ import re from typing import Tuple, List, Optional from app.runtime.cache import cached -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.adapters.network.http import RequestUtils, AsyncRequestUtils from app.foundation.singleton import SingletonClass diff --git a/app/modules/indexer/spider/torrentleech.py b/app/modules/indexer/spider/torrentleech.py index b50d8f1e2..54f98e772 100644 --- a/app/modules/indexer/spider/torrentleech.py +++ b/app/modules/indexer/spider/torrentleech.py @@ -1,7 +1,9 @@ from typing import List, Tuple, Optional from urllib.parse import quote -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.schemas.types import MediaType from app.adapters.network.http import RequestUtils, AsyncRequestUtils diff --git a/app/modules/indexer/spider/yema.py b/app/modules/indexer/spider/yema.py index 60a013cb7..4814cba36 100644 --- a/app/modules/indexer/spider/yema.py +++ b/app/modules/indexer/spider/yema.py @@ -2,7 +2,9 @@ import base64 import json from typing import List, Optional, Tuple -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.schemas.types import MediaType from app.adapters.network.http import AsyncRequestUtils, RequestUtils diff --git a/docs/refactor/backend-architecture-next-stage.md b/docs/refactor/backend-architecture-next-stage.md index ec1a05cf3..66a731b97 100644 --- a/docs/refactor/backend-architecture-next-stage.md +++ b/docs/refactor/backend-architecture-next-stage.md @@ -1064,6 +1064,8 @@ Emby、Jellyfin、Feishu、Discord 与 Slack 模块切换到动态运行时配 配置债务由 62 个文件降至 57 个,媒体服务器和消息模块专项测试通过。 文件管理器及 Alist、Rclone、U115、SMB、Alipan 存储实现切换到动态运行时配置,保留模块级 global_vars 与 存储公开方法;配置债务由 57 个文件降至 50 个,文件管理与存储专项测试通过。 +Indexer parser/spider 模块族切换到动态运行时配置,站点搜索 URL、解析与分类行为保持;配置债务由 50 个文件 +降至 39 个,Indexer 专项测试通过。 同日修正适配器配置下沉边界:OCR、CookieCloud、DoH、Rust 和资源签名等低层实现不再直接依赖 `app.application`,由 `app.runtime.settings` 端口承接组合根注入;未启动装配时仍回退旧 Settings ABI, diff --git a/tests/fixtures/architecture/configuration-debt-baseline.json b/tests/fixtures/architecture/configuration-debt-baseline.json index f8a9eddbe..9ce86e501 100644 --- a/tests/fixtures/architecture/configuration-debt-baseline.json +++ b/tests/fixtures/architecture/configuration-debt-baseline.json @@ -9,7 +9,7 @@ "root": "app" }, "settings_imports": { - "count": 50, + "count": 39, "files": [ "app/adapters/system/fsproxy.py", "app/cli.py", @@ -21,17 +21,6 @@ "app/factory.py", "app/main.py", "app/modules/filemanager/storages/local.py", - "app/modules/indexer/parser/__init__.py", - "app/modules/indexer/parser/rousi.py", - "app/modules/indexer/spider/__init__.py", - "app/modules/indexer/spider/haidan.py", - "app/modules/indexer/spider/hddolby.py", - "app/modules/indexer/spider/mtorrent.py", - "app/modules/indexer/spider/rousi.py", - "app/modules/indexer/spider/sunnypt.py", - "app/modules/indexer/spider/tnode.py", - "app/modules/indexer/spider/torrentleech.py", - "app/modules/indexer/spider/yema.py", "app/modules/postgresql/__init__.py", "app/modules/qbittorrent/__init__.py", "app/modules/qqbot/qqbot.py", diff --git a/tests/fixtures/architecture/dependency-baseline.json b/tests/fixtures/architecture/dependency-baseline.json index f4c5d91e0..c21f76dae 100644 --- a/tests/fixtures/architecture/dependency-baseline.json +++ b/tests/fixtures/architecture/dependency-baseline.json @@ -14,7 +14,7 @@ "workflow_to_db": [] }, "edge_count": 6425, - "edge_sha256": "6cd4675c9165f8837860621c2f6c66574dc17e57d6b0b0421145e14b880e2257", + "edge_sha256": "06fb9c478770d0a27b22f8bcde92644fc5a2b14775446953716b4ed492b32042", "edges": [ "app -> app.runtime", "app -> app.runtime.compat", @@ -4326,8 +4326,8 @@ "app.modules.indexer.parser -> app.foundation", "app.modules.indexer.parser -> app.foundation.size", "app.modules.indexer.parser -> app.runtime", - "app.modules.indexer.parser -> app.runtime.config", "app.modules.indexer.parser -> app.runtime.log", + "app.modules.indexer.parser -> app.runtime.settings", "app.modules.indexer.parser.bitpt -> app.foundation", "app.modules.indexer.parser.bitpt -> app.foundation.size", "app.modules.indexer.parser.bitpt -> app.foundation.temporal", @@ -4434,8 +4434,8 @@ "app.modules.indexer.parser.rousi -> app.modules.indexer", "app.modules.indexer.parser.rousi -> app.modules.indexer.parser", "app.modules.indexer.parser.rousi -> app.runtime", - "app.modules.indexer.parser.rousi -> app.runtime.config", "app.modules.indexer.parser.rousi -> app.runtime.log", + "app.modules.indexer.parser.rousi -> app.runtime.settings", "app.modules.indexer.parser.small_horse -> app.foundation", "app.modules.indexer.parser.small_horse -> app.foundation.dom", "app.modules.indexer.parser.small_horse -> app.foundation.size", @@ -4496,8 +4496,8 @@ "app.modules.indexer.spider -> app.foundation.temporal", "app.modules.indexer.spider -> app.foundation.url", "app.modules.indexer.spider -> app.runtime", - "app.modules.indexer.spider -> app.runtime.config", "app.modules.indexer.spider -> app.runtime.log", + "app.modules.indexer.spider -> app.runtime.settings", "app.modules.indexer.spider -> app.schemas", "app.modules.indexer.spider -> app.schemas.types", "app.modules.indexer.spider.haidan -> app.adapters", @@ -4510,8 +4510,8 @@ "app.modules.indexer.spider.haidan -> app.foundation", "app.modules.indexer.spider.haidan -> app.foundation.temporal", "app.modules.indexer.spider.haidan -> app.runtime", - "app.modules.indexer.spider.haidan -> app.runtime.config", "app.modules.indexer.spider.haidan -> app.runtime.log", + "app.modules.indexer.spider.haidan -> app.runtime.settings", "app.modules.indexer.spider.haidan -> app.schemas", "app.modules.indexer.spider.haidan -> app.schemas.types", "app.modules.indexer.spider.hddolby -> app.adapters", @@ -4522,8 +4522,8 @@ "app.modules.indexer.spider.hddolby -> app.domain", "app.modules.indexer.spider.hddolby -> app.domain.site", "app.modules.indexer.spider.hddolby -> app.runtime", - "app.modules.indexer.spider.hddolby -> app.runtime.config", "app.modules.indexer.spider.hddolby -> app.runtime.log", + "app.modules.indexer.spider.hddolby -> app.runtime.settings", "app.modules.indexer.spider.hddolby -> app.schemas", "app.modules.indexer.spider.hddolby -> app.schemas.types", "app.modules.indexer.spider.mtorrent -> app.adapters", @@ -4536,8 +4536,8 @@ "app.modules.indexer.spider.mtorrent -> app.foundation", "app.modules.indexer.spider.mtorrent -> app.foundation.temporal", "app.modules.indexer.spider.mtorrent -> app.runtime", - "app.modules.indexer.spider.mtorrent -> app.runtime.config", "app.modules.indexer.spider.mtorrent -> app.runtime.log", + "app.modules.indexer.spider.mtorrent -> app.runtime.settings", "app.modules.indexer.spider.mtorrent -> app.schemas", "app.modules.indexer.spider.mtorrent -> app.schemas.types", "app.modules.indexer.spider.rousi -> app.adapters", @@ -4550,8 +4550,8 @@ "app.modules.indexer.spider.rousi -> app.foundation", "app.modules.indexer.spider.rousi -> app.foundation.temporal", "app.modules.indexer.spider.rousi -> app.runtime", - "app.modules.indexer.spider.rousi -> app.runtime.config", "app.modules.indexer.spider.rousi -> app.runtime.log", + "app.modules.indexer.spider.rousi -> app.runtime.settings", "app.modules.indexer.spider.rousi -> app.schemas", "app.modules.indexer.spider.rousi -> app.schemas.types", "app.modules.indexer.spider.sunnypt -> app.adapters", @@ -4560,8 +4560,8 @@ "app.modules.indexer.spider.sunnypt -> app.foundation", "app.modules.indexer.spider.sunnypt -> app.foundation.temporal", "app.modules.indexer.spider.sunnypt -> app.runtime", - "app.modules.indexer.spider.sunnypt -> app.runtime.config", "app.modules.indexer.spider.sunnypt -> app.runtime.log", + "app.modules.indexer.spider.sunnypt -> app.runtime.settings", "app.modules.indexer.spider.sunnypt -> app.schemas", "app.modules.indexer.spider.sunnypt -> app.schemas.types", "app.modules.indexer.spider.tnode -> app.adapters", @@ -4572,8 +4572,8 @@ "app.modules.indexer.spider.tnode -> app.foundation.temporal", "app.modules.indexer.spider.tnode -> app.runtime", "app.modules.indexer.spider.tnode -> app.runtime.cache", - "app.modules.indexer.spider.tnode -> app.runtime.config", "app.modules.indexer.spider.tnode -> app.runtime.log", + "app.modules.indexer.spider.tnode -> app.runtime.settings", "app.modules.indexer.spider.torrentleech -> app.adapters", "app.modules.indexer.spider.torrentleech -> app.adapters.network", "app.modules.indexer.spider.torrentleech -> app.adapters.network.http", @@ -4581,8 +4581,8 @@ "app.modules.indexer.spider.torrentleech -> app.foundation.temporal", "app.modules.indexer.spider.torrentleech -> app.foundation.text", "app.modules.indexer.spider.torrentleech -> app.runtime", - "app.modules.indexer.spider.torrentleech -> app.runtime.config", "app.modules.indexer.spider.torrentleech -> app.runtime.log", + "app.modules.indexer.spider.torrentleech -> app.runtime.settings", "app.modules.indexer.spider.torrentleech -> app.schemas", "app.modules.indexer.spider.torrentleech -> app.schemas.types", "app.modules.indexer.spider.yema -> app.adapters", @@ -4591,8 +4591,8 @@ "app.modules.indexer.spider.yema -> app.foundation", "app.modules.indexer.spider.yema -> app.foundation.temporal", "app.modules.indexer.spider.yema -> app.runtime", - "app.modules.indexer.spider.yema -> app.runtime.config", "app.modules.indexer.spider.yema -> app.runtime.log", + "app.modules.indexer.spider.yema -> app.runtime.settings", "app.modules.indexer.spider.yema -> app.schemas", "app.modules.indexer.spider.yema -> app.schemas.types", "app.modules.jellyfin -> app.modules",