- Changed migration commands in DATABASE_SETUP.md to use `pnpm run sync-skills` and `pnpm run sync-teams`. - Removed the skills migration API endpoint in route.ts, streamlining the migration process. - Updated MIGRATION_UUID.md to reflect changes in migration steps and removed the old skills migration script. - Added new sync scripts for skills and teams in package.json. - Cleaned up init.sql by removing old teams data insertion and adjusted comments for clarity.
153 lines
3.9 KiB
Markdown
153 lines
3.9 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 et l'interface d'administration
|
|
docker compose up -d postgres adminer
|
|
|
|
# Ou démarrer tous les services
|
|
docker compose up -d
|
|
|
|
# Vérifier que les services sont démarrés
|
|
docker compose ps
|
|
```
|
|
|
|
### Interface d'administration (Adminer)
|
|
|
|
Une fois PostgreSQL démarré, tu peux accéder à l'interface web sur :
|
|
|
|
**🌐 http://localhost:8080**
|
|
|
|
**Paramètres de connexion :**
|
|
|
|
- **Système** : PostgreSQL
|
|
- **Serveur** : postgres
|
|
- **Utilisateur** : peakskills_user
|
|
- **Mot de passe** : peakskills_password
|
|
- **Base de données** : peakskills
|
|
|
|
L'interface Adminer te permet de :
|
|
|
|
- 📊 Visualiser les tables et données
|
|
- 🔍 Exécuter des requêtes SQL
|
|
- 📈 Voir les relations entre tables
|
|
- 📋 Exporter/importer des données
|
|
|
|
### 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 les services
|
|
docker compose restart postgres adminer
|
|
|
|
# Voir les logs
|
|
docker compose logs postgres
|
|
docker compose logs adminer
|
|
|
|
# Se connecter à la base en ligne de commande
|
|
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
|
|
|
|
# Démarrer uniquement PostgreSQL (sans Adminer)
|
|
docker compose up -d postgres
|
|
|
|
# Démarrer uniquement Adminer (si PostgreSQL tourne déjà)
|
|
docker compose up -d adminer
|
|
```
|
|
|
|
## Migration des données
|
|
|
|
Une fois PostgreSQL démarré, tu peux migrer les données :
|
|
|
|
```bash
|
|
# Synchroniser les skills depuis JSON vers PostgreSQL
|
|
pnpm run sync-skills
|
|
|
|
# Synchroniser les teams depuis JSON vers PostgreSQL
|
|
pnpm run sync-teams
|
|
|
|
# Vérifier dans Adminer : http://localhost:8080
|
|
# Ou en ligne de commande :
|
|
docker compose exec postgres psql -U peakskills_user -d peakskills -c "SELECT COUNT(*) FROM skills;"
|
|
```
|