#!/usr/bin/env python """Lightweight validation for the ingestion output.""" from __future__ import annotations import argparse import json import os REQUIRED_FIELDS = {"doc_id", "page", "section", "section_index", "content", "source"} def validate_jsonl(path: str) -> None: if not os.path.exists(path): raise FileNotFoundError(f"Missing output file: {path}") with open(path, "r", encoding="utf-8") as handle: for line_num, line in enumerate(handle, start=1): if not line.strip(): continue record = json.loads(line) missing = REQUIRED_FIELDS - set(record) if missing: raise ValueError(f"Line {line_num} missing fields: {sorted(missing)}") if not record["doc_id"]: raise ValueError(f"Line {line_num} has empty doc_id") if not record["section"]: raise ValueError(f"Line {line_num} has empty section") if not record["content"]: raise ValueError(f"Line {line_num} has empty content") if not isinstance(record["source"], dict): raise ValueError(f"Line {line_num} source must be a dict") def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Validate ingestion output JSONL.") parser.add_argument( "--input", default=os.path.join("01_data_ingestion", "output", "cleaned_mtsamples.jsonl"), help="Path to JSONL output file.", ) return parser.parse_args() def main() -> None: args = parse_args() validate_jsonl(args.input) print("Validation passed.") if __name__ == "__main__": main()