docstodev 1.0.3 → 2.0.0
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.
- package/dist/ai/analyzer.d.ts +3 -0
- package/dist/ai/analyzer.d.ts.map +1 -0
- package/dist/ai/analyzer.js +45 -0
- package/dist/ai/analyzer.js.map +1 -0
- package/dist/analyzers/languageAnalyzer.d.ts +20 -0
- package/dist/analyzers/languageAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/languageAnalyzer.js +513 -0
- package/dist/analyzers/languageAnalyzer.js.map +1 -0
- package/dist/cache/cacheManager.d.ts +38 -0
- package/dist/cache/cacheManager.d.ts.map +1 -0
- package/dist/cache/cacheManager.js +141 -0
- package/dist/cache/cacheManager.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +316 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/generateSummary.d.ts +18 -0
- package/dist/commands/generateSummary.d.ts.map +1 -0
- package/dist/commands/generateSummary.js +116 -0
- package/dist/commands/generateSummary.js.map +1 -0
- package/dist/commands/run.d.ts +5 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +326 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/exporters/html.d.ts +6 -0
- package/dist/exporters/html.d.ts.map +1 -0
- package/dist/exporters/html.js +596 -0
- package/dist/exporters/html.js.map +1 -0
- package/docs/docs-to-dev.md +240 -0
- package/docs/report.html +633 -0
- package/docs/report.pdf +0 -0
- package/docs/summary.md +16 -0
- package/package.json +1 -1
- package/src/ai/analyzer.ts +258 -19
- package/src/commands/run.ts +149 -83
- package/src/exporters/html.ts +302 -48
package/docs/report.html
ADDED
|
@@ -0,0 +1,633 @@
|
|
|
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
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
<div class="controls">
|
|
495
|
+
<input id="search" placeholder="Rechercher dans la documentation..." type="text">
|
|
496
|
+
<button onclick="toggleTheme()">
|
|
497
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
498
|
+
<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"/>
|
|
499
|
+
</svg>
|
|
500
|
+
Thème
|
|
501
|
+
</button>
|
|
502
|
+
<button onclick="window.print()">
|
|
503
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
504
|
+
<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"/>
|
|
505
|
+
</svg>
|
|
506
|
+
Exporter PDF
|
|
507
|
+
</button>
|
|
508
|
+
</div>
|
|
509
|
+
|
|
510
|
+
<h2>Architecture du projet</h2>
|
|
511
|
+
<div class="graphs-grid">
|
|
512
|
+
<div class="graph-container">
|
|
513
|
+
<div class="graph-title">Graphe des dépendances</div>
|
|
514
|
+
<div class="mermaid-wrapper">
|
|
515
|
+
<pre class="mermaid">
|
|
516
|
+
graph LR
|
|
517
|
+
index_ts --> run_js:::jsFileStyle
|
|
518
|
+
index_ts --> generateSummary_js:::jsFileStyle
|
|
519
|
+
run_ts --> html_js:::jsFileStyle
|
|
520
|
+
run_ts --> analyzer_js:::jsFileStyle
|
|
521
|
+
run_ts --> languageAnalyzer_js:::jsFileStyle
|
|
522
|
+
run_ts --> cacheManager_js:::jsFileStyle
|
|
523
|
+
|
|
524
|
+
classDef jsFileStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
|
|
525
|
+
classDef tsFileStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
|
|
526
|
+
classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
|
|
527
|
+
classDef componentStyle fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
|
|
528
|
+
classDef functionStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
|
|
529
|
+
classDef serviceStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
|
|
530
|
+
classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
|
|
531
|
+
</pre>
|
|
532
|
+
</div>
|
|
533
|
+
</div>
|
|
534
|
+
|
|
535
|
+
<div class="graph-container">
|
|
536
|
+
<div class="graph-title">Structure du projet</div>
|
|
537
|
+
<div class="mermaid-wrapper">
|
|
538
|
+
<pre class="mermaid">
|
|
539
|
+
graph TD
|
|
540
|
+
node0["📄 package-lock.json"]:::configStyle
|
|
541
|
+
node1["📄 package.json"]:::configStyle
|
|
542
|
+
node2["📄 tsconfig.json"]:::configStyle
|
|
543
|
+
node3["📄 srcaianalyzer.ts"]:::tsStyle
|
|
544
|
+
node4["📄 srccachecacheManager.ts"]:::tsStyle
|
|
545
|
+
node5["📄 srcanalyzerslanguageAnalyzer.ts"]:::tsStyle
|
|
546
|
+
node6["📄 srccliindex.ts"]:::tsStyle
|
|
547
|
+
node7["📄 srccommandsgenerateSummary.ts"]:::tsStyle
|
|
548
|
+
node8["📄 srccommandsrun.ts"]:::tsStyle
|
|
549
|
+
node9["📄 srcexportershtml.ts"]:::tsStyle
|
|
550
|
+
|
|
551
|
+
classDef folderStyle fill:#58a6ff,stroke:#1f6feb,stroke-width:2px,color:#fff
|
|
552
|
+
classDef tsStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
|
|
553
|
+
classDef jsStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
|
|
554
|
+
classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
|
|
555
|
+
classDef htmlStyle fill:#e34c26,stroke:#b83c1f,stroke-width:2px,color:#fff
|
|
556
|
+
classDef cssStyle fill:#264de4,stroke:#1b3ba3,stroke-width:2px,color:#fff
|
|
557
|
+
classDef docStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
|
|
558
|
+
classDef fileStyle fill:#8b949e,stroke:#6e7681,stroke-width:2px,color:#fff
|
|
559
|
+
</pre>
|
|
560
|
+
</div>
|
|
561
|
+
</div>
|
|
562
|
+
</div>
|
|
563
|
+
|
|
564
|
+
<div class="graph-container" style="margin-bottom: 3rem;">
|
|
565
|
+
<div class="graph-title">Flux de données</div>
|
|
566
|
+
<div class="mermaid-wrapper">
|
|
567
|
+
<pre class="mermaid">
|
|
568
|
+
graph LR
|
|
569
|
+
A["📥 Input<br/>(fichiers source)"]:::inputStyle --> B["🔍 Analyzer<br/>(analyse code)"]:::analyzerStyle
|
|
570
|
+
B --> C["📊 Parser<br/>(extraction données)"]:::parserStyle
|
|
571
|
+
C --> D["⚙️ Generator<br/>(génération docs)"]:::generatorStyle
|
|
572
|
+
D --> E["📤 Exporter<br/>(export HTML/PDF)"]:::exporterStyle
|
|
573
|
+
E --> F["✅ Output<br/>(documentation)"]:::outputStyle
|
|
574
|
+
|
|
575
|
+
classDef inputStyle fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff
|
|
576
|
+
classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
|
|
577
|
+
classDef parserStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
|
|
578
|
+
classDef generatorStyle fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
|
|
579
|
+
classDef exporterStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
|
|
580
|
+
classDef outputStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
|
|
581
|
+
</pre>
|
|
582
|
+
</div>
|
|
583
|
+
</div>
|
|
584
|
+
|
|
585
|
+
<div id="content-area"><h1>Rapport Technique DocsToDev</h1><p>> 📅 Généré le : vendredi 9 janvier 2026 à 09:13</p><p>> 📊 7 fichiers analysés • 15 dépendances identifiées</p><h2>💡 Analyse Intelligente</h2><section class="component"><h3>1.</h3><p><code>But</code> du <code>Projet</code></p><p><code>Le</code> projet <code>DocsToDev</code> est conçu pour analyser et documenter des projets logiciels de manière automatique.</p><p><code>Il</code> utilise l'intelligence artificielle pour comprendre la structure, les dépendances et la complexité du code, puis génère une documentation claire et lisible.</p><p><code>Le</code> but principal est de faciliter la compréhension et la maintenance des projets logiciels en fournissant une vue d'ensemble détaillée de leur architecture, de leurs composants et de leurs interactions.</p></section><section class="component"><h3>2.</h3><p><code>Design</code> <code>System</code> Détecté</p><p><code>Le</code> projet semble utiliser un design system personnalisé, avec les éléments suivants détectés :</p><div class="list-item"><code>Palette</code> de couleurs : <code>Les</code> couleurs spécifiques utilisées ne sont pas explicitement définies dans les extraits de code fournis, mais il est mentionné que l'analyse peut inclure la détection de la palette de couleurs (<code>primaryColors</code>) dans le design system.</div><div class="list-item"><code>Typographie</code> : <code>Il</code> n'y a pas d'informations spécifiques sur les polices utilisées, mais l'analyse du code peut inclure la détection de la typographie utilisée dans le projet.</div><div class="list-item"><code>Patterns</code> de composants : <code>Les</code> patterns de composants (comme les cards, les modals, les formulaires, etc.) peuvent être détectés et analysés comme partie du design system du projet.</div></section><section class="component"><h3>3.</h3><p>⚠️ <code>Risques</code> <code>Identifi</code>és</p><p><code>Les</code> risques potentiels incluent :</p><div class="list-item">🔴 <code>Critique</code> : Dépendance à des clés API externes (comme la clé GROQ_API_KEY) qui pourraient être exposées ou non sécurisées.</div><p><code>Une</code> faille de sécurité dans le stockage ou l'utilisation de ces clés pourrait compromettre la sécurité du projet.</p><div class="list-item">🟡 <code>Moyen</code> : <code>La</code> complexité du code dans certains fichiers (comme <code>languageAnalyzer</code>.ts`) pourrait rendre la maintenance difficile.</div><p><code>Il</code> est important de maintenir une dette technique faible pour assurer la facilité de modification et d'extension du code.</p><div class="list-item">🟢 <code>Faible</code> : L'utilisation de versions spécifiques de bibliothèques et frameworks pourrait nécessiter des mises à jour régulières pour garantir la compatibilité et la sécurité.</div></section><section class="component"><h3>4.</h3><p>💡 <code>Recommandations</code></p><p><code>Pour</code> améliorer le projet, les actions suivantes sont recommandées :</p><p>1.</p><p><code>Refactoring</code> : <code>Simplifier</code> et modulariser le code complexe pour améliorer la lisibilité et la maintenabilité.</p><p>2.</p><p><code>Optimisations</code> : <code>Utiliser</code> des techniques d'optimisation pour améliorer les performances, comme la mise en cache des résultats d'analyse ou l'utilisation de workers pour les tâches longues.</p><p>3.</p><p>Sécurité : <code>Mettre</code> en place des mesures de sécurité robustes pour protéger les clés API et les données sensibles, comme l'utilisation de variables d'environnement sécurisées ou de services de gestion de secrets.</p><p>4.</p><p><code>Tests</code> <code>Automatis</code>és : Développer des tests unitaires et d'intégration pour garantir la stabilité et la qualité du code.</p><p>5.</p><p><code>Documentation</code> : <code>Maintenir</code> une documentation claire et à jour sur l'architecture, les APIs, et les bonnes pratiques de développement pour faciliter la contribution et la maintenance.</p></section><section class="component"><h3>5.</h3><p><code>Analyse</code> Détaillée des <code>Fichiers</code></p><div class="tree-line">- <code>src/ai/</code>analyzer.ts<code> : </code>Ce` fichier est responsable de l'analyse intelligente du projet, utilisant des options configurables pour déterminer ce qui doit être analysé.</div><p><code>Il</code> exporte des fonctions pour demander une analyse simplifiée ou détaillée.</p><div class="tree-line">- <code>src/cache/</code>cacheManager<code>.ts</code> : Gère le système de cache pour stocker les résultats d'analyse, améliorant ainsi les performances en évitant les analyses redondantes.</div><div class="tree-line">- <code>src/analyzers/</code>languageAnalyzer<code>.ts</code> : <code>Contient</code> des analyseurs pour différents langages de programmation, permettant d'extraire des informations spécifiques à chaque langage.</div><div class="tree-line">- <code>src/cli/</code>index.ts<code> : </code>Point` d'entrée de l'interface de ligne de commande, permettant aux utilisateurs d'exécuter des commandes pour analyser des projets et générer des rapports.</div><div class="tree-line">- <code>src/commands/</code>generateSummary<code>.ts</code> : Génère un résumé du projet analysé, incluant des informations sur les fichiers, la complexité, et les langages détectés.</div><div class="tree-line">- <code>src/commands/</code>run.ts<code> : </code>Ex`écute l'analyse du projet et génère un rapport détaillé, utilisant les informations collectées par les analyseurs.</div><div class="tree-line">- <code>src/exporters/</code>html.ts<code> : </code>Exporte` le rapport d'analyse au format HTML, permettant une visualisation facile des résultats dans un navigateur web.</div></section><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/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/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/cli/index.ts"><code>src/cli/index.ts</code></a></div><p>Complexité et maintenance : 354 lignes • 🟡 Modérée (76)</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>
|
|
586
|
+
|
|
587
|
+
</div>
|
|
588
|
+
|
|
589
|
+
<script>
|
|
590
|
+
function toggleTheme() {
|
|
591
|
+
const root = document.documentElement;
|
|
592
|
+
const next = root.dataset.theme === "dark" ? "light" : "dark";
|
|
593
|
+
root.dataset.theme = next;
|
|
594
|
+
localStorage.setItem("theme", next);
|
|
595
|
+
location.reload();
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
document.documentElement.dataset.theme = localStorage.getItem("theme") || "dark";
|
|
599
|
+
|
|
600
|
+
const originalHTML = document.getElementById("content-area").innerHTML;
|
|
601
|
+
|
|
602
|
+
document.getElementById("search").addEventListener("input", e => {
|
|
603
|
+
const term = e.target.value.trim();
|
|
604
|
+
const container = document.getElementById("content-area");
|
|
605
|
+
|
|
606
|
+
if (!term) {
|
|
607
|
+
container.innerHTML = originalHTML;
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
const regex = new RegExp("(" + term.replace(/[.*+?\${}()|[\]\\]/g, "\\$&") + ")", "gi");
|
|
612
|
+
container.innerHTML = originalHTML.replace(regex, "<mark>$1</mark>");
|
|
613
|
+
|
|
614
|
+
const first = container.querySelector("mark");
|
|
615
|
+
if (first) first.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
window.addEventListener('load', () => {
|
|
619
|
+
setTimeout(() => {
|
|
620
|
+
document.querySelectorAll('.mermaid').forEach(el => {
|
|
621
|
+
if (!el.querySelector('svg') && !el.querySelector('.error-message')) {
|
|
622
|
+
const errorMsg = document.createElement('div');
|
|
623
|
+
errorMsg.className = 'error-message';
|
|
624
|
+
errorMsg.textContent = 'Erreur de rendu du graphe';
|
|
625
|
+
el.appendChild(errorMsg);
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
}, 3000);
|
|
629
|
+
});
|
|
630
|
+
</script>
|
|
631
|
+
|
|
632
|
+
</body>
|
|
633
|
+
</html>
|
package/docs/report.pdf
ADDED
|
Binary file
|
package/docs/summary.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# 📊 Vue d'ensemble du Projet – DocsToDev
|
|
2
|
+
|
|
3
|
+
> 📅 **Rapport généré le :** vendredi 9 janvier 2026 à 09:13
|
|
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.*
|