Checkpoint: Ajout de la possibilité de joindre un fichier dans l'envoi des rappels par email

Modifications apportées :
- Ajout des colonnes nomFichier, urlFichier, s3Key, typeFichier, tailleFichier dans la table rappels
- Création du composant FileUpload pour l'upload de fichiers vers S3 (max 10 Mo)
- Création de l'endpoint API /api/upload-file pour gérer l'upload
- Intégration du composant FileUpload dans les formulaires de création et modification de rappels
- Mise à jour des procédures tRPC create et update pour gérer les informations de fichier
- Modification des fonctions sendRappelJ7Email et sendRappelJ1Email pour inclure les pièces jointes
- Mise à jour du scheduler de rappels pour passer les informations de fichier lors de l'envoi
- Les fichiers sont téléchargés depuis S3 et convertis en base64 pour être attachés aux emails
This commit is contained in:
Manus
2026-01-08 06:00:27 -05:00
parent 6e25c00865
commit 5308b7921e
16 changed files with 2613 additions and 4 deletions

View File

@@ -0,0 +1,90 @@
{
"query": "DESCRIBE rappels;",
"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 DESCRIBE rappels;",
"rows": [
{
"Field": "id",
"Type": "int(11)",
"Null": "NO",
"Key": "PRI",
"Default": "NULL",
"Extra": "auto_increment"
},
{
"Field": "nom",
"Type": "varchar(255)",
"Null": "NO",
"Key": "",
"Default": "NULL",
"Extra": ""
},
{
"Field": "templateType",
"Type": "varchar(50)",
"Null": "NO",
"Key": "",
"Default": "NULL",
"Extra": ""
},
{
"Field": "timing",
"Type": "enum('pre_formation','post_formation')",
"Null": "NO",
"Key": "",
"Default": "pre_formation",
"Extra": ""
},
{
"Field": "joursAvant",
"Type": "int(11)",
"Null": "NO",
"Key": "",
"Default": "NULL",
"Extra": ""
},
{
"Field": "heureEnvoi",
"Type": "varchar(5)",
"Null": "NO",
"Key": "",
"Default": "09:00",
"Extra": ""
},
{
"Field": "actif",
"Type": "tinyint(1)",
"Null": "NO",
"Key": "",
"Default": "1",
"Extra": ""
},
{
"Field": "derniereExecution",
"Type": "timestamp",
"Null": "YES",
"Key": "",
"Default": "NULL",
"Extra": ""
},
{
"Field": "createdAt",
"Type": "timestamp",
"Null": "NO",
"Key": "",
"Default": "CURRENT_TIMESTAMP",
"Extra": ""
},
{
"Field": "updatedAt",
"Type": "timestamp",
"Null": "NO",
"Key": "",
"Default": "CURRENT_TIMESTAMP",
"Extra": "DEFAULT_GENERATED on update CURRENT_TIMESTAMP"
}
],
"messages": [],
"stdout": "Field\tType\tNull\tKey\tDefault\tExtra\nid\tint(11)\tNO\tPRI\tNULL\tauto_increment\nnom\tvarchar(255)\tNO\t\tNULL\t\ntemplateType\tvarchar(50)\tNO\t\tNULL\t\ntiming\tenum('pre_formation','post_formation')\tNO\t\tpre_formation\t\njoursAvant\tint(11)\tNO\t\tNULL\t\nheureEnvoi\tvarchar(5)\tNO\t\t09:00\t\nactif\ttinyint(1)\tNO\t\t1\t\nderniereExecution\ttimestamp\tYES\t\tNULL\t\ncreatedAt\ttimestamp\tNO\t\tCURRENT_TIMESTAMP\t\nupdatedAt\ttimestamp\tNO\t\tCURRENT_TIMESTAMP\tDEFAULT_GENERATED on update CURRENT_TIMESTAMP\n",
"stderr": "",
"execution_time_ms": 48
}

View File

@@ -0,0 +1,9 @@
{
"query": "ALTER TABLE rappels \nADD COLUMN IF NOT EXISTS nomFichier VARCHAR(255) NULL,\nADD COLUMN IF NOT EXISTS urlFichier TEXT NULL,\nADD COLUMN IF NOT EXISTS s3Key VARCHAR(500) NULL,\nADD COLUMN IF NOT EXISTS typeFichier VARCHAR(100) NULL,\nADD COLUMN IF NOT EXISTS tailleFichier INT NULL;",
"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 rappels \nADD COLUMN IF NOT EXISTS nomFichier VARCHAR(255) NULL,\nADD COLUMN IF NOT EXISTS urlFichier TEXT NULL,\nADD COLUMN IF NOT EXISTS s3Key VARCHAR(500) NULL,\nADD COLUMN IF NOT EXISTS typeFichier VARCHAR(100) NULL,\nADD COLUMN IF NOT EXISTS tailleFichier INT NULL;",
"rows": [],
"messages": [],
"stdout": "",
"stderr": "",
"execution_time_ms": 1458
}

View File

@@ -0,0 +1,8 @@
{
"query": "ALTER TABLE rappels \nADD COLUMN nomFichier VARCHAR(255) NULL AFTER derniereExecution,\nADD COLUMN urlFichier TEXT NULL AFTER nomFichier,\nADD COLUMN s3Key VARCHAR(500) NULL AFTER urlFichier,\nADD COLUMN typeFichier VARCHAR(100) NULL AFTER s3Key,\nADD COLUMN tailleFichier INT NULL AFTER typeFichier;",
"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 rappels \nADD COLUMN nomFichier VARCHAR(255) NULL AFTER derniereExecution,\nADD COLUMN urlFichier TEXT NULL AFTER nomFichier,\nADD COLUMN s3Key VARCHAR(500) NULL AFTER urlFichier,\nADD COLUMN typeFichier VARCHAR(100) NULL AFTER s3Key,\nADD COLUMN tailleFichier INT NULL AFTER typeFichier;",
"returncode": 1,
"logs": [
"ERROR 1054 (42S22) at line 1: Unknown column 'nomfichier' in 'rappels'"
]
}