diff --git a/docs/plan.md b/docs/plan.md index 190d593..cdd9025 100644 --- a/docs/plan.md +++ b/docs/plan.md @@ -150,6 +150,38 @@ --- +## Phase 4c — Notes v2 : états de tuile + médias ✅ + +**Objectif** : refonte de l'interface Notes avec tuiles à 3 états, support vidéo, transcodage audio universel. + +### Backend +- [x] `ffmpeg` dans le Dockerfile backend — transcodage audio et vidéo +- [x] `save_audio()` : transcode toute entrée (webm/ogg/m4a) → AAC `.m4a` — lecture Safari iOS garantie +- [x] `save_video()` : stockage mp4/quicktime direct, webm → H.264/mp4 via ffmpeg +- [x] `ALLOWED_VIDEO_TYPES` : mp4, webm, quicktime, m4v, 3gpp +- [x] `GET /api/notes` : filtre `has_video` ajouté +- [x] `POST /api/notes/{id}/attachments` : gère `file_type = "video"` +- [x] `GET /api/admin/stats` : section `media.video` (count + size_bytes) +- [x] Schémas Pydantic notes : `gps_lat/gps_lon` passés en `float | None` (fix `Decimal` sérialisé en string → TypeError JS) + +### Frontend +- [x] NoteCard à 3 états : **semi** (défaut, 3 lignes + actions) / **expanded** (markdown complet + médias) / **collapsed** (titre + date) +- [x] Bouton toggle `fa-chevron-down / fa-minus / fa-chevron-right` dans le coin haut-droit de chaque tuile +- [x] Renderer pseudo-markdown : `# ## ###`, `- * 1.` listes, `> citations`, `---`, `` **gras** *italique* `code` ``, ` ``` ` blocs +- [x] Icônes méta sur la tuile : `fa-image` / `fa-microphone` / `fa-video` / `fa-location-dot` +- [x] Bouton vidéo `fa-video` dans les actions de chaque note +- [x] Lecteur `