115 lines
3.9 KiB
JavaScript
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());
|