mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-18 15:29:36 +00:00
- 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>
190 lines
9.1 KiB
Python
190 lines
9.1 KiB
Python
"""Event → Arabic inbox card (≤3 actions)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from auto_client_acquisition.innovation.command_feed import build_demo_command_feed
|
|
from auto_client_acquisition.platform_services.event_bus import EventType
|
|
|
|
|
|
def _trim_actions(actions: list[dict[str, str]], max_n: int = 3) -> list[dict[str, str]]:
|
|
return actions[:max_n]
|
|
|
|
|
|
def event_to_inbox_card(event: dict[str, Any], *, merge_demo_hint: bool = False) -> dict[str, Any]:
|
|
"""Build ``title_ar``, ``summary_ar``, and up to three action buttons."""
|
|
et_raw = event.get("event_type")
|
|
try:
|
|
et = EventType(str(et_raw))
|
|
except (ValueError, TypeError):
|
|
return {
|
|
"title_ar": "حدث غير صالح",
|
|
"summary_ar": "تعذر بناء البطاقة — نوع الحدث غير معروف.",
|
|
"actions": _trim_actions([{"action_id": "dismiss", "label_ar": "إغلاق"}]),
|
|
}
|
|
|
|
actions: list[dict[str, str]] = []
|
|
title_ar = ""
|
|
summary_ar = ""
|
|
|
|
if et == EventType.LEAD_RECEIVED:
|
|
src = str(event.get("source") or "")
|
|
name = str(event.get("lead_name") or "جهة جديدة")
|
|
title_ar = "عميل محتمل جديد"
|
|
summary_ar = f"مصدر: {src}. الاسم: {name}."
|
|
actions = [
|
|
{"action_id": "qualify", "label_ar": "تأهيل سريع"},
|
|
{"action_id": "assign_owner", "label_ar": "تعيين مالك"},
|
|
{"action_id": "archive", "label_ar": "أرشفة"},
|
|
]
|
|
elif et == EventType.EXTERNAL_SEND_REQUESTED:
|
|
title_ar = "طلب إرسال خارجي"
|
|
summary_ar = f"القناة: {event.get('channel_id')}. الإجراء: {event.get('action')}."
|
|
actions = [
|
|
{"action_id": "approve_send", "label_ar": "موافقة مشروطة"},
|
|
{"action_id": "edit_draft", "label_ar": "تعديل المسودة"},
|
|
{"action_id": "reject", "label_ar": "رفض"},
|
|
]
|
|
elif et == EventType.PAYMENT_INTENT:
|
|
title_ar = "نية دفع"
|
|
summary_ar = f"المبلغ (هللات): {event.get('amount_halalas')} {event.get('currency', 'SAR')}."
|
|
actions = [
|
|
{"action_id": "confirm_payment", "label_ar": "تأكيد المشغّل"},
|
|
{"action_id": "adjust_amount", "label_ar": "تعديل المبلغ"},
|
|
{"action_id": "cancel", "label_ar": "إلغاء"},
|
|
]
|
|
elif et == EventType.WHATSAPP_MESSAGE_REQUESTED:
|
|
title_ar = "طلب رسالة واتساب"
|
|
summary_ar = f"النية: {event.get('intent')} — الجمهور: {event.get('audience')}."
|
|
actions = [
|
|
{"action_id": "preview_template", "label_ar": "معاينة القالب"},
|
|
{"action_id": "require_optin_proof", "label_ar": "طلب إثبات opt-in"},
|
|
{"action_id": "block", "label_ar": "إيقاف"},
|
|
]
|
|
elif et == EventType.REVIEW_REQUIRED:
|
|
title_ar = "مراجعة يدوية"
|
|
summary_ar = f"السبب: {event.get('reason_code')}."
|
|
actions = [
|
|
{"action_id": "open_queue", "label_ar": "فتح الطابور"},
|
|
{"action_id": "assign", "label_ar": "إسناد"},
|
|
{"action_id": "snooze", "label_ar": "تأجيل"},
|
|
]
|
|
elif et == EventType.EMAIL_RECEIVED:
|
|
title_ar = "إيميل شركة جديد"
|
|
summary_ar = f"الموضوع: {event.get('subject_ar')} — القناة: {event.get('channel_id')}."
|
|
actions = [
|
|
{"action_id": "gmail_draft_reply", "label_ar": "جهّز مسودة رد"},
|
|
{"action_id": "classify_lead", "label_ar": "صنّف كفرصة"},
|
|
{"action_id": "snooze_email", "label_ar": "تأجيل"},
|
|
]
|
|
elif et == EventType.CALENDAR_MEETING_SCHEDULED:
|
|
title_ar = "اجتماع في التقويم"
|
|
summary_ar = f"{event.get('title_ar')} — {event.get('channel_id')}."
|
|
actions = [
|
|
{"action_id": "meeting_prep", "label_ar": "تحضير"},
|
|
{"action_id": "calendar_draft", "label_ar": "مسودة تعديل"},
|
|
{"action_id": "ignore_meeting", "label_ar": "تخطي"},
|
|
]
|
|
elif et == EventType.SOCIAL_COMMENT_RECEIVED:
|
|
title_ar = "تعليق على منشور"
|
|
summary_ar = str(event.get("snippet_ar") or "")[:200]
|
|
actions = [
|
|
{"action_id": "draft_reply", "label_ar": "رد مسودة"},
|
|
{"action_id": "escalate", "label_ar": "تصعيد"},
|
|
{"action_id": "dismiss_social", "label_ar": "تجاهل"},
|
|
]
|
|
elif et == EventType.SOCIAL_DM_RECEIVED:
|
|
title_ar = "رسالة خاصة (سوشيال)"
|
|
summary_ar = f"من: {event.get('sender_hint')} — {event.get('channel_id')}."
|
|
actions = [
|
|
{"action_id": "policy_check", "label_ar": "فحص سياسة"},
|
|
{"action_id": "draft_dm", "label_ar": "مسودة رد"},
|
|
{"action_id": "block_channel", "label_ar": "إيقاف القناة"},
|
|
]
|
|
elif et == EventType.LEAD_FORM_SUBMITTED:
|
|
title_ar = "نموذج ليد جديد"
|
|
summary_ar = f"مصدر: {event.get('source')} — قناة: {event.get('channel_id')}."
|
|
actions = [
|
|
{"action_id": "qualify", "label_ar": "تأهيل"},
|
|
{"action_id": "import_crm", "label_ar": "مسودة CRM"},
|
|
{"action_id": "archive", "label_ar": "أرشفة"},
|
|
]
|
|
elif et == EventType.PAYMENT_PAID:
|
|
title_ar = "دفعة مؤكدة"
|
|
summary_ar = f"المبلغ (هللات): {event.get('amount_halalas')} {event.get('currency', 'SAR')}."
|
|
actions = [
|
|
{"action_id": "proof_ledger", "label_ar": "سجّل في Proof"},
|
|
{"action_id": "thank_you_draft", "label_ar": "شكر مسودة"},
|
|
{"action_id": "upsell_draft", "label_ar": "عرض ترقية"},
|
|
]
|
|
elif et == EventType.PAYMENT_FAILED:
|
|
title_ar = "دفعة فاشلة"
|
|
summary_ar = f"السبب: {event.get('reason_code')} — المبلغ: {event.get('amount_halalas')}."
|
|
actions = [
|
|
{"action_id": "retry_draft", "label_ar": "مسودة متابعة"},
|
|
{"action_id": "support_ticket", "label_ar": "تذكرة دعم"},
|
|
{"action_id": "close_payment", "label_ar": "إغلاق"},
|
|
]
|
|
elif et == EventType.REVIEW_CREATED:
|
|
title_ar = "تقييم جديد (سمعة محلية)"
|
|
summary_ar = f"التقييم: {event.get('rating')} — {event.get('channel_id')}."
|
|
actions = [
|
|
{"action_id": "draft_review_reply", "label_ar": "رد مسودة"},
|
|
{"action_id": "escalate_mgr", "label_ar": "تصعيد مدير"},
|
|
{"action_id": "monitor", "label_ar": "مراقبة"},
|
|
]
|
|
elif et == EventType.PARTNER_SUGGESTED:
|
|
title_ar = "اقتراح شريك"
|
|
summary_ar = f"{event.get('partner_name_ar')} — قطاع {event.get('sector')}."
|
|
actions = [
|
|
{"action_id": "partner_draft", "label_ar": "رسالة شريك"},
|
|
{"action_id": "schedule_call", "label_ar": "مسودة اجتماع"},
|
|
{"action_id": "skip_partner", "label_ar": "تخطي"},
|
|
]
|
|
elif et == EventType.ACTION_APPROVED:
|
|
title_ar = "تمت الموافقة على إجراء"
|
|
summary_ar = f"{event.get('action_id')} — بواسطة {event.get('actor')}."
|
|
actions = [
|
|
{"action_id": "view_ledger", "label_ar": "عرض السجل"},
|
|
{"action_id": "notify_team", "label_ar": "إشعار داخلي"},
|
|
{"action_id": "done", "label_ar": "تم"},
|
|
]
|
|
elif et == EventType.ACTION_BLOCKED:
|
|
title_ar = "إجراء ممنوع"
|
|
summary_ar = f"{event.get('action_id')} — {event.get('reason_code')}."
|
|
actions = [
|
|
{"action_id": "edit_policy", "label_ar": "مراجعة سياسة"},
|
|
{"action_id": "appeal", "label_ar": "طلب استثناء"},
|
|
{"action_id": "dismiss", "label_ar": "إغلاق"},
|
|
]
|
|
elif et == EventType.DRAFT_CREATED:
|
|
title_ar = "مسودة جاهزة"
|
|
summary_ar = f"النوع: {event.get('draft_kind')}."
|
|
actions = [
|
|
{"action_id": "open_draft", "label_ar": "فتح المسودة"},
|
|
{"action_id": "share", "label_ar": "مشاركة داخلية"},
|
|
{"action_id": "discard", "label_ar": "تجاهل"},
|
|
]
|
|
else:
|
|
title_ar = "حدث داخلي"
|
|
summary_ar = "نوع مسجّل لكن بدون قالب عرض — راجع الإعدادات."
|
|
actions = [
|
|
{"action_id": "dismiss", "label_ar": "إغلاق"},
|
|
{"action_id": "log", "label_ar": "تسجيل"},
|
|
{"action_id": "help", "label_ar": "مساعدة"},
|
|
]
|
|
|
|
card: dict[str, Any] = {
|
|
"title_ar": title_ar,
|
|
"summary_ar": summary_ar,
|
|
"actions": _trim_actions(actions),
|
|
"event_type": et.value,
|
|
}
|
|
if merge_demo_hint:
|
|
demo = build_demo_command_feed()
|
|
cards = demo.get("cards") if isinstance(demo.get("cards"), list) else []
|
|
if cards and isinstance(cards[0], dict):
|
|
card["demo_hint_ar"] = str(cards[0].get("title_ar") or "")
|
|
return card
|