#!/usr/bin/env python3
"""Root one-time intake: nonempty exports, log enhancements, internal Bank queries."""
import hashlib
import json
import subprocess
import sys
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
PRIVATE = Path('/private/tmp/cdx-ai-hk-course-b.Kmdirn')
REPORT = tool.STORE + 'parallel-finance-export-bank-20261013/ROOT_REVIEW.md'
CHECKS = [
    ('review-s3-373-382/verify_review.py', '3a7f1b73eaf894f83d7b9799610525795268ee97ac2afe97b39ceec7df9f4a8e', 1465, 'store', '81d20b80b6f41556189fe581cb652e970133c681'),
    ('review-s2-403-419/verify_review.py', '68e755d281e836398826421578d066f86695fe87919a9af88f17058d47c2ca81', 1427, 'ai_api', 'c441957b156a6651657fc3191f4088c25fe4a274'),
]


def verify():
    for relative, digest, count, repo, revision in CHECKS:
        script = PRIVATE / relative
        assert hashlib.sha256(script.read_bytes()).hexdigest() == digest
        result = json.loads(subprocess.check_output([sys.executable, '-B', str(script)]))
        assert result['verified_bounded_evidence'] and result['checks'] == count
        for path, expected in result['source_pins'].items():
            data = subprocess.check_output(['git', '-C', str(tool.source_root(repo)), 'show', revision + ':' + path])
            assert hashlib.sha256(data).hexdigest() == expected
        subprocess.check_call(['git', '-C', str(tool.source_root(repo)), 'merge-base', '--is-ancestor', revision, 'develop_dameng'])


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-exports-bank.json'
    assert not audit.exists(), 'Never replay main'
    rows = [item('store', method, path, '', evidence=REPORT,
        success_case='partial-evidence-owned-nonempty-export-original-HTTP-exact-job-and-real-XLSX',
        readback='tested-pass-job-audit-persisted-independent-source-and-wallet-unchanged',
        parity='partial-evidence-exact-XLSX-values-types-test-outer-transaction-not-native-async',
        cleanup='owned-source-jobs-retained-workers-stopped-C378-original-missing-not-replayed')
        for method, path in [('POST', '/p/cashoutOrder/export'), ('POST', '/p/cashRefund/export'), ('GET', '/p/cashRefund/export')]]
    rows += [item('store', 'POST', '/p/' + controller + '/exportLogs', '', evidence=REPORT, evidence_only=True)
             for controller in ['cashoutOrder', 'cashRefund', 'supplementMealOrder']]
    rows += [item('ai_api', 'POST', '/api/bank/' + action, '', evidence=REPORT,
        risk='owned-relations-read-and-conditional-school-migration-only',
        success_case='partial-evidence-owned-internal-school-related-user-and-current-token-paths',
        readback='tested-pass-two-owned-legacy-relation-UPDATEs-per-side-all-own-native-rows-protected',
        parity='partial-evidence-original-full-JSON-types-values-positive-empty-negative-no-real-bank-SDK',
        cleanup='fifteen-owned-rows-per-side-across-four-groups-retained-private-tokens-removed-workers-stopped')
        for action in ['relatedUsers', 'currentLoginUser']]
    tool.main(rows, audit, verify)
