1. Bussiness Logic
One Push
  • Tổng quan hệ thống
  • Bussiness Logic
    • Business Logic
    • HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
    • HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)
    • HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
  • Project
    • API
      • Tổng quan API
      • Hướng dẫn sử dụng
        • 1.1 Khởi tạo Website Tham gia
        • 1.2 Cấu hình Bots Telegram
        • 1.3 Quản lý Chiến dịch (Campaigns)
        • 1.4 Lên Lịch Gửi Tự Động
        • 1.5 Tương tác & Thống kê
        • 1.6 Quản lý Tài khoản (RBAC)
        • 1.7 Báo cáo Chi tiết Tin nhắn (Web & Telegram)
      • API
        • Widget nhúng Website
          • Đăng ký Subscriber mới / Nhật ký Heartbeat
          • Cập nhật trạng thái Seen/Read
          • Ghi nhận hiển thị Alert Popup
          • Lấy dữ liệu Alert cho website
        • Tracking & Tương tác
          • Ghi nhận lựa chọn Yes/No
        • Báo cáo & Thống kê
          • Thống kê người dùng Real-time
          • Phân tích tăng trưởng Subscriber
          • Dữ liệu bản đồ nhiệt Vị trí
          • Xuất báo cáo thông báo Excel
        • Lịch gửi Thông báo
          • Danh sách lịch gửi thông báo
          • Tạo lịch gửi mới
          • Bật/Tắt lịch gửi
        • Betting Tips
          • Lấy Tip bóng đá HOT nhất
          • Lấy dữ liệu Mock Tip (Test)
        • Telegram Integration
          • Danh sách Telegram Bot
          • Telegram Webhook Endpoint
        • Email Marketing
          • Tạo và gửi chiến dịch Email
        • Hệ thống & RBAC
          • Danh sách tài khoản Admin/Nhân viên
          • Danh sách vai trò (Roles)
        • Tiện ích & Files
          • Truy xuất nhật ký hệ thống (System Logs)
        • Chiến dịch (Campaigns)
          • Danh sách chiến dịch
        • Website Khách hàng (Clients)
          • Danh sách website khách hàng
        • Quản lý Thành viên (Subscribers)
          • Danh sách người đăng ký (Subscribers)
          • Xóa người nhận tin
      • Architecture
        • System Architecture (Kiến trúc Hệ thống)
        • Code Structure
        • Database Schema (Mô hình Dữ liệu)
      • Deployment
        • Local
        • Production
        • Development
    • TOOL
      • Tổng quan Tool
      • Hướng dẫn sử dụng
        • Hướng dẫn sử dụng — Novu Notification Infrastructure
      • Architecture
        • System Architecture
        • Code Structure
        • Database Schema
      • API
        • 👥 Subscribers
          • Tạo/Cập nhật Subscriber
          • Cập nhật Profile
        • 🗺️ Workflows
          • Lấy danh sách Workflow Templates
          • Chi tiết Workflow
        • 📂 Notification History
          • Lịch sử biến động Notification
        • 🎯 Topics
          • Tạo Topic mới
        • 📐 Layouts
          • Lấy danh sách Layout (Email/Web)
        • 💬 Messages
          • Tra cứu vết tin nhắn chi tiết (Low-level)
        • 🔌 Integrations
          • Danh sách nhà cung cấp (Providers)
        • 🚀 Events & Triggers
          • Kích hoạt thông báo (Workflows)
          • Kích hoạt hàng loạt (Bulk Trigger)
      • Deployment
        • Deployment
  • Schemas
    • NotificationWidget
    • TrackingStats
    • NotificationSchedule
  1. Bussiness Logic

HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)

Tài liệu phân tích chuyên sâu phân hệ điều phối, xử lý hàng đợi và tương tác dữ liệu ngầm của luồng Notification Schedule.
💡 Thông tin Kỹ thuật (Meta Data):
📍 Route: /manage/notification-schedule
💻 Source Frontend: resources/views/manage/clients/noti_create_or_edit.blade.php
⚙️ Source Backend: app/Http/Controllers/Client/NotificationScheduleController.php
🗄️ Database: MySQL (Bảng notification_schedules, notification_schedule_logs, subcribers)


I. Tổng quan chức năng & Vòng đời Schedule#

Hệ thống điều phối tin nhắn chịu trách nhiệm gửi hàng triệu Push Notifications mỗi giây thông qua FCM (Firebase Cloud Messaging) và Telegram API. Toàn bộ quy trình diễn ra phi đồng bộ (Asynchronous) thông qua nền tảng Laravel Horizon.
⏳ Vòng đời (Lifecycle) của một Chiến dịch:
1.
📝 Pending: Admin vừa bấm lưu. Kịch bản đang neo chờ đến đúng giờ phát sóng hoặc chờ Worker tới nhặt lệnh.
2.
🔄 Processing: Worker đã đánh thức kịch bản, đang bóc tách hàng vạn danh sách Subscriber (PAM IDs) và bắt đầu bắn API liên tục.
3.
✅ Completed: Đã hoàn thành tác vụ gửi cho 100% đối tượng mục tiêu.
4.
❌ Failed: Gặp lỗi nghiêm trọng (API Token hết hạn hoặc Server đích từ chối kết nối).

II. Kiến trúc xử lý Hàng đợi (Queue Architecture)#

Chúng tôi áp dụng mô hình phân rã Fan-out để đạt tốc độ xử lý song song tối đa (Concurrency):
1.
🧠 Master Job: Chịu trách nhiệm phân tích Lịch gửi -> Tìm kiếm và quét hàng triệu PAM IDs phù hợp từ Database.
2.
🗂️ Child Jobs: Băm nhỏ khối danh sách khổng lồ trên thành siêu nhiều gói nhỏ (Chunks), mỗi đợt 500 - 1000 IDs.
3.
⚙️ Workers: Khởi chạy song song hàng chục Worker background để đồng loạt đẩy các gói tin này lên Firebase (FCM) trong cùng 1 thời điểm.

III. Chi tiết kỹ thuật Frontend (Component View)#

Giao diện được xây dựng thông qua ngôn ngữ Blade Template kết hợp xử lý jQuery/AJAX để đảm bảo tính Real-time phản hồi tốt thay vì phải tải lại trang.

III.1. Khởi tạo & Validation#

Ngay khi mở Modal sinh thông báo, mã nguồn Frontend sẽ kích hoạt tự động kéo danh sách tất cả Client (Website đối tác) đang ở trạng thái Active.

III.2. Logic chọn Đối tượng (Targeting)#

Một Schedule có thể được gán phát sóng cho toàn bộ chi nhánh (All Client) hoặc tích chọn thủ công. Ở tầng Backend tương ứng, máy chủ sẽ thi hành lệnh WHERE IN trực tiếp trên bảng subcribers để khoanh vùng và lấy trọn tập Device Token mục tiêu.

IV. Logic đặc biệt: Betting Push (Trợ lý Bóng Đá)#

Đây là luồng tính năng đặc thù sinh ra phục vụ mảng Thể thao:
📡 Data Source: Tự động đồng bộ nguồn kết quả từ T3 Platform API theo chu kỳ rà soát ngầm.
🤖 Auto-Formatting: Nếu Admin chọn định dạng Betting, hệ thống sẽ can thiệp sâu để tự động chèn Logo 2 đội bóng, Tỷ lệ chấp (Handicap) và tỷ lệ đặt cược (Odds) làm trọng tâm bản Payload.
🔗 Deep Link Landing Page: Khi người chơi tò mò Click vào mẩu tin, hệ điều hành sẽ bắt ép trình duyệt nhảy cái rụp và mở đúng trang đặt cược của trận đấu đang được quảng cáo.

V. Backend: Luồng thực thi Job (Job Execution)#

Sức mạnh xả đạn (Dispatch) cốt lõi hội tụ tại Controller Background: app/Jobs/SendNotification.php.

V.1. Cơ chế Chunking dữ liệu khổng lồ#

Nhằm ngăn chặn thảm hoạ tràn RAM (Memory Leak) khi load hàng triệu biến Subscriber, hệ thống được lập trình với cấu trúc chunkById. Dữ liệu được xắn ra từng mảng nhỏ dưới DB lên để RAM xử lý cuốn chiếu tự dọn dẹp.

V.2. Thuật toán Retry & Dọn rác (Fail-safe)#

Xử lý dứt điểm rác hệ thống: Nếu API của FCM trả về mã lỗi NotRegistered (do thiết bị điện thoại của khách hàng đã rút quyền truy cập hoặc xóa app), ứng dụng tự động khóa mã thiết bị đó thành thư mục Inactive. Thuật toán giúp vĩnh viễn không trích xuất nó lên gây tốn tài nguyên gửi ở các đợt phát thư sau này.

VI. Kiểm soát Hiệu năng & Thắt nút cổ chai (Bottlenecks)#

⚡ Bảo chứng Redis Cache: Được sử dụng dể lưu Cache Token của Website Client. Giúp quá trình kết nối lấy quyền không phải Query lại MySQL vô nghĩa hàng vạn lần mỗi nhịp bắn tin.
🚦 Giới hạn nhịp độ (Rate Limiting): App tự cấu hình chính sách phanh số lượng Request đẩy lên kênh Telegram API (Giữ ở mức cân bằng khoảng 30 Req/s). Chiến lược này giúp Telegram đánh giá luồng tin thân thiện, tránh án cấm IP oan uổng (Rate Limit Ban IP).
Modified at 2026-03-31 02:57:19
Previous
HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)
Next
API
Built with