Augustin 4a8b6d1cf8 Amélioration complète de l'application web Journal de Conception
- Refonte complète du design avec système de panneaux latéraux rétractables
- Ajout de templates de projets par domaine (recherche, informatique, mathématiques, etc.)
- Implémentation système d'export PDF avec Puppeteer
- Amélioration de l'API REST avec nouvelles routes d'export et templates
- Ajout de JavaScript client pour interactions dynamiques
- Configuration environnement étendue pour futures fonctionnalités IA
- Amélioration responsive design et expérience utilisateur

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 12:09:49 +02:00

117 lines
2.9 KiB
JavaScript

const express = require('express');
const router = express.Router();
const fs = require('fs');
const path = require('path');
// GET /api/templates/:domain/:level - Récupérer un template spécifique
router.get('/:domain/:level', (req, res) => {
const { domain, level } = req.params;
try {
const templatePath = path.join(__dirname, '../templates', domain, `${level}.md`);
if (!fs.existsSync(templatePath)) {
return res.status(404).json({
success: false,
error: `Template non trouvé : ${domain}/${level}`
});
}
const templateContent = fs.readFileSync(templatePath, 'utf8');
res.json({
success: true,
data: {
domain,
level,
content: templateContent
}
});
} catch (error) {
console.error('Erreur lors de la lecture du template:', error);
res.status(500).json({
success: false,
error: 'Erreur serveur lors de la lecture du template'
});
}
});
// GET /api/templates/:domain - Lister les niveaux disponibles pour un domaine
router.get('/:domain', (req, res) => {
const { domain } = req.params;
try {
const domainPath = path.join(__dirname, '../templates', domain);
if (!fs.existsSync(domainPath)) {
return res.status(404).json({
success: false,
error: `Domaine non trouvé : ${domain}`
});
}
const files = fs.readdirSync(domainPath);
const levels = files
.filter(file => file.endsWith('.md'))
.map(file => file.replace('.md', ''));
res.json({
success: true,
data: {
domain,
levels
}
});
} catch (error) {
console.error('Erreur lors de la lecture du domaine:', error);
res.status(500).json({
success: false,
error: 'Erreur serveur lors de la lecture du domaine'
});
}
});
// GET /api/templates - Lister tous les domaines disponibles
router.get('/', (req, res) => {
try {
const templatesPath = path.join(__dirname, '../templates');
if (!fs.existsSync(templatesPath)) {
return res.json({
success: true,
data: []
});
}
const domains = fs.readdirSync(templatesPath, { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name);
// Pour chaque domaine, récupérer les niveaux disponibles
const domainsWithLevels = domains.map(domain => {
const domainPath = path.join(templatesPath, domain);
const files = fs.readdirSync(domainPath);
const levels = files
.filter(file => file.endsWith('.md'))
.map(file => file.replace('.md', ''));
return {
domain,
levels
};
});
res.json({
success: true,
data: domainsWithLevels
});
} catch (error) {
console.error('Erreur lors de la lecture des templates:', error);
res.status(500).json({
success: false,
error: 'Erreur serveur lors de la lecture des templates'
});
}
});
module.exports = router;