Aller au contenu

Compatibilité PD-2 ↔ PD-14 : PostgreSQL & TypeORM

Date: 2025-11-22 Status: ✅ 100% Compatible


📋 Vue d'ensemble

Ce document valide la compatibilité entre : - PD-2 : Déploiement PostgreSQL via Ansible - PD-14 : Connexion TypeORM depuis le backend NestJS


✅ Validation de compatibilité

PostgreSQL Version

Composant Version Source Status
PD-2 Ansible defaults 18 ansible/roles/postgresql/defaults/main.yml:4
PD-2 group_vars dev 18 ansible/inventory/dev/group_vars/all.yml:5 ✅ Mis à jour
PD-2 group_vars prod 18 ansible/inventory/prod/group_vars/all.yml:7 ✅ Mis à jour
PD-14 TypeORM 18.1 backend/docs/PD-14-TYPEORM-IMPLEMENTATION.md

Résultat : PostgreSQL 18 déployé partout

Credentials Database

Paramètre PD-2 Ansible PD-14 TypeORM Status
DB Name probatiovault probatiovault ✅ Aligné
DB User probatiovault probatiovault ✅ Aligné
DB Password (dev) dev_password_change_me dev_password_change_me ✅ Aligné

Résultat : Credentials identiques entre Ansible et TypeORM

Configuration SSL/TLS

Environnement PD-2 Ansible PD-14 TypeORM Status
Dev SSL désactivé (local) DB_SSL=false ✅ Compatible
Test/Prod SSL activé (Let's Encrypt) DB_SSL=true ✅ Compatible
Prod rejectUnauthorized DB_SSL_REJECT_UNAUTHORIZED=true ✅ Compatible

Résultat : SSL/TLS compatible

Connection Pool

Environnement PostgreSQL max_connections TypeORM Pool (min-max) Ratio Status
Dev 100 1-5 5% ✅ Safe
Test 100 2-8 8% ✅ Safe
Prod 200 5-20 10% ✅ Safe

Règle : Pool max < 80% de max_connections Résultat : Tous les environnements sont dans la zone de sécurité (<20%)

Schema & Extensions

Composant PD-2 Ansible PD-14 TypeORM Status
Schema audit ✅ Créé par Ansible ✅ Validé par migration PD-14 ✅ Compatible
Table audit.events ✅ Créée par Ansible ✅ Utilisée par migration ✅ Compatible
pgcrypto ✅ Installée - ✅ Disponible
uuid-ossp ✅ Installée - ✅ Disponible
pg_stat_statements ✅ Installée - ✅ Disponible

Résultat : Schema et extensions compatibles


🔧 Modifications effectuées

Infrastructure (PD-2)

Fichier : ansible/inventory/dev/group_vars/all.yml

- postgresql_version: "15"
+ postgresql_version: "18"

Fichier : ansible/inventory/prod/group_vars/all.yml

- postgresql_version: "15"
+ postgresql_version: "18"

Backend (PD-14)

Fichier : backend/.env.development

- DB_USER=probatio
- DB_PASSWORD=TempDevPassword123!ChangeMe
- DB_NAME=probatiovault_dev
+ DB_USER=probatiovault
+ DB_PASSWORD=dev_password_change_me
+ DB_NAME=probatiovault

Fichier : backend/src/config/database.config.ts

- database: process.env.DB_NAME || 'probatiovault_dev',
- username: process.env.DB_USER || 'probatio',
+ database: process.env.DB_NAME || 'probatiovault',
+ username: process.env.DB_USER || 'probatiovault',

Fichier : backend/src/database/data-source.ts

- database: process.env.DB_NAME || 'probatiovault_dev',
- username: process.env.DB_USER || 'probatio',
+ database: process.env.DB_NAME || 'probatiovault',
+ username: process.env.DB_USER || 'probatiovault',


🧪 Plan de test au déploiement

Test 1 : Déploiement Ansible (PD-2)

# Sur VPS dev
cd ProbatioVault-infra/ansible
ansible-playbook -i inventory/dev/hosts.ini playbook.yml --tags postgresql

# Vérifications
sudo -u postgres psql -c "SELECT version();"
# Attendu: PostgreSQL 18.x

sudo -u postgres psql -d probatiovault -c "\du probatiovault"
# Attendu: Role probatiovault existe

sudo -u postgres psql -d probatiovault -c "\dn audit"
# Attendu: Schema audit existe

sudo -u postgres psql -d probatiovault -c "\d audit.events"
# Attendu: Table audit.events existe

Résultat attendu : ✅ PostgreSQL 18 déployé avec schema audit

Test 2 : Connexion TypeORM (PD-14)

# Sur VPS dev
cd /home/probatio/probatiovault-backend
export NODE_ENV=development

# Test de connexion
npm run migration:show
# Attendu: Connection successful + liste des migrations

npm run migration:run
# Attendu: Migration PD14InitialCheckpoint executed successfully

# Vérification dans la base
psql "postgresql://probatiovault:dev_password_change_me@localhost:5432/probatiovault" \
  -c "SELECT * FROM audit.events WHERE event_type = 'MIGRATION' ORDER BY created_at DESC LIMIT 1;"
# Attendu: Event "PD-14: TypeORM Initial Checkpoint" présent

Résultat attendu : ✅ TypeORM connecté + migration réussie

Test 3 : Déploiement via CI/CD

# Push vers branche dev
git add .
git commit -m "PD-14: TypeORM PostgreSQL connection"
git push origin dev

# Dans GitLab CI/CD
# 1. Pipeline s'exécute (validate → test → build)
# 2. Job migrate:dev s'affiche (manual)
# 3. Exécuter manuellement migrate:dev
# 4. Vérifier logs : "✅ Migrations terminées"
# 5. Job deploy:dev s'exécute automatiquement

Résultat attendu : ✅ Pipeline complet réussi


📊 Matrice de compatibilité finale

Critère PD-2 PD-14 Compatible
PostgreSQL Version 18 18.1
Database Name probatiovault probatiovault
Database User probatiovault probatiovault
Database Password Ansible vault .env files
SSL/TLS Dev Désactivé Désactivé
SSL/TLS Prod Activé (Let's Encrypt) Activé
Schema audit Créé par Ansible Utilisé par TypeORM
Extensions pgcrypto, uuid-ossp, pg_stat_statements Disponibles
Connection Pool max_connections: 100-200 Pool: 5-20
Migrations Schema initial via Ansible Versionnées via TypeORM
Monitoring postgres_exporter DatabaseHealthService

Status global : ✅ 100% COMPATIBLE


🚀 Prochaines étapes

Immédiat (déjà fait)

  • Aligner PostgreSQL version 18 dans group_vars
  • Aligner credentials database (user, password, name)
  • Vérifier SSL/TLS configuration
  • Valider connection pool settings
  • Documentation mise à jour

Au déploiement CI/CD

  • Tester connexion TypeORM sur VPS dev
  • Exécuter migration initiale PD-14
  • Vérifier health check database
  • Valider SSL/TLS en production

Futur (PD-15+)

  • Créer entités TypeORM (User, Document, Folder)
  • Générer migrations pour tables métier
  • Implémenter repositories NestJS
  • Tests d'intégration avec PostgreSQL

📚 Références

  • PD-2 : PD-2-POSTGRESQL-DEPLOYMENT.md
  • PD-14 : PD-14-TYPEORM-IMPLEMENTATION.md
  • Database README : docs/database/README.md

Dernière mise à jour : 2025-11-22 Validé par : Claude Code (PD-14 Implementation) Status : ✅ PRÊT POUR DÉPLOIEMENT CI/CD