"""三种候选键下的 baseline 计数（判定 commit 声称的 5837→5776 用的是哪个键）。
用法: ./zt_venv/bin/python code/chk_baseline_keydef.py
"""
import subprocess, io
import pandas as pd

def ver(rev):
    out = subprocess.run(['git', 'show', f'{rev}:backtest_zt_full/strength_baseline.csv'],
                         capture_output=True, cwd='.')
    return pd.read_csv(io.BytesIO(out.stdout))

CANDS = [['code', 'pool', 'buy_date', 'sell_date'], ['code', 'pool', 'buy_date'],
         ['code', 'buy_date'], ['code', 'pool', 'buy_date', 'ret']]
for name, rev in [('efe1fbb 重建前', 'efe1fbb'), ('88438d5 重建后', '88438d5'), ('d4da54e 回补后', 'd4da54e')]:
    d = ver(rev)
    d['buy_date'] = pd.to_numeric(d['buy_date'], errors='coerce').astype('Int64').astype(str)
    line = [f"{name}: 行 {len(d)}"]
    for cols in CANDS:
        line.append(f"{'+'.join(cols)}={d.drop_duplicates(cols).shape[0]}")
    print(" | ".join(line))
