#!/usr/bin/env python3
"""Offline check of the actual CLI read precision mismatch, without DB access."""
import hashlib
import json
from pathlib import Path

root = Path(__file__).parent
directory = root / 'read-private-evidence'
results = {}
for lane, bytecount in [('B', 19), ('C', 26)]:
    actual = json.loads((directory / (lane + '-logic.json')).read_text())
    assert actual['DML'] == actual['DDL'] == 0 and actual['business_source_exact']
    assert actual['logic_sha256'] == '29ccbcfad2e1cfcb77a0bdbb339d40bec8b30889a4c5b5aad00babbe7671d139'
    assert actual['result']['name'] == 'CDXC9733C88C1-P'
    for field in ('update_time', 'create_time'):
        assert actual['types'][field] == {'type': 'string', 'bytes': bytecount}
        assert actual['result'][field] == ('2001-02-03 04:05:06' + ('.000000' if lane == 'C' else ''))
    for entry in actual['prepared']:
        assert entry['ok'] and (entry['queryString'].lstrip().startswith(('SELECT ', 'SHOW ')) or entry['queryString'] == 'CALL SP_TABLEDEF(?, ?)')
    if lane == 'C':
        assert actual['CREATE_TIME_all_zero_fraction']
    results[lane] = actual
assert results['B']['types'] == {key: ({'type': 'string', 'bytes': 19} if key in ('create_time', 'update_time') else value) for key, value in results['C']['types'].items()}
for lane in results:
    values = {key: value for key, value in results[lane]['result'].items() if key not in ('id', 'create_time', 'update_time')}
    results[lane]['non_time'] = values
assert results['B']['non_time'] == results['C']['non_time']
summary = {'passed': True, 'layer': 'CLI Logic::read only', 'DML': 0, 'DDL': 0, 'HTTP': 0, 'B_time_type': 'string', 'C_time_type': 'string', 'B_time_bytes': 19, 'C_time_bytes': 26, 'precision_mismatch_reproduced': True, 'C_existing_CREATE_TIME_zero_fraction': True, 'non_time_fields_and_types_match_except_lane_id': True, 'business_source_exact': True}
print(json.dumps(summary, ensure_ascii=False, indent=2))
