#!/usr/bin/env python3
"""Actual multipart/PHP upload/PHPExcel/token/original commit, no prepared-data shortcut."""
import hashlib
import json
from pathlib import Path
import subprocess
import sys
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
PRIVATE = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-purchase-read3-20261012.L5dTYR/stage3/meal-plan-import212-20261013')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-meal-import-20261013/'


def verify():
    for name, digest in {
        'REPORT212.md': '26b53fed271af13ee5043976bb06f2e6e9c1e78cf24bdd11f0dcd07a4284c66f',
        'manifest212.json': '2a6a1daae7ca67c6c5411ec82a4b0bab39594df77b58cabe27bae7c7a12ebe2c',
        'verify212.py': '8945243f59e086125350d5fb53d0dc63c79df4e24770af1cb56319aa6eb4a1eb',
    }.items():
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output([sys.executable, '-B', str(PRIVATE / 'verify212.py')]))
    assert r['checks'] == 910 and r['assets'] == 94 and r['actual_PHP_upload_and_Excel_parser']
    for lane in ('B', 'C'):
        assert r['totals'][lane]['HTTP'] == 2 and r['totals'][lane]['final_qty_refs'] == 6
        root = PRIVATE / ('evidence-' + lane)
        receipt = json.loads((root / 'response-C212.json').read_text())
        final = json.loads((root / 'audit-final212.json').read_text())
        assert final['batch'][0]['id'] == int(receipt['ids']['batch_id'])
        assert final['batch'][0]['batch_no'] == receipt['ids']['batch_no']
        assert final['detail'][0]['batch_id'] == int(receipt['ids']['batch_id'])
        assert final['detail'][0]['recipe_uuid'] == receipt['ids']['recipe_uuid']
        assert final['own']['target_log'][0]['id'] == int(receipt['ids']['log_id'])


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch212.json'
    assert not audit.exists(), 'Do not replay matrix integration'
    specs = [item('store', 'POST', '/p/bill/' + action, BASE,
        success_case='partial-evidence-real-XLSX-upload-original-parser-token-commit-empty-own-target',
        readback='tested-pass-full-recipe-batch-detail-log-rows-native-identities-and-protected-owner-state',
        parity='partial-evidence-whole-original-wire-typed-values-source-verified-dynamic-identities-only',
        request_type='real-multipart-file-and-restaurant_ids' if action.endswith('Validate') else 'form-urlencoded-original-validation_token',
        cleanup='own-workers-upload-tmp-cache-token-zero-marked-rows-retained')
        for action in ('mealPlanImportValidate', 'mealPlanImportCommit')]
    tool.main(specs, audit, verify)
