🏗️ Kiến Trúc Hệ Thống CivicTwin AI
"Thiết kế cơ bản cho Digital Twin & AI Prediction Platform"
📊 Tổng Quan Kiến Trúc
CivicTwin AI được thiết kế theo kiến trúc Microservices hiện đại, đảm bảo:
- 🔄 Khả năng mở rộng (Scalability)
- 🔌 Tính linh hoạt (Flexibility)
- ⚡ Hiệu suất cao (High Performance)
- 🛡️ Độ tin cậy (Reliability)
┌─────────────────────────────────────────────────────────────┐
│ Frontend Layer │
│ (Vite + Vanilla JS, Leaflet/Mapbox, Charts.js) │
└────────────────┬────────────────────────────────────────────┘
│
┌────────────────▼────────────────────────────────────────────┐
│ API Gateway & Load Balancer │
│ (Nginx / Node.js) │
└────────────────┬────────────────────────────────────────────┘
│
┌────────────┼────────────┬────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Digital │ │ AI │ │Simulation│ │Dashboard │
│ Twin │ │Prediction│ │ Engine │ │ Service │
│ Service │ │ Service │ │ │ │ │
└─────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ │ │
└────────────┼────────────┼────────────┘
│
┌────────────┼────────────┬────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ IoT │ │ Message │ │ Cache & │ │Geospatial│
│ Adapter │ │ Queue │ │ Session │ │ Database│
│ │ │ (Kafka) │ │ (Redis) │ │(PostgreSQL
└──────────┘ └──────────┘ └──────────┘ │+ PostGIS)
└──────────┘
🔧 Các Thành phần Chính
| Thành phần | Công nghệ | Mục đích |
|---|---|---|
| Frontend | Vite, Vanilla JS, Leaflet, Charts.js | Giao diện người dùng, bản đồ tương tác |
| API Gateway | Node.js + Express / Nginx | Routing, Load balancing, Authentication |
| Digital Twin | Node.js, PostGIS, Real-time engine | Mô hình hóa đô thị, cập nhật thời gian thực |
| AI Prediction | Amazon Bedrock + Nova | Dự báo lưu lượng, cảnh báo môi trường |
| Simulation | Agent-Based Model, Python FastAPI | Mô phỏng kịch bản what-if |
| Dashboard | Node.js + EJS/Pug | Hiển thị dữ liệu, Impact Score, Radar Chart |
| IoT Adapter | Node.js, MQTT | Nhận dữ liệu từ cảm biế, camera, thời tiết |
| Message Queue | Apache Kafka / RabbitMQ | Event streaming, xử lý bất đồng bộ |
| Cache | Redis | Session, caching, real-time data |
| Database | PostgreSQL + PostGIS | Lưu trữ dữ liệu địa lý, lịch sử |
🌐 Luồng Dữ liệu Chính
1. Nhận dữ liệu từ Nguồn Ngoài
Sensors/Cameras/APIs
↓
MQTT Broker
↓
IoT Adapter
↓
Kafka Topic
↓
[Microservices]
Dữ liệu bao gồm:
- 📷 Camera feed (giao thông, flooding)
- 🌡️ Cảm biến IoT (nhiệt độ, độ ẩm, mực nước, ô nhiễm)
- 🌤️ Dữ liệu thời tiết (API OpenWeatherMap, NOAA)
- 🚗 Dữ liệu giao thông real-time
- 📱 Báo cáo từ ứng dụng người dân