ADR 0005 : Archivage doux des tâches (soft delete) plutôt que suppression
- Statut : Accepté
- Décideurs : Marco (Commanditaire), Julien (Commanditaire), Seer (Développeur)
- Date : 8 juillet 2026
Contexte et Problème
Jusqu'ici, retirer une tâche d'un tableau de bord la supprimait définitivement (delete en base). Or les tâches portent un historique utile (journal de notes, qui a validé quoi et quand, dates de soumission/validation). Une suppression sèche :
- perd cet historique de manière irréversible ;
- ne laisse aucune trace pour un audit ou un retour en arrière ;
- peut casser des références (notes rattachées).
Facteurs de Décision
- Traçabilité : conserver l'historique des tâches terminées/retirées.
- Réversibilité : pouvoir consulter, voire restaurer, une tâche retirée.
- Simplicité de lecture : les vues actives ne doivent pas être polluées par les tâches archivées.
Options Envisagées
Option A : Suppression définitive (delete)
Conserver le comportement actuel.
- Avantage : aucune donnée résiduelle ; schéma inchangé.
- Inconvénient : perte irréversible de l'historique ; pas d'audit ; risque sur les données liées.
Option B : Archivage doux via colonne archived (Recommandée)
Ajouter task.archived boolean not null default false. « Retirer » = passer archived = true (archiveTask). Les listes actives filtrent archived = false ; un onglet « 📦 Archives » (lecture seule, Super Manager) liste archived = true.
- Avantage : historique préservé ; réversible ; vues actives propres ; audit possible.
- Inconvénient : les données restent en base (à purger un jour si volumétrie) ; une colonne de plus à filtrer partout.
Décision Retenue
L'Option B : archivage doux a été retenue.
Justification
La valeur de l'historique (journal, validations) l'emporte sur le coût d'une colonne booléenne. L'archivage rend l'opération réversible et auditable, tout en gardant les tableaux de bord lisibles grâce au filtre archived = false. La colonne est ajoutée à docs/features/sql/02_schema.sql pour qu'une reconstruction à froid reste cohérente.
Conséquences
Positives
- Historique conservé et consultable (onglet Archives).
- Opération réversible (il suffit de repasser
archived = false). - Tableaux de bord actifs inchangés (filtre systématique).
Négatives
- Les tâches archivées restent stockées : prévoir une politique de purge si la volumétrie grossit.
- Toute requête de liste doit penser à filtrer
archived(risque d'oubli). - Droits d'archivage à cadrer (super_manager, ou manager créateur/assigné).
