# -*- coding: utf-8 -*- """A3 产品切片正例:2026-07(源一致性通过)逐产品核对。""" import os, sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) for line in open('/root/cma-management/backend/.env'): line = line.strip() if '=' in line and not line.startswith('#') and line.split('=')[0].startswith('CMA_DB'): k, v = line.split('=', 1); os.environ.setdefault(k, v) from app.database import get_session_local from app.api.map_dimensions import build_slice db = get_session_local()() for prod in ("酣客酱酒", "禧酱", "标准版"): r = build_slice(db, 1, 65, "2026-07", None, prod) rev = [k for o in r["objectives"] for k in o["kpis"] if k["kpi_code"] == "F_REVENUE"][0] print(prod, "| empty:", r["empty"], "|", r["empty_reason"], "| rev:", rev["actual_value"], "/", rev["target_value"], rev["achievement_pct"], rev["aggregation"], rev["periods_used"], "| note:", rev["reason"]) r = build_slice(db, 1, 65, "2026-Q3", None, "酣客酱酒") rev = [k for o in r["objectives"] for k in o["kpis"] if k["kpi_code"] == "F_REVENUE"][0] print("Q3 酣客酱酒 | empty:", r["empty"], "| rev:", rev["actual_value"], "/", rev["target_value"], rev["achievement_pct"], rev["aggregation"], rev["periods_used"], "| note:", rev["reason"]) r = build_slice(db, 1, 65, None, None, None) print("默认(最新期):", r["slice"], [ (k["kpi_code"],k["actual_value"]) for o in r["objectives"] for k in o["kpis"] if k["available"]][:6]) print("store 空态:", build_slice(db, 1, 65, "2026-07", "一店", None)["empty_reason"]) db.close()