Files
nearology 56c5ee23d3
Verify / test (push) Failing after 2m54s
first commit
2026-11-05 17:31:17 +03:30

25 خطوط
1.4 KiB
Python

#!/usr/bin/env python3
"""Audit a directory of real inputs without copying design files into source."""
import argparse
import hashlib
import json
import sys
from pathlib import Path
sys.path.insert(0,str(Path(__file__).resolve().parents[1]/'backend'))
from app.parser.schdoc_parser import parse_schdoc
from app.render import svg_document
p=argparse.ArgumentParser();p.add_argument('directory',type=Path);p.add_argument('--output',type=Path,default=Path('validation-output/corpus.json'));a=p.parse_args()
results=[]
for path in sorted(a.directory.glob('*')):
if path.suffix.lower()!='.schdoc': continue
raw=path.read_bytes()
result={'filename':path.name,'sha256':hashlib.sha256(raw).hexdigest()}
try:
doc=parse_schdoc(raw,path.name,'audit'); svg=svg_document(doc)
result.update(status='parsed',record_count=doc.metadata['record_count'],primitive_count=len(doc.primitives),component_count=len(doc.components),svg_bytes=len(svg),diagnostics=[d.model_dump() for d in doc.diagnostics])
except Exception as e: result.update(status='failed',error=str(e))
results.append(result)
a.output.parent.mkdir(parents=True,exist_ok=True);a.output.write_text(json.dumps(results,indent=2))
print(json.dumps({'files':len(results),'parsed':sum(r['status']=='parsed' for r in results),'failed':sum(r['status']=='failed' for r in results),'output':str(a.output)}))
sys.exit(1 if not results or any(r['status']=='failed' for r in results) else 0)