#!/usr/bin/env python
# coding=utf-8
"""
Step6: 历史抽样分析 - 问题是否一直存在
"""
import pandas as pd
from pathlib import Path
import glob

output_dir = Path(__file__).parent / "output"

# 定义时间段
periods = [
    ("2025年3月", "step1_验证现象_20250301_20250303.csv"),
    ("2025年5月", "step1_验证现象_20250501_20250503.csv"),
    ("2025年7月", "step1_验证现象_20250701_20250703.csv"),
    ("2025年9月", "step1_验证现象_20250901_20250903.csv"),
    ("2025年10月", "step1_验证现象_20251001_20251003.csv"),
    ("2026年1月", "step1_验证现象_20260107_20260113.csv"),
]

print("=" * 70)
print("Step6: 历史抽样分析 - 问题是否一直存在")
print("=" * 70)

# 分析每个时间段
results = []
for period_name, filename in periods:
    filepath = output_dir / filename
    if not filepath.exists():
        print(f"\n{period_name}: 文件不存在")
        continue

    df = pd.read_csv(filepath)

    # 只看 Top10
    df_top10 = df[df['曝光rank'] <= 10].copy()

    if len(df_top10) == 0:
        print(f"\n{period_name}: 无 Top10 数据")
        continue

    # 计算低vov高曝光比例（vov < 中位数 且 rank <= 5）
    vov_median = df_top10['vov0'].median()
    problem_mask = (df_top10['vov0'] < vov_median) & (df_top10['曝光rank'] <= 5)
    problem_ratio = problem_mask.sum() / len(df_top10) * 100

    # 统计
    stats = {
        '时间段': period_name,
        '天数': df_top10['dt'].nunique(),
        'Top10记录数': len(df_top10),
        'vov中位数': round(df_top10['vov0'].median(), 4),
        'vov均值': round(df_top10['vov0'].mean(), 4),
        'str均值': round(df_top10['str_t0'].mean(), 4),
        'ros均值': round(df_top10['ros_t0'].mean(), 2),
        'vor均值': round(df_top10['vor_t0'].mean(), 2),
        '问题比例%': round(problem_ratio, 1)
    }
    results.append(stats)

    print(f"\n【{period_name}】")
    print(f"  天数: {stats['天数']}, 记录数: {stats['Top10记录数']}")
    print(f"  vov: 中位数={stats['vov中位数']}, 均值={stats['vov均值']}")
    print(f"  str={stats['str均值']}, ros={stats['ros均值']}, vor={stats['vor均值']}")
    print(f"  低vov高曝光比例: {stats['问题比例%']}%")

# 汇总对比
print("\n" + "=" * 70)
print("【时间段对比】")
print("=" * 70)
if results:
    result_df = pd.DataFrame(results)
    print(result_df.to_string(index=False))

    # 保存结果
    result_df.to_csv(output_dir / "step6_历史对比.csv", index=False)

# 结论
print("\n" + "=" * 70)
print("【Step6 结论】")
print("=" * 70)
if len(results) >= 2:
    first = results[0]
    last = results[-1]
    print(f"问题比例变化: {first['时间段']} {first['问题比例%']}% → {last['时间段']} {last['问题比例%']}%")

    vov_change = (last['vov均值'] - first['vov均值']) / first['vov均值'] * 100
    ros_change = (last['ros均值'] - first['ros均值']) / first['ros均值'] * 100
    print(f"vov 变化: {vov_change:+.1f}%")
    print(f"ros 变化: {ros_change:+.1f}%")

print(f"\n结果已保存到 output/ 目录")
