feat: add PostgreSQL support and enhance evaluation loading
- Added `pg` and `@types/pg` dependencies for PostgreSQL integration. - Updated `useEvaluation` hook to load user evaluations from the API, improving data management. - Refactored `saveUserEvaluation` and `loadUserEvaluation` functions to interact with the API instead of localStorage. - Introduced error handling for profile loading and evaluation saving to enhance robustness. - Added new methods for managing user profiles and evaluations, including `clearUserProfile` and `loadEvaluationForProfile`.
This commit is contained in:
105
DATABASE_SETUP.md
Normal file
105
DATABASE_SETUP.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Configuration PostgreSQL pour PeakSkills
|
||||
|
||||
## Setup de développement
|
||||
|
||||
### 1. Installation des dépendances
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### 2. Configuration de l'environnement
|
||||
|
||||
Créer un fichier `.env.local` à la racine du projet :
|
||||
|
||||
```env
|
||||
# Database configuration
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_NAME=peakskills
|
||||
DB_USER=peakskills_user
|
||||
DB_PASSWORD=peakskills_password
|
||||
|
||||
# API configuration (optional, defaults to empty string for same-origin requests)
|
||||
NEXT_PUBLIC_API_URL=
|
||||
```
|
||||
|
||||
### 3. Démarrage de PostgreSQL avec Docker
|
||||
|
||||
```bash
|
||||
# Démarrer la base de données
|
||||
docker-compose up -d postgres
|
||||
|
||||
# Vérifier que la base est bien démarrée
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
### 4. Démarrage de l'application
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Base de données
|
||||
|
||||
La base de données PostgreSQL contient les tables suivantes :
|
||||
|
||||
- `users` : Informations utilisateur (nom, prénom, équipe)
|
||||
- `user_evaluations` : Métadonnées des évaluations utilisateur
|
||||
- `category_evaluations` : Évaluations par catégorie
|
||||
- `selected_skills` : Skills sélectionnées pour évaluation
|
||||
- `skill_evaluations` : Évaluations détaillées des skills
|
||||
|
||||
### API
|
||||
|
||||
Les endpoints suivants sont disponibles :
|
||||
|
||||
- `GET /api/evaluations` : Charger une évaluation utilisateur
|
||||
- `POST /api/evaluations` : Sauvegarder une évaluation complète
|
||||
- `PUT /api/evaluations/skills` : Mettre à jour une skill spécifique
|
||||
|
||||
### Services
|
||||
|
||||
Le dossier `services/` contient tous les services backend :
|
||||
|
||||
- `database.ts` : Configuration et pool de connexions PostgreSQL (server-only)
|
||||
- `evaluation-service.ts` : Service backend pour interfacer avec PostgreSQL (server-only)
|
||||
- `api-client.ts` : Client pour les appels API depuis le frontend (client-safe)
|
||||
- `index.ts` : Exports server-side pour les API routes
|
||||
- `client.ts` : Exports client-safe pour les composants React
|
||||
|
||||
**Important** :
|
||||
|
||||
- Utiliser `@/services/client` dans les composants React et hooks
|
||||
- Utiliser `@/services` ou imports directs dans les API routes
|
||||
|
||||
Le hook `useEvaluation` (dans `hooks/`) utilise `api-client` pour la persistance.
|
||||
|
||||
## Migration depuis localStorage
|
||||
|
||||
Les données sont maintenant persistées en base PostgreSQL au lieu du localStorage. Le hook `useEvaluation` a été mis à jour pour :
|
||||
|
||||
1. Charger les évaluations depuis l'API
|
||||
2. Effectuer des mises à jour optimistes pour une meilleure UX
|
||||
3. Synchroniser avec la base de données
|
||||
|
||||
## Commandes utiles
|
||||
|
||||
```bash
|
||||
# Redémarrer la base de données
|
||||
docker-compose restart postgres
|
||||
|
||||
# Voir les logs de la base
|
||||
docker-compose logs postgres
|
||||
|
||||
# Se connecter à la base
|
||||
docker-compose exec postgres psql -U peakskills_user -d peakskills
|
||||
|
||||
# Arrêter tous les services
|
||||
docker-compose down
|
||||
|
||||
# Arrêter et supprimer les volumes (reset complet)
|
||||
docker-compose down -v
|
||||
```
|
||||
Reference in New Issue
Block a user