FEAT: Configuration du stockage par l'IHM — providers Fichier local + S3 (2 modes) #78

Closed
opened 2026-08-12 09:59:03 +02:00 by nonobis · 0 comments
Owner

Contexte

L'exigence produit : deux modes de stockage — « Fichier » (disque local) et « S3 » — tous deux configurables visuellement depuis l'IHM (pas d'env vars ni d'édition manuelle). L'enum StorageProvider (Local=0, S3=1) existe mais aucun provider n'est implémenté et rien n'est configurable en UI.

Référence spec

Phase 4 — stockage objets ; StorageProvider (Domain/Enums/StorageProvider.cs).

État actuel (vérifié)

  • StorageProvider.Local / StorageProvider.S3 : enum seule, inutilisée
  • Pas d'IStorageProvider, pas de LocalStorageProvider ni AlarikStorageProvider (ticket #7)
  • Config S3 par env vars (ALARIK_ENDPOINT, S3_ENDPOINT) : non exposées en UI
  • SettingsPage.razor : CRUD clé/valeur brut, aucune section stockage dédiée

À faire

  1. Paramètres globaux en base (catégorie storage) : storage.provider (Local|S3), storage.local.path, storage.s3.endpoint, storage.s3.bucket, storage.s3.accessKey, storage.s3.secretKey (secret, jamais retourné en clair), storage.s3.region, storage.s3.useSsl
  2. Implémenter IStorageProvider + LocalStorageProvider (upload atomique, batch delete) + AlarikStorageProvider (S3) — brancher sur les settings DB, pas env
  3. UI : section « Stockage » dédiée dans SettingsPage (composant StorageSettingsSection) — sélecteur de provider (Local/S3), champs selon le provider, bouton « Tester la connexion », badge de santé
  4. Les snapshots/enregistrements utilisent le provider actif (StorageProvider de l'entité → config globale)

Critères d'acceptation

  • Changer le provider dans l'UI → les nouveaux uploads vont au bon endroit, sans redémarrage
  • Champs S3 (endpoint/bucket/credentials) modifiables en UI, secret masqué
  • « Fichier » fonctionne sans aucune config externe (chemin par défaut)
  • Tests : unitaires providers + bUnit section stockage

Fichiers concernés

  • src/Heimdall.Infrastructure/Storage/ (nouveaux providers)
  • src/Heimdall.Infrastructure/Services/ (remplacement S3/upload)
  • src/Heimdall.Web/Components/Pages/SettingsPage.razor (+ composant section)
  • src/Heimdall.Application/Settings/ (seed des clés storage.*)
## Contexte L'exigence produit : **deux modes de stockage — « Fichier » (disque local) et « S3 » — tous deux configurables visuellement depuis l'IHM** (pas d'env vars ni d'édition manuelle). L'enum `StorageProvider` (Local=0, S3=1) existe mais aucun provider n'est implémenté et rien n'est configurable en UI. ## Référence spec Phase 4 — stockage objets ; `StorageProvider` (Domain/Enums/StorageProvider.cs). ## État actuel (vérifié) - `StorageProvider.Local` / `StorageProvider.S3` : enum seule, inutilisée - Pas d'`IStorageProvider`, pas de `LocalStorageProvider` ni `AlarikStorageProvider` (ticket #7) - Config S3 par env vars (`ALARIK_ENDPOINT`, `S3_ENDPOINT`) : **non exposées en UI** - `SettingsPage.razor` : CRUD clé/valeur brut, aucune section stockage dédiée ## À faire 1. Paramètres globaux en base (catégorie `storage`) : `storage.provider` (Local|S3), `storage.local.path`, `storage.s3.endpoint`, `storage.s3.bucket`, `storage.s3.accessKey`, `storage.s3.secretKey` (secret, jamais retourné en clair), `storage.s3.region`, `storage.s3.useSsl` 2. Implémenter `IStorageProvider` + `LocalStorageProvider` (upload atomique, batch delete) + `AlarikStorageProvider` (S3) — brancher sur les settings DB, pas env 3. UI : **section « Stockage » dédiée dans SettingsPage** (composant `StorageSettingsSection`) — sélecteur de provider (Local/S3), champs selon le provider, bouton « Tester la connexion », badge de santé 4. Les snapshots/enregistrements utilisent le provider actif (`StorageProvider` de l'entité → config globale) ## Critères d'acceptation - Changer le provider dans l'UI → les nouveaux uploads vont au bon endroit, sans redémarrage - Champs S3 (endpoint/bucket/credentials) modifiables en UI, secret masqué - « Fichier » fonctionne sans aucune config externe (chemin par défaut) - Tests : unitaires providers + bUnit section stockage ## Fichiers concernés - `src/Heimdall.Infrastructure/Storage/` (nouveaux providers) - `src/Heimdall.Infrastructure/Services/` (remplacement S3/upload) - `src/Heimdall.Web/Components/Pages/SettingsPage.razor` (+ composant section) - `src/Heimdall.Application/Settings/` (seed des clés storage.*)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#78
No description provided.