From 703d0e49611957c23ea85348ee6341f30a45d3dd Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Wed, 19 Nov 2025 09:30:51 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20du=20champ=20"Formateur"?= =?UTF-8?q?=20dans=20les=20s=C3=A9quences=20de=20formation=20:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ Base de données : colonne "formateur" ajoutée à la table sequences (VARCHAR 255, nullable) ✅ Backend : procédures tRPC mises à jour - sequences.create : champ formateur ajouté (optionnel) - sequences.update : champ formateur ajouté (optionnel) ✅ Frontend : formulaires mis à jour - Formulaire de création : champ "Formateur" ajouté avec placeholder - Formulaire de modification : champ "Formateur" ajouté avec placeholder - Le champ est non obligatoire comme demandé Le champ formateur permet maintenant de spécifier le nom du formateur pour chaque séquence de formation lors de la création ou de la modification. --- .manus/db/db-query-1763562465933.json | 9 + client/src/pages/AdminSequences.tsx | 26 + drizzle/0016_chunky_landau.sql | 1 + drizzle/meta/0016_snapshot.json | 779 ++++++++++++++++++++++++++ drizzle/meta/_journal.json | 7 + drizzle/schema.ts | 2 + server/routers.ts | 2 + todo.md | 8 + 8 files changed, 834 insertions(+) create mode 100644 .manus/db/db-query-1763562465933.json create mode 100644 drizzle/0016_chunky_landau.sql create mode 100644 drizzle/meta/0016_snapshot.json diff --git a/.manus/db/db-query-1763562465933.json b/.manus/db/db-query-1763562465933.json new file mode 100644 index 0000000..5b3608f --- /dev/null +++ b/.manus/db/db-query-1763562465933.json @@ -0,0 +1,9 @@ +{ + "query": "ALTER TABLE sequences ADD COLUMN formateur VARCHAR(255) NULL AFTER publicCible;", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE sequences ADD COLUMN formateur VARCHAR(255) NULL AFTER publicCible;", + "rows": [], + "messages": [], + "stdout": "", + "stderr": "", + "execution_time_ms": 495 +} \ No newline at end of file diff --git a/client/src/pages/AdminSequences.tsx b/client/src/pages/AdminSequences.tsx index 4809077..f66000d 100644 --- a/client/src/pages/AdminSequences.tsx +++ b/client/src/pages/AdminSequences.tsx @@ -35,6 +35,7 @@ export default function AdminSequences() { nom: "", lieu: "", publicCible: "autre" as "directeur" | "chef_service" | "tous" | "autre", + formateur: "", capaciteMax: "12", dateBlocage: "", statut: "ouverte" as "ouverte" | "bloquee" | "terminee", @@ -88,6 +89,7 @@ export default function AdminSequences() { nom: "", lieu: "", publicCible: "autre", + formateur: "", capaciteMax: "12", dateBlocage: "", statut: "ouverte", @@ -139,6 +141,7 @@ export default function AdminSequences() { nom: sequence.nom || "", lieu: sequence.lieu || "", publicCible: sequence.publicCible || "autre", + formateur: sequence.formateur || "", capaciteMax: sequence.capaciteMax?.toString() || "12", dateBlocage: safeFormatDate(sequence.dateBlocage), statut: sequence.statut || "ouverte", @@ -164,6 +167,7 @@ export default function AdminSequences() { nom: formData.nom, lieu: formData.lieu, publicCible: formData.publicCible, + formateur: formData.formateur || undefined, capaciteMax: parseInt(formData.capaciteMax), dateBlocage: formData.dateBlocage, statut: formData.statut, @@ -393,6 +397,18 @@ export default function AdminSequences() { + + +
+
+ + setFormData({ ...formData, formateur: e.target.value })} + placeholder="Nom du formateur (optionnel)" + /> +
@@ -757,6 +773,16 @@ export default function AdminSequences() {
+
+ + setFormData({ ...formData, formateur: e.target.value })} + placeholder="Nom du formateur (optionnel)" + /> +
+