| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # -*- coding: utf-8 -*-
- r"""观澜 · 前端 —— **对外公开面**(P5 起:实现已在本模块目录内)。
- 用户令 2026-09-22:按模块重构源代码目录,**每模块只许经 `api.py` 被别的模块调用**。
- 本模块负责(P5 完成):
- * `assets/` —— 工作台单页的前端资源件(app.js / app.css / charts.js / favicon.svg);
- * `pages/` —— 页面装配(`shell.html` 外壳、`build.py` 出页、`snapshot.py` 单文件烘焙、`classic.py` 经典页模板);
- * `design.py` / `lang.py` / `terms.py` —— 设计系统 CSS 单一来源、双语文案语言包、显示层术语映射;
- * `builders/` —— 门户与静态页装配器(CLI 入口仍在 `scripts/`,为兼容壳)。
- 旧路径(`src/windscada/ui/*`、`src/windscada/{design,lang,terms}.py`、`scripts/{portal_build,guanlan_portal_*}.py`)
- 一律留兼容壳,行为与迁移前逐字节一致。公开名 → 本模块内的实现模块(PEP 562 惰性转发,import 本文件不连带重依赖)。
- """
- from __future__ import annotations
- import importlib
- _TARGETS: dict[str, str] = {
- 'ui_build': 'app_frontEnd.app_frontEnd_guanlan.pages.build',
- 'ui_snapshot': 'app_frontEnd.app_frontEnd_guanlan.pages.snapshot',
- 'classic_pages': 'app_frontEnd.app_frontEnd_guanlan.pages.classic',
- 'design': 'app_frontEnd.app_frontEnd_guanlan.design',
- 'lang': 'app_frontEnd.app_frontEnd_guanlan.lang',
- 'terms': 'app_frontEnd.app_frontEnd_guanlan.terms',
- 'portal_build': 'app_frontEnd.app_frontEnd_guanlan.builders.portal_build',
- 'portal_anchor_fix': 'app_frontEnd.app_frontEnd_guanlan.builders.portal_fix_anchors',
- 'portal_claims': 'app_frontEnd.app_frontEnd_guanlan.builders.portal_inject_claims',
- # 英文投影层仍在既有路径(数据层投影,归口待裁;P5 未迁)
- 'ui_en': 'src.windscada.ui_en',
- 'i18n_en': 'src.windscada.i18n_en',
- 'cms_ui': 'src.windcms.ui',
- }
- __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
|