Files
QuantEngineByItz/tools/check_sector_flow_reliability_ready_v1.py
T

60 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""Check whether WBS-9.5 can be promoted from DATA_GATED to DONE."""
from __future__ import annotations
import argparse
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))
from tools.build_sector_flow_history_progress_v1 import DEFAULT_JSON, FORMULA_ID, main as build_progress_main # type: ignore
def _load(path: Path) -> dict:
if not path.exists():
return {}
try:
payload = json.loads(path.read_text(encoding="utf-8"))
return payload if isinstance(payload, dict) else {}
except Exception:
return {}
def main() -> int:
ap = argparse.ArgumentParser(description="Check WBS-9.5 readiness.")
ap.add_argument("--input", default=str(ROOT / "Temp" / "sector_flow_history_progress_v1.json"))
ap.add_argument("--json", action="store_true")
args = ap.parse_args()
input_path = Path(args.input)
input_path = input_path if input_path.is_absolute() else ROOT / input_path
if not input_path.exists():
build_progress_main()
payload = _load(input_path)
current = int(payload.get("current_dates") or 0)
target = int(payload.get("target_dates") or 30)
ready = current >= target and payload.get("status") == "DONE"
result = {
"formula_id": "WBS_9_5_RELIABILITY_READY_V1",
"source": str(input_path),
"current_dates": current,
"target_dates": target,
"ready": ready,
"status": "DONE" if ready else "DATA_GATED",
"message": "WBS-9.5 can be promoted" if ready else "WBS-9.5 remains DATA_GATED",
}
print(json.dumps(result, ensure_ascii=False, indent=2) if args.json else f"{result['status']}: {result['message']} ({current}/{target})")
return 0 if ready else 1
if __name__ == "__main__":
raise SystemExit(main())