#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""独立复算（不引用产出脚本逻辑）+ 保护文件 mtime 核对。"""
import hashlib
import os

import pandas as pd

ROOT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类'
F = os.path.expanduser('~/.hermes/profiles/zone-b/cache/documents/doc_b68712feec68_刘子研三季度数据-截止至9.30(1).xls')
XL = os.path.join(ROOT, '销售分析', '集团维度_货号增减归因.xlsx')

# ── 独立复算：主口径 1-9 月总额 ──────────────────────────────
d25 = pd.read_excel(F, sheet_name='2025年销售数据', header=0, engine='xlrd')
d26 = pd.read_excel(F, sheet_name='2026年销售数据', header=0, engine='xlrd')
chk = {}
for d, y in ((d25, 2025), (d26, 2026)):
    d.columns = [str(c).strip() for c in d.columns]
    dt = pd.to_datetime(d['合同日期'], errors='coerce')
    ok = (d['单据类型'].astype(str).str.contains('标准销售订单', na=False)
          & d['单据状态'].astype(str).str.contains('已审核', na=False)
          & ~d['是否赠品'].astype(str).str.strip().isin(['是', 'Y'])
          & ~d['客户'].astype(str).str.contains('宝锐|宝泰|横琴', na=False, regex=True)
          & (dt.dt.year == y) & (dt.dt.month <= 9))
    chk['主口径%d_1-9月' % y] = round(pd.to_numeric(d[ok]['价税合计'], errors='coerce').sum(), 2)
    if y == 2025:
        okf = k_full = (d['单据类型'].astype(str).str.contains('标准销售订单', na=False)
                        & d['单据状态'].astype(str).str.contains('已审核', na=False)
                        & ~d['是否赠品'].astype(str).str.strip().isin(['是', 'Y'])
                        & ~d['客户'].astype(str).str.contains('宝锐|宝泰|横琴', na=False, regex=True))
        chk['附口径2025_全年'] = round(pd.to_numeric(d[okf]['价税合计'], errors='coerce').sum(), 2)
print('独立复算:', chk)
print('主口径 全量Δ = %.2f' % (chk['主口径2026_1-9月'] - chk['主口径2025_1-9月']))

# 与 Excel 产出对账
ov = pd.read_excel(XL, sheet_name='集团同比总览')
print('Excel 总览 Σ25=%.2f Σ26=%.2f ΣΔ=%.2f'
      % (ov['2025同期'].sum(), ov['2026同期'].sum(), ov['Δ'].sum()))
fa = pd.read_excel(XL, sheet_name='附口径_全年vs前9月')
print('Excel 附口径 Σ全年=%.2f Σ前9月=%.2f' % (fa['2025全年'].sum(), fa['2026前9月'].sum()))

# ── 保护文件 mtime ─────────────────────────────────────────
BASE = {'工具/index.html': 1791615019, '工具/app.html': 1791615019,
        '工具/客户拉通大表_demo.html': 1791714999,
        '销售分析/天隆_2025vs2026_趋势看板.png': 1791714420,
        '销售分析/天隆_按抬头_货号统计.xlsx': 1791715374,
        '销售分析/天隆集团_2025vs2026_货号分季度同比.xlsx': 1791714401,
        '销售分析/天隆集团_2025vs2026_货号分季度同比_v1.xlsx': 1791712126}
print('\n── 保护文件 mtime ──')
bad = 0
for rel, mt in BASE.items():
    p = os.path.join(ROOT, rel)
    cur = int(os.stat(p).st_mtime) if os.path.exists(p) else -1
    ok = (cur == mt)
    bad += (not ok)
    print('  %s %-46s %d %s' % ('✅' if ok else '❌', rel, cur, '' if ok else '(基准 %d)' % mt))
for sub in ('工具/仪表盘',):
    p = os.path.join(ROOT, sub)
    print('  dir %s mtime=%d' % (sub, int(os.stat(p).st_mtime)))
print('保护文件被改数 =', bad)

# ── 产出文件信息 ───────────────────────────────────────────
print('\n── 产出 ──')
for rel in ('销售分析/集团维度_货号增减归因.xlsx', '销售分析/集团维度_增减归因.png'):
    p = os.path.join(ROOT, rel)
    print('  %s  %d bytes  sha256=%s' % (rel, os.path.getsize(p),
          hashlib.sha256(open(p, 'rb').read()).hexdigest()[:16]))
