问题
当前架构检查器未把相对导入解析为完整模块名,from ..store import ... 等写法可以绕过依赖规则;现有规则主要依赖少量禁止项,并存在目录或组合模块豁免,因而不能证明分层边界。
实施要求
- 使用
importlib.util.resolve_name() 或等价方式,将所有相对导入解析为绝对模块名后再判定。
- 建立明确的分层允许矩阵,而不是仅维护少量禁止词。
- 删除
application.container 等目录级或组合模块级豁免;必要例外必须精确到文件和规则,并说明不可替代原因。
- 强制以下依赖方向:
domain -> 标准库、application -> domain + application.ports、adapters -> application.ports、bootstrap -> application + adapters。
- 检查 application 不得引用 store、SQLAlchemy、FastAPI、httpx 或具体 LingxiGraph adapter。
- 对 Python 生产包、测试 fixture 和组合入口执行一致的导入分析。
- 为门禁自身增加正反例测试,确保相对导入、别名导入和常见动态模块路径不能绕过。
验收条件
问题
当前架构检查器未把相对导入解析为完整模块名,
from ..store import ...等写法可以绕过依赖规则;现有规则主要依赖少量禁止项,并存在目录或组合模块豁免,因而不能证明分层边界。实施要求
importlib.util.resolve_name()或等价方式,将所有相对导入解析为绝对模块名后再判定。application.container等目录级或组合模块级豁免;必要例外必须精确到文件和规则,并说明不可替代原因。domain -> 标准库、application -> domain + application.ports、adapters -> application.ports、bootstrap -> application + adapters。验收条件
ARCHITECTURE.md声明的目录和依赖方向完全一致。