5.0 KiB
5.0 KiB
ممیزی حلقه عملیاتی سامانه تیکتینگ سازمانی
این سند وضعیت پیادهسازی را در برابر نیازمندی شرکت لوله گستر گلپایگان ثبت میکند. معیار «تکمیل» فقط وجود مدل یا صفحه نیست؛ مسیر باید از ایجاد داده تا مجوز، ارسال، مشاهده، پاسخ، ممیزی و گزارشگیری قابل آزمون باشد.
| حوزه | مسیر عملیاتی | وضعیت فعلی | شاهد اجرایی |
|---|---|---|---|
| RBAC واحدی | عضویت کاربر → permission واحد/عضو → queryset و object policy | تکمیل | OrganizationalUnit, UnitMembership, TicketPolicy و تست ایزولهسازی واحد |
| ایجاد تیکت سازمانی | انتخاب واحد مجاز → مخاطب/نوع/گروه → تیکت واحدی → SMS | تکمیل | فرم staff اکنون permission پویا و مالکیت واحد را اعمال میکند |
| مخاطبان چندگروهی | مخاطب → چند ContactGroup متعلق به واحدهای مجاز |
تکمیل | رابطه Many-to-Many و فرم محدودشده به واحدهای قابل مدیریت |
| ارسال گروهی ایزوله | گروه → یک تیکت خصوصی برای هر مخاطب → یک job و Magic Link مستقل | تکمیل | dispatch_group_tickets و تست جداسازی گیرندگان |
| اسناد گروهی | یک یا چند سند → ذخیره مستقل داخل پیام اولیه هر تیکت | تکمیل | files در فرم dispatch و تست مسیر ذخیره مجزا |
| پاسخ خارجی | Magic Link بدون حساب → فقط همان تیکت → متن/فایل → اعلان Bale | تکمیل | session grant محدود به یک ticket و تست پاسخ ناشناس |
| ممیزی Magic Link | سازنده/واحد/گیرنده → هر بازدید با زمان/IP/UA → شمارنده | تکمیل | TicketMagicLink, MagicLinkAccessLog و تست بازدید |
| عملیات امنیتی لینک | فیلتر وضعیت/واحد/بازه → ابطال فوری با permission واحدی | تکمیل | staff audit، pagination و endpoint ابطال POST |
| گزارش ارسال گروهی | وضعیت gateway → بازشدن لینک → پاسخ مخاطب → مقایسه | تکمیل در سطح قابل اثبات | وضعیت پایدار dispatch، پاسخ آخر و شمارنده بازدید |
| بازیابی ارسال خطادار | FAILED → اقدام مجاز واحد → PENDING → worker retry | تکمیل | endpoint تلاش مجدد و تست عدم دسترسی واحد دیگر |
| الگوهای SMS | الگوی واحدی + fallback عمومی + متغیرهای کنترلشده | تکمیل | SMSTemplate, validation و فرم واحدی |
| فیلتر پیشرفته | واحدها، نوع ارسال، وضعیت، مخاطب، گروهها، تاریخ و tag | تکمیل | filter_staff_tickets و UI فیلتر ترکیبی |
| پردازش غیرهمزمان | outbox قفلشونده → retry/backoff → SMS/Bale | تکمیل | process_notifications, skip_locked و سرویس worker در Compose |
| رهگیری provider | نتیجه gateway → شناسه مرجع ذخیرهشده | تکمیل | provider_message_id در NotificationJob |
| Delivery Receipt مخابراتی | callback اپراتور → وضعیت تحویل گوشی | نیازمند قرارداد اپراتور | API فعلی 0098SMS فقط پذیرش درخواست را برمیگرداند؛ SENT به معنی پذیرش gateway است، نه تحویل قطعی |
مرزهای امنیتی
- مخاطب بیرونی با Magic Link فقط به یک تیکت دسترسی میگیرد و به فهرست تیکتها یا تیکت دیگر دسترسی ندارد.
- یادداشت داخلی و پیوست آن برای مشتری و session جادویی پنهان است.
- queryهای staff ابتدا با واحدهای قابل مشاهده محدود میشوند و سپس فیلترهای کاربر اعمال میشوند.
- ابطال لینک و retry ارسال فقط با permission پویا در همان واحد انجام میشود.
- شناسه provider ذخیره میشود، اما متن پیام، credential درگاه و token خام Magic Link در گزارشها ذخیره یا نمایش داده نمیشود.
الزام استقرار
webوnotification-workerباید همزمان و تحت supervisor یا Docker Compose با restart policy اجرا شوند.- production باید از
config.settings.prod، HTTPS، secret قوی وPUBLIC_BASE_URLعمومی HTTPS استفاده کند. - برای ادعای «تحویل به گوشی»، endpoint و امضای webhook اپراتور منتخب باید مشخص شود؛ تا آن زمان UI باید بین پذیرش gateway و بازشدن لینک تفاوت بگذارد.