import json, os, sys, time
D = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/数据/'
def snap(path):
    d = json.load(open(D + path))
    rows = d if isinstance(d, list) else d.get('items', [])
    tns = [ (r.get('物流单号') or '').strip() for r in rows if isinstance(r, dict) ]
    tns_nz = sorted(set(t for t in tns if t))
    fo = sum(1 for r in rows if isinstance(r, dict) and str(r.get('单据编号','')).startswith('FO'))
    ords = sorted(set(str(r.get('单据编号','')) for r in rows if isinstance(r, dict)))
    return {'file': path, 'rows': len(rows), 'unique_orders': len(ords), 'unique_tn': len(tns_nz),
            'fo_orders': fo, 'mtime': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.stat(D+path).st_mtime))}
mode = sys.argv[1]
if mode == 'before':
    s = snap('mcp_orders_input.json')
    json.dump(s, open(D + '_orders_snap_before.json', 'w'), ensure_ascii=False, indent=1)
    print('BEFORE', json.dumps(s, ensure_ascii=False))
    try:
        st = json.load(open(D + 'shipment_status.json'))
        print('shipment_status.total =', st.get('total'), '| mtime', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.stat(D+'shipment_status.json').st_mtime)))
    except Exception as e:
        print('shipment_status ERR', e)
elif mode == 'after':
    before = json.load(open(D + '_orders_snap_before.json'))
    after = snap('mcp_orders_input.json')
    b = set()
    bb = json.load(open(D + 'mcp_orders_input.json'))
    print('AFTER', json.dumps(after, ensure_ascii=False))
    def tnset(rows):
        return set((r.get('物流单号') or '').strip() for r in rows if isinstance(r, dict) and (r.get('物流单号') or '').strip())
    b_rows = json.load(open(D + 'mcp_orders_input.json'))
    print('before:', json.dumps(before, ensure_ascii=False))
    st = json.load(open(D + 'shipment_status.json'))
    print('shipment_status.total =', st.get('total'))
