Files
Keep/mcp-server/update-markdown.js

115 lines
3.9 KiB
JavaScript

#!/usr/bin/env node
/**
* Script d'import COMPLET des documents Markdown dans Memento
* Les notes sont créées avec isMarkdown: true
*/
import { PrismaClient } from '../keep-notes/prisma/client-generated/index.js';
import { readFileSync } from 'fs';
import { join } from 'path';
const prisma = new PrismaClient({
datasources: {
db: { url: 'file:/Users/sepehr/dev/Keep/keep-notes/prisma/dev.db' },
},
});
// Liste des documents
const documents = [
{ file: 'guide-utilisateur-mcp.md', title: '📘 Guide Utilisateur MCP', color: 'blue' },
{ file: 'source-tree-analysis.md', title: '📁 Source Tree Analysis', color: 'green' },
{ file: 'project-overview.md', title: '🎯 Project Overview', color: 'purple' },
{ file: 'deployment-guide.md', title: '🚀 Deployment Guide', color: 'orange' },
{ file: 'development-guide-keep-notes.md', title: '💻 Development Guide', color: 'teal' },
{ file: 'integration-architecture.md', title: '🔌 Integration Architecture', color: 'blue' },
{ file: 'api-contracts-keep-notes.md', title: '📡 API Contracts Keep Notes', color: 'yellow' },
{ file: 'architecture-keep-notes.md', title: '🏗️ Architecture Keep Notes', color: 'purple' },
{ file: 'code-review-cleanup-report.md', title: '🔍 Code Review Cleanup Report', color: 'red' },
{ file: 'data-models.md', title: '🗄️ Data Models', color: 'gray' },
{ file: 'component-inventory.md', title: '🧩 Component Inventory', color: 'teal' },
{ file: 'architecture-mcp-server.md', title: '🔧 Architecture MCP Server', color: 'blue' },
{ file: 'api-contracts-mcp-server.md', title: '📋 API Contracts MCP Server', color: 'yellow' },
{ file: 'monetization-analysis.md', title: '💰 Monetization Analysis', color: 'green' },
{ file: 'index.md', title: '📚 Index Documentation', color: 'gray' },
{ file: 'mcp-optimization-report.md', title: '⚡ MCP Optimization Report', color: 'purple' },
];
async function importDocuments() {
console.log('📝 Import des documents Markdown dans Memento...\n');
// Trouver le user
let user = await prisma.user.findFirst();
if (!user) {
console.log('❌ Aucun utilisateur trouvé');
process.exit(1);
}
// Trouver le notebook "Documentation"
let notebook = await prisma.notebook.findFirst({
where: { name: 'Documentation' },
});
if (!notebook) {
console.log('❌ Notebook "Documentation" non trouvé');
process.exit(1);
}
console.log('📁 Notebook "Documentation" trouvé\n');
let updated = 0;
let errors = 0;
for (const doc of documents) {
try {
const filePath = join('/Users/sepehr/dev/Keep/docs', doc.file);
let content;
try {
content = readFileSync(filePath, 'utf-8');
} catch (e) {
console.log(`⚠️ Fichier non trouvé: ${doc.file}`);
errors++;
continue;
}
// Chercher la note existante
const existing = await prisma.note.findFirst({
where: {
title: doc.title,
notebookId: notebook.id,
},
});
if (existing) {
// Mettre à jour avec isMarkdown: true
await prisma.note.update({
where: { id: existing.id },
data: {
content: content,
color: doc.color,
labels: JSON.stringify(['documentation']),
isMarkdown: true, // ✅ FORMAT MARKDOWN ACTIVÉ
updatedAt: new Date(),
},
});
console.log(`🔄 Mis à jour (Markdown): ${doc.title}`);
updated++;
} else {
console.log(`⚠️ Note non trouvée: ${doc.title}`);
}
} catch (error) {
console.log(`❌ Erreur ${doc.title}: ${error.message}`);
errors++;
}
}
console.log(`\n📊 Résumé:`);
console.log(` Mis à jour en Markdown: ${updated}`);
console.log(` Erreurs: ${errors}`);
console.log(`\n✨ Toutes les notes sont maintenant en format Markdown !`);
}
importDocuments()
.catch(console.error)
.finally(() => prisma.$disconnect());