# -*- coding: utf-8 -*- r"""观澜 · 本体与知识层 —— **对外公开面**(P6 起:实现已在本模块目录内)。 用户令 2026-09-22:按模块重构源代码目录,**每模块只许经 `api.py` 被别的模块调用**。 本模块负责(P6 完成):本体对象库与码表(`ontology/`)与 SOP/知识层(`sop/`):契约闸、判别器、 调查与案例、台账与日期口径、可用性与各类校验、检索与决策台、本机模型闸。 旧路径(`src/ontology/*.py`、`src/sop/*.py`)一律留兼容壳:`from src.sop.cases import …` 与 `python -m src.ontology.kb_ingest`(重算链 ⑦ 步用的入口)都照旧可用。 公开名 → 本模块内的实现模块(PEP 562 惰性转发,import 本文件不连带重依赖)。 """ from __future__ import annotations import importlib _TARGETS: dict[str, str] = { 'store': 'app_ontology.app_ontology_guanlan.ontology.store', 'schema': 'app_ontology.app_ontology_guanlan.ontology.schema', 'codes': 'app_ontology.app_ontology_guanlan.ontology.codes', 'kb_ingest': 'app_ontology.app_ontology_guanlan.ontology.kb_ingest', 'populate': 'app_ontology.app_ontology_guanlan.ontology.populate', 'chain_ingest': 'app_ontology.app_ontology_guanlan.ontology.chain_ingest', 'trend_ingest': 'app_ontology.app_ontology_guanlan.ontology.trend_ingest', 'retrieval': 'app_ontology.app_ontology_guanlan.ontology.retrieval', 'maintenance': 'app_ontology.app_ontology_guanlan.ontology.maintenance', 'decisions': 'app_ontology.app_ontology_guanlan.ontology.decisions', 'audit': 'app_ontology.app_ontology_guanlan.ontology.audit', 'fast_agent': 'app_ontology.app_ontology_guanlan.ontology.fast_agent', 'llm_gate': 'app_ontology.app_ontology_guanlan.ontology.llm_gate', 'acceptance_fsm': 'app_ontology.app_ontology_guanlan.ontology.acceptance_fsm', 'mcp_server': 'app_ontology.app_ontology_guanlan.ontology.mcp_server', 'migrate': 'app_ontology.app_ontology_guanlan.ontology.migrate', 'monthly_roll': 'app_ontology.app_ontology_guanlan.ontology.monthly_roll', 'scenario_29': 'app_ontology.app_ontology_guanlan.ontology.scenario_29', 'seed_rudong29': 'app_ontology.app_ontology_guanlan.ontology.seed_rudong29', 'sop_schemas': 'app_ontology.app_ontology_guanlan.sop.schemas', 'sop_contract_gate': 'app_ontology.app_ontology_guanlan.sop.contract_gate', 'sop_analysis_kit': 'app_ontology.app_ontology_guanlan.sop.analysis_kit', 'sop_discriminators': 'app_ontology.app_ontology_guanlan.sop.discriminators', 'sop_farm_pipeline': 'app_ontology.app_ontology_guanlan.sop.farm_pipeline', 'sop_survey': 'app_ontology.app_ontology_guanlan.sop.survey', 'sop_goem': 'app_ontology.app_ontology_guanlan.sop.goem', 'sop_vib_impact': 'app_ontology.app_ontology_guanlan.sop.vib_impact', 'sop_vib_confidence': 'app_ontology.app_ontology_guanlan.sop.vib_confidence', 'sop_vib_confidence_wire': 'app_ontology.app_ontology_guanlan.sop.vib_confidence_wire', 'sop_fusion_diag': 'app_ontology.app_ontology_guanlan.sop.fusion_diag', 'sop_cases': 'app_ontology.app_ontology_guanlan.sop.cases', 'sop_scenarios': 'app_ontology.app_ontology_guanlan.sop.scenarios', 'sop_ledger_dates': 'app_ontology.app_ontology_guanlan.sop.ledger_dates', 'sop_price': 'app_ontology.app_ontology_guanlan.sop.price', 'sop_backfill': 'app_ontology.app_ontology_guanlan.sop.backfill', 'sop_wrapup': 'app_ontology.app_ontology_guanlan.sop.wrapup', 'sop_learn_loop': 'app_ontology.app_ontology_guanlan.sop.learn_loop', 'sop_schema_guard': 'app_ontology.app_ontology_guanlan.sop.schema_guard', 'sop_fleet_query': 'app_ontology.app_ontology_guanlan.sop.fleet_query', 'sop_assistant': 'app_ontology.app_ontology_guanlan.sop.assistant', 'sop_assistant_llm': 'app_ontology.app_ontology_guanlan.sop.assistant_llm', 'sop_agent_query_common': 'app_ontology.app_ontology_guanlan.sop.agent_query_common', 'sop_fatigue_validation': 'app_ontology.app_ontology_guanlan.sop.fatigue_validation', 'sop_hydraulic_validation': 'app_ontology.app_ontology_guanlan.sop.hydraulic_validation', 'sop_icing_validation': 'app_ontology.app_ontology_guanlan.sop.icing_validation', 'sop_pitch_validation': 'app_ontology.app_ontology_guanlan.sop.pitch_validation', 'sop_reactive_validation': 'app_ontology.app_ontology_guanlan.sop.reactive_validation', 'sop_sensor_validation': 'app_ontology.app_ontology_guanlan.sop.sensor_validation', 'sop_thermreg_validation': 'app_ontology.app_ontology_guanlan.sop.thermreg_validation', 'sop_yaw_validation': 'app_ontology.app_ontology_guanlan.sop.yaw_validation', 'sop_validate_pair': 'app_ontology.app_ontology_guanlan.sop.validate_pair', 'sop_stat_clean': 'app_ontology.app_ontology_guanlan.sop.stat_clean', 'sop_derive10min': 'app_ontology.app_ontology_guanlan.sop.derive10min', 'sop_farm_paths': 'app_ontology.app_ontology_guanlan.sop.farm_paths', 'sop_analysis_lock': 'app_ontology.app_ontology_guanlan.sop.analysis_lock', 'sop_schedule': 'app_ontology.app_ontology_guanlan.sop.schedule', 'sop_wind_coupling': 'app_ontology.app_ontology_guanlan.sop.wind_coupling', 'sop_xlsx_read': 'app_ontology.app_ontology_guanlan.sop.xlsx_read', } __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