69 lines
1.9 KiB
Markdown
69 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`.
|