Files
QuantEngineByItz/tools/validate_db_first_pipeline_v1.py
kjh2064 27730704ae
Snapshot Admin Web Validation / validate-snapshot-admin-smoke (push) Has been cancelled
Snapshot Admin Web Validation / validate-snapshot-admin-full (push) Has been cancelled
Quant Engine CI/CD Pipeline / validate-core (pull_request) Has been cancelled
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Has been cancelled
test(validation): 토큰 위생 및 플랫폼 통합 검증 체계 고도화
2026-06-24 18:06:05 +09:00

53 lines
1.9 KiB
Python

#!/usr/bin/env python3
from __future__ import annotations
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
def main() -> int:
errors: list[str] = []
spec_path = ROOT / "spec" / "02_data_contract.yaml"
server_path = ROOT / "src" / "quant_engine" / "snapshot_admin_server_v1.py"
collector_path = ROOT / "src" / "quant_engine" / "kis_data_collection_v1.py"
spec_text = spec_path.read_text(encoding="utf-8")
server_text = server_path.read_text(encoding="utf-8")
collector_text = collector_path.read_text(encoding="utf-8")
required_markers = [
("spec/db-first", "DB 기반 수집 결과를 바탕으로 생성된 파생 보고서 증빙"),
("spec/db-first-xlsx", "xlsx는 HTS 잔고·거래내역 판독 또는 DB 반영 이전의 보조 감사 소스"),
("server/json-role", "derived_report_evidence"),
("server/json-evidence", "Derived JSON Evidence Preview"),
("server/collection-trend", "collectionTrendChart"),
("collector/db-canonical", "SQLite as the canonical persistence layer"),
]
for name, marker in required_markers:
haystack = {
"spec/db-first": spec_text,
"spec/db-first-xlsx": spec_text,
"server/json-role": server_text,
"server/json-evidence": server_text,
"server/collection-trend": server_text,
"collector/db-canonical": collector_text,
}[name]
if marker not in haystack:
errors.append(f"missing marker: {name}")
if errors:
print(json.dumps({"gate": "FAIL", "errors": errors}, ensure_ascii=False, indent=2))
return 1
print(json.dumps({"gate": "PASS", "errors": []}, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())