Repository Public
1# SP Drive — état d'avancement23Dernière mise à jour : 2026-11-11. « Vérifié » signifie : commande exécutée, résultat observé. Production :4https://drive.spboucher.ai sur **m5ma** (PM2, déployé par `mld`, dépôt `sp-drive.git` sur spbgit).56## Vérifications exécutées78| Quoi | Commande | Résultat du 2026-11-11 |9|---|---|---|10| Types | `pnpm typecheck` | aucun message |11| Intégration (PostgreSQL réel, ClamAV réel, LibreOffice réel sur le portable) | `pnpm test` | 63 tests, 63 réussis |12| E2E bureau + mobile (Chromium, passkey virtuelle) + pages publiques sur WebKit iPhone | `pnpm e2e` | 122 réussis, 6 ignorés (captures d'écran) |13| Production | `scripts/prod-smoke.mts` sur drive.spboucher.ai | 21 contrôles réussis, 1 échec connu (conversion bureautique, voir « Bloqué ») |14| Sauvegarde + restauration sur le nœud | `scripts/backup.sh` puis `scripts/restore-test.sh` | `RESTORE TEST OK` (6 objets déchiffrés et re-hachés) |1516## Terminé et vérifié1718- **Comptes** : invitation à usage unique, passkeys (plusieurs, renommage, retrait sauf la dernière), sessions par19 appareil avec révocation, rotation quotidienne du jeton, réauthentification pour les opérations sensibles, codes de20 récupération, TOTP facultatif (exigé avec un code de récupération), administration (utilisateurs, quotas,21 invitations, état du système), journal d'activité.22- **Explorateur** : dossiers imbriqués, création, renommage, déplacement, copie, corbeille, restauration, suppression23 définitive ; téléversement multiple, par dossier, résumable, avec pause, reprise, annulation et SHA-256 ;24 collisions explicites (échec, renommer, nouvelle version) ; téléchargement direct avec reprise et ZIP ; versions ;25 quotas ; tags ; favoris ; récents ; recherche avec filtres ; doublons par compte ; grille et liste ; clavier ;26 glisser-déposer.27- **Aperçus** : PDF (pages, zoom, recherche), images, HEIC, SVG inerte, vidéo, audio, texte, Markdown assaini, CSV,28 JSON, classeurs XLSX, inventaire ZIP/TAR ; message clair pour le reste et pour les échecs.29- **Liens de partage** : fichier ou dossier, lecture seule ou téléchargement, mot de passe, expiration, plafonds de30 consultations et de téléchargements, usage unique, rotation, révocation immédiate, journal d'accès.31- **Portails de dépôt** : création illimitée, formulaire configurable, consentement, limites (taille, nombre, volume,32 fréquence, types), mot de passe, expiration, pause, rotation, révocation, suppression ; quarantaine → signature →33 antivirus → placement atomique ; reçu avec numéro de référence ; journal par dépôt ; notification au propriétaire.34- **Stockage** : objets et aperçus chiffrés (AES-256-GCM par blocs, clé par objet), lecture par plage, détection35 d'altération, ramasse-miettes.36- **Interface** : français et anglais, clair et sombre, bureau et téléphone, palette de commandes (⌘K), PWA37 installable (manifeste, icônes, service worker qui ne met en cache ni l'API ni les documents).38- **Exploitation** : manifeste `mld`, préparation du nœud, antivirus et mises à jour de signatures, sauvegarde39 nocturne chiffrée, test de restauration, CLI (invitation, réinitialisation d'accès, suppression de compte, rotation40 de clé, vérification des objets, migrations avec retour arrière).4142## Bloqué4344- **Aperçu des documents Word / PowerPoint / OpenDocument en production.** Sur m5ma, macOS suspend LibreOffice avant45 son démarrage tant que son premier lancement n'a pas été approuvé à l'écran (le nœud n'a pas d'opérateur devant46 lui). L'application le détecte en moins de 20 s et affiche « convertisseur indisponible » ; les fichiers restent47 téléchargeables. Pour débloquer : ouvrir une fois LibreOffice sur m5ma par partage d'écran et accepter48 l'avertissement, puis `pm2 restart sp-drive-worker`. La chaîne elle-même est vérifiée sur le portable (tests49 d'intégration et E2E).5051## Construit, non vérifié sur l'environnement cible5253- **Vrai Touch ID / Face ID** (Safari macOS et iOS) : tous les tests utilisent l'authentificateur virtuel de Chromium.54- **iPhone réel** : envoi depuis Photos/Fichiers, prise de photo, feuille de partage native, installation sur l'écran55 d'accueil ; les pages publiques passent sur WebKit émulé, pas sur un appareil.56- Appui long tactile, dépôt d'un dossier entier depuis le bureau, affichage d'un fichier infecté dans l'explorateur,57 comportement avec plusieurs milliers d'éléments, expiration de l'accès à un lien après une heure.58- **Tests de charge** : aucun.59- **Redémarrage du nœud** : `pm2 save` fait et `mld heal` couvre l'app, mais aucune coupure n'a été simulée.6061## Non fait en V1 (décidé ou reporté)6263- Notifications et accusés de réception **par courriel** (aucun service d'envoi configuré pour SP Drive) : les64 notifications sont dans l'application, le reçu du déposant est affiché à l'écran.65- **Copie hors nœud des sauvegardes** : `SPD_BACKUP_REMOTE` existe, mais un processus PM2 ne peut pas joindre le LAN66 sous macOS ; la destination et le mécanisme sont à décider. Aujourd'hui la sauvegarde est sur le même SSD que les67 données : elle protège d'une erreur logique, pas de la perte du disque.68- Dépôt par lien de partage (le dépôt passe par un portail), partage entre comptes internes, pilote S3, transcodage69 vidéo, synchronisation Finder / application iOS.70- Indicateur de position « 3 / 12 » dans la visionneuse ; panneau de téléversement visible hors de l'explorateur ;71 messages d'échec d'aperçu en anglais brut sous un titre traduit.72- Journaux d'accès de la passerelle : Caddy journalise les URL, donc les jetons des liens publics y figurent.73- CI : les suites se lancent à la main (`pnpm typecheck && pnpm test && pnpm e2e`), aucun pipeline automatique.74- Recherche plein texte, OCR, recherche sémantique, Q&A : après stabilisation de la V1.75