126 lines
3.6 KiB
Markdown
126 lines
3.6 KiB
Markdown
# 🏗️ REFACTORISATION ARCHITECTURE - GÉNÉRATION PAR ÉTAPES
|
|
|
|
## 📁 **NOUVELLE STRUCTURE FICHIERS**
|
|
|
|
```
|
|
lib/
|
|
├── Main.js ← ORCHESTRATEUR PRINCIPAL
|
|
├── ContentGeneration.js ← ORCHESTRATEUR GÉNÉRATION (4 étapes)
|
|
├── generation/
|
|
│ ├── InitialGeneration.js ← ÉTAPE 1: Génération base (Claude)
|
|
│ ├── TechnicalEnhancement.js ← ÉTAPE 2: Amélioration technique (GPT-4)
|
|
│ ├── TransitionEnhancement.js ← ÉTAPE 3: Fluidité transitions (Gemini)
|
|
│ └── StyleEnhancement.js ← ÉTAPE 4: Style personnalité (Mistral)
|
|
└── [autres fichiers existants...]
|
|
```
|
|
|
|
## 🎯 **PRINCIPE D'ARCHITECTURE**
|
|
|
|
### **1 FICHIER = 1 ÉTAPE = 1 RESPONSABILITÉ**
|
|
- Chaque fichier a **UN SEUL OBJECTIF**
|
|
- Chaque fichier a **UN LLM PRINCIPAL**
|
|
- Chaque fichier **TESTABLE INDÉPENDAMMENT**
|
|
|
|
### **MAIN ENTRY POINT PAR FICHIER**
|
|
Chaque fichier expose une fonction principale claire :
|
|
- `InitialGeneration.js` → `generateInitialContent()`
|
|
- `TechnicalEnhancement.js` → `enhanceTechnicalTerms()`
|
|
- `TransitionEnhancement.js` → `enhanceTransitions()`
|
|
- `StyleEnhancement.js` → `applyPersonalityStyle()`
|
|
|
|
## 🔄 **FLUX D'ORCHESTRATION**
|
|
|
|
```
|
|
Main.js:handleFullWorkflow()
|
|
↓
|
|
ContentGeneration.js:generateWithSelectiveEnhancement()
|
|
↓
|
|
InitialGeneration.js:generateInitialContent() [Claude]
|
|
↓
|
|
TechnicalEnhancement.js:enhanceTechnicalTerms() [GPT-4]
|
|
↓
|
|
TransitionEnhancement.js:enhanceTransitions() [Gemini]
|
|
↓
|
|
StyleEnhancement.js:applyPersonalityStyle() [Mistral]
|
|
↓
|
|
RÉSULTAT FINAL
|
|
```
|
|
|
|
## 📋 **INTERFACES STANDARDISÉES**
|
|
|
|
### **INPUT/OUTPUT CHAQUE ÉTAPE**
|
|
```javascript
|
|
// INPUT standardisé
|
|
{
|
|
content: { "|tag1|": "contenu1", "|tag2|": "contenu2" },
|
|
csvData: { mc0, t0, personality, ... },
|
|
context: { step, totalSteps, metadata }
|
|
}
|
|
|
|
// OUTPUT standardisé
|
|
{
|
|
content: { "|tag1|": "contenu_amélioré1", "|tag2|": "contenu_amélioré2" },
|
|
stats: { processed: 15, enhanced: 8, duration: 2500 },
|
|
debug: { llmProvider: "claude", tokens: 1200 }
|
|
}
|
|
```
|
|
|
|
## ⚡ **AVANTAGES ARCHITECTURE**
|
|
|
|
### **DÉVELOPPEMENT**
|
|
- ✅ Debug par étape indépendante
|
|
- ✅ Tests unitaires par fichier
|
|
- ✅ Ajout/suppression d'étapes facile
|
|
- ✅ Code plus lisible et maintenable
|
|
|
|
### **PRODUCTION**
|
|
- ✅ Bypass d'étapes si problème
|
|
- ✅ Monitoring précis par étape
|
|
- ✅ Optimisation performance individuelle
|
|
- ✅ Rollback par étape possible
|
|
|
|
## 🔧 **MIGRATION PROGRESSIVE**
|
|
|
|
### **PHASE 1**: Créer nouvelle structure
|
|
- Créer dossier `generation/` et fichiers
|
|
- Garder ancien code fonctionnel
|
|
|
|
### **PHASE 2**: Migrer étape par étape
|
|
- InitialGeneration.js d'abord
|
|
- Puis TechnicalEnhancement.js
|
|
- Etc.
|
|
|
|
### **PHASE 3**: Nettoyer ancien code
|
|
- Supprimer SelectiveEnhancement.js
|
|
- Mettre à jour imports
|
|
|
|
## 🎨 **EXEMPLE STRUCTURE FICHIER**
|
|
|
|
```javascript
|
|
// generation/InitialGeneration.js
|
|
const { callLLM } = require('../LLMManager');
|
|
const { tracer } = require('../trace');
|
|
|
|
/**
|
|
* ÉTAPE 1: GÉNÉRATION INITIALE
|
|
* Responsabilité: Créer le contenu de base avec Claude
|
|
* Input: hierarchy, csvData
|
|
* Output: contenu généré initial
|
|
*/
|
|
async function generateInitialContent(hierarchy, csvData) {
|
|
return await tracer.run('InitialGeneration.generateInitialContent()', async () => {
|
|
// Logique génération initiale
|
|
// Claude uniquement
|
|
});
|
|
}
|
|
|
|
// Helper functions locales
|
|
function createBasePrompt() { /* ... */ }
|
|
function parseInitialResponse() { /* ... */ }
|
|
|
|
module.exports = {
|
|
generateInitialContent, // ← MAIN ENTRY POINT
|
|
createBasePrompt, // ← Helpers si besoin externe
|
|
parseInitialResponse
|
|
};
|
|
``` |