3.3 KiB
3.3 KiB
لاگ یکپارچهٔ پیامک خروجی در دیالوگ ارسال
تاریخ: ۲۰۲۶-۱۰-۱۷
وضعیت: تأیید شده؛ آمادهٔ پلن پیادهسازی.
هدف
در دیالوگ ارسال پیامک (لید و شخص)، لیست پیامکهایی که از این به بعد برای همان مخاطب رفته نمایش داده شود: دستی، کمپین گروهی، اتوماسیون.
تصمیمها
| موضوع | تصمیم |
|---|---|
| منبع حقیقت | جدول جدید OutboundSmsLog |
| تاریخچهٔ قبل از استقرار | مهم نیست؛ فقط از این به بعد |
| پوشش | manual + campaign + automation |
| UI | همان SmsComposeModal برای لید و شخص |
مدل داده
OutboundSmsLog:
id,organizationIdpersonIdاختیاری،leadIdاختیاری (حداقل یکی در عمل پر میشود)mobile,body(متن نهایی پس از توکن/لینک)source:manual|campaign|automationsourceIdاختیاری (شناسهٔ کمپین / قانون اتوماسیون)status:sent|failederrorاختیاریactorUserIdاختیاری (برای دستی)createdAt- ایندکس:
(organizationId, personId, createdAt),(organizationId, leadId, createdAt)
نقاط ثبت
PeopleService.sendSms— source=manualLeadsService.sendSms— source=manual(LeadEvent فعلی میتواند بماند)SmsCampaignsService.processCampaignپس از هر تلاش ارسال — source=campaign,sourceId=campaignId- ارسال SMS در message-automations — source=
automation,sourceId=ruleId، باpersonIdوقتی موجود است
ثبت نباید ارسال را بشکند: اگر لاگ fail شد، فقط log خطا؛ نتیجهٔ SMS حفظ شود.
API
GET /people/:id/sms-history?limit=50GET /leads/:id/sms-history?limit=50
OutboundSmsHistoryResponse:
{
items: Array<{
id: string;
body: string;
mobile: string;
source: 'manual' | 'campaign' | 'automation';
sourceLabel: string; // دستی | کمپین | اتوماسیون
status: 'sent' | 'failed';
createdAt: string;
}>;
}
مرتبسازی: جدیدترین اول. Scope دسترسی همان دسترسی به شخص/لید.
UI
در SmsComposeModal:
- prop اختیاری
historyEndpoint - با
openلود تاریخچه - بلوک «پیامکهای قبلی» زیر پیشنمایش؛ اسکرول؛ خالی = «هنوز پیامکی ثبت نشده»
- پس از ارسال موفق، رفرش لیست (یا prepend محلی)
LeadDetailView و PersonProfileView endpoint تاریخچه را پاس میدهند.
خارج از محدوده
- بکفیل تاریخچهٔ قدیمی
- نمایش در صفحهٔ جدا / گزارش سازمانی کامل
- ویرایش یا حذف لاگ از UI
معیار پذیرش
- بعد از ارسال دستی به لید/شخص، همان متن در دیالوگ دیده شود.
- پیامک کمپین و اتوماسیون (برای شخص) در تاریخچه ظاهر شود.
- لید و شخص هر دو از همان مودال تاریخچه بگیرند.