veza/docs/archive/frontend-sessions-2026/RAPPORT_LAB.md
senke 0e7097ed1b chore(cleanup): J1 — purge 220MB debris, archive session docs (complete)
First-attempt commit 3a5c6e184 only captured the .gitignore change; the
pre-commit hook silently dropped the 343 staged moves/deletes during
lint-staged's "no matching task" path. This commit re-applies the intended
J1 content on top of bec75f143 (which was pushed in parallel).

Uses --no-verify because:
- J1 only touches .md/.json/.log/.png/binaries — zero code that would
  benefit from lint-staged, typecheck, or vitest
- The hook demonstrated it corrupts pure-rename commits in this repo
- Explicitly authorized by user for this one commit

Changes (343 total: 169 deletions + 174 renames):

Binaries purged (~167 MB):
- veza-backend-api/{server,modern-server,encrypt_oauth_tokens,seed,seed-v2}

Generated reports purged:
- 9 apps/web/lint_report*.json (~32 MB)
- 8 apps/web/tsc_*.{log,txt} + ts_*.log (TS error snapshots)
- 3 apps/web/storybook_*.json (1375+ stored errors)
- apps/web/{build_errors*,build_output,final_errors}.txt
- 70 veza-backend-api/coverage*.out + coverage_groups/ (~4 MB)
- 3 veza-backend-api/internal/handlers/*.bak

Root cleanup:
- 54 audit-*.png (visual regression baselines, ~11 MB)
- 9 stale MVP-era scripts (Jan 27, hardcoded v0.101):
  start_{iteration,mvp,recovery}.sh,
  test_{mvp_endpoints,protected_endpoints,user_journey}.sh,
  validate_v0101.sh, verify_logs_setup.sh, gen_hash.py

Session docs archived (not deleted — preserved under docs/archive/):
- 78 apps/web/*.md     → docs/archive/frontend-sessions-2026/
- 43 veza-backend-api/*.md → docs/archive/backend-sessions-2026/
- 53 docs/{RETROSPECTIVE_V,SMOKE_TEST_V,PLAN_V0_,V0_*_RELEASE_SCOPE,
          AUDIT_,PLAN_ACTION_AUDIT,REMEDIATION_PROGRESS}*.md
                        → docs/archive/v0-history/

README.md and CONTRIBUTING.md preserved in apps/web/ and veza-backend-api/.

Note: The .gitignore rules preventing recurrence were already pushed in
3a5c6e184 and remain in place — this commit does not modify .gitignore.

Refs: AUDIT_REPORT.md §11
2026-04-14 17:12:03 +02:00

11 KiB
Raw Blame History

📊 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

  1. 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)
  2. Serveur de développement

    • Vite démarre correctement sur le port 3000
    • Hot Module Replacement (HMR) fonctionnel
    • Configuration CSP et sécurité en place
  3. 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)
  4. 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
  5. Architecture frontend

    • Structure modulaire (features, components, services)
    • Routing avec React Router
    • State management avec Zustand
    • Internationalisation (i18n) configurée

⚠️ Ce qui est partiellement fonctionnel

  1. Dépendances backend ⚠️

    • Le frontend dépend de 3 services backend:
      • veza-backend-api (port 8080) - API REST
      • veza-chat-server (port 8081) - WebSocket
      • veza-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
  2. Variables d'environnement ⚠️

    • Les variables VITE_* doivent être définies avant le build
    • En mode dev, elles peuvent être définies dans .env ou exportées
    • Pas de validation au runtime si les URLs backend sont incorrectes
  3. 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_lab sans 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: /health en 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:

  1. Vérifie que la BDD veza_lab existe
  2. Applique les migrations (backend)
  3. Démarre les services backend si nécessaire
  4. 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 React
  • src/app/App.tsx - Composant racine de l'application
  • index.html - Template HTML

Fichier(s) de config principaux

  • vite.config.ts - Configuration Vite (build, dev server, plugins)
  • tsconfig.json - Configuration TypeScript
  • package.json - Dépendances et scripts npm
  • .env / .env.example - Variables d'environnement
  • src/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 REST
  • veza-chat-server (port 8081) - WebSocket pour le chat
  • veza-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.