#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""把飞书备注 + 「合并发出」关联补进 shipment_status.json（不必等下一轮全量管道）。

用法:  /usr/bin/python3 脚本/enrich_shipment_remarks.py [--apply]
数据源: 数据/mcp_orders_input.json（含「备注内部」/「备注客户」字段）
"""
import json, io, os, sys, time, importlib.util

ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SHIP = os.path.join(ROOT, '数据', 'shipment_status.json')
INP = os.path.join(ROOT, '数据', 'mcp_orders_input.json')
APPLY = '--apply' in sys.argv

spec = importlib.util.spec_from_file_location('sp', os.path.join(ROOT, '脚本', 'shipment_pipeline.py'))
sp = importlib.util.module_from_spec(spec)
spec.loader.exec_module(sp)

S = json.load(io.open(SHIP, encoding='utf-8'))
M = json.load(io.open(INP, encoding='utf-8'))
rm = {r.get('单据编号'): ((r.get('备注内部') or ''), (r.get('备注客户') or '')) for r in M}

n = 0
for o in S['orders']:
    ri, rc = rm.get(o.get('orderId'), ('', ''))
    if ri or rc:
        o['remarkInternal'] = ri
        o['remarkCustomer'] = rc
        n += 1

for o in S['orders']:
    o.pop('mergedInto', None)          # 幂等：先清再算

S['orders'] = sp.attach_merge_links(S['orders'])
merged = [o for o in S['orders'] if o.get('mergedInto')]

print(f"备注回填: {n} 单")
print(f"合并关联: {len(merged)} 单")
for o in merged:
    mi = o['mergedInto']
    print('  %-16s → 并入 %-16s %-16s %s' % (
        o['orderId'], mi['orderId'], mi['trackingNo'], mi.get('statusLabel') or ''))

if APPLY and n:
    S['updated_at'] = time.strftime('%Y-%m-%d %H:%M:%S')
    with io.open(SHIP, 'w', encoding='utf-8') as f:
        json.dump(S, f, ensure_ascii=False, indent=2)
    print(f"\n✅ 已写回 {SHIP}")
else:
    print("\n（未加 --apply，未写盘）")
