#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""ERP 入库前基线快照：现用文件 / 派生 JSON / 待收件箱 / 服务健康"""
import os, json, glob, datetime, subprocess

ROOT = os.path.expanduser('~/Desktop/Hermes输出-工作类')
D = os.path.join(ROOT, '数据')


def ts(p):
    return datetime.datetime.fromtimestamp(os.path.getmtime(p)).strftime('%m-%d %H:%M')


def mb(p):
    return os.path.getsize(p) / 1024 / 1024


print('=' * 78)
print('① ERP 源文件目录  数据/每日上传/')
print('=' * 78)
up = os.path.join(D, '每日上传')
if os.path.isdir(up):
    ent = sorted(os.listdir(up), key=lambda f: -os.path.getmtime(os.path.join(up, f)))
    for f in ent[:12]:
        p = os.path.join(up, f)
        flag = '📁' if os.path.isdir(p) else '📄'
        print('  %s %-58s %s  %s' % (flag, f[:58], ts(p), ('%.2fMB' % mb(p)) if os.path.isfile(p) else ''))
else:
    print('  （无此目录）')

print()
print('=' * 78)
print('② 月度销售额数据/ （refresh_erp 按 mtime 选最新）')
print('=' * 78)
src = os.path.expanduser('~/Desktop/hermas输入-工作台数据库/月度销售额数据')
for d in [src, os.path.expanduser('~/hermas输入-工作台数据库/月度销售额数据'), os.path.join(ROOT, 'hermas输入-工作台数据库/月度销售额数据')]:
    if os.path.isdir(d):
        print('  目录:', d)
        fs = [os.path.join(d, f) for f in os.listdir(d) if f.endswith(('.xlsx', '.xls'))]
        fs.sort(key=lambda f: -os.path.getmtime(f))
        for f in fs[:8]:
            print('    %-56s %s  %.2fMB' % (os.path.basename(f)[:56], ts(f), mb(f)))
        break
else:
    print('  ⚠️ 目录未找到')

print()
print('=' * 78)
print('③ 现用最新 ERP 文件内容概览')
print('=' * 78)
try:
    import pandas as pd
    cands = []
    for d in [src, os.path.expanduser('~/hermas输入-工作台数据库/月度销售额数据'), os.path.join(ROOT, 'hermas输入-工作台数据库/月度销售额数据'), up]:
        if os.path.isdir(d):
            for f in os.listdir(d):
                if f.startswith('销售订单') and f.endswith(('.xlsx', '.xls')):
                    cands.append(os.path.join(d, f))
    cands.sort(key=lambda f: -os.path.getmtime(f))
    if cands:
        fp = cands[0]
        print('  最新文件:', os.path.basename(fp), '|', ts(fp))
        df = pd.read_excel(fp, dtype=str)
        print('  行数:', len(df), '| 列数:', len(df.columns))
        dcol = '合同日期' if '合同日期' in df.columns else df.columns[1]
        ds = df[dcol].astype(str).str.strip().str[:10]
        ds = ds[ds.str.match(r'^\d{4}-\d{2}-\d{2}$')]
        print('  合同日期范围: %s → %s' % (ds.min(), ds.max()))
        print('  列头:', ' | '.join(str(c)[:14] for c in list(df.columns)[:16]))
    else:
        print('  ⚠️ 未找到 销售订单*.xlsx')
except Exception as e:
    print('  ❌ 读取失败:', str(e)[:120])

print()
print('=' * 78)
print('④ 派生 JSON（前端数据源）')
print('=' * 78)
for name in ['kpi_dashboard.json', 'kpi_progress.json', 'three_year_monthly.json',
             'erp_amount.json', 'workbench_data.json', 'mcp_orders_input.json',
             'h1_monthly.json', 'my_kpis.json']:
    p = os.path.join(D, name)
    if os.path.isfile(p):
        extra = ''
        try:
            j = json.load(open(p, encoding='utf-8'))
            if name == 'kpi_dashboard.json':
                extra = 'H1=%.1f万 部门=%d 人=%d' % ((j.get('total_h1') or 0) / 1e4,
                                                   len(j.get('depts') or []), len(j.get('people') or []))
            elif name == 'kpi_progress.json':
                extra = 'total=%.1f万 month=%s' % ((j.get('total') or 0) / 1e4, j.get('month', '?'))
            elif name == 'erp_amount.json':
                dl = j.get('daily') or {}
                extra = '%d 天 最大=%s' % (len(dl), max(dl) if dl else '-')
            elif name == 'three_year_monthly.json':
                extra = 'keys=' + ','.join(list(j.keys())[:4])
        except Exception as e:
            extra = '⚠️ ' + str(e)[:40]
        print('  %-26s %s  %.2fMB  %s' % (name, ts(p), mb(p), extra))
    else:
        print('  %-26s （缺失）' % name)

print()
print('=' * 78)
print('⑤ 待收件箱（飞书来件）')
print('=' * 78)
cd = os.path.expanduser('~/.hermes/cache/documents')
if os.path.isdir(cd):
    fs = sorted(glob.glob(os.path.join(cd, '*')), key=lambda f: -os.path.getmtime(f))
    print('  共 %d 个文件，最近 6 个:' % len(fs))
    for f in fs[:6]:
        print('    %-46s %s  %.2fMB' % (os.path.basename(f)[:46], ts(f), mb(f)))
else:
    print('  （无 cache/documents 目录）')

print()
print('=' * 78)
print('⑥ 服务健康')
print('=' * 78)
r = subprocess.run(['curl', '-s', '-o', '/dev/null', '-w', '%{http_code}', '-m', '8',
                    'http://127.0.0.1:8765/工具/index.html'], capture_output=True, text=True)
print('  本机 8765:', r.stdout or '无响应')
print('  今天:', datetime.date.today().isoformat())
