test(validation): 토큰 위생 및 플랫폼 통합 검증 체계 고도화
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

This commit is contained in:
2026-06-24 18:06:05 +09:00
parent 9abb8d3bc3
commit 27730704ae
24 changed files with 850 additions and 54 deletions
+22 -2
View File
@@ -120,7 +120,8 @@ def main() -> int:
try:
_wait_for_server(base_url)
html = _read_text(f"{base_url}/")
home_html = _read_text(f"{base_url}/")
html = _read_text(f"{base_url}/workspace")
state = _read_json(f"{base_url}/api/state")
tables_payload = _read_json(f"{base_url}/api/tables")
export_payload = _read_json(f"{base_url}/api/export")
@@ -139,6 +140,10 @@ def main() -> int:
"workspace": state.get("summary", {}),
}
packet_response = _post_json(f"{base_url}/api/approval_packet", {"packet": approval_packet})
if "Snapshot Admin Home" not in home_html:
errors.append("home_title_missing")
if "Open workspace" not in home_html or "Open collection" not in home_html:
errors.append("home_navigation_missing")
if "Snapshot Admin" not in html:
errors.append("html_title_missing")
if "contenteditable" not in html:
@@ -171,7 +176,14 @@ def main() -> int:
if "Read only" not in tables_html or "Save current table" not in tables_html:
errors.append("table_browser_source_labels_missing")
collection_html = _read_text(f"{base_url}/collection")
if "KIS Collection Dashboard" not in collection_html or "Download CSV" not in collection_html or "Ticker quick search" not in collection_html or "Date quick search" not in collection_html:
if (
"KIS Collection Dashboard" not in collection_html
or "Download CSV" not in collection_html
or "Ticker quick search" not in collection_html
or "Date quick search" not in collection_html
or "collectionLiveStatus" not in collection_html
or "live source: unknown" not in collection_html
):
errors.append("collection_dashboard_page_missing")
if int(state.get("summary", {}).get("settings_rows") or 0) <= 0:
errors.append("settings_rows_missing")
@@ -200,6 +212,14 @@ def main() -> int:
errors.append("collection_counts_missing")
if "latest_report" not in collection:
errors.append("collection_latest_report_missing")
latest_report = collection.get("latest_report", {})
if isinstance(latest_report, dict):
if latest_report.get("input_json") and "GatherTradingData.json" not in str(latest_report.get("input_json")):
errors.append("collection_latest_report_input_mismatch")
if not latest_report.get("sqlite_db"):
errors.append("collection_latest_report_sqlite_missing")
if collection.get("output_json_path") and "kis_data_collection_v1.json" not in str(collection.get("output_json_path")):
errors.append("collection_output_json_path_mismatch")
if "data" not in export_payload:
errors.append("export_missing_data")
if packet_response.get("gate") != "PASS":