UNPKG

agile-planner-mcp-server

Version:

Serveur MCP pour la génération d'artefacts agiles (backlogs, features, user stories) avec IA - compatible Windsurf, Claude et Cursor

118 lines (103 loc) 4.35 kB
/** * @deprecated Ce module est obsolète depuis Wave 8 (mai 2025) * * Les fonctionnalités d'itération ont été refactorisées et intégrées dans le système de génération * principal via le pattern factory dans index.js. Cette approche permet une meilleure séparation * des responsabilités et une plus grande facilité de test. * * Note de maintenance: * - Ce fichier est conservé temporairement pour référence et rétrocompatibilité * - À supprimer complètement dans la version 1.5.0 (selon RULE 2) * - Les tests affectés devront être mis à jour pour utiliser la nouvelle API * * @see server/lib/markdown/index.js pour l'implémentation actuelle */ module.exports = { createIterationFormatter, processIterations, processIteration }; // Import manquants intentionnellement non résolus pour marquer clairement l'obsolète // Ces erreurs aideront à détecter l'utilisation de ce module dans le code const { createSlug, handleMarkdownError, markdownInstructions } = require('./utils'); const fs = require('fs-extra'); const chalk = require('chalk'); // NOTE: path est importé mais non utilisé dans ce module obsolète // const path = require('path'); function generateIterationHeader(iterationName, goal) { return `# Iteration: ${iterationName}\n\n${markdownInstructions.iterationFileInstructions}\n## Goal\n\n${goal}\n\n## User Stories\n\n`; } /** * Traite une itération individuelle * @param {Object} iteration - Donnée de l'itération * @param {string} backlogDir - Répertoire de base du backlog * @param {Map} userStoryMap - Map des user stories * @param {Object} backlogJson - Structure JSON du backlog * @returns {Promise<void>} */ async function processIteration(iteration, backlogDir, userStoryMap, backlogJson) { const iterationName = iteration.name; const iterationSlug = createSlug(iterationName); // Créer les chemins const paths = createIterationPaths(backlogDir, iterationSlug); // Créer le répertoire si nécessaire await fs.ensureDir(paths.directory); // Initialiser le contenu et les données JSON let iterationContent = generateIterationHeader(iterationName, iteration.goal); const iterationJson = { name: iterationName, goal: iteration.goal, slug: iterationSlug, stories: [] }; // Traiter les stories de l'itération if (iteration.stories && Array.isArray(iteration.stories)) { for (const story of iteration.stories) { const result = processIterationStory(story, userStoryMap); iterationContent += result.content; iterationJson.stories.push(result.json); } } // Écrire le fichier d'itération await fs.writeFile(paths.filePath, iterationContent); console.error(chalk.green(`✓ Iteration document created: ${paths.filePath}`)); // Ajouter au backlog JSON iterationJson.path = paths.relativePath; backlogJson.iterations.push(iterationJson); } /** * Process iterations and create iteration markdown files * @param {Object} iterations - Iterations object * @param {string} backlogDir - Base backlog directory * @param {Map} userStoryMap - Map to track user stories * @param {Object} backlogJson - Backlog JSON structure * @returns {Promise<void>} */ async function processIterations(iterations, backlogDir, userStoryMap, backlogJson) { // Validation initiale if (!iterations || !Array.isArray(iterations) || iterations.length === 0) { console.warn(chalk.yellow('⚠️ No iterations found, skipping iterations processing')); return; } // Initialisation du tableau des itérations backlogJson.iterations = []; try { // Traiter chaque itération for (const iteration of iterations) { await processIteration(iteration, backlogDir, userStoryMap, backlogJson); } } catch (error) { throw handleMarkdownError('Error processing iterations', error); } } /** * Factory function pour créer un formateur d'itérations * @param {Object} options - Options de configuration * @returns {Object} - API du formateur d'itérations */ function createIterationFormatter(options = {}) { return { processIterations }; } // Ce module est désormais obsolète : la génération des itérations est supprimée.