Files
AgentLab/backend/app/apps/validation.py
T
ThearchyHelios 8d9a712eae 业务本体与标准实体:跨源键值对齐、对账共变算子、健康证据链与实体助手
- 新增标准业务实体(CanonicalEntity)模型、确定性跨源编码翻译、后台候选实体扫描与文档驱动实体智能助手
- 新增指标本体图谱(factor / reconciles_with / upstream_driver)、DAG 防环校验以及 ontology_neighbors / source_health 内置工具
- 新增跨源对账(analysis_reconcile)与滞后共变(analysis_cochange)分析算子,打通 [[h:H1]] 数据源健康证据链、报告导出与本体消融评测
- 数据目录新增「标准业务实体」视图与候选审阅工作台,口径页集成指标本体拓扑面板与端到端浏览器检查
2026-11-12 12:57:53 +08:00

29 lines
1.3 KiB
Python

"""发布预检的应用服务;编辑页、发布接口和发布单使用同一组检查。"""
from typing import Any
from sqlalchemy.ext.asyncio import AsyncSession
from app.engine.schema import GraphSpec
async def gate_issues(
session: AsyncSession, graph: Any, level: str, *, workflow_id: str | None = None,
) -> list[dict[str, Any]] | None:
from app.data.catalog_impact import open_structure_issues
from app.data.sqlcheck import graph_sources, load_checkers_by_name
from app.engine.governance import publish_issues
from app.engine.lint_process import load_subgraphs, with_subgraphs
from app.engine.provider_refs import load_providers
from app.ledger.ontology import ontology_publish_issues
try:
spec = GraphSpec.model_validate(graph)
except Exception:
return None
checkers = await load_checkers_by_name(session, graph_sources(spec.nodes))
providers = await load_providers(session, spec)
with with_subgraphs(await load_subgraphs(session, spec)):
issues = [i.model_dump() for i in publish_issues(spec, level=level, checkers=checkers, providers=providers)]
ontology_issues = await ontology_publish_issues(session, spec, workflow_id=str(workflow_id or ""))
return issues + ontology_issues + await open_structure_issues(session, spec)