feat: brainstorm sessions, PDF document Q&A, embedding fixes, and UI improvements
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 7s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 7s
- Add brainstorm feature with collaborative canvas, AI idea generation, live cursors, playback, and export - Add PDF upload/extraction/ingestion pipeline with pgvector document search (RAG) - Add document Q&A overlay with streaming chat and PDF preview - Add note attachments UI with status polling, grid layout, and auto-scroll - Add task extraction AI tool and agent executor improvements - Fix NoteEmbedding missing updatedAt column, re-index 66 notes with 1536-dim embeddings - Fix brainstorm 'Create Note' button: add success toast and redirect to created note - Fix memory echo notification infinite polling - Fix chat route to always include document_search tool - Add brainstorm i18n keys across all 14 locales - Add socket server for real-time brainstorm collaboration - Add hierarchical notebook selector and organize notebook dialog improvements - Add sidebar brainstorm section with session management - Update prisma schema with brainstorm tables, attachments, and document chunks
This commit is contained in:
253
docs/fonctionnalites-ia.md
Normal file
253
docs/fonctionnalites-ia.md
Normal file
@@ -0,0 +1,253 @@
|
||||
# Fonctionnalités IA — Momento
|
||||
|
||||
## Architecture
|
||||
|
||||
Trois fournisseurs IA indépendants, chacun configurable séparément :
|
||||
|
||||
| Tier | Usage | Variables |
|
||||
|---|---|---|
|
||||
| **Tags** | Tags, labels, reformulation, suggestions de titre | `AI_PROVIDER_TAGS`, `AI_MODEL_TAGS` |
|
||||
| **Embedding** | Recherche sémantique, Memory Echo, similarité | `AI_PROVIDER_EMBEDDING`, `AI_MODEL_EMBEDDING` |
|
||||
| **Chat** | Chat RAG, agents, résumés, vision, brainstorm | `AI_PROVIDER_CHAT`, `AI_MODEL_CHAT` |
|
||||
|
||||
**13 fournisseurs supportés** : OpenAI, Google Gemini, Anthropic, DeepSeek, OpenRouter, Mistral, Ollama, ZAI, LM Studio, Custom OpenAI, MiniMax, GLM, Anthropic Custom.
|
||||
|
||||
Hiérarchie de fallback : Config spécifique → Tags → Embedding → Général → Env.
|
||||
|
||||
---
|
||||
|
||||
## 1. Notes — Écriture intelligente
|
||||
|
||||
### Suggestions de titre
|
||||
- 3 propositions (Direct, Question, Créatif) en 3-8 mots
|
||||
- Détection automatique de la langue du contenu
|
||||
- Toggle utilisateur `titleSuggestions`
|
||||
|
||||
### Tags contextuels automatiques (IA2)
|
||||
- Suggestions parmi les labels existants du carnet OU création de nouveaux
|
||||
- Confiance > 0.5 (labels existants), > 0.3 (nouveaux)
|
||||
- Toggle utilisateur `autoLabeling`
|
||||
|
||||
### Création auto de labels (IA4)
|
||||
- Analyse un carnet (15+ notes) et détecte les thèmes récurrents
|
||||
- Un thème doit apparaître dans 5+ notes, confiance > 0.60
|
||||
- Max 5 suggestions, labels marqués `type='ai'`
|
||||
|
||||
### Reformulation de paragraphe — 6 modes
|
||||
- **Clarifier** : élimine l'ambiguïté
|
||||
- **Raccourcir** : condense 30-50%
|
||||
- **Améliorer le style** : vocabulaire, structure
|
||||
- **Corriger la grammaire** : corrections minimales
|
||||
- **Traduire** : vers langue cible
|
||||
- **Améliorer tous les modes** : les 3 principaux en un appel
|
||||
|
||||
### Traduction
|
||||
- Traduction vers n'importe quelle langue cible
|
||||
|
||||
### Description d'images (Vision)
|
||||
- Mode **description** : décrit le contenu (max 100 mots)
|
||||
- Mode **titre** : 3 titres descriptifs de 3-7 mots
|
||||
- Supporte images locales et distantes
|
||||
|
||||
### Suggestion de carnet
|
||||
- Suggère le carnet le plus approprié lors de la création d'une note
|
||||
- Analyse contenu + labels existants
|
||||
|
||||
---
|
||||
|
||||
## 2. Recherche sémantique
|
||||
|
||||
### Recherche hybride (FTS + Vectorielle)
|
||||
- **Phase 1** : PostgreSQL FTS (`tsvector` / `plainto_ts_query`, index GIN) → 50 candidats
|
||||
- **Phase 2** : pgvector recherche cosinus-distance (index HNSW) → 50 candidats, seuil 0.3
|
||||
- **Phase 3** : Reciprocal Rank Fusion (RRF, k=60) pour le classement final
|
||||
- Filtrage par carnet optionnel
|
||||
- Fallback FTS-only si vectorielle échoue
|
||||
|
||||
### Embeddings
|
||||
- pgvector(1536) dans PostgreSQL
|
||||
- Régénération automatique après 7 jours
|
||||
- Génération par lot avec `Promise.all`
|
||||
|
||||
---
|
||||
|
||||
## 3. Memory Echo — Connexions proactives
|
||||
|
||||
### Insights automatiques
|
||||
- Détecte les connexions sémantiques entre notes via similarité cosinus
|
||||
- Seuil de similarité : 0.75 (normal), 0.50 (démo)
|
||||
- Génère une explication en 1 phrase (max 15 mots) via IA
|
||||
- Fréquence configurable : daily / weekly / custom (3/jour)
|
||||
|
||||
### Feedback adaptatif
|
||||
- **Thumbs up** → baisse le seuil de 0.05 (plus de suggestions)
|
||||
- **Thumbs down** → monte le seuil de 0.15 (moins de suggestions)
|
||||
|
||||
### Fusion de notes
|
||||
- Fusion intelligente de plusieurs notes en une seule structurée
|
||||
- Consolidation, suppression des doublons, organisation logique
|
||||
|
||||
### Connexions par note
|
||||
- Liste toutes les connexions sémantiques pour une note avec pagination
|
||||
|
||||
---
|
||||
|
||||
## 4. Chat IA — RAG avec outils
|
||||
|
||||
### Chat contextuel (streaming)
|
||||
- Retrieval-Augmented Generation avec notes de l'utilisateur
|
||||
- Recherche sémantique (seuil 0.5, 0.3 pour carnet spécifique)
|
||||
- Prompt système en français
|
||||
- **Outils disponibles** : `note_search`, `note_read`, `web_search`, `web_scrape`
|
||||
- Max 5 steps d'outils
|
||||
- Supporte contexte de carnet, contexte Copilot (note en cours), images (vision)
|
||||
- Conversations persistées, historique 10 derniers messages
|
||||
- Prompts localisés (en, fr, fa, es)
|
||||
|
||||
### Insights de chat
|
||||
- Résumé synthétique ou 3 insights à partir des 5 notes les plus récentes
|
||||
|
||||
---
|
||||
|
||||
## 5. Organisation automatique
|
||||
|
||||
### Organisation par lot (IA3)
|
||||
- Classe les notes sans carnet dans les carnets existants
|
||||
- Guide de classification thématique (sport → Personnel, travail → Travail, etc.)
|
||||
- Confiance > 0.60, max 50 notes analysées
|
||||
- Prompts localisés en 12 langues
|
||||
|
||||
### Résumé de carnet (IA6)
|
||||
- 5 sections : Thèmes Principaux, Statistiques, Éléments Temporels, Points d'Attention, Insights Clés
|
||||
- Analyse jusqu'à 100 notes récentes
|
||||
- Prompts localisés en 5 langues
|
||||
|
||||
---
|
||||
|
||||
## 6. Agents IA — 6 types
|
||||
|
||||
### Scraper
|
||||
- Scrape des URLs (Jina Reader), détecte et parse les flux RSS
|
||||
- Synthèse IA, extraction d'images (Cheerio + Sharp)
|
||||
- Placement intelligent d'images via IA
|
||||
- Titre généré par IA, notification par email
|
||||
|
||||
### Researcher
|
||||
- Génère des requêtes de recherche, scrape les sources
|
||||
- Crée une note de recherche structurée
|
||||
|
||||
### Monitor
|
||||
- Analyse les notes récentes d'un carnet
|
||||
- Produit des insights et connexions récurrents
|
||||
|
||||
### Custom
|
||||
- Rôle personnalisé libre avec URLs source optionnelles
|
||||
|
||||
### Slide Generator
|
||||
- Crée des présentations via `pptx_create` (PowerPoint) ou `slides_create` (HTML Reveal.js)
|
||||
|
||||
### Excalidraw Generator
|
||||
- Crée des diagrammes Excalidraw à partir d'un format simplifié
|
||||
- 7 types : flowchart, mindmap, architecture-cloud, org-chart, timeline, process-map, auto
|
||||
- Auto-layout via Dagre
|
||||
|
||||
### Ordonnancement
|
||||
- Fréquences : manual, hourly, daily, weekly, monthly
|
||||
- Fuseaux horaires IANA supportés
|
||||
|
||||
---
|
||||
|
||||
## 7. Génération de contenu
|
||||
|
||||
### PowerPoint (PptxGenJS)
|
||||
- 20 thèmes de couleur, 4 styles (sharp/soft/rounded/pill)
|
||||
- 15 layouts de slides
|
||||
- Pré-fetch d'images en base64
|
||||
|
||||
### Slides HTML (Reveal.js)
|
||||
- Mêmes thèmes et layouts que PPTX
|
||||
- Interactif, speaker notes, cadre décoratif optionnel
|
||||
|
||||
### Excalidraw
|
||||
- Format simplifié (nodes + edges) → auto-layout Dagre
|
||||
- Calcul de qualité (overlaps, croisements)
|
||||
- Sauvegarde en DB
|
||||
|
||||
---
|
||||
|
||||
## 8. Brainstorm — Vagues de pensée
|
||||
|
||||
### Génération de vagues IA
|
||||
- 3 vagues successives : Variations → Analogies → Disruptions
|
||||
- Chaque vague enrichie avec contexte des notes existantes
|
||||
- Connexions aux notes existantes via embeddings (derived_from, opposes, extends, synthesizes, transposes)
|
||||
|
||||
### Enrichissement d'idées manuelles
|
||||
- LLM enrichit titre, description, connectionToSeed, noveltyScore
|
||||
- Placement sémantique auto : embedding → similarité cosinus → meilleur parent
|
||||
|
||||
### Canvas D3 interactif
|
||||
- Graphe radial avec 3 anneaux (vagues 1-2-3)
|
||||
- Drag & drop, zoom, sélection, création inline
|
||||
- Curseur fantôme AI pendant la génération
|
||||
|
||||
### Collaboration temps réel
|
||||
- Socket.io : curseurs live, déplacement de nœuds, activité
|
||||
- Partage via modèle NoteShare (email → notification → accepter/refuser)
|
||||
- Avatars avec présence émeraude
|
||||
|
||||
### Export → Note
|
||||
- Crée une note structurée avec résumé, vagues, connexions, notes sollicitées
|
||||
- Ouvre directement la note créée
|
||||
|
||||
---
|
||||
|
||||
## 9. Outils disponibles pour les agents
|
||||
|
||||
| Outil | Description |
|
||||
|---|---|
|
||||
| `web_search` | Recherche web via SearXNG ou Brave Search |
|
||||
| `web_scrape` | Scraping via Jina Reader (markdown) + RSS auto-détection |
|
||||
| `note_search` | Recherche hybride dans les notes (sémantique + mots-clés) |
|
||||
| `note_read` | Lit une note par ID |
|
||||
| `note_create` | Crée une note (markdown, images optionnelles) |
|
||||
| `note_update` | Modifie titre/contenu d'une note |
|
||||
| `url_fetch` | Fetch d'URL avec parsing JSON/CSV/texte |
|
||||
| `memory_search` | Recherche dans l'historique des exécutions d'agent |
|
||||
| `pptx_create` | Génère un PowerPoint |
|
||||
| `slides_create` | Génère des slides HTML Reveal.js |
|
||||
| `excalidraw_create` | Génère un diagramme Excalidraw |
|
||||
|
||||
---
|
||||
|
||||
## 10. Détection de langue
|
||||
|
||||
- Hybride : TinyLD pour notes courtes (<50 mots, ~8ms), IA pour notes longues
|
||||
- Mapping TinyLD → ISO 639-1, 62 langues dont le persan
|
||||
- 19 codes explicitement mappés + fallback
|
||||
|
||||
---
|
||||
|
||||
## Toggles utilisateur (UserAISettings)
|
||||
|
||||
| Toggle | Fonctionnalité |
|
||||
|---|---|
|
||||
| `autoLabeling` | Tags contextuels automatiques |
|
||||
| `paragraphRefactor` | Reformulation de paragraphe |
|
||||
| `titleSuggestions` | Suggestions de titre |
|
||||
| `memoryEcho` | Memory Echo proactif |
|
||||
| `memoryEchoFrequency` | daily / weekly / custom |
|
||||
| `demoMode` | Seuils abaissés pour démo |
|
||||
| `preferredLanguage` | Langue préférée pour les agents |
|
||||
|
||||
---
|
||||
|
||||
## Chiffres
|
||||
|
||||
- **46 fichiers IA**
|
||||
- **~10 500+ lignes de code**
|
||||
- **26 routes API IA**
|
||||
- **12 outils enregistrés**
|
||||
- **6 types d'agents**
|
||||
- **13 fournisseurs supportés**
|
||||
- **Prompts localisés** : fr, en, fa, es, de, it, pt, nl, pl, ru, ja, ko, zh, ar, hi
|
||||
Reference in New Issue
Block a user