docstodev 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
- import "dotenv/config";
2
1
  export interface AIAnalysisOptions {
3
2
  language?: "fr" | "en";
4
3
  includeDesignSystem?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/ai/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAEvB,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACrD,UAAU,CAAC,EAAE,CAAC,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE;QACX,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CACvB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,aAAa,CAC/B,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAkE3B"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/ai/analyzer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACrD,UAAU,CAAC,EAAE,CAAC,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE;QACX,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CACvB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,aAAa,CAC/B,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAkE3B"}
@@ -1,12 +1,11 @@
1
1
  // Emplacement absolu : M:\workspace\extensions\docstodev\src\ai\analyzer.ts
2
- import "dotenv/config";
3
2
  export async function askAI(technicalContext, options = {}) {
4
3
  const result = await askAIDetailed(technicalContext, options);
5
4
  return result.rawAnalysis;
6
5
  }
7
6
  export async function askAIDetailed(technicalContext, options = {}) {
8
7
  const { language = "fr", includeDesignSystem = true, includeRisks = true, includeRecommendations = true, detailLevel = "detailed", focusAreas = ["architecture", "maintainability"] } = options;
9
- const GROQ_API_KEY = process.env.GROQ_API_KEY || "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";
8
+ const GROQ_API_KEY = "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";
10
9
  if (!GROQ_API_KEY) {
11
10
  return {
12
11
  summary: "⚠️ Erreur : Clé API Groq manquante",
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/ai/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/ai/analyzer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docstodev",
3
- "version": "3.0.1",
3
+ "version": "3.0.3",
4
4
  "description": "Solution d’automatisation de documentation technique intelligente avec IA",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -1,7 +1,5 @@
1
1
  // Emplacement absolu : M:\workspace\extensions\docstodev\src\ai\analyzer.ts
2
2
 
3
- import "dotenv/config";
4
-
5
3
  export interface AIAnalysisOptions {
6
4
  language?: "fr" | "en";
7
5
  includeDesignSystem?: boolean;
@@ -45,7 +43,7 @@ export async function askAIDetailed(
45
43
  focusAreas = ["architecture", "maintainability"]
46
44
  } = options;
47
45
 
48
- const GROQ_API_KEY = process.env.GROQ_API_KEY || "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";
46
+ const GROQ_API_KEY = "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";
49
47
 
50
48
  if (!GROQ_API_KEY) {
51
49
  return {
@@ -1,245 +0,0 @@
1
- # Rapport Technique DocsToDev
2
-
3
- > 📅 Généré le : vendredi 9 janvier 2026 à 10:01
4
- > 📊 7 fichiers analysés • 15 dépendances identifiées
5
-
6
- ## 🎯 But du Projet
7
-
8
- Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.
9
-
10
- ## 💡 Recommandations
11
-
12
- - 1. **Refactorisation et Modularisation** : Organiser le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.
13
- 2. **Gestion des Secrets** : Utiliser des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.
14
- 3. **Optimisation des Performances** : Analyser les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.
15
- 4. **Tests Automatisés** : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.
16
- 5. **Documentation et Commentaires** : Améliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.
17
-
18
- ## 💡 Analyse Intelligente
19
-
20
- ## `But` du `Projet`
21
- `Le` projet `DocsToDev` est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels.
22
-
23
- `Il` vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes.
24
-
25
- `Le` public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.
26
-
27
- ## `Design` `System` Détecté
28
- `Le` projet utilise une palette de couleurs qui n'est pas explicitement définie dans les extraits de code fournis, mais il semblerait qu'il s'appuie sur des standards web modernes.
29
-
30
- `La` typographie est également standard, sans spécifications particulières.
31
-
32
- `Les` patterns de composants incluent des éléments tels que des tables, des liens, des codes, et potentiellement des graphiques générés par `Mermaid` pour représenter des structures de données ou des flux de travail.
33
-
34
- ## `Risques` `Identifi`és
35
- - 🔴 **`Critique`** : `La` sécurité des données et la gestion des clés API (comme la clé GROQ_API_KEY) sont cruciales.
36
-
37
- L'exposition de ces clés dans le code pose un risque élevé.
38
-
39
- - 🟡 **`Moyen`** : `La` complexité du code et la gestion des dépendances pourraient nécessiter une attention particulière pour éviter les problèmes de maintenance et de performance.
40
-
41
- - 🟢 **`Faible`** : L'amélioration de l'expérience utilisateur et la personnalisation de la génération de rapports pourraient être des points d'amélioration mineurs mais importants pour l'adoption et la satisfaction des utilisateurs.
42
-
43
- ## `Recommandations`
44
- 1.
45
-
46
- **`Refactorisation` et `Modularisation`** : `Organiser` le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.
47
-
48
- 2.
49
-
50
- **`Gestion` des `Secrets`** : `Utiliser` des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.
51
-
52
- 3.
53
-
54
- **`Optimisation` des `Performances`** : `Analyser` les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.
55
-
56
- 4.
57
-
58
- **`Tests` `Automatis`és** : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.
59
-
60
- 5.
61
-
62
- **`Documentation` et `Commentaires`** : `Am`éliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.
63
-
64
- ## `Analyse` Détaillée des `Fichiers`
65
- - **`src/analyzers/`languageAnalyzer`.ts`** : `Ce` fichier définit les analyseurs de langages de programmation.
66
-
67
- `Il` joue un rôle crucial dans l'analyse du code source et la génération de rapports.
68
-
69
- `Ses` dépendances incluent les régular expressions pour l'analyse syntaxique.
70
-
71
- - **`src/ai/`analyzer.ts`** : `Ce` fichier est responsable de l'interaction avec l'IA pour l'analyse des données techniques.
72
-
73
- `Il` utilise des options de configuration pour personnaliser l'analyse et les résultats.
74
-
75
- - **`src/cache/`cacheManager`.ts`** : `Il` gère le cache des analyses pour améliorer les performances en réutilisant les résultats d'analyses précédentes.
76
-
77
- `Ses` dépendances incluent les modules de fichier et de cryptographie pour la gestion sécurisée du cache.
78
-
79
- - **`src/cli/`index.ts`** : `Ce` fichier définit l'interface de ligne de commande de l'application.
80
-
81
- `Il` utilise des commandes pour exécuter des tâches spécifiques, comme générer des résumés ou exécuter l'analyse.
82
-
83
- - **`src/commands/`generateSummary`.ts`** : `Il` est utilisé pour générer un résumé du projet analysé, en incluant des métadonnées et des statistiques sur le code.
84
-
85
- - **`src/commands/`run.ts`** : `Ce` fichier contient la logique pour exécuter l'analyse complète d'un projet, en utilisant les analyseurs de langage et les capacités d'analyse IA.
86
-
87
- - **`src/exporters/`html.ts`** : `Il` est responsable de la conversion des résultats d'analyse en documents HTML, facilitant ainsi la visualisation et la partage des résultats.
88
-
89
- ## 📂 Architecture du projet
90
-
91
- ```
92
- ├─ [package-lock.json](../package-lock.json)
93
- ├─ [package.json](../package.json)
94
- ├─ [src/ai/analyzer.ts](../src/ai/analyzer.ts)
95
- ├─ [src/analyzers/languageAnalyzer.ts](../src/analyzers/languageAnalyzer.ts)
96
- ├─ [src/cache/cacheManager.ts](../src/cache/cacheManager.ts)
97
- ├─ [src/cli/index.ts](../src/cli/index.ts)
98
- ├─ [src/commands/generateSummary.ts](../src/commands/generateSummary.ts)
99
- ├─ [src/commands/run.ts](../src/commands/run.ts)
100
- ├─ [src/exporters/html.ts](../src/exporters/html.ts)
101
- └─ [tsconfig.json](../tsconfig.json)
102
- ```
103
-
104
- ## 🔬 Analyse détaillée des composants
105
-
106
- ### 📄 [`src/analyzers/languageAnalyzer.ts`](../src/analyzers/languageAnalyzer.ts)
107
-
108
- **Complexité et maintenance** : 580 lignes • 🟠 Élevée (270)
109
-
110
- **Fonctions** : `getAnalyzer()`, `getSupportedExtensions()`, `isExplicitlySupported()`
111
-
112
- **Classes** : `TSJSAnalyzer`, `PythonAnalyzer`, `JavaAnalyzer`, `CSharpAnalyzer`, `GoAnalyzer`, `RustAnalyzer`, `HTMLAnalyzer`, `CSSAnalyzer`, `PHPAnalyzer`, `RubyAnalyzer`, `SQLAnalyzer`, `DefaultAnalyzer`
113
-
114
- **Types/Interfaces** : `LanguageAnalyzer`, `FileAnalysisResult`
115
-
116
- **Exports publics** : `LanguageAnalyzer`, `FileAnalysisResult`, `getAnalyzer`, `getSupportedExtensions`, `isExplicitlySupported`
117
-
118
- ---
119
-
120
- ### 📄 [`src/ai/analyzer.ts`](../src/ai/analyzer.ts)
121
-
122
- **Complexité et maintenance** : 289 lignes • 🟢 Faible (46)
123
-
124
- **Fonctions** : `askAI()`, `askAIDetailed()`, `buildSystemPrompt()`, `parseAIResponse()`
125
-
126
- **Types/Interfaces** : `AIAnalysisOptions`, `AIAnalysisResult`
127
-
128
- **Exports publics** : `AIAnalysisOptions`, `AIAnalysisResult`, `askAI`, `askAIDetailed`
129
-
130
- ---
131
-
132
- ### 📄 [`src/cache/cacheManager.ts`](../src/cache/cacheManager.ts)
133
-
134
- **Complexité et maintenance** : 179 lignes • 🟢 Faible (36)
135
-
136
- **Classes** : `CacheManager`
137
-
138
- **Types/Interfaces** : `CacheEntry`, `CacheManifest`
139
-
140
- **Exports publics** : `CacheEntry`, `CacheManifest`, `CacheManager`
141
-
142
- **Dépendances** :
143
-
144
- • `node:crypto` (Node.js) → utilise `createHash`
145
- • `node:fs` (Node.js) → utilise `readFileSync, writeFileSync, existsSync, statSync, mkdirSync`
146
- • `node:path` (Node.js) → utilise `path`
147
-
148
- ---
149
-
150
- ### 📄 [`src/cli/index.ts`](../src/cli/index.ts)
151
-
152
- **Complexité et maintenance** : 355 lignes • 🟡 Modérée (77)
153
-
154
- **Fonctions** : `typeWriter()`, `showBanner()`, `selectLanguage()`, `showTransition()`
155
-
156
- **Classes** : `Spinner`, `ProgressBar`
157
-
158
- **Dépendances** :
159
-
160
- • `commander` (NPM) → utilise `Command`
161
- • `../commands/run.js` (Interne) → utilise `runCommand`
162
- • `../commands/generateSummary.js` (Interne) → utilise `generateSummary`
163
- • `node:readline/promises` (Node.js) → utilise `readline`
164
- • `node:process` (Node.js) → utilise `stdin as input, stdout as output`
165
- • `node:path` (Node.js) → utilise `path`
166
-
167
- ---
168
-
169
- ### 📄 [`src/commands/generateSummary.ts`](../src/commands/generateSummary.ts)
170
-
171
- **Complexité et maintenance** : 150 lignes • 🟢 Faible (27)
172
-
173
- **Fonctions** : `generateSummary()`
174
-
175
- **Types/Interfaces** : `SummaryData`
176
-
177
- **Exports publics** : `generateSummary`
178
-
179
- **Dépendances** :
180
-
181
- • `node:fs` (Node.js) → utilise `writeFileSync, mkdirSync`
182
- • `node:path` (Node.js) → utilise `path`
183
-
184
- ---
185
-
186
- ### 📄 [`src/commands/run.ts`](../src/commands/run.ts)
187
-
188
- **Complexité et maintenance** : 459 lignes • 🟡 Modérée (108)
189
-
190
- **Fonctions** : `buildTree()`, `renderTree()`, `analyzeFile()`, `getComplexityLevel()`, `formatAISummary()`, `runCommand()`, `generatePDF()`
191
-
192
- **Types/Interfaces** : `AIAnalysisOptions`, `TreeNode`, `FileAnalysis`
193
-
194
- **Exports publics** : `runCommand`
195
-
196
- **Dépendances** :
197
-
198
- • `globby` (NPM) → utilise `globby`
199
- • `node:fs` (Node.js) → utilise `writeFileSync, readFileSync, existsSync, mkdirSync`
200
- • `node:path` (Node.js) → utilise `path`
201
- • `puppeteer` (NPM) → utilise `puppeteer`
202
- • `../exporters/html.js` (Interne) → utilise `exportToHTML`
203
- • `../ai/analyzer.js` (Interne) → utilise `askAIDetailed, type AIAnalysisOptions`
204
- • `../analyzers/languageAnalyzer.js` (Interne) → utilise `getAnalyzer, getSupportedExtensions`
205
- • `../cache/cacheManager.js` (Interne) → utilise `CacheManager`
206
-
207
- ---
208
-
209
- ### 📄 [`src/exporters/html.ts`](../src/exporters/html.ts)
210
-
211
- **Complexité et maintenance** : 894 lignes • 🟠 Élevée (152)
212
-
213
- **Fonctions** : `exportToHTML()`, `toggleTheme()`, `sanitizeMermaidGraph()`, `generateHierarchyGraph()`, `sanitizeLabel()`, `getFileExtension()`, `getNodeStyle()`, `traverse()`, `getDefaultHierarchyGraph()`, `generateDataFlowGraph()`, `formatRisksSection()`, `formatText()`
214
-
215
- **Types/Interfaces** : `TreeStructure`
216
-
217
- **Exports publics** : `exportToHTML`
218
-
219
- **Dépendances** :
220
-
221
- • `node:fs` (Node.js) → utilise `writeFileSync`
222
- • `node:path` (Node.js) → utilise `path`
223
- • `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` (NPM) → utilise `mermaid`
224
-
225
- ---
226
-
227
- ## 📦 Modules externes
228
-
229
- | Module | Type | Occurrences |
230
- | :--- | :--- | :---: |
231
- | `../ai/analyzer.js` | Interne | 1 |
232
- | `../analyzers/languageAnalyzer.js` | Interne | 1 |
233
- | `../cache/cacheManager.js` | Interne | 1 |
234
- | `../commands/generateSummary.js` | Interne | 1 |
235
- | `../commands/run.js` | Interne | 1 |
236
- | `../exporters/html.js` | Interne | 1 |
237
- | `commander` | NPM | 1 |
238
- | `globby` | NPM | 1 |
239
- | `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` | NPM | 1 |
240
- | `node:crypto` | Node.js | 1 |
241
- | `node:fs` | Node.js | 4 |
242
- | `node:path` | Node.js | 5 |
243
- | `node:process` | Node.js | 1 |
244
- | `node:readline/promises` | Node.js | 1 |
245
- | `puppeteer` | NPM | 1 |
package/docs/report.html DELETED
@@ -1,638 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fr" data-theme="dark">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>DocsToDev – Rapport Technique</title>
7
-
8
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Fira+Code&display=swap" rel="stylesheet">
9
- <script type="module">
10
- import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
11
-
12
- mermaid.initialize({
13
- startOnLoad: true,
14
- theme: document.documentElement.dataset.theme === "dark" ? "dark" : "default",
15
- securityLevel: 'loose',
16
- logLevel: 'error',
17
- themeVariables: {
18
- darkMode: document.documentElement.dataset.theme === "dark",
19
- background: "transparent",
20
- primaryColor: "#58a6ff",
21
- primaryTextColor: "#c9d1d9",
22
- primaryBorderColor: "#30363d",
23
- lineColor: "#8b949e",
24
- secondaryColor: "#161b22",
25
- tertiaryColor: "#0d1117",
26
- fontSize: "14px",
27
- fontFamily: "Inter, sans-serif"
28
- },
29
- flowchart: {
30
- useMaxWidth: true,
31
- htmlLabels: true,
32
- curve: 'basis'
33
- }
34
- });
35
-
36
- window.mermaid = mermaid;
37
- </script>
38
-
39
- <style>
40
- :root[data-theme="dark"] {
41
- --bg: #0d1117;
42
- --card: #161b22;
43
- --text: #c9d1d9;
44
- --muted: #8b949e;
45
- --border: #30363d;
46
- --accent: #58a6ff;
47
- --code-bg: #1f2428;
48
- --file-badge-bg: rgba(248, 81, 73, 0.15);
49
- --file-badge-text: #f85149;
50
- }
51
-
52
- :root[data-theme="light"] {
53
- --bg: #ffffff;
54
- --card: #f6f8fa;
55
- --text: #24292f;
56
- --muted: #57606a;
57
- --border: #d0d7de;
58
- --accent: #0969da;
59
- --code-bg: #eaeef2;
60
- --file-badge-bg: rgba(218, 54, 51, 0.15);
61
- --file-badge-text: #da3633;
62
- }
63
-
64
- * {
65
- margin: 0;
66
- padding: 0;
67
- box-sizing: border-box;
68
- }
69
-
70
- body {
71
- font-family: Inter, sans-serif;
72
- background: var(--bg);
73
- color: var(--text);
74
- line-height: 1.6;
75
- }
76
-
77
- .container {
78
- max-width: 1400px;
79
- margin: 0 auto;
80
- padding: 2rem;
81
- }
82
-
83
- .controls {
84
- position: sticky;
85
- top: 0;
86
- background: var(--bg);
87
- padding: 1rem 0;
88
- display: flex;
89
- gap: 0.75rem;
90
- z-index: 100;
91
- border-bottom: 1px solid var(--border);
92
- margin-bottom: 2rem;
93
- }
94
-
95
- #search {
96
- flex: 1;
97
- padding: 0.6rem 1rem;
98
- border: 1px solid var(--border);
99
- background: var(--card);
100
- color: var(--text);
101
- font-size: 0.95rem;
102
- font-family: Inter, sans-serif;
103
- transition: border-color 0.2s;
104
- }
105
-
106
- #search:focus {
107
- outline: none;
108
- border-color: var(--accent);
109
- }
110
-
111
- button {
112
- padding: 0.6rem 1.2rem;
113
- border: 1px solid var(--border);
114
- background: var(--card);
115
- color: var(--text);
116
- cursor: pointer;
117
- font-size: 0.95rem;
118
- font-family: Inter, sans-serif;
119
- transition: all 0.2s;
120
- display: flex;
121
- align-items: center;
122
- gap: 0.5rem;
123
- }
124
-
125
- button:hover {
126
- background: var(--border);
127
- }
128
-
129
- button svg {
130
- width: 16px;
131
- height: 16px;
132
- }
133
-
134
- h1 {
135
- font-size: 2.5rem;
136
- color: var(--accent);
137
- margin-bottom: 3rem;
138
- font-weight: 400;
139
- letter-spacing: -0.02em;
140
- }
141
-
142
- h2 {
143
- font-size: 1.5rem;
144
- margin: 3rem 0 1.5rem 0;
145
- padding-bottom: 0.75rem;
146
- border-bottom: 1px solid var(--border);
147
- font-weight: 400;
148
- color: var(--text);
149
- }
150
-
151
- h3 {
152
- font-size: 1.1rem;
153
- margin-bottom: 1rem;
154
- color: var(--accent);
155
- font-weight: 400;
156
- }
157
-
158
- .graphs-grid {
159
- display: grid;
160
- grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
161
- gap: 2rem;
162
- margin: 2rem 0;
163
- }
164
-
165
- .graph-container {
166
- border: 1px solid var(--border);
167
- background: var(--card);
168
- padding: 1.5rem;
169
- min-height: 300px;
170
- position: relative;
171
- }
172
-
173
- .graph-title {
174
- font-size: 1rem;
175
- color: var(--muted);
176
- margin-bottom: 1rem;
177
- text-transform: uppercase;
178
- letter-spacing: 0.05em;
179
- font-size: 0.85rem;
180
- }
181
-
182
- .mermaid-wrapper {
183
- width: 100%;
184
- overflow-x: auto;
185
- overflow-y: hidden;
186
- }
187
-
188
- .component {
189
- border: 1px solid var(--border);
190
- background: var(--card);
191
- padding: 1.5rem;
192
- margin-bottom: 1.5rem;
193
- }
194
-
195
- .component p,
196
- .component .list-item {
197
- word-wrap: break-word;
198
- overflow-wrap: break-word;
199
- word-break: break-word;
200
- }
201
-
202
- .tree-line {
203
- font-family: "Fira Code", monospace;
204
- font-size: 0.85rem;
205
- white-space: pre-wrap;
206
- word-wrap: break-word;
207
- color: var(--muted);
208
- line-height: 1.8;
209
- }
210
-
211
- .branch {
212
- color: var(--accent);
213
- }
214
-
215
- .pipe {
216
- color: var(--border);
217
- }
218
-
219
- .file-badge {
220
- background: var(--file-badge-bg);
221
- color: var(--file-badge-text);
222
- padding: 0.15rem 0.5rem;
223
- font-size: 0.8rem;
224
- font-family: "Fira Code", monospace;
225
- display: inline-block;
226
- margin-left: 0.25rem;
227
- }
228
-
229
- .table-container {
230
- border: 1px solid var(--border);
231
- margin: 1.5rem 0;
232
- overflow-x: auto;
233
- background: var(--card);
234
- }
235
-
236
- table {
237
- width: 100%;
238
- border-collapse: collapse;
239
- font-size: 0.9rem;
240
- table-layout: fixed;
241
- }
242
-
243
- th, td {
244
- border-bottom: 1px solid var(--border);
245
- padding: 0.75rem 1rem;
246
- text-align: left;
247
- word-wrap: break-word;
248
- overflow-wrap: break-word;
249
- }
250
-
251
- th {
252
- background: var(--bg);
253
- color: var(--muted);
254
- text-transform: uppercase;
255
- font-size: 0.8rem;
256
- letter-spacing: 0.05em;
257
- font-weight: 400;
258
- }
259
-
260
- tr:last-child td {
261
- border-bottom: none;
262
- }
263
-
264
- code {
265
- font-family: "Fira Code", monospace;
266
- background: var(--code-bg);
267
- padding: 0.2rem 0.4rem;
268
- font-size: 0.9em;
269
- color: var(--accent);
270
- word-wrap: break-word;
271
- overflow-wrap: break-word;
272
- }
273
-
274
- .list-item {
275
- margin-bottom: 0.5rem;
276
- padding-left: 1.5rem;
277
- position: relative;
278
- }
279
-
280
- .list-item::before {
281
- content: "";
282
- position: absolute;
283
- left: 0.5rem;
284
- top: 0.7rem;
285
- width: 4px;
286
- height: 4px;
287
- background: var(--accent);
288
- }
289
-
290
- p {
291
- margin-bottom: 1rem;
292
- color: var(--muted);
293
- }
294
-
295
- a {
296
- color: var(--accent);
297
- text-decoration: none;
298
- }
299
-
300
- a:hover {
301
- text-decoration: underline;
302
- }
303
-
304
- mark {
305
- background: #ffd33d;
306
- color: #000;
307
- padding: 0.1rem 0.3rem;
308
- }
309
-
310
- .mermaid {
311
- background: transparent;
312
- display: flex;
313
- justify-content: center;
314
- align-items: center;
315
- min-height: 200px;
316
- }
317
-
318
- .mermaid svg {
319
- max-width: 100%;
320
- height: auto;
321
- }
322
-
323
- .error-message {
324
- color: #f85149;
325
- padding: 1rem;
326
- background: rgba(248, 81, 73, 0.1);
327
- border: 1px solid rgba(248, 81, 73, 0.3);
328
- border-radius: 4px;
329
- font-family: "Fira Code", monospace;
330
- font-size: 0.9rem;
331
- }
332
-
333
- .project-goal-section {
334
- background: linear-gradient(135deg, var(--accent) 0%, #7c3aed 100%);
335
- padding: 2rem;
336
- margin: 2rem 0;
337
- border-radius: 8px;
338
- border-left: 4px solid var(--accent);
339
- }
340
-
341
- .project-goal-section h2 {
342
- color: #ffffff;
343
- border-bottom: none;
344
- margin: 0 0 1rem 0;
345
- font-size: 1.8rem;
346
- }
347
-
348
- .project-goal-section p {
349
- color: rgba(255, 255, 255, 0.95);
350
- font-size: 1.1rem;
351
- line-height: 1.8;
352
- }
353
-
354
- .risks-section {
355
- background: var(--card);
356
- border: 1px solid var(--border);
357
- border-left: 4px solid #f85149;
358
- padding: 1.5rem;
359
- margin: 2rem 0;
360
- }
361
-
362
- .risks-section h3 {
363
- color: #f85149;
364
- margin-bottom: 1rem;
365
- }
366
-
367
- .risk-item {
368
- padding: 0.75rem;
369
- margin: 0.5rem 0;
370
- border-radius: 4px;
371
- display: flex;
372
- align-items: flex-start;
373
- gap: 0.75rem;
374
- }
375
-
376
- .risk-item.critical {
377
- background: rgba(248, 81, 73, 0.1);
378
- border-left: 3px solid #f85149;
379
- }
380
-
381
- .risk-item.medium {
382
- background: rgba(251, 191, 36, 0.1);
383
- border-left: 3px solid #fbbf24;
384
- }
385
-
386
- .risk-item.low {
387
- background: rgba(34, 197, 94, 0.1);
388
- border-left: 3px solid #22c55e;
389
- }
390
-
391
- .risk-icon {
392
- font-size: 1.2rem;
393
- flex-shrink: 0;
394
- }
395
-
396
- .recommendations-section {
397
- background: var(--card);
398
- border: 1px solid var(--border);
399
- border-left: 4px solid #22c55e;
400
- padding: 1.5rem;
401
- margin: 2rem 0;
402
- }
403
-
404
- .recommendations-section h3 {
405
- color: #22c55e;
406
- margin-bottom: 1rem;
407
- }
408
-
409
- .recommendation-item {
410
- padding: 0.75rem;
411
- margin: 0.5rem 0;
412
- background: rgba(34, 197, 94, 0.05);
413
- border-radius: 4px;
414
- padding-left: 2rem;
415
- position: relative;
416
- }
417
-
418
- .recommendation-item::before {
419
- content: "💡";
420
- position: absolute;
421
- left: 0.5rem;
422
- top: 0.75rem;
423
- }
424
-
425
- .design-system-section {
426
- background: var(--card);
427
- border: 1px solid var(--border);
428
- padding: 1.5rem;
429
- margin: 2rem 0;
430
- }
431
-
432
- .color-palette {
433
- display: flex;
434
- gap: 1rem;
435
- flex-wrap: wrap;
436
- margin: 1rem 0;
437
- }
438
-
439
- .color-swatch {
440
- display: flex;
441
- flex-direction: column;
442
- align-items: center;
443
- gap: 0.5rem;
444
- }
445
-
446
- .color-box {
447
- width: 60px;
448
- height: 60px;
449
- border-radius: 8px;
450
- border: 2px solid var(--border);
451
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
452
- }
453
-
454
- .color-label {
455
- font-size: 0.75rem;
456
- font-family: "Fira Code", monospace;
457
- color: var(--muted);
458
- }
459
-
460
- @media print {
461
- .controls {
462
- display: none;
463
- }
464
-
465
- .container {
466
- max-width: 100%;
467
- padding: 0;
468
- }
469
-
470
- .component {
471
- page-break-inside: avoid;
472
- }
473
- }
474
-
475
- @media (max-width: 768px) {
476
- .graphs-grid {
477
- grid-template-columns: 1fr;
478
- }
479
-
480
- .controls {
481
- flex-direction: column;
482
- }
483
- }
484
- </style>
485
- </head>
486
-
487
- <body>
488
- <div class="container">
489
-
490
-
491
- <div class="project-goal-section">
492
- <h2>🎯 But du Projet</h2>
493
- <p>Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p>
494
- </div>
495
-
496
-
497
-
498
-
499
- <div class="controls">
500
- <input id="search" placeholder="Rechercher dans la documentation..." type="text">
501
- <button onclick="toggleTheme()">
502
- <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
503
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/>
504
- </svg>
505
- Thème
506
- </button>
507
- <button onclick="window.print()">
508
- <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
509
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"/>
510
- </svg>
511
- Exporter PDF
512
- </button>
513
- </div>
514
-
515
- <h2>Architecture du projet</h2>
516
- <div class="graphs-grid">
517
- <div class="graph-container">
518
- <div class="graph-title">Graphe des dépendances</div>
519
- <div class="mermaid-wrapper">
520
- <pre class="mermaid">
521
- graph LR
522
- index_ts --> run_js:::jsFileStyle
523
- index_ts --> generateSummary_js:::jsFileStyle
524
- run_ts --> html_js:::jsFileStyle
525
- run_ts --> analyzer_js:::jsFileStyle
526
- run_ts --> languageAnalyzer_js:::jsFileStyle
527
- run_ts --> cacheManager_js:::jsFileStyle
528
-
529
- classDef jsFileStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
530
- classDef tsFileStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
531
- classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
532
- classDef componentStyle fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
533
- classDef functionStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
534
- classDef serviceStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
535
- classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
536
- </pre>
537
- </div>
538
- </div>
539
-
540
- <div class="graph-container">
541
- <div class="graph-title">Structure du projet</div>
542
- <div class="mermaid-wrapper">
543
- <pre class="mermaid">
544
- graph TD
545
- node0["📄 package-lock.json"]:::configStyle
546
- node1["📄 package.json"]:::configStyle
547
- node2["📄 tsconfig.json"]:::configStyle
548
- node3["📄 srcanalyzerslanguageAnalyzer.ts"]:::tsStyle
549
- node4["📄 srcaianalyzer.ts"]:::tsStyle
550
- node5["📄 srccachecacheManager.ts"]:::tsStyle
551
- node6["📄 srccliindex.ts"]:::tsStyle
552
- node7["📄 srccommandsgenerateSummary.ts"]:::tsStyle
553
- node8["📄 srccommandsrun.ts"]:::tsStyle
554
- node9["📄 srcexportershtml.ts"]:::tsStyle
555
-
556
- classDef folderStyle fill:#58a6ff,stroke:#1f6feb,stroke-width:2px,color:#fff
557
- classDef tsStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
558
- classDef jsStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
559
- classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
560
- classDef htmlStyle fill:#e34c26,stroke:#b83c1f,stroke-width:2px,color:#fff
561
- classDef cssStyle fill:#264de4,stroke:#1b3ba3,stroke-width:2px,color:#fff
562
- classDef docStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
563
- classDef fileStyle fill:#8b949e,stroke:#6e7681,stroke-width:2px,color:#fff
564
- </pre>
565
- </div>
566
- </div>
567
- </div>
568
-
569
- <div class="graph-container" style="margin-bottom: 3rem;">
570
- <div class="graph-title">Flux de données</div>
571
- <div class="mermaid-wrapper">
572
- <pre class="mermaid">
573
- graph LR
574
- A["📥 Input<br/>(fichiers source)"]:::inputStyle --> B["🔍 Analyzer<br/>(analyse code)"]:::analyzerStyle
575
- B --> C["📊 Parser<br/>(extraction données)"]:::parserStyle
576
- C --> D["⚙️ Generator<br/>(génération docs)"]:::generatorStyle
577
- D --> E["📤 Exporter<br/>(export HTML/PDF)"]:::exporterStyle
578
- E --> F["✅ Output<br/>(documentation)"]:::outputStyle
579
-
580
- classDef inputStyle fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff
581
- classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
582
- classDef parserStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
583
- classDef generatorStyle fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
584
- classDef exporterStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
585
- classDef outputStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
586
- </pre>
587
- </div>
588
- </div>
589
-
590
- <div id="content-area"><h1>Rapport Technique DocsToDev</h1><p>> 📅 Généré le : vendredi 9 janvier 2026 à 10:01</p><p>> 📊 7 fichiers analysés • 15 dépendances identifiées</p><h2>🎯 But du Projet</h2><p>Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p><h2>💡 Recommandations</h2><div class="list-item">1. Refactorisation et Modularisation : Organiser le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.</div><p>2. Gestion des Secrets : Utiliser des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.</p><p>3. Optimisation des Performances : Analyser les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.</p><p>4. Tests Automatisés : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.</p><p>5. Documentation et Commentaires : Améliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.</p><h2>💡 Analyse Intelligente</h2><h2>`But` du `Projet`</h2><p><code>Le</code> projet <code>DocsToDev</code> est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels.</p><p><code>Il</code> vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes.</p><p><code>Le</code> public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p><h2>`Design` `System` Détecté</h2><p><code>Le</code> projet utilise une palette de couleurs qui n'est pas explicitement définie dans les extraits de code fournis, mais il semblerait qu'il s'appuie sur des standards web modernes.</p><p><code>La</code> typographie est également standard, sans spécifications particulières.</p><p><code>Les</code> patterns de composants incluent des éléments tels que des tables, des liens, des codes, et potentiellement des graphiques générés par <code>Mermaid</code> pour représenter des structures de données ou des flux de travail.</p><h2>`Risques` `Identifi`és</h2><div class="list-item">🔴 <code>Critique</code> : <code>La</code> sécurité des données et la gestion des clés API (comme la clé GROQ_API_KEY) sont cruciales.</div><p>L'exposition de ces clés dans le code pose un risque élevé.</p><div class="list-item">🟡 <code>Moyen</code> : <code>La</code> complexité du code et la gestion des dépendances pourraient nécessiter une attention particulière pour éviter les problèmes de maintenance et de performance.</div><div class="list-item">🟢 <code>Faible</code> : L'amélioration de l'expérience utilisateur et la personnalisation de la génération de rapports pourraient être des points d'amélioration mineurs mais importants pour l'adoption et la satisfaction des utilisateurs.</div><h2>`Recommandations`</h2><p>1.</p><p><code>Refactorisation</code> et <code>Modularisation</code> : <code>Organiser</code> le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.</p><p>2.</p><p><code>Gestion</code> des <code>Secrets</code> : <code>Utiliser</code> des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.</p><p>3.</p><p><code>Optimisation</code> des <code>Performances</code> : <code>Analyser</code> les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.</p><p>4.</p><p><code>Tests</code> <code>Automatis</code>és : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.</p><p>5.</p><p><code>Documentation</code> et <code>Commentaires</code> : <code>Am</code>éliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.</p><h2>`Analyse` Détaillée des `Fichiers`</h2><div class="tree-line">- <code>src/analyzers/</code>languageAnalyzer<code>.ts</code> : <code>Ce</code> fichier définit les analyseurs de langages de programmation.</div><p><code>Il</code> joue un rôle crucial dans l'analyse du code source et la génération de rapports.</p><p><code>Ses</code> dépendances incluent les régular expressions pour l'analyse syntaxique.</p><div class="tree-line">- <code>src/ai/</code>analyzer.ts<code> : </code>Ce` fichier est responsable de l'interaction avec l'IA pour l'analyse des données techniques.</div><p><code>Il</code> utilise des options de configuration pour personnaliser l'analyse et les résultats.</p><div class="tree-line">- <code>src/cache/</code>cacheManager<code>.ts</code> : <code>Il</code> gère le cache des analyses pour améliorer les performances en réutilisant les résultats d'analyses précédentes.</div><p><code>Ses</code> dépendances incluent les modules de fichier et de cryptographie pour la gestion sécurisée du cache.</p><div class="tree-line">- <code>src/cli/</code>index.ts<code> : </code>Ce` fichier définit l'interface de ligne de commande de l'application.</div><p><code>Il</code> utilise des commandes pour exécuter des tâches spécifiques, comme générer des résumés ou exécuter l'analyse.</p><div class="tree-line">- <code>src/commands/</code>generateSummary<code>.ts</code> : <code>Il</code> est utilisé pour générer un résumé du projet analysé, en incluant des métadonnées et des statistiques sur le code.</div><div class="tree-line">- <code>src/commands/</code>run.ts<code> : </code>Ce` fichier contient la logique pour exécuter l'analyse complète d'un projet, en utilisant les analyseurs de langage et les capacités d'analyse IA.</div><div class="tree-line">- <code>src/exporters/</code>html.ts<code> : </code>Il` est responsable de la conversion des résultats d'analyse en documents HTML, facilitant ainsi la visualisation et la partage des résultats.</div><h2>📂 Architecture du projet</h2><p><code></code>`</p><div class="tree-line"><span class="branch">├─</span> <a href="../package-lock.json">package-lock.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../package.json">package.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/ai/analyzer.ts">src/ai/analyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/analyzers/languageAnalyzer.ts">src/analyzers/languageAnalyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cache/cacheManager.ts">src/cache/cacheManager.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cli/index.ts">src/cli/index.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/generateSummary.ts">src/commands/generateSummary.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/run.ts">src/commands/run.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/exporters/html.ts">src/exporters/html.ts</a></div><div class="tree-line"><span class="branch">└─</span> <a href="../tsconfig.json">tsconfig.json</a></div><p><code></code>`</p><h2>🔬 Analyse détaillée des composants</h2><div class="tree-line">### 📄 <a href="../src/analyzers/languageAnalyzer.ts"><code>src/analyzers/languageAnalyzer.ts</code></a></div><p>Complexité et maintenance : 580 lignes • 🟠 Élevée (270)</p><p>Fonctions : <code>getAnalyzer()</code>, <code>getSupportedExtensions()</code>, <code>isExplicitlySupported()</code></p><p>Classes : <code>TSJSAnalyzer</code>, <code>PythonAnalyzer</code>, <code>JavaAnalyzer</code>, <code>CSharpAnalyzer</code>, <code>GoAnalyzer</code>, <code>RustAnalyzer</code>, <code>HTMLAnalyzer</code>, <code>CSSAnalyzer</code>, <code>PHPAnalyzer</code>, <code>RubyAnalyzer</code>, <code>SQLAnalyzer</code>, <code>DefaultAnalyzer</code></p><div class="tree-line">Types/Interfaces : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code></div><p>Exports publics : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code>, <code>getAnalyzer</code>, <code>getSupportedExtensions</code>, <code>isExplicitlySupported</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/ai/analyzer.ts"><code>src/ai/analyzer.ts</code></a></div><p>Complexité et maintenance : 289 lignes • 🟢 Faible (46)</p><p>Fonctions : <code>askAI()</code>, <code>askAIDetailed()</code>, <code>buildSystemPrompt()</code>, <code>parseAIResponse()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code></div><p>Exports publics : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code>, <code>askAI</code>, <code>askAIDetailed</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/cache/cacheManager.ts"><code>src/cache/cacheManager.ts</code></a></div><p>Complexité et maintenance : 179 lignes • 🟢 Faible (36)</p><p>Classes : <code>CacheManager</code></p><div class="tree-line">Types/Interfaces : <code>CacheEntry</code>, <code>CacheManifest</code></div><p>Exports publics : <code>CacheEntry</code>, <code>CacheManifest</code>, <code>CacheManager</code></p><p>Dépendances :</p><div class="list-item"><code>node:crypto</code> (Node.js) → utilise <code>createHash</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>readFileSync, writeFileSync, existsSync, statSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/cli/index.ts"><code>src/cli/index.ts</code></a></div><p>Complexité et maintenance : 355 lignes • 🟡 Modérée (77)</p><p>Fonctions : <code>typeWriter()</code>, <code>showBanner()</code>, <code>selectLanguage()</code>, <code>showTransition()</code></p><p>Classes : <code>Spinner</code>, <code>ProgressBar</code></p><p>Dépendances :</p><div class="list-item"><code>commander</code> (NPM) → utilise <code>Command</code></div><div class="tree-line">• <code>../commands/run.js</code> (Interne) → utilise <code>runCommand</code></div><div class="tree-line">• <code>../commands/generateSummary.js</code> (Interne) → utilise <code>generateSummary</code></div><div class="tree-line">• <code>node:readline/promises</code> (Node.js) → utilise <code>readline</code></div><div class="list-item"><code>node:process</code> (Node.js) → utilise <code>stdin as input, stdout as output</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/generateSummary.ts"><code>src/commands/generateSummary.ts</code></a></div><p>Complexité et maintenance : 150 lignes • 🟢 Faible (27)</p><p>Fonctions : <code>generateSummary()</code></p><div class="tree-line">Types/Interfaces : <code>SummaryData</code></div><p>Exports publics : <code>generateSummary</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/run.ts"><code>src/commands/run.ts</code></a></div><p>Complexité et maintenance : 459 lignes • 🟡 Modérée (108)</p><p>Fonctions : <code>buildTree()</code>, <code>renderTree()</code>, <code>analyzeFile()</code>, <code>getComplexityLevel()</code>, <code>formatAISummary()</code>, <code>runCommand()</code>, <code>generatePDF()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>TreeNode</code>, <code>FileAnalysis</code></div><p>Exports publics : <code>runCommand</code></p><p>Dépendances :</p><div class="list-item"><code>globby</code> (NPM) → utilise <code>globby</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, readFileSync, existsSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="list-item"><code>puppeteer</code> (NPM) → utilise <code>puppeteer</code></div><div class="tree-line">• <code>../exporters/html.js</code> (Interne) → utilise <code>exportToHTML</code></div><div class="tree-line">• <code>../ai/analyzer.js</code> (Interne) → utilise <code>askAIDetailed, type AIAnalysisOptions</code></div><div class="tree-line">• <code>../analyzers/languageAnalyzer.js</code> (Interne) → utilise <code>getAnalyzer, getSupportedExtensions</code></div><div class="tree-line">• <code>../cache/cacheManager.js</code> (Interne) → utilise <code>CacheManager</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/exporters/html.ts"><code>src/exporters/html.ts</code></a></div><p>Complexité et maintenance : 894 lignes • 🟠 Élevée (152)</p><p>Fonctions : <code>exportToHTML()</code>, <code>toggleTheme()</code>, <code>sanitizeMermaidGraph()</code>, <code>generateHierarchyGraph()</code>, <code>sanitizeLabel()</code>, <code>getFileExtension()</code>, <code>getNodeStyle()</code>, <code>traverse()</code>, <code>getDefaultHierarchyGraph()</code>, <code>generateDataFlowGraph()</code>, <code>formatRisksSection()</code>, <code>formatText()</code></p><div class="tree-line">Types/Interfaces : <code>TreeStructure</code></div><p>Exports publics : <code>exportToHTML</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="tree-line">• <code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code> (NPM) → utilise <code>mermaid</code></div><p>---</p><h2>📦 Modules externes</h2><div class="table-container"><table><tr><th>Module</th><th>Type</th><th>Occurrences</th></tr><tr><td><code>../ai/analyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../analyzers/languageAnalyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../cache/cacheManager.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/generateSummary.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/run.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../exporters/html.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>commander</code></td><td>NPM</td><td>1</td></tr><tr><td><code>globby</code></td><td>NPM</td><td>1</td></tr><tr><td><code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code></td><td>NPM</td><td>1</td></tr><tr><td><code>node:crypto</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:fs</code></td><td>Node.js</td><td>4</td></tr><tr><td><code>node:path</code></td><td>Node.js</td><td>5</td></tr><tr><td><code>node:process</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:readline/promises</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>puppeteer</code></td><td>NPM</td><td>1</td></tr></table></div></div>
591
-
592
- </div>
593
-
594
- <script>
595
- function toggleTheme() {
596
- const root = document.documentElement;
597
- const next = root.dataset.theme === "dark" ? "light" : "dark";
598
- root.dataset.theme = next;
599
- localStorage.setItem("theme", next);
600
- location.reload();
601
- }
602
-
603
- document.documentElement.dataset.theme = localStorage.getItem("theme") || "dark";
604
-
605
- const originalHTML = document.getElementById("content-area").innerHTML;
606
-
607
- document.getElementById("search").addEventListener("input", e => {
608
- const term = e.target.value.trim();
609
- const container = document.getElementById("content-area");
610
-
611
- if (!term) {
612
- container.innerHTML = originalHTML;
613
- return;
614
- }
615
-
616
- const regex = new RegExp("(" + term.replace(/[.*+?\${}()|[\]\\]/g, "\\$&") + ")", "gi");
617
- container.innerHTML = originalHTML.replace(regex, "<mark>$1</mark>");
618
-
619
- const first = container.querySelector("mark");
620
- if (first) first.scrollIntoView({ behavior: "smooth", block: "center" });
621
- });
622
-
623
- window.addEventListener('load', () => {
624
- setTimeout(() => {
625
- document.querySelectorAll('.mermaid').forEach(el => {
626
- if (!el.querySelector('svg') && !el.querySelector('.error-message')) {
627
- const errorMsg = document.createElement('div');
628
- errorMsg.className = 'error-message';
629
- errorMsg.textContent = 'Erreur de rendu du graphe';
630
- el.appendChild(errorMsg);
631
- }
632
- });
633
- }, 3000);
634
- });
635
- </script>
636
-
637
- </body>
638
- </html>
package/docs/report.pdf DELETED
Binary file
package/docs/summary.md DELETED
@@ -1,16 +0,0 @@
1
- # 📊 Vue d'ensemble du Projet – DocsToDev
2
-
3
- > 📅 **Rapport généré le :** vendredi 9 janvier 2026 à 10:01
4
-
5
- ## 🚀 État des lieux
6
- Salut ! J'ai passé ton projet au peigne fin. Voici un résumé rapide de ce que j'ai trouvé :
7
- - **Volume traité :** 10 fichiers analysés avec succès.
8
- - **Diagnostic :** La structure est claire et l'analyse est complète. ✅
9
-
10
- ## 🧭 Navigation Rapide
11
- Pour aller plus loin, tu peux consulter les documents suivants :
12
- - **[📂 Arborescence & Analyse](../docs/docs-to-dev.md)** : Pour comprendre la vocation de chaque fichier et les capacités du système.
13
- - **[💻 Code Source](../)** : Pour retourner explorer la racine de ton projet.
14
-
15
- ---
16
- *DocsToDev – Ton allié pour une documentation technique vivante et intelligente.*