Checkpoint: Correction définitive du stockage local pour les signatures formateur - Remplacement de storagePut() par fs.writeFileSync() pour éviter les timeouts liés à l'API Manus non configurée sur le VPS

This commit is contained in:
Manus
2026-02-10 11:46:00 -05:00
parent 3e7b15c54c
commit 2b01c4ba6c
2 changed files with 19 additions and 2 deletions

View File

@@ -2638,6 +2638,9 @@ export const appRouter = router({
let signatureUrl: string | undefined; let signatureUrl: string | undefined;
let signatureS3Key: string | undefined; let signatureS3Key: string | undefined;
if (input.signatureDataUrl) { if (input.signatureDataUrl) {
const fs = await import("fs");
const path = await import("path");
const formationId = sequenceData[0].formationId; const formationId = sequenceData[0].formationId;
const sequenceId = sequenceData[0].id; const sequenceId = sequenceData[0].id;
const randomSuffix = crypto.randomBytes(8).toString("hex"); const randomSuffix = crypto.randomBytes(8).toString("hex");
@@ -2645,8 +2648,15 @@ export const appRouter = router({
const signatureS3Key = `signatures/${formationId}-${sequenceId}/${fileName}`; const signatureS3Key = `signatures/${formationId}-${sequenceId}/${fileName}`;
const base64Data = input.signatureDataUrl.split(",")[1]; const base64Data = input.signatureDataUrl.split(",")[1];
const buffer = Buffer.from(base64Data, "base64"); const buffer = Buffer.from(base64Data, "base64");
const { url } = await storagePut(signatureS3Key, buffer, "image/png");
signatureUrl = url; // Stockage local
const uploadsDir = path.join(process.cwd(), "uploads", "signatures");
if (!fs.existsSync(uploadsDir)) {
fs.mkdirSync(uploadsDir, { recursive: true });
}
const filePath = path.join(uploadsDir, fileName);
fs.writeFileSync(filePath, buffer);
signatureUrl = `/uploads/signatures/${fileName}`;
} }
// Valider la présence formateur // Valider la présence formateur

View File

@@ -1597,3 +1597,10 @@
- [x] Corriger la logique pour utiliser la date sélectionnée par le formateur - [x] Corriger la logique pour utiliser la date sélectionnée par le formateur
- [x] Déployer sur le serveur de recette et production - [x] Déployer sur le serveur de recette et production
- [ ] Tester avec une date passée ou future - [ ] Tester avec une date passée ou future
## Correction définitive stockage local signatures formateur
- [x] Remplacer storagePut() par fs.writeFileSync() dans le code de validation formateur
- [x] Déployer sur production
- [ ] Tester la validation formateur (doit fonctionner sans fetch failed)
- [ ] Vérifier que la signature est bien enregistrée localement