#!/usr/bin/env python3
"""Attribute the observed price endpoint to Store and retain the tool-red attempt."""
import base64
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 = tool.ROOT.parent.parent / 'local/dm8-store-purchase-read3-20261012.L5dTYR/stage3/cater-price-actual163-20261012'
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-cater-price-20261012/'


def verify():
    for file, digest in [
        ('REPORT.md', '456bef677e27b8ef873146d8a906f59abb9aa16b89cb1b0c56224b299068f6be'),
        ('manifest163.json', '6fabca96ab12b86d0e51fb8128e09b5f492222acd95199fef516e5bc056484dc'),
        ('verify163.js', 'b980a4a5d76855487ee0e536b85377d415318afd8b7f5bdb3fe91bf8440f3e86'),
        ('audit163.json', 'f34b5d15826853272e6cbc08ccafc53545a70023473d82dd62531d3def3c6d57'),
        ('source163-current.json', '586493795d15250a9179629f347887d190f0311e8915b1739afaf69daf94acce'),
    ]:
        assert hashlib.sha256((PRIVATE / file).read_bytes()).hexdigest() == digest
    result = json.loads(subprocess.check_output(['node', str(PRIVATE / 'verify163.js'), '--readonly']))
    assert result['passed'] and result['checks'] == 420 and result['assets'] == 79
    assert result['DB'] == result['SQL'] == result['HTTP'] == 0
    for lane in ['B', 'C']:
        r = result['sides'][lane]
        assert r['HTTP'] == 2 and r['old_tool_failure'] == 1 and r['selected_success'] == 1
        assert r['parent_U'] == 1 and r['I'] == r['D'] == r['transactions'] == 0
        assert r['physical_price_type'] == 'double' and r['all_other_owner_columns_unchanged'] and r['W1_unchanged']
        proof = json.loads((PRIVATE / lane / 'proof-CATER163-P2.json').read_text())
        body = json.loads(base64.b64decode(proof['body_base64']))
        assert type(body['code']) is int and type(body['data']) is list
        assert body == {'code': 0, 'message': '菜品价格修改成功', 'data': []}


if __name__ == '__main__':
    audit = HERE / 'integration-20261012-batch163.json'
    assert not audit.exists()
    specs = [item('store', 'POST', '/p/cater/updatePrice', BASE,
        from_repo='unreviewed', from_source='apifox-2026-05-08',
        risk='one-owned-dish-two-field-update-real-LockLyg-disabled-no-external',
        success_case='partial-evidence-own-price-zero-to-quarter-original-PDO-bind-and-update',
        readback='tested-pass-original-price-double-quarter-only-price-update_time-changed-full-closure-unchanged',
        parity='partial-evidence-original-complete-HTTP-code-message-array-equal-no-price-time-DTO',
        cleanup='W2-owned-price-quarter-retained-W1-unchanged-tool-pre-and-P-failures-preserved')]
    tool.main(specs, audit, verify)
