diff --git a/docs/superpowers/specs/2026-06-03-explorateur-partage-windows-design.md b/docs/superpowers/specs/2026-06-03-explorateur-partage-windows-design.md new file mode 100644 index 0000000..6854197 --- /dev/null +++ b/docs/superpowers/specs/2026-06-03-explorateur-partage-windows-design.md @@ -0,0 +1,186 @@ +# Explorateur de partage réseau Windows + viewer — Design + +Date : 2026-06-03 +Statut : design validé (brainstorming), à transformer en plan d'implémentation. + +## 1. Objectif + +Donner accès, **depuis Lesstime**, à un partage de fichiers Windows (SMB), avec : + +- un **explorateur de fichiers façon Google Drive / SharePoint** qui parcourt le partage **en direct** (live, pas d'index) ; +- un **viewer propre** pour ouvrir les documents (image, PDF, texte) sans quitter l'app ; +- une **configuration en admin** (serveur, partage, identifiants) avec un **bouton « Tester la connexion »** et un **interrupteur d'activation**, sur le même modèle que les intégrations existantes (Zimbra, Gitea, BookStack) ; +- une **visibilité conditionnelle** : si l'option SMB est **désactivée** dans l'admin, l'entrée « Documents » et la page **n'apparaissent pas** pour les utilisateurs. + +### Hors périmètre (POC) + +- Pas d'index en base, pas de recherche plein texte, pas d'extraction de contenu (pas de Tika). +- Pas d'OCR. +- Pas d'écriture sur le partage (lecture seule). +- Pas de cron / synchronisation. Tout est lu **à la volée** à chaque navigation. + +## 2. Décisions d'architecture + +| Sujet | Décision | +|-------|----------| +| Accès au partage | **`icewind/smb`** (protocole SMB en PHP), **pas de montage CIFS**. La connexion est configurée dans l'app. | +| Configuration | Entité `ShareConfiguration` (1 ligne) saisie en admin, mot de passe chiffré au repos — calquée sur `ZimbraConfiguration`. | +| Abstraction | Interface `FileSource` (lister / lire), implémentation `SmbFileSource`. Permet de remplacer la source plus tard sans toucher au front ni aux endpoints. | +| API navigation | 2 endpoints live : `browse` (lister un dossier) et `download` (streamer un fichier). | +| Front | Explorateur **maison léger** (fil d'Ariane + tableau), cohérent avec `@malio/layer-ui`. Aucune lib de file-manager externe (elFinder/vue-finder écartés : vieux ou hors design system). | +| Rendu PDF | **PDF.js via `vue-pdf-embed`** dans le viewer (meilleur rendu qu'un `