#!/usr/bin/env python3
"""Accept the repaired existing Staff.info key, preserving reference-data differences."""
import hashlib
import json
import subprocess
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/staff167-uint64')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-staff-uint64-20261013/'


def verify():
    for name, digest in [
        ('REPORT_167.md', 'eef2b14aa4d4a2ef5950f64382860e1c9fa7b619e791540b411e43f8f783cec8'),
        ('verify167_offline.php', '290e1d102603a6ed46f0a81e52d09804a57c93a450e95da1a3464ddeeb224ca6'),
        ('ADDENDUM_REFERENCE_167.md', '8464c35f20b38c325d5880bdf7790b2b9c360b90c4877f4050b16f759324b478'),
        ('read167-B-reference.json', 'effea5d9e2181dc11e8069d5a21f5a1581ed7c8819cdf436398ea1aeb2f16404'),
        ('read167-C-reference.json', '8b47ac1196b747ff334bdc0fcc1016b3ca19d2187922de711df87d2a82eb9e66'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(PRIVATE / 'verify167_offline.php')]))
    assert r['status'] == 'verified-original-wire-and-own-source'
    assert r['positive_http_B'] == r['positive_http_C'] == 4
    assert r['response_fields'] == 89 and r['B_C_type_and_format_class_differences'] == 0
    assert r['B_bootstrap_tool_500'] == r['C_private_stale70_failclosed_http'] == 1
    assert r['fresh_independent_final_own_rows_B_C'] and r['stale70_error_exact']
    expected_diff = {'id', 'uuid', 'name', 'create_time', 'create_by', 'personnel_umber',
        'update_time', 'one_card_enabled', 'restaurant_name'}
    for step in ('G0', 'U1', 'U1repeat', 'U2'):
        bodies = [json.loads((PRIVATE / ('verify167v2-' + lane + '-' + step + '.raw')).read_text())['data']['0'] for lane in ('B', 'C')]
        assert {k for k in bodies[0] if bodies[0][k] != bodies[1][k]} == expected_diff
    for lane, enabled, queries in [('B', True, 4), ('C', False, 3)]:
        ref = json.loads((PRIVATE / ('read167-' + lane + '-reference.json')).read_text())
        assert ref['read_queries'] == queries and ref['DML'] == ref['HTTP'] == 0
        assert ref['one_card']['valid_json'] and ref['one_card']['expected_enabled'] is enabled
        assert ref['one_card']['http_enabled_matches_source'] and ref['one_card']['http_is_one_card_user_matches_source']
        assert ref['restaurant']['http_matches_source']
        assert ref['restaurant']['source_name_sha256'] == ref['restaurant']['http_name_sha256']
    assert hashlib.sha256((tool.source_root('store') / 'application/model/Staff.php').read_bytes()).hexdigest() == '227559ed74093c77f64097847d9f862fbaa3c08467b372cdec94a97958ecfb11'


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch167.json'
    assert not audit.exists(), 'One-time update of an existing key only'
    specs = [item('store', 'POST', '/p/staff/info', BASE,
        readback='tested-pass-own-full-row-unchanged-server-exact-UINT64-and-independent-post-stop-readback',
        success_case='partial-evidence-77columns-89DTO-fields-null-and-wide-integer-path',
        parity='partial-evidence-types-formats-equal-nine-owned-reference-value-differences-source-explained',
        boundary_empty_min_max='partial-evidence-NULL-2pow53plus1-UINT64max-private-stale70-failclosed',
        cleanup='own-private-workers-stopped-stale-cache-removed-marked-rows-retained-QR-zero')]
    tool.main(specs, audit, verify)
