refactor: route metadata module settings through runtime

This commit is contained in:
jxxghp
2026-08-23 03:01:29 +08:00
parent c5f0bd4fb7
commit 4641db7f5b
13 changed files with 44 additions and 32 deletions
+3 -1
View File
@@ -9,7 +9,9 @@ from pathlib import Path
from typing import Any, Optional, Tuple, Union from typing import Any, Optional, Tuple, Union
from uuid import UUID from uuid import UUID
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.runtime.log import logger from app.runtime.log import logger
from app.modules import _ModuleBase from app.modules import _ModuleBase
from app.schemas.types import ModuleType, OtherModulesType from app.schemas.types import ModuleType, OtherModulesType
+3 -1
View File
@@ -1,7 +1,9 @@
from typing import List, Optional, Tuple, Union from typing import List, Optional, Tuple, Union
from app.schemas.context import MediaPerson as _SchemaMediaPerson from app.schemas.context import MediaPerson as _SchemaMediaPerson
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.domain.context import MediaInfo from app.domain.context import MediaInfo
from app.domain.meta.metabase import MetaBase from app.domain.meta.metabase import MetaBase
from app.domain.scraper import MediaScraperHelper from app.domain.scraper import MediaScraperHelper
+3 -1
View File
@@ -2,7 +2,9 @@ from datetime import date
from typing import Optional from typing import Optional
from app.runtime.cache import cached 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.runtime.log import logger
from app.adapters.network.http import AsyncRequestUtils, RequestUtils from app.adapters.network.http import AsyncRequestUtils, RequestUtils
+3 -1
View File
@@ -2,7 +2,9 @@ from dataclasses import dataclass
from typing import Any, List, Optional, Tuple, Union from typing import Any, List, Optional, Tuple, Union
from app.schemas.context import MediaPerson as _SchemaMediaPerson from app.schemas.context import MediaPerson as _SchemaMediaPerson
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.domain.context import MediaInfo from app.domain.context import MediaInfo
from app.domain.meta.metabase import MetaBase from app.domain.meta.metabase import MetaBase
from app.domain.scraper import MediaScraperHelper from app.domain.scraper import MediaScraperHelper
+3 -1
View File
@@ -4,7 +4,9 @@ from typing import Optional
import requests import requests
from app.runtime.cache import cached from app.runtime.cache import cached
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.adapters.network.http import RequestUtils, AsyncRequestUtils from app.adapters.network.http import RequestUtils, AsyncRequestUtils
+3 -1
View File
@@ -4,7 +4,9 @@ from typing import Any, List, Optional, Tuple, Union
import cn2an import cn2an
from app.schemas.context import MediaPerson as _SchemaMediaPerson from app.schemas.context import MediaPerson as _SchemaMediaPerson
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.domain.context import ( from app.domain.context import (
MediaInfo, MediaInfo,
MusicAlbumInfo, MusicAlbumInfo,
+3 -1
View File
@@ -13,7 +13,9 @@ import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from app.runtime.cache import cached from app.runtime.cache import cached
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.adapters.network.http import RequestUtils, AsyncRequestUtils from app.adapters.network.http import RequestUtils, AsyncRequestUtils
from app.foundation.singleton import WeakSingleton from app.foundation.singleton import WeakSingleton
+3 -1
View File
@@ -4,7 +4,9 @@ from typing import Optional, Tuple, Union
from app.runtime.cache import cached from app.runtime.cache import cached
from app.domain.context import MediaInfo from app.domain.context import MediaInfo
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.runtime.log import logger from app.runtime.log import logger
from app.modules import _ModuleBase from app.modules import _ModuleBase
from app.schemas.types import MediaType, ModuleType, OtherModulesType from app.schemas.types import MediaType, ModuleType, OtherModulesType
+3 -1
View File
@@ -11,7 +11,9 @@ from app.domain.meta.metabase import MetaBase
from app.domain.scraper import MediaScraperHelper from app.domain.scraper import MediaScraperHelper
from app.foundation.text import convert as zhconv_convert from app.foundation.text import convert as zhconv_convert
from app.modules import _ModuleBase from app.modules import _ModuleBase
from app.runtime.config import settings from app.runtime.settings import RuntimeSettingsCompat
settings = RuntimeSettingsCompat()
from app.runtime.log import logger from app.runtime.log import logger
from app.schemas.context import MediaCredit, MediaImageSet from app.schemas.context import MediaCredit, MediaImageSet
from app.schemas.media import normalize_media_source from app.schemas.media import normalize_media_source
+3 -1
View File
@@ -9,7 +9,9 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError
from app.adapters.network.http import AsyncRequestUtils, RequestUtils from app.adapters.network.http import AsyncRequestUtils, RequestUtils
from app.runtime.cache import cached 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.runtime.log import logger
TModel = TypeVar("TModel", bound=BaseModel) TModel = TypeVar("TModel", bound=BaseModel)
@@ -1056,6 +1056,8 @@ Agent 能力适配器、记忆和提示词模块改用 `RuntimeSettingsCompat`
配置债务由 89 个文件降至 84 个,插件、模块生命周期与线程安全专项测试通过。 配置债务由 89 个文件降至 84 个,插件、模块生命周期与线程安全专项测试通过。
Agent 下载、任务、媒体识别、刮削和 Web 搜索工具也切换到动态运行时端口,保留原工具输入与输出 ABI; Agent 下载、任务、媒体识别、刮削和 Web 搜索工具也切换到动态运行时端口,保留原工具输入与输出 ABI;
配置债务由 84 个文件降至 77 个,Agent 任务、搜索与识别专项测试通过。 配置债务由 84 个文件降至 77 个,Agent 任务、搜索与识别专项测试通过。
AcoustID、AniList、Bangumi、Douban、Fanart 和 IMDb 模块族改用动态运行时端口,模块公开类与配置热读保持;
配置债务由 77 个文件降至 67 个,相关识别、浏览与刮削专项测试通过。
同日修正适配器配置下沉边界:OCR、CookieCloud、DoH、Rust 和资源签名等低层实现不再直接依赖 同日修正适配器配置下沉边界:OCR、CookieCloud、DoH、Rust 和资源签名等低层实现不再直接依赖
`app.application`,由 `app.runtime.settings` 端口承接组合根注入;未启动装配时仍回退旧 Settings ABI `app.application`,由 `app.runtime.settings` 端口承接组合根注入;未启动装配时仍回退旧 Settings ABI
@@ -9,7 +9,7 @@
"root": "app" "root": "app"
}, },
"settings_imports": { "settings_imports": {
"count": 77, "count": 67,
"files": [ "files": [
"app/adapters/system/fsproxy.py", "app/adapters/system/fsproxy.py",
"app/cli.py", "app/cli.py",
@@ -20,16 +20,8 @@
"app/doctor/runner.py", "app/doctor/runner.py",
"app/factory.py", "app/factory.py",
"app/main.py", "app/main.py",
"app/modules/acoustid/__init__.py",
"app/modules/anilist/__init__.py",
"app/modules/anilist/anilist.py",
"app/modules/bangumi/__init__.py",
"app/modules/bangumi/bangumi.py",
"app/modules/discord/discord.py", "app/modules/discord/discord.py",
"app/modules/douban/__init__.py",
"app/modules/douban/apiv2.py",
"app/modules/emby/emby.py", "app/modules/emby/emby.py",
"app/modules/fanart/__init__.py",
"app/modules/feishu/feishu.py", "app/modules/feishu/feishu.py",
"app/modules/filemanager/module.py", "app/modules/filemanager/module.py",
"app/modules/filemanager/storages/alipan.py", "app/modules/filemanager/storages/alipan.py",
@@ -39,8 +31,6 @@
"app/modules/filemanager/storages/smb.py", "app/modules/filemanager/storages/smb.py",
"app/modules/filemanager/storages/u115.py", "app/modules/filemanager/storages/u115.py",
"app/modules/filemanager/transhandler.py", "app/modules/filemanager/transhandler.py",
"app/modules/imdb/__init__.py",
"app/modules/imdb/api.py",
"app/modules/indexer/parser/__init__.py", "app/modules/indexer/parser/__init__.py",
"app/modules/indexer/parser/rousi.py", "app/modules/indexer/parser/rousi.py",
"app/modules/indexer/spider/__init__.py", "app/modules/indexer/spider/__init__.py",
+11 -11
View File
@@ -14,7 +14,7 @@
"workflow_to_db": [] "workflow_to_db": []
}, },
"edge_count": 6421, "edge_count": 6421,
"edge_sha256": "18448b750688670f90d17bc46bc5425dc481a12266b01d3e126f0da13fe12fb7", "edge_sha256": "a5ef71ffebe71367bde1689ab0889db037c83cea53b85ee12ad0a79aa006f231",
"edges": [ "edges": [
"app -> app.runtime", "app -> app.runtime",
"app -> app.runtime.compat", "app -> app.runtime.compat",
@@ -3881,8 +3881,8 @@
"app.modules.acoustid -> app.adapters.network.http", "app.modules.acoustid -> app.adapters.network.http",
"app.modules.acoustid -> app.modules", "app.modules.acoustid -> app.modules",
"app.modules.acoustid -> app.runtime", "app.modules.acoustid -> app.runtime",
"app.modules.acoustid -> app.runtime.config",
"app.modules.acoustid -> app.runtime.log", "app.modules.acoustid -> app.runtime.log",
"app.modules.acoustid -> app.runtime.settings",
"app.modules.acoustid -> app.schemas", "app.modules.acoustid -> app.schemas",
"app.modules.acoustid -> app.schemas.types", "app.modules.acoustid -> app.schemas.types",
"app.modules.anilist -> app.domain", "app.modules.anilist -> app.domain",
@@ -3894,8 +3894,8 @@
"app.modules.anilist -> app.modules", "app.modules.anilist -> app.modules",
"app.modules.anilist -> app.modules.anilist.anilist", "app.modules.anilist -> app.modules.anilist.anilist",
"app.modules.anilist -> app.runtime", "app.modules.anilist -> app.runtime",
"app.modules.anilist -> app.runtime.config",
"app.modules.anilist -> app.runtime.log", "app.modules.anilist -> app.runtime.log",
"app.modules.anilist -> app.runtime.settings",
"app.modules.anilist -> app.schemas", "app.modules.anilist -> app.schemas",
"app.modules.anilist -> app.schemas.context", "app.modules.anilist -> app.schemas.context",
"app.modules.anilist -> app.schemas.types", "app.modules.anilist -> app.schemas.types",
@@ -3904,8 +3904,8 @@
"app.modules.anilist.anilist -> app.adapters.network.http", "app.modules.anilist.anilist -> app.adapters.network.http",
"app.modules.anilist.anilist -> app.runtime", "app.modules.anilist.anilist -> app.runtime",
"app.modules.anilist.anilist -> app.runtime.cache", "app.modules.anilist.anilist -> app.runtime.cache",
"app.modules.anilist.anilist -> app.runtime.config",
"app.modules.anilist.anilist -> app.runtime.log", "app.modules.anilist.anilist -> app.runtime.log",
"app.modules.anilist.anilist -> app.runtime.settings",
"app.modules.bangumi -> app.adapters", "app.modules.bangumi -> app.adapters",
"app.modules.bangumi -> app.adapters.network", "app.modules.bangumi -> app.adapters.network",
"app.modules.bangumi -> app.adapters.network.http", "app.modules.bangumi -> app.adapters.network.http",
@@ -3918,8 +3918,8 @@
"app.modules.bangumi -> app.modules", "app.modules.bangumi -> app.modules",
"app.modules.bangumi -> app.modules.bangumi.bangumi", "app.modules.bangumi -> app.modules.bangumi.bangumi",
"app.modules.bangumi -> app.runtime", "app.modules.bangumi -> app.runtime",
"app.modules.bangumi -> app.runtime.config",
"app.modules.bangumi -> app.runtime.log", "app.modules.bangumi -> app.runtime.log",
"app.modules.bangumi -> app.runtime.settings",
"app.modules.bangumi -> app.schemas", "app.modules.bangumi -> app.schemas",
"app.modules.bangumi -> app.schemas.context", "app.modules.bangumi -> app.schemas.context",
"app.modules.bangumi -> app.schemas.types", "app.modules.bangumi -> app.schemas.types",
@@ -3928,7 +3928,7 @@
"app.modules.bangumi.bangumi -> app.adapters.network.http", "app.modules.bangumi.bangumi -> app.adapters.network.http",
"app.modules.bangumi.bangumi -> app.runtime", "app.modules.bangumi.bangumi -> app.runtime",
"app.modules.bangumi.bangumi -> app.runtime.cache", "app.modules.bangumi.bangumi -> app.runtime.cache",
"app.modules.bangumi.bangumi -> app.runtime.config", "app.modules.bangumi.bangumi -> app.runtime.settings",
"app.modules.dingtalk -> app.domain", "app.modules.dingtalk -> app.domain",
"app.modules.dingtalk -> app.domain.context", "app.modules.dingtalk -> app.domain.context",
"app.modules.dingtalk -> app.modules", "app.modules.dingtalk -> app.modules",
@@ -3986,10 +3986,10 @@
"app.modules.douban -> app.modules.douban.apiv2", "app.modules.douban -> app.modules.douban.apiv2",
"app.modules.douban -> app.modules.douban.scraper", "app.modules.douban -> app.modules.douban.scraper",
"app.modules.douban -> app.runtime", "app.modules.douban -> app.runtime",
"app.modules.douban -> app.runtime.config",
"app.modules.douban -> app.runtime.execution", "app.modules.douban -> app.runtime.execution",
"app.modules.douban -> app.runtime.log", "app.modules.douban -> app.runtime.log",
"app.modules.douban -> app.runtime.rate", "app.modules.douban -> app.runtime.rate",
"app.modules.douban -> app.runtime.settings",
"app.modules.douban -> app.schemas", "app.modules.douban -> app.schemas",
"app.modules.douban -> app.schemas.context", "app.modules.douban -> app.schemas.context",
"app.modules.douban -> app.schemas.exception", "app.modules.douban -> app.schemas.exception",
@@ -4001,7 +4001,7 @@
"app.modules.douban.apiv2 -> app.foundation.singleton", "app.modules.douban.apiv2 -> app.foundation.singleton",
"app.modules.douban.apiv2 -> app.runtime", "app.modules.douban.apiv2 -> app.runtime",
"app.modules.douban.apiv2 -> app.runtime.cache", "app.modules.douban.apiv2 -> app.runtime.cache",
"app.modules.douban.apiv2 -> app.runtime.config", "app.modules.douban.apiv2 -> app.runtime.settings",
"app.modules.douban.scraper -> app.domain", "app.modules.douban.scraper -> app.domain",
"app.modules.douban.scraper -> app.domain.context", "app.modules.douban.scraper -> app.domain.context",
"app.modules.douban.scraper -> app.foundation", "app.modules.douban.scraper -> app.foundation",
@@ -4039,8 +4039,8 @@
"app.modules.fanart -> app.modules", "app.modules.fanart -> app.modules",
"app.modules.fanart -> app.runtime", "app.modules.fanart -> app.runtime",
"app.modules.fanart -> app.runtime.cache", "app.modules.fanart -> app.runtime.cache",
"app.modules.fanart -> app.runtime.config",
"app.modules.fanart -> app.runtime.log", "app.modules.fanart -> app.runtime.log",
"app.modules.fanart -> app.runtime.settings",
"app.modules.fanart -> app.schemas", "app.modules.fanart -> app.schemas",
"app.modules.fanart -> app.schemas.types", "app.modules.fanart -> app.schemas.types",
"app.modules.feishu -> app.application", "app.modules.feishu -> app.application",
@@ -4273,8 +4273,8 @@
"app.modules.imdb -> app.modules", "app.modules.imdb -> app.modules",
"app.modules.imdb -> app.modules.imdb.api", "app.modules.imdb -> app.modules.imdb.api",
"app.modules.imdb -> app.runtime", "app.modules.imdb -> app.runtime",
"app.modules.imdb -> app.runtime.config",
"app.modules.imdb -> app.runtime.log", "app.modules.imdb -> app.runtime.log",
"app.modules.imdb -> app.runtime.settings",
"app.modules.imdb -> app.schemas", "app.modules.imdb -> app.schemas",
"app.modules.imdb -> app.schemas.context", "app.modules.imdb -> app.schemas.context",
"app.modules.imdb -> app.schemas.media", "app.modules.imdb -> app.schemas.media",
@@ -4284,8 +4284,8 @@
"app.modules.imdb.api -> app.adapters.network.http", "app.modules.imdb.api -> app.adapters.network.http",
"app.modules.imdb.api -> app.runtime", "app.modules.imdb.api -> app.runtime",
"app.modules.imdb.api -> app.runtime.cache", "app.modules.imdb.api -> app.runtime.cache",
"app.modules.imdb.api -> app.runtime.config",
"app.modules.imdb.api -> app.runtime.log", "app.modules.imdb.api -> app.runtime.log",
"app.modules.imdb.api -> app.runtime.settings",
"app.modules.indexer -> app.application", "app.modules.indexer -> app.application",
"app.modules.indexer -> app.application.site", "app.modules.indexer -> app.application.site",
"app.modules.indexer -> app.application.site.health", "app.modules.indexer -> app.application.site.health",