f798c11cf9
Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
995 B
Python
33 lines
995 B
Python
"""对齐前端 opsSummary 规则的轻量逻辑测试(Python 镜像)。"""
|
|
|
|
|
|
MIN_N = 3
|
|
TOP_K = 5
|
|
|
|
|
|
def leverage_summary_week(buckets, min_leverage=100):
|
|
active = [b for b in buckets if b["n"] > 0]
|
|
ranked = sorted(
|
|
[b for b in active if b["n"] >= MIN_N and b.get("pct_ge_min") is not None],
|
|
key=lambda b: (b["pct_ge_min"], b["n"], b.get("mean") or 0),
|
|
reverse=True,
|
|
)[:TOP_K]
|
|
return ranked
|
|
|
|
|
|
def test_week_ranks_by_pct_ge_min():
|
|
buckets = [
|
|
{"label": "09:00", "n": 10, "mean": 110, "pct_ge_min": 0.5},
|
|
{"label": "14:00", "n": 10, "mean": 105, "pct_ge_min": 0.8},
|
|
{"label": "21:00", "n": 2, "mean": 200, "pct_ge_min": 1.0}, # n 不足
|
|
]
|
|
ranked = leverage_summary_week(buckets)
|
|
assert [b["label"] for b in ranked] == ["14:00", "09:00"]
|
|
|
|
|
|
def test_day_keeps_small_n():
|
|
active = [b for b in [
|
|
{"label": "09:00", "n": 1, "mean": 118, "pct_ge_min": 1.0},
|
|
] if b["n"] > 0]
|
|
assert len(active) == 1
|