- 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`.
106 lines
2.7 KiB
Markdown
106 lines
2.7 KiB
Markdown
# 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
|
|
```
|