feat: Memento avec dates, Markdown, reminders et auth
Tests Playwright validés ✅:
- Création de notes: OK
- Modification titre: OK
- Modification contenu: OK
- Markdown éditable avec preview: OK
Fonctionnalités:
- date-fns: dates relatives sur cards
- react-markdown + remark-gfm
- Markdown avec toggle edit/preview
- Recherche améliorée (titre/contenu/labels/checkItems)
- Reminder recurrence/location (schema)
- NextAuth.js + User/Account/Session
- userId dans Note (optionnel)
- 4 migrations créées
Ready for production + auth integration
This commit is contained in:
@@ -1,86 +1,101 @@
|
||||
{
|
||||
"meta": {
|
||||
"instanceId": "memento-demo"
|
||||
"instanceId": "agentic-research-workflow"
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {},
|
||||
"id": "b1c9e8f2-1234-4567-89ab-cdef12345678",
|
||||
"name": "Déclencheur Manuel (Start)",
|
||||
"type": "n8n-nodes-base.manualTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
250,
|
||||
300
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"values": {
|
||||
"string": [
|
||||
"rule": {
|
||||
"interval": [
|
||||
{
|
||||
"name": "subject",
|
||||
"value": "Réunion Projet MCP"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"value": "N'oublie pas de vérifier l'intégration N8N aujourd'hui à 15h00."
|
||||
},
|
||||
{
|
||||
"name": "labels",
|
||||
"value": "['work', 'n8n']"
|
||||
"field": "hours",
|
||||
"hoursInterval": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
}
|
||||
},
|
||||
"id": "a2b3c4d5-1234-4567-89ab-cdef12345678",
|
||||
"name": "Simuler Email (Données)",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.3,
|
||||
"id": "a1b2c3d4",
|
||||
"name": "Trigger: Veille Heure",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
500,
|
||||
300
|
||||
240,
|
||||
400
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"prompt": "Tu es un assistant personnel. Utilise l'outil MCP 'memento' pour créer une nouvelle note.\n\nDétails de la note :\n- Titre : {{ $json.subject }}\n- Contenu : {{ $json.body }}\n- Labels : {{ $json.labels }}\n\nIMPORTANT : Utilise l'outil create_note disponible dans le serveur MCP.",
|
||||
"url": "https://techcrunch.com/category/artificial-intelligence/feed/",
|
||||
"options": {}
|
||||
},
|
||||
"id": "e4f5g6h7-1234-4567-89ab-cdef12345678",
|
||||
"name": "AI Agent (MCP Client)",
|
||||
"id": "b2c3d4e5",
|
||||
"name": "Source: Flux AI (Tech)",
|
||||
"type": "n8n-nodes-base.rssFeedRead",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
460,
|
||||
400
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"promptType": "define",
|
||||
"text": "=# RÔLE & PERSONA\nTu es un \"Architecte de Connaissance\" hautement sélectif. Tu ne dois laisser passer que l'or pur.\n\n# CONTEXTE\nJe te transmets un flux d'articles tech. Ton objectif est de construire une base de connaissances stratégiques (via mon serveur MCP) pour mes projets d'automatisation.\n\n# TA MISSION (AGNOSTIQUE)\nTu dois analyser l'article fourni et prendre une DÉCISION :\n\n1. **Analyse :** L'article est-il techniquement profond ? (Ex: implémentation MCP, nouvelles features N8N, patterns LLM avancés).\n2. **Filtrage :** Si l'article est superficiel (marketing, hype, news sans fond technique), **NE FAIS RIEN**. N'appelle aucun outil.\n3. **Action :** SEULEMENT si l'article est pertinent :\n - Utilise l'outil MCP 'create_note' disponible.\n - Le titre doit être percutant.\n - Le contenu doit être une synthèse technique.\n - Ajoute le label 'veille_strategique'.\n\n# INPUT ARTICLE\nTitre: {{ $json.title }}\nLien: {{ $json.guid }}\nRésumé RSS: {{ $json.contentSnippet }}",
|
||||
"options": {}
|
||||
},
|
||||
"id": "c3d4e5f6",
|
||||
"name": "Agent: Architecte (Filtre & MCP)",
|
||||
"type": "@n8n/n8n-nodes-langchain.agent",
|
||||
"typeVersion": 1.5,
|
||||
"position": [
|
||||
750,
|
||||
300
|
||||
680,
|
||||
400
|
||||
],
|
||||
"notes": "Cet Agent décide lui-même si l'info vaut le coup d'être sauvegardée. Pas de filtre statique.",
|
||||
"credentials": {
|
||||
"openAiApi": {
|
||||
"id": "1",
|
||||
"name": "OpenAI (N'oubliez pas de configurer votre clé)"
|
||||
"id": "OPENAI_API_KEY_ID",
|
||||
"name": "OpenAI API"
|
||||
}
|
||||
},
|
||||
"languageModel": {
|
||||
"type": "@n8n/n8n-nodes-langchain.lm.openAi",
|
||||
"id": "openai-model",
|
||||
"name": "OpenAI Model"
|
||||
},
|
||||
"tools": {
|
||||
"values": [
|
||||
{
|
||||
"resourceType": "mcp",
|
||||
"config": {
|
||||
"transport": {
|
||||
"type": "httpStreamable",
|
||||
"url": "http://192.168.1.10:3001/sse"
|
||||
},
|
||||
"authentication": "none"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"Déclencheur Manuel (Start)": {
|
||||
"Trigger: Veille Heure": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Simuler Email (Données)",
|
||||
"node": "Source: Flux AI (Tech)",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Simuler Email (Données)": {
|
||||
"Source: Flux AI (Tech)": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "AI Agent (MCP Client)",
|
||||
"node": "Agent: Architecte (Filtre & MCP)",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user