43 lines
3.2 KiB
Markdown
43 lines
3.2 KiB
Markdown
# GoodDrive — Correctifs aperçus, sessions et quotas
|
|
|
|
## Aperçus
|
|
|
|
- Les appels `/api` passent par le proxy Vite, du port frontend `1028` vers le service `backend:1029` ; l'URL signée pour l'aperçu reste sur le **même domaine**.
|
|
- L'API vérifie les permissions lors de la création du lien **et** de chaque demande de lecture, y compris les plages `Range` des vidéos.
|
|
- PDF et texte peuvent être affichés dans une iframe **de même origine** ; les autres pages restent protégées des intégrations externes.
|
|
- Les liens d'aperçu expirent après deux heures et ne dispensent jamais de la vérification des permissions. Une URL déjà ouverte pourra expirer pendant une vidéo très longue : rouvrir l'aperçu pour régénérer son lien.
|
|
- Une vérification HEAD signale un aperçu inaccessible au lieu d'afficher une page vide. Formats visés : images, PDF, audio, vidéo et textes courants ; les codecs vidéo dépendent du navigateur.
|
|
|
|
## Connexion
|
|
|
|
- `api` et renouvellement JWT utilisent la même origine `/api`.
|
|
- Le renouvellement est partagé entre requêtes concurrentes (une seule requête en cours).
|
|
- On déconnecte uniquement lorsque le serveur rejette **explicitement** le refresh token. Un problème réseau ou un backend indisponible conserve la session et permet de réessayer.
|
|
|
|
## Navigation et gestion des espaces
|
|
|
|
- Suppression de la rubrique « Espaces & invitations » de la navigation.
|
|
- Clic droit sur l'espace (bureau) ou `…` (mobile) : paramètres, accès et invitations via fenêtres dédiées.
|
|
- Le bouton `+` à côté d'« Espaces partagés » reste disponible pour créer un espace enfant.
|
|
|
|
## Quotas imbriqués
|
|
|
|
- Le calcul distingue **occupation réelle** (fichiers actifs, corbeille et uploads réservés) et **quotas attribués** aux sous-espaces.
|
|
- Chaque espace enfant avec quota réserve cette capacité au sein du quota de son parent ; les réservations ne sont jamais additionnées deux fois.
|
|
- Une limite est refusée si elle dépasse la capacité non attribuée restante du parent, ou si elle devient inférieure aux engagements des descendants.
|
|
- Un espace sans quota propre affiche son occupation et la capacité restante héritée de ses ancêtres.
|
|
- Les créations d'espaces, modifications de quotas et uploads utilisent des verrous transactionnels sur les ancêtres ; les paramètres de quota restent stockés dans les champs déjà présents, donc **aucune migration**.
|
|
- Les invitations non utilisées ne constituent pas des espaces physiques réservés. Un quota est revérifié lors de l'acceptation, au cas où la capacité disponible aurait changé.
|
|
|
|
## Déploiement
|
|
|
|
Remplacer les fichiers de l'archive puis reconstruire :
|
|
|
|
```bash
|
|
docker compose up -d --build frontend backend
|
|
```
|
|
|
|
Après redémarrage, tester en conditions réelles : un aperçu PDF, une image, une vidéo MP4 compatible navigateur, le rafraîchissement du jeton après 30 minutes, et un parent de 10 Go avec deux sous-espaces de 7 et 4 Go (le second doit être refusé).
|
|
|
|
Tests locaux effectués : analyse syntaxique JS/JSX, compilation syntaxique Python, tests Node frontend. Les tests Django avec base de données et le build Vite complet requièrent les dépendances non présentes dans cet environnement.
|