Kiến Trúc Hệ Thống (System Architecture)

⚙️ Các thành phần và Công nghệ chính
Hệ thống được thiết kế theo kiến trúc Microservices hiện đại, đảm bảo khả năng mở rộng và xử lý dữ liệu lớn:
| Thành phần | Công nghệ sử dụng |
|---|---|
| Mobile App | React Native (iOS & Android) |
| Web Dashboard | ReactJS (Quản lý cho cơ quan chức năng) |
| API Gateway | Nginx (Load Balancer & Reverse Proxy) |
| Core API | Laravel 12 (PHP), Laravel Sanctum (Auth), Reverb (WebSocket) |
| Microservices | Node.js, Python FastAPI, Go |
| AI/ML Services | Python (Computer Vision, NLP, Flood Prediction, Analytics) |
| Message Queue | RabbitMQ (Event-driven), MQTT (IoT Communication) |
| Cache & Session | Redis |
| Databases | PostgreSQL + PostGIS, MySQL, MongoDB, OpenSearch |
| Storage | MinIO (Object Storage - S3 Compatible) |
| Container Platform | Docker, Docker Compose |
🛠️ Các Dịch Vụ và Chức Năng Chính (Microservices)
Hệ thống được tổ chức thành các dịch vụ độc lập (Microservices), giao tiếp chủ yếu qua HTTP (REST) và Kafka/MQTT.
1. Dịch vụ Cốt lõi
- RFI/Public API: Điểm truy cập chính cho các giao diện người dùng. Xử lý logic tổng hợp dữ liệu (Aggregation) và caching (Vũ Cache).
- Media Service: Quản lý và lưu trữ tệp tin đa phương tiện vào MinIO / S3.
- Search API: Cung cấp giao diện tìm kiếm dữ liệu thông qua OpenSearch.
2. Dịch vụ IoT và Phân tích Dữ liệu
- IoT Adapter: Nhận tin nhắn từ MQTT Broker (Sensors), xử lý và đưa vào luồng sự kiện Kafka.
- NLP (Natural Language Processing): Phân tích và xử lý ngôn ngữ tự nhiên.
- Vision (Vision Python/FastAPI): Xử lý thị giác máy tính, tạo ra các sự kiện
vision_alert. - Geo/PoI: Xử lý dữ liệu vị trí và điểm quan tâm (Point of Interest) sử dụng PostGIS.
3. Dịch vụ Quản lý và Thông báo
- Report Service: Tạo báo cáo, lưu trữ vào DB Report và
Produce report observedevent. - Rule Engine (NDx/Drools): Tiêu thụ các sự kiện cảnh báo từ Vision và Report, áp dụng luật nghiệp vụ để
Produce alert triggered. - Incident Service: Xử lý và quản lý vòng đời của các sự cố, lưu trữ vào DB Incident.
- Notify Service: Nhận sự kiện
alert triggeredvà phân phối thông báo (sử dụng Redis Queue/Cache) tới ứng dụng (React Native App) và các nền tảng khác (Laravel Webhook).
➡️ Luồng Dữ liệu Chính
- Truy cập Ứng dụng: React Native App gửi yêu cầu qua HTTPS + JWT đến API Gateway.
- Dữ liệu Cảm biến: Sensors -> MQTT Broker -> IoT Adapter -> Kafka.
- Luồng Cảnh báo/Sự cố:
- Vision Service (hoặc Report Service) tạo
vision/report alert. - Kafka truyền tải các sự kiện này.
- Rule Engine tiêu thụ, áp dụng luật, và tạo
alert triggered. - Notify Service nhận
alert triggeredđể broadcast data tới React Native App (qua HTTP/Websocket) và Laravel Webhook.
- Vision Service (hoặc Report Service) tạo
- Dữ liệu Báo cáo: Report Service lưu dữ liệu vào DB Report và tạo sự kiện cho Rule Engine.
- Quản lý Sự cố: Incident Service nhận thông tin liên quan và lưu vào DB Incident.
🔬 AI & dữ liệu
- Vision: YOLOv8 / Detectron2 cho phát hiện đối tượng/sự cố từ ảnh.
- NLP: PhoBERT / XLM-R cho phân loại mô tả tiếng Việt và trích xuất thực thể.
- Fusion Layer: hợp nhất kết quả ảnh, văn bản và metadata để đưa ra nhãn cuối cùng và mức ưu tiên.
- Đánh giá: Precision, Recall, F1-score, mAP và chỉ số độ tin cậy AI.
- Dữ liệu lưu trữ theo chuẩn NGSI-LD để dễ tích hợp và chia sẻ.
♻️ Quy trình hoạt động (tóm tắt)
- Người dân gửi phản ánh (ảnh, mô tả, vị trí).
- Hệ thống lưu ảnh và đẩy message vào hàng đợi.
- Worker gọi AI microservice để phân tích hình ảnh & văn bản.
- Kết quả được ghép với metadata, cập nhật entity (NGSI-LD) và hiển thị trên bản đồ.
- Nếu cần, phát cảnh báo tới đơn vị liên quan và công dân (push/SMS/email).
- Hoàn thành xử lý → cập nhật trạng thái và tính điểm CityPoint cho reporter.