aiflow-math-ink-06-intermediate / scripts /preflight_math_ink_06_p_formula.py
cwLeeDev's picture
Add fail-closed real P formula data contract
52585d7 verified
Raw
History Blame Contribute Delete
1.66 kB
"""์‹ค์ œ P ์—ฐ์† ์ˆ˜์‹ JSONL์„ ํ•™์Šตยทํ‰๊ฐ€ ์ „์— fail-closed๋กœ ๊ฐ์‚ฌํ•œ๋‹ค."""
from __future__ import annotations
import argparse
from datetime import datetime, timezone
import json
from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).parents[1]
SOURCE_ROOT = PROJECT_ROOT / "src"
if str(SOURCE_ROOT) not in sys.path:
sys.path.insert(0, str(SOURCE_ROOT))
from math_grid_drawer.research.external_corpus import read_jsonl
from math_grid_drawer.research.p_formula_gate06 import audit_p_formula_records06
def main() -> None:
"""ํ•„์š” ๋ณ€์ˆ˜: UTF-8 JSONLยท์ตœ์†Œ source ์ˆ˜ยท์ถœ๋ ฅ. ์ž‘๋™ ์›๋ฆฌ: ์‹ค์ œ P gate ์ ๊ฒฉ ์—ฌ๋ถ€์™€ ๋ชจ๋“  ๋ˆ„์ˆ˜ ์›์ธ์„ JSON์œผ๋กœ ๋‚จ๊ธด๋‹ค."""
parser = argparse.ArgumentParser(description="Preflight real P continuous formula data")
parser.add_argument("--data", type=Path, required=True)
parser.add_argument("--minimum-independent-sources", type=int, default=2)
parser.add_argument("--output", type=Path, required=True)
args = parser.parse_args()
records = list(read_jsonl(args.data))
report = audit_p_formula_records06(
records, minimum_independent_sources=args.minimum_independent_sources,
)
report["generated_at"] = datetime.now(timezone.utc).isoformat()
report["data"] = str(args.data)
args.output.parent.mkdir(parents=True, exist_ok=True)
args.output.write_text(
json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8",
)
print(json.dumps(report, ensure_ascii=False, indent=2))
if not report["eligible_for_product_evaluation"]:
raise SystemExit(2)
if __name__ == "__main__":
main()