CI demo: metrics + Gitea Actions

This commit is contained in:
2026-11-12 13:55:02 +08:00
commit 6637fb8ff4
17 changed files with 564 additions and 0 deletions

41
app/legacy_report.py Normal file
View File

@@ -0,0 +1,41 @@
"""Учебный модуль с высокой сложностью для метрического гейта CI.
V(G) функции classify_order — ранг C (11–20). Поэтому:
xenon --max-absolute C app/ # зелёный
xenon --max-absolute B app/ # красный — гейт не пропускает
Мораль: порог в CI делает рост сложности видимым и блокирующим.
"""
def classify_order(order, cfg):
"""Классифицировать заказ по десятку правил — намеренно сложно."""
if order is None:
return "missing"
if "total" not in order:
return "no_total"
total = order["total"]
if total < 0:
return "negative"
if total == 0:
return "empty"
if total > 100000:
return "huge"
if cfg.get("maintenance"):
return "maintenance"
if cfg.get("blocked"):
return "blocked"
if cfg.get("regions") and order.get("region") not in cfg["regions"]:
return "region"
if order.get("coupon") and not cfg.get("coupons", False):
return "coupon"
if total > cfg.get("limit", 10000):
return "limit"
if order.get("fraud") and order.get("manual_review"):
return "fraud_review"
elif order.get("fraud"):
return "fraud"
if order.get("vip") and total > 5000:
return "vip_review"
return "ok"