system-prompts-and-models-o.../dealix/auto_client_acquisition/launch_ops/go_no_go.py
Sami Assiri b13cb389cc feat(dealix): sync full Dealix package to repo
- API routers, ACA modules, integrations (draft operators)
- Docs, landing pages, scripts (launch readiness, scorecard)
- Tests and CI workflow updates for Dealix

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-01 21:01:17 +03:00

42 lines
1.6 KiB
Python

"""Deterministic go/no-go for private beta launch checklist."""
from __future__ import annotations
from typing import Any
def evaluate_go_no_go(flags: dict[str, Any] | None = None) -> dict[str, Any]:
"""flags: optional overrides for tests (e.g. tests_pass=False)."""
f = flags or {}
checks = {
"tests_pass": bool(f.get("tests_pass", True)),
"routes_ok": bool(f.get("routes_ok", True)),
"staging_health_ok": bool(f.get("staging_health_ok", False)),
"no_secrets_in_repo_scan": bool(f.get("no_secrets_in_repo_scan", True)),
"whatsapp_live_send_disabled": bool(f.get("whatsapp_live_send_disabled", True)),
"service_catalog_ok": bool(f.get("service_catalog_ok", True)),
"landing_ready": bool(f.get("landing_ready", True)),
}
critical = [
"tests_pass",
"routes_ok",
"no_secrets_in_repo_scan",
"whatsapp_live_send_disabled",
"service_catalog_ok",
]
blockers = [k for k in critical if not checks[k]]
if not checks["landing_ready"]:
blockers.append("landing_ready")
go = len(blockers) == 0
warnings_ar: list[str] = []
if not checks["staging_health_ok"]:
warnings_ar.append("Staging غير مؤكد — يُنصح بتشغيل /health على بيئة staging قبل أول عميل.")
return {
"go": go,
"checks": checks,
"blockers": blockers,
"warnings_ar": warnings_ar,
"verdict_ar": "جاهز للبيتا الخاصة (كود وعمليات أساسية)" if go else "موقوف — راجع قائمة الـ blockers.",
"demo": True,
}