Checkpoint: Amélioration de la page Paramètres avec :

- Ajout de 3 nouveaux paramètres globaux : délai d'expiration QR codes (minutes), durée de validité tokens (heures), notifications actives (boolean)
- Création de la table historiqueParametres pour tracer toutes les modifications avec userId, userName, champModifié, ancienneValeur, nouvelleValeur et dateModification
- Ajout d'un bouton "Tester l'URL" avec indicateur visuel de statut (vert si accessible, rouge si erreur)
- Affichage de l'historique des modifications dans un tableau avec toutes les informations de traçabilité
- Mise à jour automatique de l'historique lors de chaque modification de paramètre
This commit is contained in:
Manus
2026-01-12 03:34:33 -05:00
parent 44c1cd65fa
commit 182b39e78a
12 changed files with 719 additions and 431 deletions

View File

@@ -1472,15 +1472,46 @@ export const appRouter = router({
return getParametres();
}),
update: adminProcedure
.input(z.object({
urlPublique: z.string().url().optional(),
delaiExpirationQR: z.number().int().positive().optional(),
dureeValiditeToken: z.number().int().positive().optional(),
notificationsActives: z.boolean().optional(),
}))
.mutation(async ({ input, ctx }) => {
const { updateParametres } = await import("./parametresDb");
await updateParametres(input, ctx.user.id, ctx.user.name || "Administrateur");
return { success: true };
}),
updateUrlPublique: adminProcedure
.input(z.object({
urlPublique: z.string().url(),
}))
.mutation(async ({ input }) => {
.mutation(async ({ input, ctx }) => {
const { updateUrlPublique } = await import("./parametresDb");
await updateUrlPublique(input.urlPublique);
await updateUrlPublique(input.urlPublique, ctx.user.id, ctx.user.name || "Administrateur");
return { success: true };
}),
testerUrl: adminProcedure
.input(z.object({
url: z.string(),
}))
.mutation(async ({ input }) => {
const { testerUrl } = await import("./parametresDb");
return testerUrl(input.url);
}),
getHistorique: adminProcedure
.input(z.object({
limit: z.number().int().positive().default(50),
}))
.query(async ({ input }) => {
const { getHistoriqueParametres } = await import("./parametresDb");
return getHistoriqueParametres(input.limit);
}),
}),
// ===== ANALYTICS =====