"""P2阶段: 新增4个高级KPI"""
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))

from app.database import get_engine
from sqlalchemy import text

NEW_KPIS = [
    {
        "kpi_code": "C_LTV",
        "kpi_name": "客户生命周期价值",
        "dimension": "customer",
        "category": "customer_scale",
        "objective": "提升客户长期价值",
        "formula": "Σ(每年贡献利润×折现率)",
        "formula_desc": "客户全周期内贡献的净利润折现总和",
        "data_source_type": "manual",
        "frequency": "quarterly",
        "unit": "万元",
        "target_value": 15.0,
        "threshold_green": ">=10",
        "threshold_yellow": ">=5",
        "threshold_red": "<=5",
        "responsible_dept": "市场营销部",
        "responsible_user": "市场总监",
        "epic": "Epic2",
        "status": "active",
    },
    {
        "kpi_code": "P_NEW_PROD_RATIO",
        "kpi_name": "新产品收入占比",
        "dimension": "process",
        "category": "innovation",
        "objective": "促进产品创新",
        "formula": "新产品收入/总收入×100%",
        "formula_desc": "近12个月上市的新产品收入占总收入比例",
        "data_source_type": "erp",
        "frequency": "monthly",
        "unit": "%",
        "target_value": 25.0,
        "threshold_green": ">20",
        "threshold_yellow": ">10",
        "threshold_red": "<=10",
        "responsible_dept": "产品研发部",
        "responsible_user": "产品总监",
        "epic": "Epic2",
        "status": "active",
    },
    {
        "kpi_code": "L_DATA_AUTO_RATE",
        "kpi_name": "数据自动化率",
        "dimension": "learning",
        "category": "innovation",
        "objective": "提升数据管理效率",
        "formula": "自动报表数/总报表数×100%",
        "formula_desc": "已实现自动化生成的管理报表占总报表数的比例",
        "data_source_type": "manual",
        "frequency": "monthly",
        "unit": "%",
        "target_value": 75.0,
        "threshold_green": ">70",
        "threshold_yellow": ">50",
        "threshold_red": "<=50",
        "responsible_dept": "信息技术部",
        "responsible_user": "CIO",
        "epic": "Epic2",
        "status": "active",
    },
    {
        "kpi_code": "L_SYS_COVERAGE",
        "kpi_name": "系统覆盖率",
        "dimension": "learning",
        "category": "innovation",
        "objective": "推动管理信息化",
        "formula": "信息化覆盖业务环节数/总业务环节数×100%",
        "formula_desc": "已实现信息系统支持的核心业务环节占总环节数的比例",
        "data_source_type": "manual",
        "frequency": "quarterly",
        "unit": "%",
        "target_value": 85.0,
        "threshold_green": ">80",
        "threshold_yellow": ">60",
        "threshold_red": "<=60",
        "responsible_dept": "信息技术部",
        "responsible_user": "CIO",
        "epic": "Epic2",
        "status": "active",
    },
]


def seed_p2_kpis():
    engine = get_engine()
    with engine.connect() as conn:
        inserted = 0
        skipped = 0
        for kpi in NEW_KPIS:
            exists = conn.execute(
                text("SELECT id FROM kpi_definitions WHERE kpi_code=:code"),
                {"code": kpi["kpi_code"]},
            ).fetchone()
            if exists:
                print(f"  ⏭️ 跳过已存在: {kpi['kpi_code']} (id={exists[0]})")
                skipped += 1
                continue

            cols = ", ".join(kpi.keys())
            vals = ", ".join(f":{k}" for k in kpi.keys())
            conn.execute(text(f"INSERT INTO kpi_definitions ({cols}) VALUES ({vals})"), kpi)
            new_id = conn.execute(text("SELECT LAST_INSERT_ID()")).scalar()
            print(f"  ✅ 新增: {kpi['kpi_code']} - {kpi['kpi_name']} (id={new_id})")
            inserted += 1

        conn.commit()
    print(f"\n总计: 新增{inserted}, 跳过{skipped}")
    return inserted


if __name__ == "__main__":
    seed_p2_kpis()
