system-prompts-and-models-o.../salesflow-saas/backend/app/services/customer_onboarding_journey.py
2026-04-04 18:04:21 +03:00

275 lines
12 KiB
Python

"""
Structured B2B customer journey: roles, steps, WhatsApp milestones, agent ownership.
Used by GET /api/v1/customer-onboarding/journey and acceptance-test docs.
"""
from __future__ import annotations
from typing import Any, Dict, List
def build_journey() -> Dict[str, Any]:
return {
"product": "Dealix",
"version": "1.0",
"summary_ar": (
"رحلة عميل مدفوع من التعاقد إلى تشغيل كامل لنظام التشغيل الإيرادي (OS): "
"كل مرحلة تسمّي مالكاً عند العميل، ووكيلاً ذكائياً أو بشرياً من Dealix، ونقاط تحقق على واتساب."
),
"roles": [
{
"id": "economic_buyer",
"title_ar": "صاحب القرار المالي / المدير التنفيذي",
"responsibility_ar": "الموافقة على النطاق، الميزانية، وترتيب مسؤول تقني داخلي.",
},
{
"id": "technical_owner",
"title_ar": "مسؤول الربط التقني (IT / مطور)",
"responsibility_ar": "توفير مفاتيح API، DNS، SSL، وصول Salesforce/Stripe، اختبار Webhooks.",
},
{
"id": "channel_owner",
"title_ar": "مسؤول القنوات (واتساب / مبيعات)",
"responsibility_ar": "حساب Meta Business، أرقام معتمدة، اختبار قوالب الرسائل.",
},
{
"id": "dealix_success",
"title_ar": "مدير نجاح العميل (Dealix) — بشري",
"responsibility_ar": "تنسيق الجدول، جلسات التحقق، تصعيد الانحرافات عن الخطة.",
},
{
"id": "integration_concierge_agent",
"title_ar": "وكيل دمج ذكي (Integration Concierge)",
"responsibility_ar": "شرح الخطوات، تذكير، تلخيص حالة الربط، إجابة FAQ تشغيلية — عبر الواجهة أو واتساب داخلي.",
},
],
"phases": [
_phase(
"p0_contract",
"التعاقد والتسليم",
[
_step(
"s0_1",
"توقيع العقد وتحديد نطاق المستأجرين والقطاع",
"economic_buyer",
["dealix_success"],
["الموافقة على SOW", "عدد الفروع/المستخدمين"],
"واتساب: رسالة ترحيب رسمية + رابط بوابة العميل.",
),
_step(
"s0_2",
"تعيين مسؤول تقني + مسؤول قنوات + قناة واتساب للمشروع",
"economic_buyer",
["dealix_success", "integration_concierge_agent"],
["أسماء، أرقام جوال، بريد"],
"واتساب مجموعة مشروع (اختياري) مع Dealix.",
),
],
),
_phase(
"p1_platform",
"التأسيس على المنصة",
[
_step(
"s1_1",
"بيئة الإنتاج: خادم، Docker/Compose أو K8s، قاعدة بيانات، Redis",
"technical_owner",
["integration_concierge_agent"],
["عنوان API عام، HTTPS، SECRET_KEY"],
None,
),
_step(
"s1_2",
"متغيرات البيئة: LLM، بريد، قاعدة بيانات",
"technical_owner",
["integration_concierge_agent"],
["مفاتيح آمنة خارج Git"],
None,
),
_step(
"s1_3",
"فحص الجاهزية التلقائي: go-live-gate + live-readiness",
"technical_owner",
["dealix_success"],
["تقرير JSON أو لقطة شاشة ناجحة"],
"واتساب: ملخص PASS/FAIL للبنود الحرجة.",
),
],
),
_phase(
"p2_integrations",
"التكاملات — CRM، مدفوعات، توقيع",
[
_step(
"s2_1",
"Salesforce Connected App + refresh token",
"technical_owner",
["integration_concierge_agent"],
["بيانات الدومين، OAuth"],
None,
),
_step(
"s2_2",
"Stripe: مفاتيح live/test + webhook",
"technical_owner",
["integration_concierge_agent"],
["سر webhook، مسار عام"],
None,
),
_step(
"s2_3",
"توقيع إلكتروني (DocuSign أو Adobe)",
"technical_owner",
["dealix_success"],
["رمز وصول أو تكامل"],
None,
),
],
),
_phase(
"p3_whatsapp",
"واتساب للأعمال",
[
_step(
"s3_1",
"Meta Business: تطبيق واتساب + رقم معتمد",
"channel_owner",
["integration_concierge_agent", "dealix_success"],
["WHATSAPP_* tokens", "WHATSAPP_MOCK_MODE=false"],
"واتساب: اختبار رسالة صادرة من النظام.",
),
_step(
"s3_2",
"Webhook عام + تحقق Meta",
"technical_owner",
["integration_concierge_agent"],
["VERIFY_TOKEN، URL عام HTTPS"],
"واتساب: اشتراك webhook ناجح.",
),
],
),
_phase(
"p4_voice_email",
"صوت وبريد",
[
_step(
"s4_1",
"Twilio صوت (اختياري حسب الباقة)",
"technical_owner",
["integration_concierge_agent"],
["TWILIO_*"],
None,
),
_step(
"s4_2",
"بريد صادر SendGrid أو SMTP",
"technical_owner",
["integration_concierge_agent"],
["SPF/DKIM عند النطاق"],
None,
),
],
),
_phase(
"p5_go_live",
"الإطلاق والتشغيل",
[
_step(
"s5_1",
"مواءمة NEXT_PUBLIC_API_URL مع عنوان API العام",
"technical_owner",
["integration_concierge_agent"],
["واجهة تعمل بدون CORS errors"],
"واتساب: إعلان جاهزية القناة للفريق الداخلي.",
),
_step(
"s5_2",
"تدريب سريع لمسؤول القنوات على لوحة التحكم",
"channel_owner",
["dealix_success", "onboarding_coach"],
["جلسة مسجلة أو مباشرة"],
None,
),
_step(
"s5_3",
"مراجعة أسبوعية: مؤشرات، أخطاء، تحسين",
"economic_buyer",
["dealix_success"],
["اجتماع نجاح عملاء"],
"واتساب: تذكير أسبوعي آلي من الوكيل (إن وُجدت أتمتة).",
),
],
),
],
"agent_registry_refs": {
"integration_concierge_agent": "ai-agents/prompts/customer-integration-concierge.md",
"onboarding_coach": "ai-agents/prompts/affiliate-onboarding-coach.md",
"arabic_whatsapp": "ai-agents/prompts/arabic-whatsapp-agent.md",
},
"full_os_gaps_ar": [
"وكيل موحّد يربط حالة go-live gate بحالة محادثة واتساب (حلقة مغلقة) — جزئي عبر التقارير، يحتاج أتمتة إشعار.",
"مسار SLA بشري واضح عند فشل خطوة لأكثر من X ساعات — إشعار مدير النجاح.",
"اختبار تحميل وقبول UAT موثّق كقالب لكل عميل — قيد التطوير.",
],
}
def _phase(phase_id: str, title_ar: str, steps: List[Dict[str, Any]]) -> Dict[str, Any]:
return {"id": phase_id, "title_ar": title_ar, "steps": steps}
def _step(
step_id: str,
title_ar: str,
primary_owner_role: str,
supporting_agents: List[str],
customer_inputs_ar: List[str],
whatsapp_milestone_ar: str | None,
) -> Dict[str, Any]:
return {
"id": step_id,
"title_ar": title_ar,
"primary_owner_role": primary_owner_role,
"supporting_agents": supporting_agents,
"customer_must_provide_ar": customer_inputs_ar,
"whatsapp_milestone_ar": whatsapp_milestone_ar,
}
def build_acceptance_test_checklist() -> Dict[str, Any]:
"""Human + automated checklist «كأنك عميل»."""
return {
"title_ar": "اختبار قبول تشغيل Dealix (عميل)",
"sections": [
{
"id": "prep",
"title_ar": "ما يجب أن يجهّزه العميل قبل الاتصال",
"items": [
"نطاق أو عنوان API عام على HTTPS",
"مسؤول تقني متاح لـ DNS وSSL والأسرار",
"حساب Meta Business جاهز إن وُجدت قناة واتساب",
"قرار ميزانية للاشتراكات (Stripe) إن لزم",
],
},
{
"id": "automated",
"title_ar": "فحوص آلية (من الخادم)",
"items": [
"GET /api/v1/health",
"GET /api/v1/ready (قاعدة البيانات)",
"GET /api/v1/autonomous-foundation/integrations/go-live-gate",
"POST /api/v1/autonomous-foundation/integrations/connectivity-test",
],
},
{
"id": "manual",
"title_ar": "فحوص يدوية",
"items": [
"إرسال رسالة واتساب تجريبية والاستلام",
"تسجيل دخول Salesforce اختبار قراءة سجل",
"حدث Stripe تجريبي (إن أمكن)",
],
},
],
}