# eSesja Analytics v2.0 - Backend API

## 📦 ZAWARTOŚĆ ARCHIWUM

Kompletny kod backend API z:
- 16 plików JavaScript
- 35 endpointów REST API
- Zabezpieczenia (JWT, CORS, Rate Limiting)
- Dokumentacja (3 pliki MD)
- Skrypt testowy

## 📁 STRUKTURA

```
api/
├── config/
│   ├── database.js          # MySQL connection pool
│   └── logger.js            # Winston logger
├── controllers/
│   ├── radniController.js   # 12 funkcji
│   ├── glosowaniaController.js # 6 funkcji
│   ├── statystykiController.js # 9 funkcji
│   ├── posiedzeniaController.js # 4 funkcje
│   └── utilsController.js   # 4 funkcje
├── middleware/
│   ├── security.js          # Zabezpieczenia
│   └── errorHandler.js      # Obsługa błędów
├── routes/
│   ├── radni.js
│   ├── glosowania.js
│   ├── statystyki.js
│   ├── posiedzenia.js
│   └── utils.js
├── server.js                # Main server
├── package.json
├── ecosystem.config.js      # PM2 config
├── .env.example
├── .gitignore
├── test-api.sh              # Skrypt testowy
├── INSTALLATION.md          # Pełna instalacja
├── API_DOCUMENTATION.md     # Dokumentacja API
├── QUICK_START.md           # Szybki start
└── README.md
```

## 🚀 INSTALACJA

### 1. Rozpakuj archiwum
```bash
unzip esesja-api.zip
cd api
```

### 2. Zainstaluj zależności
```bash
npm install
```

### 3. Konfiguracja bazy danych
Upewnij się, że masz uruchomiony MySQL i bazę danych ze schematem:
- `statystyki_struktura_20251225.sql`

### 4. Konfiguracja środowiskowa
```bash
cp .env.example .env
nano .env
```

**Wypełnij:**
```env
# Database
DB_HOST=localhost
DB_PORT=3306
DB_USER=statystyki_user
DB_PASSWORD=twoje_haslo_tutaj
DB_NAME=statystyki

# Server
PORT=3001
NODE_ENV=development

# Security
ALLOWED_ORIGINS=http://localhost:3000,https://twoja-domena.pl

# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
```

### 5. Uruchom serwer

**Development:**
```bash
npm run dev
```

**Production (PM2):**
```bash
npm install -g pm2
pm2 start ecosystem.config.js
pm2 save
pm2 startup
```

## ✅ WERYFIKACJA

Serwer powinien być dostępny na: `http://localhost:3001`

Test endpointów:
```bash
./test-api.sh http://localhost:3001
```

Lub ręcznie:
```bash
curl http://localhost:3001/health
```

## 📖 DOKUMENTACJA

- **INSTALLATION.md** - Pełna instalacja na Ubuntu + Apache
- **API_DOCUMENTATION.md** - Wszystkie 35 endpointów z przykładami
- **QUICK_START.md** - Instalacja w 10 minut

## ⚠️ CO BRAKUJE

### Endpointy autentykacji (musisz dodać):
- `POST /api/auth/login`
- `POST /api/auth/register`
- `GET /api/auth/verify`
- `POST /api/auth/logout`

### Endpointy panel admina (musisz dodać):
- `/api/admin/users/*`
- `/api/admin/tokens/*`
- `/api/admin/shares/*`
- `/api/admin/logs/*`

## 🔐 ZABEZPIECZENIA

✅ Zaimplementowane:
- CORS (whitelist domen)
- Rate Limiting (100 req/15min)
- Input Validation (SQL injection)
- Error sanitization
- JWT support (w middleware)

## 📊 DOSTĘPNE ENDPOINTY (35)

### Radni (12):
- GET /api/radni
- GET /api/radni/:id
- GET /api/radni/:id/glosowania
- GET /api/radni/:id/profil-glosowania
- GET /api/radni/:id/frekwencja
- GET /api/radni/:id/frekwencja-czas
- GET /api/radni/:id/zgodnosc-grupa
- GET /api/radni/:id/koalicje
- GET /api/radni/:id/oponenci
- GET /api/radni/:id/glosowania-samotne
- GET /api/radni/:id/glosowania-kluczowe
- GET /api/radni/:id/glosowania-buntownicze

### Głosowania (6):
- GET /api/glosowania
- GET /api/glosowania/:id
- GET /api/glosowania/:id/glosy
- GET /api/glosowania/:id/zalaczniki
- POST /api/glosowania/:id/udostepnij
- GET /api/glosowania/share/:link

### Statystyki (9):
- GET /api/statystyki/dashboard
- GET /api/statystyki/ranking-frekwencji
- GET /api/statystyki/ranking-buntownikow
- GET /api/statystyki/ranking-lojalistow
- GET /api/statystyki/najbardziej-kontrowersyjne
- GET /api/statystyki/najbardziej-jednomyslne
- GET /api/statystyki/aktywnosc-organow
- GET /api/statystyki/frekwencja-czas
- GET /api/statystyki/top-koalicje

### Posiedzenia (4):
- GET /api/posiedzenia
- GET /api/posiedzenia/:id
- GET /api/posiedzenia/:id/punkty
- GET /api/posiedzenia/:id/obecnosci

### Utils (4):
- GET /api/utils/ugrupowania
- GET /api/utils/organy
- GET /api/utils/kadencje
- GET /api/utils/stats

## 💡 WSPARCIE

Jeśli masz problemy:
1. Sprawdź logi: `/var/log/esesja-api/`
2. Sprawdź dokumentację w plikach MD
3. Test połączenia z bazą: `npm run test-db` (jeśli dodasz skrypt)

## 📝 LICENSE

Właściciel: Leszek
Projekt: eSesja Analytics v2.0
Data: 2024-12-26
