#!/usr/bin/env python3
"""Read-only crosscheck of synthetic source, arithmetic, and document drafts."""
import csv
import json
from pathlib import Path

ROOT = Path(__file__).resolve().parent
brief = json.loads((ROOT / 'brief.json').read_text(encoding='utf-8'))
assert brief['synthetic'] is True
assert brief['tax_status'] is None
with (ROOT / 'calc.csv').open(encoding='utf-8', newline='') as stream:
    rows = list(csv.DictReader(stream))
assert len(rows) == 3
assert [r['item_id'] for r in rows] == ['S01', 'S02', 'S03']
total = 0
for source, row in zip(brief['scope'], rows):
    assert row['item_id'] == source['item_id']
    assert row['description'] == source['description']
    assert row['unit'] == source['unit']
    assert int(row['quantity']) == source['quantity']
    assert int(row['unit_price_rub']) == source['unit_price_rub']
    subtotal = source['quantity'] * source['unit_price_rub']
    assert int(row['line_total_rub']) == subtotal
    assert row['currency'] == 'RUB'
    total += subtotal
assert total == 48000 == brief['scope_total_rub']
required_missing = {'buyer_legal_name','buyer_details','seller_details','issue_date','delivery_dates','payment_terms','tax_status'}
assert set(brief['missing_fields']) == required_missing
assert all(brief[field] is None for field in required_missing)
for name in ['quote.md','invoice-draft.md','contract-draft.md']:
    text = (ROOT / name).read_text(encoding='utf-8')
    assert 'УЧЕБНЫЙ ЧЕРНОВИК — НЕ ДЛЯ ОПЛАТЫ И ПОДПИСАНИЯ' in text, name
    assert 'brief_id=LIN-DOC-01' in text, name
    assert 'Итог объёма: 48000 ₽' in text, name
    assert 'итог к оплате не определён' in text.lower(), name
    assert all(field in text for field in required_missing), name
    for source in brief['scope']:
        expected_row = '| {item_id} | {description} | {unit} | {quantity} | {unit_price_rub} | {line_total} |'.format(**source, line_total=source['quantity'] * source['unit_price_rub'])
        assert expected_row in text, (name, source['item_id'])
html = (ROOT / 'index.html').read_text(encoding='utf-8')
assert '48000' in html and all(field in html for field in required_missing)
print(json.dumps({'passed': True, 'scope_total_rub': total, 'positions': 3, 'drafts_crosschecked': ['quote.md','invoice-draft.md','contract-draft.md'], 'missing_fields': sorted(required_missing), 'external_writes': 0, 'legal_readiness': 'not_assessed'}, ensure_ascii=False, indent=2))
