11 KiB
📊 Rapport de vérification - Module apps/web
Date: 2025-01-27
Environnement: Lab avec vraie base PostgreSQL
Statut global: ✅ OPÉRATIONNEL
1️⃣ Résumé exécutable
Commande de build recommandée
cd /home/senke/Documents/veza/apps/web
npm install # Si node_modules n'existe pas
npm run build
Résultat: ✅ Build réussi en ~4s, génération de dist/ avec 1836 modules transformés.
Commande de migrations sur la BDD réelle
⚠️ Note importante: Le module apps/web est un frontend React/TypeScript. Il n'a pas de connexion directe à PostgreSQL et ne gère pas de migrations SQL.
Les migrations sont gérées par le backend API (veza-backend-api). Pour appliquer les migrations sur la base veza_lab:
cd /home/senke/Documents/veza/veza-backend-api
export VEZA_LAB_DSN='postgres://veza:veza_password@localhost:5432/veza_lab?sslmode=disable'
export DATABASE_URL="$VEZA_LAB_DSN"
go run cmd/migrate_tool/main.go
Alternative (script existant):
cd /home/senke/Documents/veza/veza-backend-api
export VEZA_LAB_DSN='postgres://veza:veza_password@localhost:5432/veza_lab?sslmode=disable'
./scripts/apply_migrations_lab.sh
Commande de démarrage lab (avec vraie BDD)
Option 1 - Script dédié (recommandé):
cd /home/senke/Documents/veza/apps/web
./scripts/start_lab.sh
Option 2 - Commande npm directe:
cd /home/senke/Documents/veza/apps/web
export VITE_API_BASE_URL='http://localhost:8080/api/v1'
export VITE_WS_BASE_URL='ws://localhost:8081'
export VITE_STREAM_URL='http://localhost:8082'
export VITE_USE_MSW='0' # Désactiver les mocks pour utiliser la vraie API
npm run dev
Port par défaut: http://localhost:3000
Tests rapides (curl / autres)
1. Vérifier que le frontend répond:
curl -s http://localhost:3000 | grep -q "Veza" && echo "✅ Frontend OK" || echo "❌ Frontend KO"
2. Vérifier que le backend API est accessible (prérequis):
curl -s http://localhost:8080/health
# Réponse attendue: {"success":true,"data":{"status":"ok"}}
3. Vérifier que le frontend peut communiquer avec l'API:
# Test d'une route API via le frontend (nécessite un navigateur)
# Ouvrir http://localhost:3000 dans un navigateur
# Vérifier la console pour les erreurs de connexion
4. Health check du frontend (si servi via nginx en production):
curl -s http://localhost:80/health
# Réponse attendue: "healthy\n"
2️⃣ État actuel du module
✅ Ce qui fonctionne réellement aujourd'hui
-
Build de production ✅
- Compilation TypeScript/React réussie
- Génération des assets optimisés (gzip, sourcemaps)
- Pas d'erreurs de compilation
- Bundle size: ~413 KB (index.js), ~79 KB (CSS)
-
Serveur de développement ✅
- Vite démarre correctement sur le port 3000
- Hot Module Replacement (HMR) fonctionnel
- Configuration CSP et sécurité en place
-
Configuration d'environnement ✅
- Validation des variables d'environnement via Zod
- Support des variables
VITE_*pour la configuration - Gestion des mocks MSW (désactivables via
VITE_USE_MSW=0)
-
Communication avec le backend ✅
- Client API configuré (
src/lib/apiClient.ts,src/services/api.ts) - Intercepteurs pour l'authentification JWT
- Refresh token automatique
- Support WebSocket pour le chat
- Client API configuré (
-
Architecture frontend ✅
- Structure modulaire (features, components, services)
- Routing avec React Router
- State management avec Zustand
- Internationalisation (i18n) configurée
⚠️ Ce qui est partiellement fonctionnel
-
Dépendances backend ⚠️
- Le frontend dépend de 3 services backend:
veza-backend-api(port 8080) - API RESTveza-chat-server(port 8081) - WebSocketveza-stream-server(port 8082) - Streaming
- Si ces services ne sont pas démarrés, le frontend démarre mais les fonctionnalités sont limitées
- Recommandation: Documenter clairement les prérequis
- Le frontend dépend de 3 services backend:
-
Variables d'environnement ⚠️
- Les variables
VITE_*doivent être définies avant le build - En mode dev, elles peuvent être définies dans
.envou exportées - Pas de validation au runtime si les URLs backend sont incorrectes
- Les variables
-
Mocks MSW ⚠️
- MSW (Mock Service Worker) est configuré mais peut masquer les erreurs de connexion réelle
- Par défaut désactivé (
VITE_USE_MSW=0), mais peut être activé accidentellement
🔴 Ce qui est cassé ou bloquant
Aucun problème bloquant détecté ✅
Le module compile, se build et démarre correctement. Les problèmes potentiels sont liés à la configuration ou aux dépendances externes (backend), pas au code du frontend lui-même.
Classification des problèmes par priorité
P0 – Bloquant: Aucun ✅
P1 – Majeur: Aucun ✅
P2 – Moyen:
- ⚠️ Documentation des prérequis backend manquante
- ⚠️ Pas de script de vérification automatique des dépendances backend au démarrage
P3 – Cosmétique:
- ⚠️ Warnings npm audit (19 vulnérabilités, principalement dans les devDependencies)
- ⚠️ Dépendances deprecated (inflight, rimraf, opn, etc.) - non bloquant
3️⃣ Checklist "Aucune régression"
- Le module compile sans erreur avec la commande recommandée
- Les migrations passent sur
veza_labsans erreur (via le backend) - Le module se lance en utilisant la vraie BDD (pas de mode offline)
- L'endpoint /health-check renvoie un statut OK (backend:
/health, frontend:/healthen prod) - Les logs au démarrage sont propres (pas de panic / stacktrace critique)
Note: Le frontend n'a pas de connexion directe à la BDD. La vérification de la BDD se fait via le backend API.
4️⃣ Recommandations courtes (max 5 actions)
1. Créer un script de vérification des prérequis backend
Créer scripts/check_backend.sh qui vérifie que les 3 services backend sont accessibles avant de démarrer le frontend:
#!/bin/bash
# Vérifier backend-api
curl -f http://localhost:8080/health || { echo "❌ Backend API non accessible"; exit 1; }
# Vérifier chat-server
curl -f http://localhost:8081/health || { echo "⚠️ Chat server non accessible"; }
# Vérifier stream-server
curl -f http://localhost:8082/health || { echo "⚠️ Stream server non accessible"; }
2. Documenter les variables d'environnement dans .env.example
Ajouter des commentaires explicatifs dans .env.example pour clarifier:
- Quelle variable correspond à quel service
- Les valeurs par défaut
- Quand utiliser MSW vs vraie API
3. Ajouter un health check endpoint au serveur Vite dev
Créer un middleware Vite qui expose /health même en mode dev pour faciliter les tests automatisés.
4. Mettre à jour les dépendances deprecated
Exécuter npm audit fix (ou npm audit fix --force si breaking changes acceptables) pour résoudre les 19 vulnérabilités détectées.
5. Créer un script make dev-lab au niveau racine
Ajouter dans le Makefile racine une cible qui:
- Vérifie que la BDD
veza_labexiste - Applique les migrations (backend)
- Démarre les services backend si nécessaire
- Démarre le frontend avec les bonnes variables d'environnement
5️⃣ Inventaire technique détaillé
Langage principal
- TypeScript (5.3.3)
- React (18.2.0)
- Vite (7.1.5) - Build tool et dev server
Point(s) d'entrée (main)
src/main.tsx- Point d'entrée Reactsrc/app/App.tsx- Composant racine de l'applicationindex.html- Template HTML
Fichier(s) de config principaux
vite.config.ts- Configuration Vite (build, dev server, plugins)tsconfig.json- Configuration TypeScriptpackage.json- Dépendances et scripts npm.env/.env.example- Variables d'environnementsrc/config/env.ts- Validation et parsing des variables d'environnement
Dépendances externes
Services backend requis (non inclus dans ce module):
veza-backend-api(port 8080) - API RESTveza-chat-server(port 8081) - WebSocket pour le chatveza-stream-server(port 8082) - Streaming audio/vidéo
Services optionnels:
- PostgreSQL (via backend API, pas de connexion directe)
- Redis (via backend API, pour le cache)
- RabbitMQ (via backend API, pour les queues)
Vars d'environnement critiques
| Variable | Description | Valeur par défaut | Requis |
|---|---|---|---|
VITE_API_BASE_URL |
URL de l'API REST backend | http://localhost:8080/api/v1 |
Non |
VITE_WS_BASE_URL |
URL du serveur WebSocket | ws://localhost:8081 |
Non |
VITE_STREAM_URL |
URL du serveur de streaming | http://localhost:8082 |
Non |
VITE_APP_NAME |
Nom de l'application | Veza |
Non |
VITE_DEBUG |
Mode debug | false |
Non |
VITE_USE_MSW |
Activer Mock Service Worker | 0 |
Non |
VITE_FCM_VAPID_KEY |
Clé VAPID pour Firebase Cloud Messaging | - | Non |
Note: Toutes les variables sont optionnelles car des valeurs par défaut sont définies dans src/config/env.ts.
6️⃣ Architecture et flux de données
┌─────────────────┐
│ apps/web │ (Frontend React)
│ Port: 3000 │
└────────┬────────┘
│ HTTP/WS
│
┌────┴────┬──────────┬──────────────┐
│ │ │ │
┌───▼───┐ ┌──▼──┐ ┌────▼────┐ ┌──────▼──────┐
│ API │ │Chat │ │ Stream │ │ PostgreSQL │
│ :8080 │ │:8081│ │ :8082 │ │ :5432 │
└───────┘ └─────┘ └────────┘ └─────────────┘
Le frontend ne se connecte jamais directement à PostgreSQL. Toutes les opérations de base de données passent par le backend API.
7️⃣ Commandes de test rapides
Test complet en une commande
# 1. Build
cd /home/senke/Documents/veza/apps/web && npm run build
# 2. Vérifier backend
curl -f http://localhost:8080/health && echo "✅ Backend OK" || echo "❌ Backend KO"
# 3. Démarrer frontend
npm run dev
# 4. Tester dans un autre terminal
sleep 3 && curl -s http://localhost:3000 | grep -q "Veza" && echo "✅ Frontend OK"
8️⃣ Conclusion
Le module apps/web est opérationnel et prêt à être utilisé en environnement lab avec une vraie base PostgreSQL.
Points forts:
- ✅ Build fonctionnel
- ✅ Architecture moderne et maintenable
- ✅ Configuration flexible via variables d'environnement
- ✅ Pas de dépendances directes à la BDD (bonne séparation des responsabilités)
Points d'attention:
- ⚠️ Dépendance aux services backend (à documenter)
- ⚠️ Vulnérabilités npm à traiter (non bloquant)
- ⚠️ Scripts de démarrage lab à améliorer
Recommandation finale: ✅ Le module peut être utilisé en production lab sans modification majeure.