fix(front,db,ci): déploiement web, API même origine, Flutter 3.29, schéma validations

Frontend (prod web):
- Image builder Flutter 3.29.3 (Dockerfile + workflow CI alignés)
- web/index.html: bootstrap Flutter 3.29 (flutter_bootstrap.js), scripts pdf.js conservés
- Dockerfile: rm html avant COPY pour éviter l’index « Welcome to nginx »
- nginx: server_name _ pour Traefik
- env: sur le web, API = Uri.base.origin si pas de API_BASE_URL (évite mixed content http/https)
- auth: message d’erreur réseau avec type/détail si non-Exception
- CGU/PDF: commentaire sans mention Flutter 3.19 obsolète
- pubspec.lock: résolution dépendances Flutter 3.29

Base de données & doc:
- BDD.sql: validations.commentaire, valide_par, FK ON DELETE SET NULL + commentaire
- patch 2026-04-17: valide_par avec ON DELETE SET NULL
- patch 2026-04-18: FK validations en SET NULL sur bases existantes
- seed: statut validation « valide » (enum)
- FK_POLICIES.md: valide_par
- doc workflow: Flutter 3.29.3

Made-with: Cursor
This commit is contained in:
2026-04-22 18:48:17 +02:00
parent fc86181a73
commit 2c746ceff3
15 changed files with 110 additions and 96 deletions
+6 -2
View File
@@ -269,13 +269,17 @@ CREATE TABLE notifications (
-- ==========================================================
-- Table : validations
-- ==========================================================
-- Historique des décisions (validation / refus / suspension de compte).
-- Colonnes commentaire + valide_par : requises par lAPI Nest (TypeORM).
-- FK en ON DELETE SET NULL : conserver la ligne si lutilisateur référencé
-- est supprimé (voir database/docs/FK_POLICIES.md).
CREATE TABLE validations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
id_utilisateur UUID REFERENCES utilisateurs(id),
id_utilisateur UUID REFERENCES utilisateurs(id) ON DELETE SET NULL,
type VARCHAR(50),
statut statut_validation_type DEFAULT 'en_attente',
commentaire TEXT,
valide_par UUID REFERENCES utilisateurs(id),
valide_par UUID REFERENCES utilisateurs(id) ON DELETE SET NULL,
cree_le TIMESTAMPTZ DEFAULT now(),
modifie_le TIMESTAMPTZ DEFAULT now()
);
+3 -1
View File
@@ -47,6 +47,7 @@ Documenter, de façon unique et partagée, les règles de suppression/mise à jo
| **uploads(id_utilisateur)**`utilisateurs(id)` | **SET NULL** | Fichier reste référencé sans lauteur |
| **notifications(id_utilisateur)**`utilisateurs(id)` | **CASCADE** | Notifications propres à lutilisateur |
| **validations(id_utilisateur)**`utilisateurs(id)` | **SET NULL** | Garder lhistorique de décision |
| **validations(valide_par)**`utilisateurs(id)` | **SET NULL** | Décideur supprimé : la ligne reste |
> **ON UPDATE** : **NO ACTION** partout (les UUID ne changent pas).
@@ -84,7 +85,8 @@ Documenter, de façon unique et partagée, les règles de suppression/mise à jo
- `signalements_bugs.id_utilisateur`**SET NULL**
- `uploads.id_utilisateur`**SET NULL**
- `notifications.id_utilisateur`**CASCADE**
- `validations.id_utilisateur`**SET NULL**
- `validations.id_utilisateur`**SET NULL**
- `validations.valide_par`**SET NULL**
---
@@ -5,4 +5,4 @@ ALTER TABLE validations
ADD COLUMN IF NOT EXISTS commentaire TEXT;
ALTER TABLE validations
ADD COLUMN IF NOT EXISTS valide_par UUID REFERENCES utilisateurs(id);
ADD COLUMN IF NOT EXISTS valide_par UUID REFERENCES utilisateurs(id) ON DELETE SET NULL;
@@ -0,0 +1,13 @@
-- Alignement FK validations ↔ BDD.sql / FK_POLICIES (ON DELETE SET NULL).
-- À exécuter sur les bases créées avant la mise à jour du 2026-04-18.
-- Noms de contraintes par défaut PostgreSQL : {table}_{colonne}_fkey.
ALTER TABLE validations DROP CONSTRAINT IF EXISTS validations_id_utilisateur_fkey;
ALTER TABLE validations
ADD CONSTRAINT validations_id_utilisateur_fkey
FOREIGN KEY (id_utilisateur) REFERENCES utilisateurs(id) ON DELETE SET NULL;
ALTER TABLE validations DROP CONSTRAINT IF EXISTS validations_valide_par_fkey;
ALTER TABLE validations
ADD CONSTRAINT validations_valide_par_fkey
FOREIGN KEY (valide_par) REFERENCES utilisateurs(id) ON DELETE SET NULL;
+2 -1
View File
@@ -5,5 +5,6 @@ Scripts à appliquer **manuellement** sur les bases déjà créées (ex. `psql`
| Fichier | Objet |
|---------|--------|
| `2026-04-17-validations-commentaire-valide-par.sql` | Ajoute `commentaire` et `valide_par` sur `validations` (requis par lAPI / TypeORM). |
| `2026-04-18-validations-fk-on-delete-set-null.sql` | Passe les FK `id_utilisateur` et `valide_par` en **ON DELETE SET NULL** (comme `BDD.sql` à jour). |
Les nouvelles installs via `BDD.sql` à jour incluent déjà ces colonnes.
Les nouvelles installs via `BDD.sql` à jour incluent déjà ces colonnes et ces politiques de suppression.
+1 -1
View File
@@ -212,7 +212,7 @@ INSERT INTO validations (id, id_utilisateur, statut, commentaire, cree_le)
VALUES (
'v0000000-0000-0000-0000-000000000001',
'66666666-6666-6666-6666-666666666666',
'accepte',
'valide',
'Dossier AM vérifié par gestionnaire.',
NOW()
)