from dataclasses import dataclass from typing import Dict, Set @dataclass(frozen=True, slots=True) class ModuleAlias: """描述一个旧模块路径到 canonical 模块的精确映射。""" target: str replacement: str introduced: str owner: str is_package: bool = False @dataclass(frozen=True, slots=True) class SymbolAlias: """描述合成兼容包公开符号的精确来源。""" target_module: str target_name: str replacement: str # 只登记已经删除旧物理源码、并完成 canonical 路径验证的模块。 MODULE_ALIASES: Dict[str, ModuleAlias] = { "app.chain.media_interaction": ModuleAlias( target="app.chain.interaction", replacement="app.chain.interaction", introduced="v3.0.0", owner="chain", ), "app.log": ModuleAlias( target="app.sdk.logging", replacement="app.sdk.logging", introduced="v3.0.0", owner="sdk", ), "app.domain.string": ModuleAlias( target="app.sdk.string", replacement="app.sdk.utilities", introduced="v3.0.0", owner="sdk", ), # 规则域收敛为单一事实来源 app/application/rules.py: # filter_rules.py(内置规则集 + RuleParser)更名而来,filter.py(RuleHelper)并入 "app.application.filter": ModuleAlias( target="app.application.rules", replacement="app.application.rules", introduced="v3.0.0", owner="application", ), "app.application.filter_rules": ModuleAlias( target="app.application.rules", replacement="app.application.rules", introduced="v3.0.0", owner="application", ), "app.db.agentchat_oper": ModuleAlias( target="app.db.oper.agentchat", replacement="app.db.oper.agentchat", introduced="v3.0.0", owner="db", ), "app.db.agenttask_oper": ModuleAlias( target="app.db.oper.agenttask", replacement="app.db.oper.agenttask", introduced="v3.0.0", owner="db", ), "app.db.downloadfailure_oper": ModuleAlias( target="app.db.oper.downloadfailure", replacement="app.db.oper.downloadfailure", introduced="v3.0.0", owner="db", ), "app.db.downloadhistory_oper": ModuleAlias( target="app.db.oper.downloadhistory", replacement="app.db.oper.downloadhistory", introduced="v3.0.0", owner="db", ), "app.db.init": ModuleAlias( target="app.startup.initializers.database", replacement="app.startup.initializers.database", introduced="v3.0.0", owner="startup", ), "app.db.mediaserver_oper": ModuleAlias( target="app.db.oper.mediaserver", replacement="app.db.oper.mediaserver", introduced="v3.0.0", owner="db", ), "app.db.message_oper": ModuleAlias( target="app.db.oper.message", replacement="app.db.oper.message", introduced="v3.0.0", owner="db", ), "app.db.plugindata_oper": ModuleAlias( target="app.db.oper.plugindata", replacement="app.db.oper.plugindata", introduced="v3.0.0", owner="db", ), "app.db.site_oper": ModuleAlias( target="app.db.oper.site", replacement="app.db.oper.site", introduced="v3.0.0", owner="db", ), "app.db.subscribe_oper": ModuleAlias( target="app.sdk._legacy.subscribe", replacement="app.application.subscription.write.add_subscribe", introduced="v3.0.0", owner="sdk", ), "app.db.subscribehistory_oper": ModuleAlias( target="app.db.oper.subscribehistory", replacement="app.db.oper.subscribehistory", introduced="v3.0.0", owner="db", ), "app.db.systemconfig_oper": ModuleAlias( target="app.db.oper.systemconfig", replacement="app.db.oper.systemconfig", introduced="v3.0.0", owner="db", ), "app.db.transferhistory_oper": ModuleAlias( target="app.sdk._legacy.history", replacement="app.application.history", introduced="v3.0.0", owner="sdk", ), "app.db.transferpending_oper": ModuleAlias( target="app.db.oper.transferpending", replacement="app.db.oper.transferpending", introduced="v3.0.0", owner="db", ), "app.db.user_oper": ModuleAlias( target="app.sdk._legacy.user", replacement="app.db.oper.user 或 app.api.deps", introduced="v3.0.0", owner="sdk", ), "app.db.userconfig_oper": ModuleAlias( target="app.db.oper.userconfig", replacement="app.db.oper.userconfig", introduced="v3.0.0", owner="db", ), "app.db.workflow_oper": ModuleAlias( target="app.db.oper.workflow", replacement="app.db.oper.workflow", introduced="v3.0.0", owner="db", ), "app.utils.crypto": ModuleAlias( target="app.foundation.crypto", replacement="app.sdk.utilities", introduced="v3.0.0", owner="foundation", ), "app.utils.dom": ModuleAlias( target="app.foundation.dom", replacement="app.sdk.utilities", introduced="v3.0.0", owner="foundation", ), "app.utils.identity": ModuleAlias( target="app.foundation.identity", replacement="app.foundation.identity", introduced="v3.0.0", owner="foundation", ), "app.utils.ip": ModuleAlias( target="app.adapters.network.ip", replacement="app.sdk.network", introduced="v3.0.0", owner="adapters", ), "app.utils.jieba": ModuleAlias( target="app.foundation.text", replacement="app.sdk.utilities", introduced="v3.0.0", owner="foundation", ), "app.utils.object": ModuleAlias( target="app.foundation.reflection", replacement="app.sdk.utilities", introduced="v3.0.0", owner="foundation", ), "app.utils.otp": ModuleAlias( target="app.application.security.otp", replacement="app.sdk.utilities", introduced="v3.0.0", owner="application", ), "app.utils.singleton": ModuleAlias( target="app.foundation.singleton", replacement="app.sdk.utilities", introduced="v3.0.0", owner="foundation", ), "app.utils.structures": ModuleAlias( target="app.foundation.collections", replacement="app.foundation.collections", introduced="v3.0.0", owner="foundation", ), "app.utils.timer": ModuleAlias( target="app.runtime.scheduling", replacement="app.sdk.utilities", introduced="v3.0.0", owner="runtime", ), "app.utils.tokens": ModuleAlias( target="app.domain.tokens", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.utils.zhconv": ModuleAlias( target="app.foundation.text", replacement="app.foundation.text", introduced="v3.0.0", owner="foundation", ), "app.utils.stdio": ModuleAlias( target="app.adapters.system.stdio", replacement="app.adapters.system.stdio", introduced="v3.0.0", owner="adapters", ), "app.utils.system": ModuleAlias( target="app.adapters.system.host", replacement="app.sdk.utilities", introduced="v3.0.0", owner="adapters", ), "app.utils.coalesce": ModuleAlias( target="app.runtime.coalesce", replacement="app.runtime.coalesce", introduced="v3.0.0", owner="runtime", ), "app.utils.common": ModuleAlias( target="app.sdk.utilities", replacement="app.sdk.utilities", introduced="v3.0.0", owner="sdk", ), "app.utils.debounce": ModuleAlias( target="app.runtime.debounce", replacement="app.runtime.debounce", introduced="v3.0.0", owner="runtime", ), "app.utils.gc": ModuleAlias( target="app.runtime.gc", replacement="app.runtime.gc", introduced="v3.0.0", owner="runtime", ), "app.utils.http": ModuleAlias( target="app.adapters.network.http", replacement="app.sdk.network", introduced="v3.0.0", owner="foundation", ), "app.utils.limit": ModuleAlias( target="app.runtime.rate", replacement="app.runtime.rate", introduced="v3.0.0", owner="runtime", ), "app.utils.media": ModuleAlias( target="app.sdk.media", replacement="app.sdk.media", introduced="v3.0.0", owner="sdk", ), "app.utils.mixins": ModuleAlias( target="app.runtime.reload", replacement="app.runtime.reload", introduced="v3.0.0", owner="runtime", ), "app.utils.rust_accel": ModuleAlias( target="app.adapters.system.rust", replacement="app.adapters.system.rust", introduced="v3.0.0", owner="adapters", ), "app.utils.security": ModuleAlias( target="app.application.security.url", replacement="app.sdk.network", introduced="v3.0.0", owner="application", ), "app.utils.site": ModuleAlias( target="app.domain.site", replacement="app.sdk.network", introduced="v3.0.0", owner="domain", ), "app.utils.string": ModuleAlias( target="app.sdk.string", replacement="app.sdk.utilities", introduced="v3.0.0", owner="sdk", ), "app.utils.url": ModuleAlias( target="app.foundation.url", replacement="app.sdk.network", introduced="v3.0.0", owner="foundation", ), "app.utils.web": ModuleAlias( target="app.adapters.external.location", replacement="app.sdk.network", introduced="v3.0.0", owner="adapters", ), "app.core.auth": ModuleAlias( target="app.application.security.auth", replacement="app.application.security.auth", introduced="v3.0.0", owner="application", ), "app.core.auth_bridge": ModuleAlias( target="app.application.security.auth", replacement="app.application.security.auth", introduced="v3.0.0", owner="application", ), "app.core.cache": ModuleAlias( target="app.sdk.cache", replacement="app.sdk.cache", introduced="v3.0.0", owner="sdk", ), "app.core.config": ModuleAlias( target="app.runtime.config", replacement="app.sdk.config", introduced="v3.0.0", owner="runtime", ), "app.core.context": ModuleAlias( target="app.domain.context", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.event": ModuleAlias( target="app.runtime.events", replacement="app.sdk.events", introduced="v3.0.0", owner="runtime", ), "app.core.meta.customization": ModuleAlias( target="app.domain.meta.customization", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.infopath": ModuleAlias( target="app.domain.meta.infopath", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.metaanime": ModuleAlias( target="app.domain.meta.metaanime", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.metabase": ModuleAlias( target="app.domain.meta.metabase", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.metamusic": ModuleAlias( target="app.domain.meta.metamusic", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.metavideo": ModuleAlias( target="app.domain.meta.metavideo", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.releasegroup": ModuleAlias( target="app.domain.meta.releasegroup", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.streamingplatform": ModuleAlias( target="app.domain.meta.streamingplatform", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.meta.words": ModuleAlias( target="app.domain.meta.words", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.metainfo": ModuleAlias( target="app.domain.metainfo", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.core.module": ModuleAlias( target="app.runtime.extensions.module_manager", replacement="app.sdk.plugins", introduced="v3.0.0", owner="runtime", ), "app.core.plugin": ModuleAlias( target="app.runtime.extensions.plugin_manager", replacement="app.sdk.plugins", introduced="v3.0.0", owner="runtime", ), "app.core.security": ModuleAlias( target="app.sdk.security", replacement="app.sdk.security", introduced="v3.0.0", owner="sdk", ), "app.helper.agent": ModuleAlias( target="app.application.messaging.agent", replacement="app.application.messaging.agent", introduced="v3.0.0", owner="application", ), "app.helper.audio": ModuleAlias( target="app.application.audio", replacement="app.application.audio", introduced="v3.0.0", owner="application", ), "app.helper.browser": ModuleAlias( target="app.adapters.network.browser", replacement="app.adapters.network.browser", introduced="v3.0.0", owner="adapters", ), "app.helper.cloudflare": ModuleAlias( target="app.adapters.network.cloudflare", replacement="app.adapters.network.cloudflare", introduced="v3.0.0", owner="adapters", ), "app.helper.cookie": ModuleAlias( target="app.application.security.cookie", replacement="app.application.security.cookie", introduced="v3.0.0", owner="application", ), "app.helper.cookiecloud": ModuleAlias( target="app.adapters.external.cookiecloud", replacement="app.adapters.external.cookiecloud", introduced="v3.0.0", owner="adapters", ), "app.helper.directory": ModuleAlias( target="app.application.directory", replacement="app.application.directory", introduced="v3.0.0", owner="application", ), "app.helper.display": ModuleAlias( target="app.adapters.system.display", replacement="app.adapters.system.display", introduced="v3.0.0", owner="adapters", ), "app.helper.doh": ModuleAlias( target="app.adapters.network.doh", replacement="app.adapters.network.doh", introduced="v3.0.0", owner="adapters", ), "app.helper.downloader": ModuleAlias( target="app.application.downloader", replacement="app.sdk.services", introduced="v3.0.0", owner="application", ), "app.helper.format": ModuleAlias( target="app.application.formatting", replacement="app.application.formatting", introduced="v3.0.0", owner="application", ), "app.helper.image": ModuleAlias( target="app.application.image", replacement="app.application.image", introduced="v3.0.0", owner="application", ), "app.helper.interaction": ModuleAlias( target="app.application.messaging.interaction", replacement="app.application.messaging.interaction", introduced="v3.0.0", owner="application", ), "app.helper.locale": ModuleAlias( target="app.runtime.localization", replacement="app.sdk.utilities", introduced="v3.0.0", owner="runtime", ), "app.helper.market": ModuleAlias( target="app.adapters.external.market", replacement="app.adapters.external.market", introduced="v3.0.0", owner="adapters", ), "app.helper.mediaserver": ModuleAlias( target="app.application.mediaserver", replacement="app.sdk.services", introduced="v3.0.0", owner="application", ), "app.helper.message": ModuleAlias( target="app.application.messaging.message", replacement="app.application.messaging.message", introduced="v3.0.0", owner="application", ), "app.helper.module": ModuleAlias( target="app.foundation.reflection", replacement="app.foundation.reflection", introduced="v3.0.0", owner="foundation", ), "app.helper.nfo": ModuleAlias( target="app.domain.scraper", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", ), "app.helper.notification": ModuleAlias( target="app.application.notification", replacement="app.sdk.services", introduced="v3.0.0", owner="application", ), "app.helper.ocr": ModuleAlias( target="app.adapters.external.ocr", replacement="app.adapters.external.ocr", introduced="v3.0.0", owner="adapters", ), "app.helper.package": ModuleAlias( target="app.adapters.system.package", replacement="app.adapters.system.package", introduced="v3.0.0", owner="adapters", ), "app.helper.passkey": ModuleAlias( target="app.application.security.passkey", replacement="app.application.security.passkey", introduced="v3.0.0", owner="application", ), "app.helper.plugin": ModuleAlias( target="app.adapters.external.market", replacement="app.adapters.external.market", introduced="v3.0.0", owner="adapters", ), "app.helper.progress": ModuleAlias( target="app.runtime.progress", replacement="app.runtime.progress", introduced="v3.0.0", owner="runtime", ), "app.helper.redis": ModuleAlias( target="app.adapters.cache.redis", replacement="app.adapters.cache.redis", introduced="v3.0.0", owner="adapters", ), "app.helper.resource": ModuleAlias( target="app.adapters.system.resource", replacement="app.adapters.system.resource", introduced="v3.0.0", owner="adapters", ), "app.helper.rss": ModuleAlias( target="app.application.rss", replacement="app.sdk.network", introduced="v3.0.0", owner="application", ), "app.helper.rule": ModuleAlias( target="app.application.rules", replacement="app.sdk.services", introduced="v3.0.0", owner="application", ), "app.helper.scraper": ModuleAlias( target="app.domain.scraper", replacement="app.domain.scraper", introduced="v3.0.0", owner="domain", ), "app.helper.server": ModuleAlias( target="app.adapters.external.server", replacement="app.adapters.external.server", introduced="v3.0.0", owner="adapters", ), "app.helper.service": ModuleAlias( target="app.sdk.services", replacement="app.sdk.services", introduced="v3.0.0", owner="runtime", ), "app.runtime.extensions.service_registry": ModuleAlias( target="app.sdk.services", replacement="app.sdk.services", introduced="v3.0.0", owner="sdk", ), "app.helper.sites": ModuleAlias( target="app.application.site.sites", replacement="app.sdk.network", introduced="v3.0.0", owner="application", ), "app.helper.skill": ModuleAlias( target="app.agent.skills.registry", replacement="app.agent.skills.registry", introduced="v3.0.0", owner="agent", ), "app.helper.storage": ModuleAlias( target="app.application.storage", replacement="app.sdk.services", introduced="v3.0.0", owner="application", ), "app.helper.system": ModuleAlias( target="app.runtime.state", replacement="app.sdk.services", introduced="v3.0.0", owner="runtime", ), "app.helper.thread": ModuleAlias( target="app.runtime.thread", replacement="app.runtime.thread", introduced="v3.0.0", owner="runtime", ), "app.helper.torrent": ModuleAlias( target="app.application.torrent", replacement="app.application.torrent", introduced="v3.0.0", owner="application", ), "app.helper.transferhistory": ModuleAlias( target="app.application.history", replacement="app.application.history", introduced="v3.0.0", owner="application", ), "app.helper.twofa": ModuleAlias( target="app.application.security.twofactor", replacement="app.application.security.twofactor", introduced="v3.0.0", owner="application", ), "app.helper.webpush": ModuleAlias( target="app.api.endpoints.message", replacement="app.api.endpoints.message", introduced="v3.0.0", owner="api", ), "app.helper.wallpaper": ModuleAlias( target="app.application.image", replacement="app.application.image", introduced="v3.0.0", owner="application", ), "app.helper.llm": ModuleAlias( target="app.agent.llm", replacement="app.agent.llm", introduced="v3.0.0", owner="agent", is_package=True, ), } # 需要合成包级符号的旧路径单独登记;它们不是 canonical 模块别名。 PACKAGE_ALIASES: Dict[str, ModuleAlias] = { "app.core.meta": ModuleAlias( target="app.domain.meta", replacement="app.sdk.media", introduced="v3.0.0", owner="domain", is_package=True, ), } # 旧父包完全迁空后才登记;迁移中的物理父包继续由 PathFinder 处理。 VIRTUAL_PACKAGES: Set[str] = {"app.core", "app.helper", "app.utils"} # 旧包 __init__.py 曾公开的符号在这里显式声明,禁止模糊转发。 PACKAGE_EXPORTS: Dict[str, Dict[str, SymbolAlias]] = { "app.core.meta": { "MetaBase": SymbolAlias( target_module="app.domain.meta.metabase", target_name="MetaBase", replacement="app.sdk.media.MetaBase", ), "MetaVideo": SymbolAlias( target_module="app.domain.meta.metavideo", target_name="MetaVideo", replacement="app.sdk.media.MetaVideo", ), "MetaAnime": SymbolAlias( target_module="app.domain.meta.metaanime", target_name="MetaAnime", replacement="app.sdk.media.MetaAnime", ), "MetaMusic": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MetaMusic", replacement="app.sdk.media.MetaMusic", ), "MusicNameContext": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNameContext", replacement="app.sdk.media.MusicNameContext", ), "MusicNameParseResult": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNameParseResult", replacement="app.sdk.media.MusicNameParseResult", ), "MusicNameParser": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNameParser", replacement="app.sdk.media.MusicNameParser", ), "MusicNamePattern": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNamePattern", replacement="app.sdk.media.MusicNamePattern", ), "MusicNamePatternMatch": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNamePatternMatch", replacement="app.sdk.media.MusicNamePatternMatch", ), "MusicNameRegistry": SymbolAlias( target_module="app.domain.meta.metamusic", target_name="MusicNameRegistry", replacement="app.sdk.media.MusicNameRegistry", ), }, } # 物理模块仍存在、仅部分公开符号迁走时,由导入器在标准 Loader 执行后叠加惰性符号路由。 # canonical 源码不反向依赖兼容层,目标符号也只在旧调用方真正取用时加载。 # message/notification 命名统一后的旧符号映射: # 通知渠道能力归 notification(NotificationChannel),消息收发归 message(Message/MessageType)。 # 旧名在 app.schemas、app.schemas.message 两个入口都曾公开,共用同一份映射。 _MESSAGE_NOTIFICATION_SYMBOL_ALIASES: Dict[str, SymbolAlias] = { "MessageChannel": SymbolAlias( target_module="app.schemas.types", target_name="NotificationChannel", replacement="app.schemas.types.NotificationChannel", ), "NotificationType": SymbolAlias( target_module="app.schemas.types", target_name="MessageType", replacement="app.schemas.types.MessageType", ), "Notification": SymbolAlias( target_module="app.schemas.message", target_name="Message", replacement="app.schemas.message.Message", ), "CommingMessage": SymbolAlias( target_module="app.schemas.message", target_name="IncomingMessage", replacement="app.schemas.message.IncomingMessage", ), "NotificationHistoryItem": SymbolAlias( target_module="app.schemas.message", target_name="MessageHistoryItem", replacement="app.schemas.message.MessageHistoryItem", ), **{ old: SymbolAlias( target_module="app.schemas.message", target_name=new, replacement=f"app.schemas.message.{new}", ) for old, new in ( ("NotificationClearScope", "MessageClearScope"), ("NotificationClearBefore", "MessageClearBefore"), ("NotificationClearData", "MessageClearData"), ) }, **{ name: SymbolAlias( target_module="app.schemas.notification", target_name=name, replacement=f"app.schemas.notification.{name}", ) for name in ( "ChannelCapability", "ChannelCapabilities", "ChannelCapabilityManager", ) }, } SYMBOL_ALIASES: Dict[str, Dict[str, SymbolAlias]] = { "app.agent.orchestrator": { "AgentChain": SymbolAlias( target_module="app.chain.agent", target_name="AgentChain", replacement="app.chain.agent.AgentChain", ), "ReplyMode": SymbolAlias( target_module="app.schemas.types", target_name="ReplyMode", replacement="app.schemas.types.ReplyMode", ), }, # 刮削能力从 MediaChain 拆出为独立 ScrapingChain 后, # 原 app.chain.media 模块级公开的刮削选项与策略配置随迁到 app.chain.scraping "app.chain.media": { name: SymbolAlias( target_module="app.chain.scraping", target_name=name, replacement=f"app.chain.scraping.{name}", ) for name in ("ScrapingChain", "ScrapingOption", "ScrapingConfig") }, "app.chain.message": { "MediaInteractionChain": SymbolAlias( target_module="app.chain.interaction", target_name="MediaInteractionChain", replacement="app.chain.interaction.MediaInteractionChain", ), }, "app.domain.media": { name: SymbolAlias( target_module="app.schemas.media", target_name=name, replacement=f"app.schemas.media.{name}", ) for name in ( "MEDIA_SOURCE_ALIASES", "MEDIA_SOURCE_PREFIXES", "normalize_media_source", "parse_media_key", "resolve_media_identity", "normalize_media_identity_payload", "build_media_key", ) }, "app.schemas": { **{ name: SymbolAlias( target_module="app.sdk._legacy.transfer", target_name=name, replacement=f"app.application.transfer.{name}", ) for name in ("TransferTask", "TransferQueue") }, **_MESSAGE_NOTIFICATION_SYMBOL_ALIASES, }, "app.schemas.transfer": { **{ name: SymbolAlias( target_module="app.sdk._legacy.transfer", target_name=name, replacement=f"app.application.transfer.{name}", ) for name in ("TransferTask", "TransferQueue") }, "DownloadHistory": SymbolAlias( target_module="app.schemas.history", target_name="DownloadHistory", replacement="app.schemas.history.DownloadHistory", ), "TransferDirectoryConf": SymbolAlias( target_module="app.schemas.system", target_name="TransferDirectoryConf", replacement="app.schemas.system.TransferDirectoryConf", ), "TmdbEpisode": SymbolAlias( target_module="app.schemas.tmdb", target_name="TmdbEpisode", replacement="app.schemas.tmdb.TmdbEpisode", ), "MediaType": SymbolAlias( target_module="app.schemas.types", target_name="MediaType", replacement="app.schemas.types.MediaType", ), }, "app.schemas.agent": { "ReplyMode": SymbolAlias( target_module="app.schemas.types", target_name="ReplyMode", replacement="app.schemas.types.ReplyMode", ), }, "app.sdk.logging": { name: SymbolAlias( target_module="app.runtime.log", target_name=name, replacement=f"app.runtime.log.{name}", ) for name in ( "CustomFormatter", "LogConfigModel", "LogEntry", "LogSettings", "LoggerManager", "NonBlockingFileHandler", "configure_log_settings", "configure_log_writer", "log_settings", ) }, # message/notification 命名统一:通知渠道能力归 notification,消息收发归 message "app.schemas.types": { "MessageChannel": SymbolAlias( target_module="app.schemas.types", target_name="NotificationChannel", replacement="app.schemas.types.NotificationChannel", ), "NotificationType": SymbolAlias( target_module="app.schemas.types", target_name="MessageType", replacement="app.schemas.types.MessageType", ), }, "app.schemas.message": _MESSAGE_NOTIFICATION_SYMBOL_ALIASES, }