File: //srv/rmgun_admin/admin-next/express/README.md
# Express Service - Weekly Registrations Export
## Opis
Serwis Express z schedulerem, który automatycznie eksportuje dane z kolekcji `registrations` do CSV co tydzień w niedzielę o 22:00 i wysyła je mailem do skonfigurowanych odbiorców.
## Funkcjonalności
### 1. Automatyczny Export z Emailem
- **Kiedy**: Każda niedziela o 22:00 (timezone: Europe/Warsaw)
- **Co**: Eksport wszystkich rejestracji z ostatniego tygodnia
- **Format**: CSV z polskimi nagłówkami
- **Lokalizacja**: `/express/exports/`
- **Email**: Automatyczne wysłanie CSV do skonfigurowanych odbiorców
### 2. Ręczny Export
- **Endpoint**: `GET http://localhost:4000/export/weekly`
- Umożliwia ręczne wygenerowanie eksportu
### 3. Lista Eksportów
- **Endpoint**: `GET http://localhost:4000/export/list`
- Zwraca listę wszystkich wygenerowanych plików CSV
### 4. Pobieranie Plików
- **Endpoint**: `GET http://localhost:4000/export/download/:filename`
- Pobiera konkretny plik CSV
## Struktura Danych (Registration)
```typescript
{
id: string;
fullName: string;
permitNumber: string;
address: string | null;
hasPermit: boolean;
instructorName: string;
hasInstructorQualifications: boolean;
active: boolean;
createdAt: Timestamp;
checkoutTime: Timestamp | null;
tempId: string;
}
```
## Konfiguracja
### Zmienne Środowiskowe (wspólny plik .env w root)
```env
# Express Server
EXPRESS_PORT=4000
EXPRESS_NODE_ENV=production
# Scheduler
SCHEDULER_ENABLED=true
SCHEDULER_TIMEZONE=Europe/Warsaw
# Firebase Admin
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_CLIENT_EMAIL=your-client-email
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n..."
# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
EMAIL_FROM="RMGun Range <noreply@rmgun.pl>"
# Odbiorcy (rozdzielone przecinkiem)
EMAIL_RECIPIENTS="admin1@example.com,admin2@example.com,admin3@example.com"
```
### Uruchomienie Lokalne
```bash
cd express
npm install
npm run dev
```
### Uruchomienie Docker
```bash
docker-compose up express-service
```
## Automatyczne Czyszczenie
- Stare eksporty (starsze niż 4 tygodnie) są automatycznie usuwane
- Czyszczenie odbywa się codziennie o 3:00 w nocy
## Endpointy API
| Metoda | Endpoint | Opis |
|--------|----------|------|
| GET | `/health` | Health check |
| GET | `/` | Informacje o serwisie |
| GET | `/export/weekly` | Ręczny export tygodniowy z emailem |
| GET | `/export/weekly?email=false` | Ręczny export bez emaila |
| GET | `/export/list` | Lista plików CSV |
| GET | `/export/download/:filename` | Pobierz plik CSV |
| GET | `/email/test` | Wyślij testowy email |
## Harmonogram
| Zadanie | Cron | Czas | Opis |
|---------|------|------|------|
| Weekly Export | `0 22 * * 0` | Niedziela 22:00 | Export danych z całego tygodnia |
| Cleanup | `0 3 * * *` | Codziennie 3:00 | Usuwanie starych eksportów |