PaulARNON commited on
Commit
1d1c294
·
verified ·
1 Parent(s): 2097954

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +548 -19
  3. prompts.txt +0 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Cr
3
- emoji: 💻
4
- colorFrom: green
5
- colorTo: green
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: cr
3
+ emoji: 🐳
4
+ colorFrom: red
5
+ colorTo: gray
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,548 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Générateur de Comptes Rendus</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script>
9
+ <style>
10
+ .file-upload {
11
+ position: relative;
12
+ display: flex;
13
+ flex-direction: column;
14
+ align-items: center;
15
+ padding: 2rem;
16
+ border: 2px dashed #3b82f6;
17
+ border-radius: 0.5rem;
18
+ background-color: #f8fafc;
19
+ transition: all 0.3s ease;
20
+ }
21
+
22
+ .file-upload:hover {
23
+ border-color: #2563eb;
24
+ background-color: #eff6ff;
25
+ }
26
+
27
+ .file-upload input {
28
+ position: absolute;
29
+ width: 100%;
30
+ height: 100%;
31
+ opacity: 0;
32
+ cursor: pointer;
33
+ }
34
+
35
+ .progress-bar {
36
+ width: 100%;
37
+ height: 8px;
38
+ background-color: #e5e7eb;
39
+ border-radius: 4px;
40
+ overflow: hidden;
41
+ margin-top: 1rem;
42
+ }
43
+
44
+ .progress {
45
+ height: 100%;
46
+ background-color: #3b82f6;
47
+ transition: width 0.3s ease;
48
+ }
49
+
50
+ .report-preview {
51
+ max-height: 400px;
52
+ overflow-y: auto;
53
+ border: 1px solid #e5e7eb;
54
+ padding: 1rem;
55
+ background-color: white;
56
+ border-radius: 0.5rem;
57
+ }
58
+
59
+ .settings-panel {
60
+ transition: all 0.3s ease;
61
+ max-height: 0;
62
+ overflow: hidden;
63
+ }
64
+
65
+ .settings-panel.open {
66
+ max-height: 500px;
67
+ padding: 1rem;
68
+ border: 1px solid #e5e7eb;
69
+ border-radius: 0.5rem;
70
+ margin-top: 1rem;
71
+ }
72
+
73
+ @keyframes spin {
74
+ 0% { transform: rotate(0deg); }
75
+ 100% { transform: rotate(360deg); }
76
+ }
77
+
78
+ .spinner {
79
+ animation: spin 1s linear infinite;
80
+ }
81
+ </style>
82
+ </head>
83
+ <body class="bg-gray-50 min-h-screen">
84
+ <div class="container mx-auto px-4 py-8">
85
+ <header class="mb-8 text-center">
86
+ <h1 class="text-3xl font-bold text-blue-800 mb-2">Générateur de Comptes Rendus</h1>
87
+ <p class="text-gray-600">Transformez vos transcriptions de réunion en comptes rendus professionnels</p>
88
+ </header>
89
+
90
+ <div class="max-w-4xl mx-auto bg-white rounded-xl shadow-md overflow-hidden">
91
+ <!-- Paramètres API -->
92
+ <div class="p-6 border-b">
93
+ <button id="settings-toggle" class="flex items-center text-blue-600 hover:text-blue-800">
94
+ <i class="fas fa-cog mr-2"></i>
95
+ Paramètres API
96
+ </button>
97
+
98
+ <div id="settings-panel" class="settings-panel">
99
+ <div class="mb-4">
100
+ <label class="block text-gray-700 mb-2" for="api-key">Clé API Mistral AI</label>
101
+ <input type="password" id="api-key" placeholder="Entrez votre clé API" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
102
+ </div>
103
+ <div class="mb-4">
104
+ <label class="block text-gray-700 mb-2" for="model-select">Modèle</label>
105
+ <select id="model-select" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
106
+ <option value="mistral-tiny">Mistral Tiny</option>
107
+ <option value="mistral-small">Mistral Small</option>
108
+ <option value="mistral-medium" selected>Mistral Medium</option>
109
+ <option value="mistral-large">Mistral Large</option>
110
+ </select>
111
+ </div>
112
+ <button id="save-settings" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition">
113
+ Enregistrer les paramètres
114
+ </button>
115
+ </div>
116
+ </div>
117
+
118
+ <!-- Zone de dépôt des fichiers -->
119
+ <div class="p-6 border-b">
120
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">1. Importer votre réunion</h2>
121
+ <div class="file-upload mb-4">
122
+ <i class="fas fa-cloud-upload-alt text-4xl text-blue-500 mb-2"></i>
123
+ <p class="text-gray-700 mb-2">Glissez-déposez vos fichiers ici</p>
124
+ <p class="text-sm text-gray-500 mb-2">ou</p>
125
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition">
126
+ Parcourir les fichiers
127
+ </button>
128
+ <input type="file" id="file-input" accept=".pdf,.doc,.docx,.txt,.mp3,.mp4,.wav" multiple>
129
+ </div>
130
+
131
+ <div id="file-list" class="mt-4 hidden">
132
+ <h3 class="font-medium text-gray-700 mb-2">Fichiers sélectionnés :</h3>
133
+ <ul id="file-items" class="space-y-2"></ul>
134
+ <div class="progress-bar mt-4 hidden" id="upload-progress">
135
+ <div class="progress" id="progress-indicator" style="width: 0%"></div>
136
+ </div>
137
+ </div>
138
+ </div>
139
+
140
+ <!-- Options du compte rendu -->
141
+ <div class="p-6 border-b">
142
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">2. Personnaliser le compte rendu</h2>
143
+
144
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
145
+ <div>
146
+ <label class="block text-gray-700 mb-2" for="report-length">Longueur</label>
147
+ <select id="report-length" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
148
+ <option value="short">Court (5-10 points clés)</option>
149
+ <option value="medium" selected>Moyen (résumé détaillé)</option>
150
+ <option value="long">Long (transcription annotée)</option>
151
+ </select>
152
+ </div>
153
+
154
+ <div>
155
+ <label class="block text-gray-700 mb-2" for="report-style">Style et ton</label>
156
+ <select id="report-style" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
157
+ <option value="formal">Formel</option>
158
+ <option value="professional" selected>Professionnel</option>
159
+ <option value="concise">Concis</option>
160
+ <option value="friendly">Amical</option>
161
+ </select>
162
+ </div>
163
+
164
+ <div>
165
+ <label class="block text-gray-700 mb-2" for="report-audience">Destinataire</label>
166
+ <select id="report-audience" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
167
+ <option value="executives">Élus</option>
168
+ <option value="management" selected>Direction</option>
169
+ <option value="technical">Techniciens</option>
170
+ <option value="partners">Partenaires</option>
171
+ </select>
172
+ </div>
173
+
174
+ <div>
175
+ <label class="block text-gray-700 mb-2" for="report-language">Langue</label>
176
+ <select id="report-language" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
177
+ <option value="fr" selected>Français</option>
178
+ <option value="en">Anglais</option>
179
+ <option value="de">Allemand</option>
180
+ <option value="es">Espagnol</option>
181
+ </select>
182
+ </div>
183
+ </div>
184
+
185
+ <div class="mt-6">
186
+ <label class="block text-gray-700 mb-2" for="additional-notes">Notes supplémentaires</label>
187
+ <textarea id="additional-notes" rows="3" class="w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Points spécifiques à inclure, format particulier, etc."></textarea>
188
+ </div>
189
+ </div>
190
+
191
+ <!-- Génération et résultat -->
192
+ <div class="p-6">
193
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">3. Générer et exporter</h2>
194
+
195
+ <button id="generate-btn" class="bg-blue-600 text-white px-6 py-3 rounded-lg hover:bg-blue-700 transition flex items-center justify-center w-full mb-6">
196
+ <i class="fas fa-magic mr-2"></i> Générer le compte rendu
197
+ </button>
198
+
199
+ <div id="loading-indicator" class="hidden text-center py-4">
200
+ <div class="inline-block spinner text-blue-500 text-4xl mb-2">
201
+ <i class="fas fa-circle-notch"></i>
202
+ </div>
203
+ <p class="text-gray-600">Analyse et génération en cours...</p>
204
+ <p class="text-sm text-gray-500">Cette opération peut prendre quelques minutes</p>
205
+ </div>
206
+
207
+ <div id="result-container" class="hidden">
208
+ <div class="flex justify-between items-center mb-4">
209
+ <h3 class="text-lg font-medium text-gray-800">Compte rendu généré</h3>
210
+ <div class="flex space-x-2">
211
+ <button id="regenerate-btn" class="text-blue-600 hover:text-blue-800 flex items-center">
212
+ <i class="fas fa-sync-alt mr-1"></i> Régénérer
213
+ </button>
214
+ <button id="download-pdf" class="text-blue-600 hover:text-blue-800 flex items-center">
215
+ <i class="fas fa-file-pdf mr-1"></i> Télécharger PDF
216
+ </button>
217
+ <button id="copy-to-clipboard" class="text-blue-600 hover:text-blue-800 flex items-center">
218
+ <i class="fas fa-copy mr-1"></i> Copier
219
+ </button>
220
+ </div>
221
+ </div>
222
+
223
+ <div id="report-preview" class="report-preview bg-gray-50">
224
+ <!-- Le compte rendu sera inséré ici -->
225
+ </div>
226
+
227
+ <div class="mt-4 flex justify-end">
228
+ <button id="download-pdf-full" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition flex items-center">
229
+ <i class="fas fa-file-pdf mr-2"></i> Télécharger en PDF
230
+ </button>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ </div>
235
+
236
+ <footer class="mt-12 text-center text-gray-500 text-sm">
237
+ <p>Générateur de Comptes Rendus © 2023 - Utilise Mistral AI pour la génération de contenu</p>
238
+ </footer>
239
+ </div>
240
+
241
+ <script>
242
+ document.addEventListener('DOMContentLoaded', function() {
243
+ // Gestion des paramètres API
244
+ const settingsToggle = document.getElementById('settings-toggle');
245
+ const settingsPanel = document.getElementById('settings-panel');
246
+
247
+ settingsToggle.addEventListener('click', function() {
248
+ settingsPanel.classList.toggle('open');
249
+ this.querySelector('i').classList.toggle('fa-spin');
250
+ });
251
+
252
+ // Sauvegarde des paramètres
253
+ document.getElementById('save-settings').addEventListener('click', function() {
254
+ const apiKey = document.getElementById('api-key').value;
255
+ const model = document.getElementById('model-select').value;
256
+
257
+ if (!apiKey) {
258
+ alert('Veuillez entrer une clé API valide');
259
+ return;
260
+ }
261
+
262
+ localStorage.setItem('mistralApiKey', apiKey);
263
+ localStorage.setItem('mistralModel', model);
264
+
265
+ alert('Paramètres enregistrés avec succès !');
266
+ settingsPanel.classList.remove('open');
267
+ settingsToggle.querySelector('i').classList.remove('fa-spin');
268
+ });
269
+
270
+ // Chargement des paramètres sauvegardés
271
+ const savedApiKey = localStorage.getItem('mistralApiKey');
272
+ const savedModel = localStorage.getItem('mistralModel');
273
+
274
+ if (savedApiKey) {
275
+ document.getElementById('api-key').value = savedApiKey;
276
+ }
277
+
278
+ if (savedModel) {
279
+ document.getElementById('model-select').value = savedModel;
280
+ }
281
+
282
+ // Gestion des fichiers
283
+ const fileInput = document.getElementById('file-input');
284
+ const fileList = document.getElementById('file-list');
285
+ const fileItems = document.getElementById('file-items');
286
+ const uploadProgress = document.getElementById('upload-progress');
287
+ const progressIndicator = document.getElementById('progress-indicator');
288
+
289
+ fileInput.addEventListener('change', function(e) {
290
+ fileItems.innerHTML = '';
291
+
292
+ if (e.target.files.length > 0) {
293
+ fileList.classList.remove('hidden');
294
+
295
+ for (let i = 0; i < e.target.files.length; i++) {
296
+ const file = e.target.files[i];
297
+ const listItem = document.createElement('li');
298
+ listItem.className = 'flex items-center justify-between bg-gray-100 p-2 rounded';
299
+
300
+ listItem.innerHTML = `
301
+ <div class="flex items-center">
302
+ <i class="fas fa-file-alt text-blue-500 mr-2"></i>
303
+ <span>${file.name}</span>
304
+ <span class="text-xs text-gray-500 ml-2">(${(file.size / 1024 / 1024).toFixed(2)} MB)</span>
305
+ </div>
306
+ <button class="text-red-500 hover:text-red-700 remove-file" data-index="${i}">
307
+ <i class="fas fa-times"></i>
308
+ </button>
309
+ `;
310
+
311
+ fileItems.appendChild(listItem);
312
+ }
313
+
314
+ // Simuler l'upload
315
+ simulateUpload();
316
+ } else {
317
+ fileList.classList.add('hidden');
318
+ }
319
+ });
320
+
321
+ // Suppression de fichiers
322
+ fileItems.addEventListener('click', function(e) {
323
+ if (e.target.classList.contains('remove-file') || e.target.parentElement.classList.contains('remove-file')) {
324
+ const button = e.target.classList.contains('remove-file') ? e.target : e.target.parentElement;
325
+ const index = parseInt(button.getAttribute('data-index'));
326
+
327
+ // Créer un nouveau DataTransfer et supprimer le fichier
328
+ const dataTransfer = new DataTransfer();
329
+ const inputFiles = fileInput.files;
330
+
331
+ for (let i = 0; i < inputFiles.length; i++) {
332
+ if (i !== index) {
333
+ dataTransfer.items.add(inputFiles[i]);
334
+ }
335
+ }
336
+
337
+ fileInput.files = dataTransfer.files;
338
+ fileInput.dispatchEvent(new Event('change'));
339
+ }
340
+ });
341
+
342
+ function simulateUpload() {
343
+ uploadProgress.classList.remove('hidden');
344
+ let progress = 0;
345
+
346
+ const interval = setInterval(() => {
347
+ progress += Math.random() * 10;
348
+ if (progress > 100) progress = 100;
349
+ progressIndicator.style.width = `${progress}%`;
350
+
351
+ if (progress === 100) {
352
+ clearInterval(interval);
353
+ setTimeout(() => {
354
+ uploadProgress.classList.add('hidden');
355
+ }, 500);
356
+ }
357
+ }, 200);
358
+ }
359
+
360
+ // Génération du compte rendu
361
+ const generateBtn = document.getElementById('generate-btn');
362
+ const loadingIndicator = document.getElementById('loading-indicator');
363
+ const resultContainer = document.getElementById('result-container');
364
+ const reportPreview = document.getElementById('report-preview');
365
+
366
+ generateBtn.addEventListener('click', function() {
367
+ if (!fileInput.files || fileInput.files.length === 0) {
368
+ alert('Veuillez sélectionner au moins un fichier');
369
+ return;
370
+ }
371
+
372
+ const apiKey = localStorage.getItem('mistralApiKey');
373
+ if (!apiKey) {
374
+ alert('Veuillez configurer votre clé API dans les paramètres');
375
+ return;
376
+ }
377
+
378
+ // Afficher l'indicateur de chargement
379
+ generateBtn.classList.add('hidden');
380
+ loadingIndicator.classList.remove('hidden');
381
+
382
+ // Simuler la génération (dans une vraie implémentation, vous appelleriez l'API Mistral ici)
383
+ setTimeout(() => {
384
+ loadingIndicator.classList.add('hidden');
385
+ resultContainer.classList.remove('hidden');
386
+
387
+ // Générer un exemple de compte rendu basé sur les options
388
+ generateSampleReport();
389
+ }, 3000);
390
+ });
391
+
392
+ function generateSampleReport() {
393
+ const length = document.getElementById('report-length').value;
394
+ const style = document.getElementById('report-style').value;
395
+ const audience = document.getElementById('report-audience').value;
396
+ const language = document.getElementById('report-language').value;
397
+ const notes = document.getElementById('additional-notes').value;
398
+
399
+ let reportContent = '';
400
+ const date = new Date().toLocaleDateString('fr-FR');
401
+
402
+ // En-tête basé sur le destinataire
403
+ if (audience === 'executives') {
404
+ reportContent += `<h2 class="text-xl font-bold mb-4">COMPTE RENDU DE RÉUNION À L'ATTENTION DES ÉLUS</h2>`;
405
+ } else if (audience === 'management') {
406
+ reportContent += `<h2 class="text-xl font-bold mb-4">COMPTE RENDU DE RÉUNION À L'ATTENTION DE LA DIRECTION</h2>`;
407
+ } else if (audience === 'technical') {
408
+ reportContent += `<h2 class="text-xl font-bold mb-4">COMPTE RENDU TECHNIQUE DE RÉUNION</h2>`;
409
+ } else {
410
+ reportContent += `<h2 class="text-xl font-bold mb-4">COMPTE RENDU DE RÉUNION À L'ATTENTION DES PARTENAIRES</h2>`;
411
+ }
412
+
413
+ reportContent += `<p class="text-gray-600 mb-6">Date : ${date}</p>`;
414
+
415
+ // Contenu basé sur la longueur
416
+ if (length === 'short') {
417
+ reportContent += `
418
+ <h3 class="font-bold text-lg mb-2">Points clés :</h3>
419
+ <ul class="list-disc pl-5 mb-4 space-y-1">
420
+ <li>Décision prise concernant le budget 2024</li>
421
+ <li>Validation du nouveau projet d'infrastructure</li>
422
+ <li>Échéances importantes à venir</li>
423
+ <li>Points bloquants identifiés</li>
424
+ <li>Actions à mener pour le prochain trimestre</li>
425
+ </ul>
426
+ `;
427
+ } else if (length === 'medium') {
428
+ reportContent += `
429
+ <h3 class="font-bold text-lg mb-2">Ordre du jour :</h3>
430
+ <ol class="list-decimal pl-5 mb-4 space-y-2">
431
+ <li>Revue des décisions de la réunion précédente</li>
432
+ <li>Présentation du bilan trimestriel</li>
433
+ <li>Discussion sur les projets en cours</li>
434
+ <li>Points divers</li>
435
+ </ol>
436
+
437
+ <h3 class="font-bold text-lg mb-2">Résumé des discussions :</h3>
438
+ <p class="mb-2">La réunion a débuté par un tour de table où chaque participant a pu exprimer ses préoccupations. Le directeur a présenté un bilan positif du trimestre écoulé, avec une croissance de 12% par rapport à l'année précédente.</p>
439
+ <p class="mb-2">Le point principal de discussion a concerné le nouveau projet d'infrastructure. Après débat, il a été décidé de lancer la phase pilote début janvier.</p>
440
+
441
+ <h3 class="font-bold text-lg mb-2">Décisions prises :</h3>
442
+ <ul class="list-disc pl-5 mb-4 space-y-1">
443
+ <li>Approbation du budget 2024 avec quelques ajustements</li>
444
+ <li>Lancement du projet pilote d'infrastructure en janvier</li>
445
+ <li>Organisation d'une réunion de suivi le 15 février</li>
446
+ </ul>
447
+ `;
448
+ } else {
449
+ reportContent += `
450
+ <h3 class="font-bold text-lg mb-2">Participants :</h3>
451
+ <ul class="list-disc pl-5 mb-4 space-y-1">
452
+ <li>Jean Dupont (Directeur)</li>
453
+ <li>Marie Martin (Responsable Finances)</li>
454
+ <li>Pierre Durand (Responsable Projets)</li>
455
+ <li>Sophie Lambert (Responsable RH)</li>
456
+ </ul>
457
+
458
+ <h3 class="font-bold text-lg mb-2">Détail des discussions :</h3>
459
+
460
+ <h4 class="font-bold mt-4">1. Revue des décisions précédentes</h4>
461
+ <p class="mb-2">Jean Dupont a ouvert la réunion en rappelant les décisions prises lors de la dernière rencontre. Marie Martin a confirmé que toutes les actions avaient été menées à bien, à l'exception du recrutement du nouveau comptable, retardé en raison du marché de l'emploi tendu.</p>
462
+
463
+ <h4 class="font-bold mt-4">2. Bilan trimestriel</h4>
464
+ <p class="mb-2">Marie Martin a présenté les résultats financiers :</p>
465
+ <ul class="list-disc pl-5 mb-2 space-y-1">
466
+ <li>Chiffre d'affaires : +12% vs. 2022</li>
467
+ <li>Marge brute : 34% (stable)</li>
468
+ <li>Investissements : 2.3M€ (dont 1.5M€ pour le nouveau projet)</li>
469
+ </ul>
470
+ <p class="mb-2">Pierre Durand a ajouté que tous les projets étaient dans les temps, avec un léger retard sur le projet B (2 semaines).</p>
471
+
472
+ <h4 class="font-bold mt-4">3. Nouveau projet d'infrastructure</h4>
473
+ <p class="mb-2">Discussion approfondie sur les différentes options. Sophie Lambert a souligné les implications RH. Après 45 minutes de débat, décision prise de lancer la phase pilote avec les paramètres suivants :</p>
474
+ <ul class="list-disc pl-5 mb-2 space-y-1">
475
+ <li>Budget : 1.5M€</li>
476
+ <li>Équipe : 5 personnes à plein temps</li>
477
+ <li>Durée : 6 mois</li>
478
+ <li>Livrables : rapport d'évaluation pour décision finale</li>
479
+ </ul>
480
+
481
+ <h3 class="font-bold text-lg mt-6 mb-2">Plan d'action :</h3>
482
+ <table class="min-w-full border mb-4">
483
+ <thead class="bg-gray-100">
484
+ <tr>
485
+ <th class="border px-4 py-2">Action</th>
486
+ <th class="border px-4 py-2">Responsable</th>
487
+ <th class="border px-4 py-2">Échéance</th>
488
+ </tr>
489
+ </thead>
490
+ <tbody>
491
+ <tr>
492
+ <td class="border px-4 py-2">Préparer le contrat pour le nouveau projet</td>
493
+ <td class="border px-4 py-2">Marie Martin</td>
494
+ <td class="border px-4 py-2">15/12/2023</td>
495
+ </tr>
496
+ <tr class="bg-gray-50">
497
+ <td class="border px-4 py-2">Recruter l'équipe projet</td>
498
+ <td class="border px-4 py-2">Sophie Lambert</td>
499
+ <td class="border px-4 py-2">10/01/2024</td>
500
+ </tr>
501
+ </tbody>
502
+ </table>
503
+ `;
504
+ }
505
+
506
+ // Ajouter les notes si elles existent
507
+ if (notes) {
508
+ reportContent += `
509
+ <h3 class="font-bold text-lg mb-2">Notes supplémentaires :</h3>
510
+ <p>${notes}</p>
511
+ `;
512
+ }
513
+
514
+ reportPreview.innerHTML = reportContent;
515
+ }
516
+
517
+ // Bouton de régénération
518
+ document.getElementById('regenerate-btn').addEventListener('click', function() {
519
+ resultContainer.classList.add('hidden');
520
+ generateBtn.classList.remove('hidden');
521
+ });
522
+
523
+ // Bouton de téléchargement PDF (simulé)
524
+ document.getElementById('download-pdf-full').addEventListener('click', function() {
525
+ alert('Dans une implémentation réelle, cela générerait un PDF du compte rendu');
526
+ });
527
+
528
+ // Bouton de copie
529
+ document.getElementById('copy-to-clipboard').addEventListener('click', function() {
530
+ const range = document.createRange();
531
+ range.selectNode(reportPreview);
532
+ window.getSelection().removeAllRanges();
533
+ window.getSelection().addRange(range);
534
+ document.execCommand('copy');
535
+ window.getSelection().removeAllRanges();
536
+
537
+ // Afficher un feedback
538
+ const originalText = this.innerHTML;
539
+ this.innerHTML = '<i class="fas fa-check mr-1"></i> Copié !';
540
+
541
+ setTimeout(() => {
542
+ this.innerHTML = originalText;
543
+ }, 2000);
544
+ });
545
+ });
546
+ </script>
547
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=PaulARNON/cr" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
548
+ </html>
prompts.txt ADDED
File without changes