| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # -*- coding: utf-8 -*-
- r"""观澜 · 质量门与审计 + 打包安装 —— **对外公开面**(P7 起:实现已在本模块目录内)。
- 用户令 2026-09-22:按模块重构源代码目录,**每模块只许经 `api.py` 被别的模块调用**。
- 本模块负责(P7 完成):
- * `audits/` —— 审计器:配置统一、页面归口、产物反向呼应、链路缺口、可移植性、日志、安全扫描、
- 中文表达、模块边界、页面指纹、产物清点与补缺、依赖台账;
- * `docs/` —— 三件交付文档的构建与插图、版本记录;
- * `pack/` —— 打包器与开箱验证入口、卸载器。
- **根引导脚本(install.ps1 / install.sh / uninstall.* / check.bat / pack.bat|sh / start|stop.bat)原地不动**:
- 它们是"解压即用"的引导层(README 与"入口引用闭合"门钉着它们),其 Python 实现已迁入本模块,
- `scripts/<件>.py` 留 CLI 壳 ⇒ 引导脚本与既有命令行一字不改。公开名 → 本模块内的实现模块(PEP 562 惰性转发)。
- """
- from __future__ import annotations
- import importlib
- _TARGETS: dict[str, str] = {
- 'audit_chinese_terms': 'app_qualityGate.app_qualityGate_guanlan.audits.audit_chinese_terms',
- 'chain_gap_check': 'app_qualityGate.app_qualityGate_guanlan.audits.chain_gap_check',
- 'check_portability': 'app_qualityGate.app_qualityGate_guanlan.audits.check_portability',
- 'check_transferable': 'app_qualityGate.app_qualityGate_guanlan.audits.check_transferable',
- 'config_audit': 'app_qualityGate.app_qualityGate_guanlan.audits.config_audit',
- 'detail_deps': 'app_qualityGate.app_qualityGate_guanlan.audits.detail_deps',
- 'guanlan_baseline_manifest': 'app_qualityGate.app_qualityGate_guanlan.audits.guanlan_baseline_manifest',
- 'inventory_products': 'app_qualityGate.app_qualityGate_guanlan.audits.inventory_products',
- 'log_audit': 'app_qualityGate.app_qualityGate_guanlan.audits.log_audit',
- 'module_boundary_audit': 'app_qualityGate.app_qualityGate_guanlan.audits.module_boundary_audit',
- 'page_fingerprint': 'app_qualityGate.app_qualityGate_guanlan.audits.page_fingerprint',
- 'pages_audit': 'app_qualityGate.app_qualityGate_guanlan.audits.pages_audit',
- 'pages_sweep': 'app_qualityGate.app_qualityGate_guanlan.audits.pages_sweep',
- 'products_restore_missing': 'app_qualityGate.app_qualityGate_guanlan.audits.products_restore_missing',
- 'products_reverse_audit': 'app_qualityGate.app_qualityGate_guanlan.audits.products_reverse_audit',
- 'products_state': 'app_qualityGate.app_qualityGate_guanlan.audits.products_state',
- 'security_scan': 'app_qualityGate.app_qualityGate_guanlan.audits.security_scan',
- 'delivery_docs_build': 'app_qualityGate.app_qualityGate_guanlan.docs.delivery_docs_build',
- 'delivery_docs_figures': 'app_qualityGate.app_qualityGate_guanlan.docs.delivery_docs_figures',
- 'version_log': 'app_qualityGate.app_qualityGate_guanlan.docs.version_log',
- 'pack_dist': 'app_qualityGate.app_qualityGate_guanlan.pack.pack_dist',
- 'pack_verify_entry': 'app_qualityGate.app_qualityGate_guanlan.pack.pack_verify_entry',
- 'guanlan_uninstall': 'app_qualityGate.app_qualityGate_guanlan.pack.guanlan_uninstall',
- }
- __all__ = list(_TARGETS)
- def __getattr__(name: str):
- target = _TARGETS.get(name)
- if target is None:
- raise AttributeError(
- f'{__name__} 未公开 {name!r};公开面见 __all__ —— 模块间调用只许走 api.py'
- )
- mod = importlib.import_module(target)
- globals()[name] = mod
- return mod
|