feat: Implement alert creation service with FCM notifications

- Add AlertCreationService to handle alert creation and notifications.
- Implement idempotency key support to prevent duplicate alerts.
- Create alert notification service for sending FCM messages.
- Add tests for alert creation and notification services.
- Document FCM notification flow and alert creation process.
This commit is contained in:
2026-07-11 01:18:18 +03:00
parent 93b266f26d
commit ddd67f438b
18 changed files with 1662 additions and 46 deletions

View File

@@ -13,6 +13,7 @@
- ✅ Кеширование через Redis
- ✅ Аутентификация по API ключам
- ✅ Rate limiting
- ✅ Серверные push-уведомления об алертах через Firebase Cloud Messaging
### Технологический стек
@@ -31,7 +32,7 @@
## 📋 Требования
- Docker и Docker Compose
- Node.js 18+ (для разработки без Docker)
- Node.js 22+ (для разработки без Docker и Firebase Admin SDK)
- Статический IP или динамический DNS
- ~2GB свободного места на диске
@@ -57,6 +58,9 @@ ADMIN_PASSWORD=your_secure_admin_password_here
# Для разработки/деплоя через встроенный proxy оставьте как есть
CORS_ORIGIN=http://localhost:3001
API_URL=/api/v1
# Push отключён по умолчанию и не требует Firebase credentials
FCM_ENABLED=false
```
Генерация безопасного salt:
@@ -103,7 +107,7 @@ docker exec -it polotsk-transit-db psql -U transit_admin -d polotsk_transit -c "
```bash
cd backend
npm install
cp .env.example .env
cp ../.env.example .env
# Убедитесь, что PostgreSQL и Redis запущены локально
# Настройте DATABASE_URL и REDIS_URL в .env
@@ -168,6 +172,15 @@ GET /api/v1/sync?lastSync=2025-11-19T10:00:00Z # Инкрементальная
GET /api/v1/sync/status # Статус системы
```
**Алерты:**
```bash
GET /api/v1/alerts/active # Активные алерты для клиентов
POST /api/v1/alerts # Создать алерт и, если он активен, отправить FCM
```
Настройка Firebase, контракт сообщения, идемпотентность и способы локальной
проверки описаны в [документации FCM-уведомлений](docs/fcm-alert-notifications.md).
### Примеры запросов
**Создание маршрута:**
@@ -338,7 +351,7 @@ SELECT PostGIS_Version();
### Версия 3.0 - Продвинутые функции
- [ ] IoT GPS-трекеры интеграция
- [ ] Машинное обучение для предсказания задержек
- [ ] Push-уведомления
- [x] Push-уведомления о новых активных алертах
- [ ] Аналитика и отчеты
## 🤝 Контакты и поддержка