68 lines
1.9 KiB
Markdown
68 lines
1.9 KiB
Markdown
# Backend – Gestione Rimborsi Spese Aziendali (Prova S5)
|
||
|
||
API REST per la gestione delle richieste di rimborso spese aziendali.
|
||
|
||
## URL produzione
|
||
|
||
| Risorsa | URL |
|
||
|---------|-----|
|
||
| API | https://provapraticabackend.andreavillari.it |
|
||
| Health check | https://provapraticabackend.andreavillari.it/api/health |
|
||
| Swagger UI | https://provapraticabackend.andreavillari.it/api/docs |
|
||
| Frontend collegato | https://provapraticafrontend.andreavillari.it |
|
||
|
||
## Credenziali di test
|
||
|
||
Password comune per tutti gli utenti: `Password123!`
|
||
|
||
| Ruolo | Email |
|
||
|-------|-------|
|
||
| Responsabile amministrativo | `admin@azienda.it` |
|
||
| Dipendente | `mario.rossi@azienda.it` |
|
||
| Dipendente | `marco.bianchi@azienda.it` |
|
||
| Dipendente | `anna.verdi@azienda.it` |
|
||
|
||
È possibile anche registrare nuovi utenti da `/register` sul frontend, scegliendo il ruolo.
|
||
|
||
## Avvio locale
|
||
|
||
Configurare il file `.env` (AUTH_SECRET, credenziali DB, URL frontend/backend, ecc.).
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
Con Docker (app + MySQL + phpMyAdmin):
|
||
|
||
```bash
|
||
docker compose up -d --build
|
||
```
|
||
|
||
MySQL è esposto su `127.0.0.1:3307`, l'app su `127.0.0.1:3003`.
|
||
|
||
Gli script in `initdb/` vengono eseguiti **solo al primo avvio** del volume MySQL (database vuoto).
|
||
|
||
## Dati iniziali
|
||
|
||
Il seed (`initdb/02_seed.sql`) crea:
|
||
|
||
- 4 utenti di test (1 responsabile, 3 dipendenti)
|
||
- 5 categorie di spesa
|
||
- 10 richieste di rimborso in tutti gli stati (`IN_ATTESA`, `APPROVATA`, `RIFIUTATA`, `LIQUIDATA`)
|
||
|
||
Se il database di produzione è stato creato **prima** dell'aggiornamento del seed:
|
||
|
||
- ricreare il volume Docker (`docker compose down -v` poi `up`), oppure
|
||
- eseguire `scripts/apply-missing-test-users.sql` via phpMyAdmin o CLI MySQL
|
||
|
||
## Stack
|
||
|
||
- Node.js 20, Express, TypeScript
|
||
- MySQL 8
|
||
- Auth.js (sessione JWT via cookie)
|
||
- Swagger UI (`/api/docs`)
|
||
|
||
## Deploy
|
||
|
||
Push su `main` → Forgejo Actions → SSH sul VPS → `docker compose up -d --build` in `/root/provapraticabackend`.
|