Questo documento è il punto di ingresso per ogni agente AI che lavora sul progetto. Deve essere letto interamente prima di ogni modifica.
Il repository è strutturato in branch specializzati. Non mescolare le configurazioni tra i branch:
main: Contiene la descrizione generale del progetto, l'architettura logica e la documentazione di alto livello. È il branch di riferimento per la visione d'insieme.docker: Specializzato per l'esecuzione tramite Docker Compose. Contiene i filedocker-compose.ymle le configurazioni ottimizzate per lo sviluppo locale.k8s: Specializzato per Kubernetes (Minikube). Contiene i manifest ink8s/e utilizza le ConfigMaps per esternalizzare la configurazione di Apache e il seed del database.
- Frontend (FE): Apache HTTP Server (2.4-alpine). Serve asset statici (HTML/CSS/JS). Agisce da Reverse Proxy per le chiamate API verso
/api/v1/. - Backend (BE): Java 17 con Spring Boot 3.3.4. API REST versionate. Sicurezza gestita con Spring Security (sessioni basate su JSESSIONID).
- Database (DB): MySQL 8.0. Inizializzazione automatica via
init.sql. - Build: Interamente containerizzata via Dockerfile (multi-stage). Il backend deve essere compilabile in isolamento (test con DB H2).
Ogni modifica deve essere validata seguendo questo protocollo:
- Unit Test: Logica dei servizi (
OrderServiceTest). - Integration Test: Persistenza su DB H2 in-memory (
UserRepositoryTest). - Security Test: Verifica autorizzazioni e ruoli (
SecurityAuthorizationTest).- Comando:
cd backend && mvn test
- Comando:
- Verifica CORS: Assicurarsi che le richieste POST (login) non falliscano con errore 403 dal browser.
- Simulazione Browser:
curl -v -X POST http://localhost/api/v1/auth/login -H "Origin: http://<USER_IP>"(Deve restituire 200 OK e gli header CORS).
- Verifica dello stack:
docker compose ps(Tutti i servizi devono esserehealthy). - Verifica log:
docker compose logs -f backend.
- Verifica ConfigMaps:
kubectl get configmap frontend-config(Deve contenerehttpd.conf). - Verifica Accesso:
curl -i http://$(minikube ip):30080/api/v1/services. - Hot Update: Modifica ConfigMap ->
kubectl apply->kubectl rollout restart.
- Ricerca: Identificare il branch corretto su cui lavorare in base al target (Docker vs K8s).
- Validazione: Prima di modificare, riprodurre eventuali bug tramite script
curlo test JUnit. - Implementazione:
- Mantenere la compatibilità tra i branch.
- Aggiornare il
Readme.MDspecifico del branch se cambiano le modalità operative.
- Versionamento:
- Innalzare la versione nel
pom.xmlper cambiamenti significativi. - Utilizzare i tag Git (es.
v0.0.x) per i rilasci stabili. - Aggiornare le immagini su Docker Hub (
lusig76/) se necessario.
- Innalzare la versione nel
Ogni branch deve avere un Readme.MD che dettagli:
- Comandi di avvio e stop.
- Procedure di consultazione log.
- Query SQL operative per il data forcing.
- Esempi completi di chiamate
curlcon status HTTP attesi.