feat(govdoc): 新增内部公文模块全链路(后端58+前端11文件)
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
"""加载并校验 rules.yaml。"""
|
||||
|
||||
from __future__ import annotations
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
|
||||
from fastapi_modules.fastapi_leaudit.govdoc_engine.dsl.schema import RuleSet
|
||||
|
||||
|
||||
def _load_uncached(path: Path) -> RuleSet:
|
||||
with open(path, encoding="utf-8") as f:
|
||||
data = yaml.safe_load(f)
|
||||
return RuleSet.model_validate(data)
|
||||
|
||||
|
||||
@lru_cache(maxsize=32)
|
||||
def _load_cached(path_str: str, mtime: float) -> RuleSet:
|
||||
return _load_uncached(Path(path_str))
|
||||
|
||||
|
||||
def load_rules(path: str | Path) -> RuleSet:
|
||||
path = Path(path)
|
||||
return _load_cached(str(path.resolve()), path.stat().st_mtime)
|
||||
Reference in New Issue
Block a user