# Product Requirements Document (PRD) ## Notebooks & Labels Contextuels avec IA **Project:** Keep (Memento Phase 1 MVP AI) **Date:** 2026-01-11 **Author:** Sally (UX Designer) + Ramez (Product Owner) **Status:** Draft - Ready for Architecture **Priority:** High - Core Feature Reorganization --- ## πŸ“‹ Executive Summary ### Vision Transformer l'organisation de Keep d'un systΓ¨me de tags plat en une structure de **Notebooks avec Labels Contextuels**, oΓΉ chaque notebook a sa propre taxonomie de labels, permettant une organisation plus naturelle et contextuelle. ### Objectifs Principaux 1. βœ… Introduire les **Notebooks** comme organisation principale 2. βœ… Rendre les **Labels contextuels** Γ  chaque notebook 3. βœ… CrΓ©er une **Inbox** ("Notes gΓ©nΓ©rales") pour les notes non organisΓ©es 4. βœ… IntΓ©grer l'**IA** intelligemment dans cette nouvelle structure 5. βœ… Permettre une **migration douce** depuis le systΓ¨me actuel --- ## 🎯 User Stories ### Primary Users - **Ramez (Power User):** Utilise Keep quotidiennement pour organiser voyage, travail, vie perso - **Professionnel:** GΓ¨re des projets avec des contextes diffΓ©rents - **Voyageur:** Organise ses prΓ©paratifs de voyage avec des notes spΓ©cifiques ### User Journey Exemple #### ScΓ©nario 1: CrΓ©ation de note dans Notebook ``` 1. Ramez ouvre Keep, navigue vers Notebook "Voyage" 2. Il voit les labels contextuels: #hΓ΄tels, #vols, #restos 3. Il clique "Nouvelle note" 4. La note est automatiquement assignΓ©e au Notebook "Voyage" 5. Il peut tagger avec #hΓ΄tels (disponible car dans le bon contexte) ``` #### ScΓ©nario 2: Note rapide dans Inbox ``` 1. Ramez a une idΓ©e rapide, ouvre Keep (page d'accueil) 2. Il tape son idΓ©e et sauve 3. La note va dans "Notes gΓ©nΓ©rales" (Inbox) 4. Plus tard, il la dΓ©place vers "Notebook Perso" 5. Les labels de "Perso" deviennent disponibles ``` #### ScΓ©nario 3: Organisation IA-assistΓ©e ``` 1. Ramez a 15 notes dans "Notes gΓ©nΓ©rales" 2. Il clique "Organiser avec l'IA" 3. L'IA analyse les notes et propose: - "3 notes pour Notebook Voyage" - "5 notes pour Notebook Travail" - "7 notes pour Notebook Perso" 4. Ramez valide les suggestions 5. Les notes sont dΓ©placΓ©es automatiquement ``` --- ## πŸ—οΈ Structure de l'Organisation ### HiΓ©rarchie ``` KEEP β”œβ”€ πŸ“₯ Notes gΓ©nΓ©rales (Inbox) β”‚ └─ Notes sans notebook assignΓ© β”‚ └─ PAS de labels (zone temporaire) β”‚ β”œβ”€ πŸ“š Notebooks (ordonnΓ©s manuellement) β”‚ β”œβ”€ ✈️ Voyage β”‚ β”‚ β”œβ”€ Labels: #hΓ΄tels, #vols, #restos, #Γ _visiter β”‚ β”‚ └─ Notes assignΓ©es Γ  "Voyage" β”‚ β”‚ β”‚ β”œβ”€ πŸ’Ό Travail β”‚ β”‚ β”œβ”€ Labels: #rΓ©unions, #projets, #urgent, #Γ _faire β”‚ β”‚ └─ Notes assignΓ©es Γ  "Travail" β”‚ β”‚ β”‚ └─ πŸ“– Perso β”‚ β”œβ”€ Labels: #idΓ©es, #rΓͺves, #objectifs, #rΓ©flexions β”‚ └─ Notes assignΓ©es Γ  "Perso" β”‚ └─ [+] Nouveau Notebook ``` ### RΓ¨gles MΓ©tier #### R1: Appartenance des Notes - **Une note appartient Γ  UN seul notebook** (ou aucune) - Les notes dans "Notes gΓ©nΓ©rales" n'appartiennent Γ  aucun notebook - Une note ne peut Γͺtre dans plusieurs notebooks simultanΓ©ment #### R2: Labels Contextuels - Chaque notebook a ses propres labels (100% isolΓ©s) - Les labels sont créés/supprimΓ©s au niveau notebook - Les notes dans "Notes gΓ©nΓ©rales" n'ont pas accΓ¨s aux labels #### R3: Ordre des Notebooks - Les notebooks sont ordonnΓ©s manuellement (drag & drop) - L'ordre est personnalisΓ© par utilisateur - Drag & drop dans la sidebar pour rΓ©organiser #### R4: Vue "Notes gΓ©nΓ©rales" - Affiche SEULEMENT les notes sans notebook - PAS de vue "Toutes les notes" (tous notebooks confondus) - C'est une zone temporaire d'organisation --- ## 🎨 UX/UI Specifications ### 1. Navigation - Sidebar ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ KEEP LOGO β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ πŸ” Search β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ πŸ“š NOTEBOOKS β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ πŸ“₯ Notes gΓ©nΓ©rales (12) β”‚ β”‚ ← Compteur de notes β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ ✈️ Voyage (8) β”‚ β”‚ ← Notebook actif = highlight β”‚ β”‚ β”Œβ”€ 🏷️ Labels contextuels β”‚ β”‚ β”‚ β”‚ β”‚ β€’ #hΓ΄tels (3) β”‚ β”‚ ← Labels seulement si actif β”‚ β”‚ β”‚ β€’ #vols (2) β”‚ β”‚ β”‚ β”‚ β”‚ β€’ #restos (3) β”‚ β”‚ β”‚ β”‚ β”‚ [+ Nouveau label] β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ πŸ’Ό Travail (15) β”‚ β”‚ ← Handles pour drag & drop β”‚ β”‚ β•‘ β•‘ β”‚ β”‚ β”‚ β”‚ πŸ“– Perso (23) β”‚ β”‚ β”‚ β”‚ β•‘ β•‘ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ [+ Nouveau Notebook] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Comportements:** - **Click sur notebook** β†’ Navigue vers ce notebook - **Drag & drop des notebooks** β†’ RΓ©organise l'ordre - **Hover sur notebook** β†’ Affiche les labels contextuels - **[+ Nouveau label]** β†’ CrΓ©e un label dans ce notebook - **Compteurs** β†’ Montre le nombre de notes ### 2. CrΓ©ation de Note #### Cas A: Depuis un Notebook ``` User dans "Voyage" β†’ [Nouvelle note] β”œβ”€ Note créée avec notebookId = "voyage" β”œβ”€ Peut utiliser les labels de "Voyage" └─ UI: Badge "Voyage" visible sur la note ``` #### Cas B: Depuis Notes GΓ©nΓ©rales ``` User sur page d'accueil β†’ [Nouvelle note] β”œβ”€ Note créée avec notebookId = null β”œβ”€ PAS de labels disponibles └─ UI: Badge "Γ€ trier" visible ``` #### Cas C: CrΓ©ation dans un autre notebook ``` User dans "Voyage", veut crΓ©er pour "Travail" β”œβ”€ DOIT naviguer vers "Travail" d'abord β”œβ”€ OU utilise le raccourci clavier (ex: Ctrl+N β†’ chooser) └─ PAS de modal Γ  chaque crΓ©ation ``` ### 3. DΓ©placement de Notes (Option C: A + B) #### MΓ©thode A: Drag & Drop ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ“ Note Γ  dΓ©placer β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Grip handle β”‚ Note content... β”‚ β”‚ ← Drag depuis ici β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ ↓ β”‚ β”‚ Drop vers sidebar β†’ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ ✈️ Voyage [Drop zone] β”‚ β”‚ β”‚ β”‚ πŸ’Ό Travail [Drop zone] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### MΓ©thode B: Menu Contextuel ``` Sur une note β†’ Click droit β†’ Menu: β”œβ”€ πŸ“‹ Copier β”œβ”€ ✏️ Modifier β”œβ”€ πŸ“š DΓ©placer vers... β”‚ β”œβ”€ πŸ“₯ Notes gΓ©nΓ©rales β”‚ β”œβ”€ ✈️ Voyage β”‚ β”œβ”€ πŸ’Ό Travail β”‚ └─ πŸ“– Perso β”œβ”€ 🏷️ Ajouter un label β”œβ”€ πŸ“Œ Γ‰pingler └─ πŸ—‘οΈ Supprimer ``` **Validation:** - βœ… Drag & drop vers notebook dans sidebar - βœ… Menu contextuel "DΓ©placer vers..." - βœ… Les deux mΓ©thodes disponibles ### 4. Labels Contextuels #### CrΓ©ation de Label ``` Dans Notebook "Voyage": β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 🏷️ Labels β”‚ β”‚ β€’ #hΓ΄tels β€’ #vols β€’ #restos β”‚ β”‚ [+ Nouveau label] β”‚ ← Click β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Modal: β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Nom du label: β”‚ β”‚ β”‚ β”‚ [___________] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Couleur: β—‹ 🟑 β—‹ πŸ”΄ β—‹ πŸ”΅ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [Annuler] [CrΓ©er] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### Assignation de Label Γ  Note ``` Note dans "Voyage" β†’ Click "Ajouter label" β”œβ”€ Seuls les labels de "Voyage" sont proposΓ©s β”œβ”€ Dropdown avec checkboxes └─ Multi-label possible sur une note Exemple: πŸ“ Note: "HΓ΄tel Tokyo Shibuya" β”œβ”€ Notebook: ✈️ Voyage └─ Labels: #hΓ΄tels, #rΓ©servations ``` #### Suppression de Label ``` Options: β”œβ”€ Supprimer le label (du notebook) β”‚ └─ Warning: "Ce label sera retirΓ© de X notes. Continuer?" └─ Retirer des notes seulement └─ Label existe toujours, mais plus utilisΓ© ``` ### 5. Gestion des Notebooks #### CrΓ©ation de Notebook ``` Click [+ Nouveau Notebook] β”œβ”€ Modal de crΓ©ation β”‚ β”œβ”€ Nom: "Voyage" β”‚ β”œβ”€ IcΓ΄ne: [SΓ©lecteur d'emoji] β”‚ β”œβ”€ Couleur: [SΓ©lecteur de couleur] β”‚ └─ [CrΓ©er] └─ Notebook créé Γ  la fin de la liste ``` #### Γ‰dition de Notebook ``` Click droit sur notebook β†’ Menu: β”œβ”€ ✏️ Modifier β”‚ └─ Modal: Nom, IcΓ΄ne, Couleur β”œβ”€ πŸ“Š Statistiques β”‚ β”œβ”€ Nombre de notes β”‚ β”œβ”€ Labels utilisΓ©s β”‚ └─ DerniΓ¨re mise Γ  jour β”œβ”€ πŸ—‘οΈ Supprimer β”‚ └─ Warning: "Les notes seront dΓ©placΓ©es vers Notes gΓ©nΓ©rales" └─ ❌ Fermer ``` #### RΓ©organisation (Drag & Drop) ``` ✈️ Voyage β•‘ β•‘ ← Drag handle πŸ’Ό Travail β•‘ β•‘ πŸ“– Perso β•‘ β•‘ Drag "Travail" vers le haut β†’ RΓ©ordonne ``` --- ## πŸ€– IntΓ©gration IA C'est la partie CRUCIALE qui rend cette feature vraiment puissante. ### IA1: Suggestion Automatique de Notebook #### ScΓ©nario ``` User crΓ©e une note dans "Notes gΓ©nΓ©rales": "Rendez-vous dermatologue mardi 15h Γ  Paris" IA analyse et suggΓ¨re: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ’‘ Suggestion IA β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Cette note semble appartenir β”‚ β”‚ β”‚ β”‚ au notebook "Perso". β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [Ignorer] [DΓ©placer vers Perso]β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Prompt IA:** ``` "Analyse cette note et suggΓ¨re le notebook le plus appropriΓ©: Note: {content} Notebooks disponibles: {notebook_names_with_labels} RΓ©ponds avec: - notebook_suggΓ©rΓ©: string - confiance: 0-1 - raisonnement: string" ``` **DΓ©clencheurs:** - Note créée dans "Notes gΓ©nΓ©rales" - Note modifiΓ©e significativement - 5+ secondes aprΓ¨s la fin de frappe (pas en temps rΓ©el) ### IA2: Suggestion de Labels Contextuels #### ScΓ©nario ``` Note dans Notebook "Voyage": "Hotel Shibuya Excel - 150€/nuit - Booking confirmΓ©" IA suggΓ¨re: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ’‘ Suggestions de labels β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ βœ… #hΓ΄tels (confiance: 95%) β”‚ β”‚ ← Click pour assigner β”‚ β”‚ βœ… #rΓ©servations (80%) β”‚ β”‚ β”‚ β”‚ βœ… #tokyo (70%) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [Tout sΓ©lectionner] [Ignorer] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Prompt IA:** ``` "Analyse cette note et suggΓ¨re les labels appropriΓ©s: Note: {content} Notebook actuel: {notebook_name} Labels disponibles dans ce notebook: {available_labels} RΓ©ponds avec un tableau de: - label: string (doit Γͺtre dans {available_labels}) - confiance: 0-1 - raisonnement: string" ``` **Comportement:** - βœ… Maximum 3 suggestions - βœ… Seulement si confiance > 60% - βœ… Labels cliquables pour assignation en 1 clic - βœ… Ne pas dΓ©ranger si l'utilisateur tape activement ### IA3: Organisation Intelligente (Batch Processing) #### ScΓ©nario ``` User a 20 notes dans "Notes gΓ©nΓ©rales" Click "Organiser avec l'IA" β”œβ”€ IA analyse toutes les notes β”œ- Groupe par thΓ©matique └─ PrΓ©sente un plan d'organisation: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ“‹ Plan d'organisation IA β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Notebook: Voyage (5 notes) β”‚ β”‚ β”‚ β”‚ β€’ Hotel Tokyo... β”‚ β”‚ β”‚ β”‚ β€’ Vols JAL... β”‚ β”‚ β”‚ β”‚ β€’ Restaurant Shibuya... β”‚ β”‚ β”‚ β”‚ [Tout sΓ©lectionner] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Notebook: Travail (8 notes) β”‚ β”‚ β”‚ β”‚ β€’ RΓ©union lundi... β”‚ β”‚ β”‚ β”‚ β€’ Projet Alpha... β”‚ β”‚ β”‚ β”‚ ... β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Notebook: Perso (7 notes) β”‚ β”‚ β”‚ β”‚ β€’ IdΓ©es livre... β”‚ β”‚ β”‚ β”‚ ... β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [Annuler] [Appliquer tout] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Prompt IA:** ``` "Analyse ces {count} notes et propose une organisation: {notes_with_content} Notebooks disponibles: {notebooks} Pour chaque notebook, indique: - notebook_cible: string - notes: [{note_id, note_title, confidence, raison}] Retourne un plan d'organisation optimisΓ©." ``` **Validation:** - βœ… User peut dΓ©sΓ©lectionner des notes - βœ… User peut ajuster les destinations - βœ… Confirmation avant application - βœ… Undo possible (Ctrl+Z) ### IA4: CrΓ©ation Automatique de Labels #### ScΓ©nario ``` Notebook "Voyage" devient peuplΓ© de notes sur le Japon IA dΓ©tecte: - 10+ notes mentionnant "Tokyo" - 8+ notes mentionnant "Kyoto" - 5+ notes mentionnant "Osaka" IA suggΓ¨re: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ’‘ Suggestions de nouveaux labels β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ J'ai dΓ©tectΓ© des thΓ¨mes rΓ©currentsβ”‚ β”‚ β”‚ dans vos notes. CrΓ©er des labels?β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ βœ… #tokyo (10 notes) β”‚ β”‚ β”‚ β”‚ βœ… #kyoto (8 notes) β”‚ β”‚ β”‚ β”‚ βœ… #osaka (5 notes) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [Annuler] [CrΓ©er et assigner] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **DΓ©clencheur:** - Notebook atteint 15+ notes - IA dΓ©tecte 3+ mots-clΓ©s rΓ©currents (5+ fois chacun) - Ne propose PAS si les labels existent dΓ©jΓ  ### IA5: Recherche SΓ©mantique par Notebook #### ScΓ©nario ``` User dans Notebook "Voyage" tape: "endroit pour dormir pas cher" IA comprend le contexte "Voyage" et cherche: β”œβ”€ Semantic search DANS ce notebook seulement β”œ- Priorise les labels #hΓ΄tels, #auberges β””- RΓ©sultats plus pertinents car contextuels RΓ©sultats: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ” RΓ©sultats dans "Voyage" β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ πŸ“ Capsule Hotel Shinjuku β”‚ β”‚ β”‚ β”‚ #hΓ΄tels #tokyo β”‚ β”‚ β”‚ β”‚ "Hotel capsule 30€/nuit..." β”‚ β”‚ β”‚ β”‚ Correspondance: 87% β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ πŸ“ Airbnb Asakusa β”‚ β”‚ β”‚ β”‚ #hΓ΄tels #tokyo β”‚ β”‚ β”‚ β”‚ "Appartement 45€/nuit..." β”‚ β”‚ β”‚ β”‚ Correspondance: 82% β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Avantage:** - βœ… Recherche contextuelle au notebook - βœ… RΓ©sultats plus pertinents - βœ… Comprend le jargon spΓ©cifique (ex: "vol" dans Voyage vs Travail) ### IA6: SynthΓ¨se par Notebook #### ScΓ©nario ``` User clique "RΓ©sumer ce notebook" dans "Voyage" IA gΓ©nΓ¨re: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ“Š SynthΓ¨se du Notebook Voyage β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ 🌍 Destinations β”‚ β”‚ β”‚ β”‚ β€’ Japon (Tokyo, Kyoto) β”‚ β”‚ β”‚ β”‚ β€’ France (Paris) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ πŸ“… Dates β”‚ β”‚ β”‚ β”‚ β€’ 15-25 Mars 2024 β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ 🏨 RΓ©servations β”‚ β”‚ β”‚ β”‚ β€’ 3 hΓ΄tels rΓ©servΓ©s β”‚ β”‚ β”‚ β”‚ β€’ 2 vols confirmΓ©s β”‚ β”‚ β”‚ β”‚ β€’ 5 restaurants identifiΓ©s β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ πŸ’° Budget estimΓ©: 3500€ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ ⚠️ Actions requises β”‚ β”‚ β”‚ β”‚ β€’ RΓ©server visa japonais β”‚ β”‚ β”‚ β”‚ β€’ Confirmer assurance voyage β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Prompt IA:** ``` "GΓ©nΓ¨re une synthΓ¨se structurΓ©e de ce notebook: {notes_with_labels} Inclus: - Destinations/ThΓ¨mes principaux - Dates importantes - Γ‰lΓ©ments rΓ©servΓ©s vs planifiΓ©s - Actions requises - Statistiques (nombre de notes, labels utilisΓ©s) Format: Markdown structurΓ© avec emojis." ``` --- ## πŸ—„οΈ Structure de DonnΓ©es (Database Schema) ### Prisma Schema - Nouveaux ModΓ¨les ```prisma // ModΓ¨le Notebook model Notebook { id String @id @default(cuid()) name String icon String? // Emoji: "✈️", "πŸ’Ό", "πŸ“–" color String? // Hex color: "#FF6B6B" order Int // Ordre manuel dans la sidebar userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) notes Note[] labels Label[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([userId, order]) } // ModΓ¨le Label MODIFIΓ‰ - Ajout notebookId model Label { id String @id @default(cuid()) name String color String? // Couleur du label notebookId String // NOUVEAU: Label appartient Γ  un notebook notebook Notebook @relation(fields: [notebookId], references: [id], onDelete: Cascade) notes Note[] // Relation many-to-many via NoteLabel createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@unique([notebookId, name]) // Un label est unique dans un notebook @@index([notebookId]) } // ModΓ¨le Note MODIFIΓ‰ - Ajout notebookId (optionnel) model Note { id String @id @default(cuid()) title String? content String // ... autres champs existants ... notebookId String? // NOUVEAU: Optionnel - null = dans "Notes gΓ©nΓ©rales" notebook Notebook? @relation(fields: [notebookId], references: [id], onDelete: SetNull) // Garantir qu'une note est dans UN SEUL notebook @@index([userId, notebookId]) } // Table de jonction Note-Label (existante mais gardΓ©e) model NoteLabel { noteId String labelId String note Note @relation(fields: [noteId], references: [id], onDelete: Cascade) label Label @relation(fields: [labelId], references: [id], onDelete: Cascade) @@id([noteId, labelId]) @@index([noteId]) @@index([labelId]) } ``` ### ClΓ©s de la Structure **RΓ¨gles d'intΓ©gritΓ©:** 1. βœ… `Note.notebookId` est **optionnel** (null = Notes gΓ©nΓ©rales) 2. βœ… `Label.notebookId` est **obligatoire** (labels TOUJOURS contextuels) 3. βœ… `@@unique([notebookId, name])` = UnicitΓ© des labels DANS un notebook 4. βœ… `onDelete: SetNull` sur Noteβ†’Notebook = Si notebook supprimΓ©, notes β†’ Notes gΓ©nΓ©rales ### Migration Schema ```sql -- Γ‰tape 1: Ajouter les nouveaux modΓ¨les CREATE TABLE "Notebook" ( "id" TEXT NOT NULL PRIMARY KEY, "name" TEXT NOT NULL, "icon" TEXT, "color" TEXT, "order" INTEGER NOT NULL, "userId" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" DATETIME NOT NULL, FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE ); -- Γ‰tape 2: Ajouter notebookId aux Notes (optionnel) ALTER TABLE "Note" ADD COLUMN "notebookId" TEXT; ALTER TABLE "Note" ADD FOREIGN KEY ("notebookId") REFERENCES "Notebook"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- Γ‰tape 3: Ajouter notebookId aux Labels (obligatoire) ALTER TABLE "Label" ADD COLUMN "notebookId" TEXT NOT NULL DEFAULT 'TEMP_MIGRATION'; ALTER TABLE "Label" ADD FOREIGN KEY ("notebookId") REFERENCES "Notebook"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- Γ‰tape 4: CrΓ©er notebook par dΓ©faut pour la migration INSERT INTO "Notebook" (id, name, icon, color, "order", "userId") VALUES ( 'migration_default', 'Labels existants', 'πŸ“¦', '#9CA3AF', 999, {user_id} ); -- Γ‰tape 5: Assigner tous les labels existants Γ  ce notebook UPDATE "Label" SET "notebookId" = 'migration_default' WHERE "notebookId" = 'TEMP_MIGRATION'; -- Γ‰tape 6: Laisser toutes les notes SANS notebook (Notes gΓ©nΓ©rales) -- Rien Γ  faire - notebookId est dΓ©jΓ  NULL par dΓ©faut -- Γ‰tape 7: CrΓ©er index pour performance CREATE INDEX "Note_userId_notebookId_idx" ON "Note"("userId", "notebookId"); CREATE UNIQUE INDEX "Label_notebookId_name_key" ON "Label"("notebookId", "name"); ``` --- ## πŸ”„ Migration des DonnΓ©es Existantes ### StratΓ©gie de Migration #### Phase 1: PrΓ©-migration (Backend) ```typescript // app/actions/migration/prepare-notebooks.ts 'use server' export async function prepareNotebookMigration() { const session = await auth() if (!session?.user?.id) throw new Error('Unauthorized') // 1. CrΓ©er notebook "Import" pour les labels existants const importNotebook = await prisma.notebook.create({ data: { name: 'Labels existants', icon: 'πŸ“¦', color: '#9CA3AF', order: 999, userId: session.user.id } }) // 2. Assigner TOUS les labels existants Γ  ce notebook await prisma.label.updateMany({ where: { userId: session.user.id }, data: { notebookId: importNotebook.id } }) // 3. Laisser les notes SANS notebook (Notes gΓ©nΓ©rales) // Rien Γ  faire - notebookId est NULL par dΓ©faut return { success: true, importNotebookId: importNotebook.id } } ``` #### Phase 2: Migration Interactive (User Journey) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸŽ‰ Bienvenue dans les Notebooks ! β”‚ β”‚ β”‚ β”‚ Nous avons organisΓ© vos Γ©tiquettes existantes dans β”‚ β”‚ le notebook "Labels existants" pour ne rien perdre. β”‚ β”‚ β”‚ β”‚ πŸ“Š Γ‰tat actuel: β”‚ β”‚ β€’ 15 notes sans notebook (Γ  organiser) β”‚ β”‚ β€’ 1 notebook "Labels existants" β”‚ β”‚ β€’ 12 Γ©tiquettes prΓ©servΓ©es β”‚ β”‚ β”‚ β”‚ Que voulez-vous faire ? β”‚ β”‚ β”‚ β”‚ [1] Laisser l'IA organiser mes notes β”‚ β”‚ [2] Explorer et crΓ©er mes propres notebooks β”‚ β”‚ [3] Tout dΓ©placer vers "Notes gΓ©nΓ©rales" β”‚ β”‚ β”‚ β”‚ [Plus tard] Je dΓ©ciderai plus tard β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### Phase 3: Organisation IA (Option 1) Si user choisit "Laisser l'IA organiser": ```typescript // app/actions/migration/ai-organize.ts 'use server' export async function organizeWithAI() { const session = await auth() const notesWithoutNotebook = await prisma.note.findMany({ where: { userId: session.user.id, notebookId: null } }) // IA analyse et propose des notebooks const suggestions = await aiService.suggestNotebooks(notesWithoutNotebook) return { success: true, suggestions: [ { notebookName: 'Voyage', icon: '✈️', color: '#3B82F6', notes: [/* notes suggΓ©rΓ©es */], confidence: 0.89 }, { notebookName: 'Travail', icon: 'πŸ’Ό', color: '#10B981', notes: [/* notes suggΓ©rΓ©es */], confidence: 0.92 } ] } } ``` #### Phase 4: Validation User ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ“‹ Plan d'organisation proposΓ© par l'IA β”‚ β”‚ β”‚ β”‚ ✈️ Voyage (5 notes) - Confiance: 89% β”‚ β”‚ β˜‘ Hotel Tokyo Shibuya β”‚ β”‚ β˜‘ Vols JAL Tokyo-Paris β”‚ β”‚ β˜‘ Restaurant Shibuya β”‚ β”‚ β˜‘ Visa japonais β”‚ β”‚ β˜‘ ItinΓ©raire Kyoto β”‚ β”‚ β”‚ β”‚ πŸ’Ό Travail (8 notes) - Confiance: 92% β”‚ β”‚ β˜‘ RΓ©union lundi β”‚ β”‚ β˜‘ Projet Alpha β”‚ β”‚ β˜‘ ... β”‚ β”‚ β”‚ β”‚ πŸ“– Perso (2 notes) - Confiance: 76% β”‚ β”‚ β˜‘ IdΓ©es livre β”‚ β”‚ β˜‘ Objectifs 2024 β”‚ β”‚ β”‚ β”‚ [DΓ©sΓ©lectionner] [Annuler] [Appliquer] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## 🎯 Success Metrics ### KPIs Γ  Mesurer **Adoption:** - % d'utilisateurs crΓ©ant au moins 1 notebook dans les 30 jours - Nombre moyen de notebooks par utilisateur actif - % de notes organisΓ©es (avec notebook) vs notes gΓ©nΓ©rales **Engagement:** - Temps passΓ© par notebook (ex: Voyage plus actif avant un voyage) - FrΓ©quence d'utilisation des labels contextuels - Taux d'utilisation des suggestions IA **Satisfaction:** - NPS (Net Promoter Score) sur la feature notebooks - % d'utilisateurs gardant le systΓ¨me par dΓ©faut (Import) vs crΓ©ant les leurs - Taux d'abandon lors de la migration **Performance IA:** - Taux d'acceptation des suggestions IA (notebook) - Taux d'acceptation des suggestions IA (labels) - PrΓ©cision des suggestions (feedback utilisateur) --- ## πŸš€ Implementation Phases ### Phase 1: MVP (Weeks 1-3) **Objectif:** Structure de base sans IA - βœ… Database schema (Notebook, Label modifiΓ©, Note modifiΓ©) - βœ… API endpoints (CRUD notebooks) - βœ… UI: Sidebar avec notebooks - βœ… UI: CrΓ©ation/Γ©dition de notebooks - βœ… UI: Assignation de notebook aux notes - βœ… UI: Labels contextuels (affichage) - βœ… UI: Drag & drop des notebooks - βœ… Migration: Notebook "Import" par dΓ©faut - ❌ PAS d'IA encore ### Phase 2: IA Features (Weeks 4-5) **Objectif:** IA pour organisation intelligente - βœ… IA1: Suggestion automatique de notebook - βœ… IA2: Suggestion de labels contextuels - βœ… IA3: Organisation batch (Notes gΓ©nΓ©rales β†’ Notebooks) - βœ… UI: Modals de suggestions IA - βœ… Feedback loop (accepter/rejeter suggestions) ### Phase 3: Advanced IA (Weeks 6-7) **Objectif:** Features IA avancΓ©es - βœ… IA4: CrΓ©ation automatique de labels - βœ… IA5: Recherche sΓ©mantique contextuelle - βœ… IA6: SynthΓ¨se par notebook - βœ… Analytics: Dashboard d'utilisation des notebooks ### Phase 4: Polish & Testing (Week 8) **Objectif:** Finalisation et tests - βœ… Playwright E2E tests - βœ… Performance optimization - βœ… Accessibility audit - βœ… Beta testing avec users - βœ… Documentation --- ## 🚨 Risques & Mitigations ### Risque 1: RΓ©sistance au changement **Description:** Users habituΓ©s aux tags globaux pourraient rejeter les notebooks **Mitigation:** - Phase de migration douce (optionnel) - Mode hybride temporaire (garder vue tags pendant transition) - Tutoriels interactifs - Onboarding progressif ### Risque 2: Performance IA **Description:** Suggestions IA pourraient Γͺtre lentes ou inexactes **Mitigation:** - Cache des suggestions (24h) - Seuils de confiance minimums (>60%) - Feedback loop pour amΓ©liorer le modΓ¨le - Fallback rapide si IA timeout ### Risque 3: Migration des donnΓ©es **Description:** Perte de donnΓ©es ou organisation pendant la migration **Mitigation:** - Backup automatique avant migration - Migration par dΓ©faut (notebook "Import") - PossibilitΓ© de revenir en arriΓ¨re (rollback) - Tests exhaustifs de migration ### Risque 4: ComplexitΓ© UX **Description:** Trop de clics pour organiser les notes **Mitigation:** - Drag & drop intuitif - Raccourcis clavier - IA pour automatiser l'organisation - Mesures d'usabilitΓ© (clics, temps) ### Risque 5: Labels contextuels = perte de flexibilitΓ© **Description:** Users ne peuvent plus utiliser un label global (#urgent partout) **Mitigation:** - Γ‰duquer: "Urgent" peut Γͺtre recréé dans chaque notebook - IA suggΓ¨re de recrΓ©er les labels importants - Option: Labels "favoris" synchronisΓ©s (feature future) --- ## πŸ“š Glossaire - **Notebook:** Collection de notes sur un thΓ¨me (ex: Voyage, Travail) - **Labels Contextuels:** Tags spΓ©cifiques Γ  un notebook (ex: #hΓ΄tels dans Voyage) - **Inbox / Notes gΓ©nΓ©rales:** Zone temporaire pour les notes non organisΓ©es - **IA:** Intelligence Artificielle (OpenAI ou Ollama) - **Suggestion IA:** Proposition automatique basΓ©e sur l'analyse du contenu - **Drag & Drop:** Action de glisser-dΓ©poser pour dΓ©placer des Γ©lΓ©ments - **Migration:** Transition du systΓ¨me de tags vers les notebooks - **Notebook par dΓ©faut:** Notebook créé automatiquement pour prΓ©server les tags existants --- ## πŸ“ Notes pour l'Architecture Team ### Points Critiques Γ  ImplΓ©menter 1. **Database:** - `Note.notebookId` est OPTIONNEL (null = Notes gΓ©nΓ©rales) - `Label.notebookId` est OBLIGATOIRE - Contrainte d'unicitΓ©: `@@unique([notebookId, name])` 2. **API:** - Nouveau endpoint: `/api/notebooks` (CRUD complet) - Endpoint modifiΓ©: `/api/labels` (filtre par notebook) - Endpoint modifiΓ©: `/api/notes` (filtre par notebook) 3. **UI Components:** - `SidebarNotebooks`: Liste des notebooks avec drag & drop - `NotebookSelector`: Dropdown pour choisir le notebook - `ContextualLabels`: Labels filtrΓ©s par notebook actif - `AISuggestions`: Modals pour les suggestions IA 4. **IA Services:** - `NotebookSuggestionService`: IA pour suggΓ©rer un notebook - `LabelSuggestionService`: IA pour suggΓ©rer des labels - `BatchOrganizationService`: IA pour organiser en lot - `AutoLabelCreationService`: IA pour crΓ©er des labels 5. **Performance:** - Index sur `Note.userId + Note.notebookId` - Cache des suggestions IA (Redis ou in-memory) - Virtual scrolling pour les notebooks avec 100+ notes --- ## βœ… Checklist de Validation Avant de passer en dΓ©veloppement, confirmer: - [ ] Ramez valide l'UX dΓ©crite dans ce document - [ ] L'Architecture Team a revu le schΓ©ma DB - [ ] L'Γ©quipe IA a validΓ© les prompts proposΓ©s - [ ] Les risques sont acceptables et des mitigations sont en place - [ ] Le plan de migration est testΓ© sur un dataset de test - [ ] Les mesures de succΓ¨s (KPIs) sont dΓ©finies et traΓ§ables - [ ] Le wireframe UI est validΓ© par Ramez - [ ] L'implΓ©mentation est planifiΓ©e sur 8 semaines max --- **Status:** βœ… PRD COMPLET - PrΓͺt pour Architecture et Wireframes **Next Steps:** 1. CrΓ©er les wireframes UX (Option XW) 2. DΓ©finir l'architecture technique 3. Commencer Phase 1 (MVP) --- *Document créé par Sally (UX Designer) avec Ramez (Product Owner)* *Date: 2026-01-11* *Version: 1.0 - Final*