JTh34 commited on
Commit
b7b022c
·
1 Parent(s): d605345

🚀 Déploiement automatique RAG CHU 2025-07-01 10:05:48

Browse files
frontend/build/asset-manifest.json CHANGED
@@ -1,13 +1,13 @@
1
  {
2
  "files": {
3
- "main.css": "/static/css/main.8406b832.css",
4
- "main.js": "/static/js/main.aba3906b.js",
5
  "index.html": "/index.html",
6
- "main.8406b832.css.map": "/static/css/main.8406b832.css.map",
7
- "main.aba3906b.js.map": "/static/js/main.aba3906b.js.map"
8
  },
9
  "entrypoints": [
10
- "static/css/main.8406b832.css",
11
- "static/js/main.aba3906b.js"
12
  ]
13
  }
 
1
  {
2
  "files": {
3
+ "main.css": "/static/css/main.cc9f8701.css",
4
+ "main.js": "/static/js/main.a2abf0c3.js",
5
  "index.html": "/index.html",
6
+ "main.cc9f8701.css.map": "/static/css/main.cc9f8701.css.map",
7
+ "main.a2abf0c3.js.map": "/static/js/main.a2abf0c3.js.map"
8
  },
9
  "entrypoints": [
10
+ "static/css/main.cc9f8701.css",
11
+ "static/js/main.a2abf0c3.js"
12
  ]
13
  }
frontend/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="fr"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Application RAG pour documents médicaux CHU"/><link rel="manifest" href="/manifest.json"/><title>RAG CHU - Documents Médicaux</title><script defer="defer" src="/static/js/main.aba3906b.js"></script><link href="/static/css/main.8406b832.css" rel="stylesheet"></head><body><noscript>Vous devez activer JavaScript pour utiliser cette application.</noscript><div id="root"></div></body></html>
 
1
+ <!doctype html><html lang="fr"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Application RAG pour documents médicaux CHU"/><link rel="manifest" href="/manifest.json"/><title>RAG CHU - Documents Médicaux</title><script defer="defer" src="/static/js/main.a2abf0c3.js"></script><link href="/static/css/main.cc9f8701.css" rel="stylesheet"></head><body><noscript>Vous devez activer JavaScript pour utiliser cette application.</noscript><div id="root"></div></body></html>
frontend/build/static/css/main.8406b832.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/css/main.8406b832.css","mappings":"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","sources":["index.css","App.css"],"sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #f5f7fa;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n* {\n box-sizing: border-box;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n}\n\n.card {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n padding: 24px;\n margin-bottom: 20px;\n}\n\n.btn {\n background: #3b82f6;\n color: white;\n border: none;\n padding: 12px 24px;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n transition: background-color 0.2s;\n}\n\n.btn:hover {\n background: #2563eb;\n}\n\n.btn:disabled {\n background: #9ca3af;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n background: #6b7280;\n}\n\n.btn-secondary:hover {\n background: #4b5563;\n}\n\n.input {\n width: 100%;\n padding: 12px;\n border: 2px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: border-color 0.2s;\n}\n\n.input:focus {\n outline: none;\n border-color: #3b82f6;\n}\n\n.textarea {\n min-height: 120px;\n resize: vertical;\n}\n\n.loading {\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 3px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: #fff;\n animation: spin 1s ease-in-out infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n.alert {\n padding: 12px 16px;\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 14px;\n}\n\n.alert-error {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #dc2626;\n}\n\n.alert-success {\n background: #f0fdf4;\n border: 1px solid #bbf7d0;\n color: #166534;\n}\n\n.alert-warning {\n background: #fffbeb;\n border: 1px solid #fed7aa;\n color: #d97706;\n} ","/* Reset et base */\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n background: linear-gradient(135deg, #1e40af 0%, #0f766e 100%);\n min-height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n margin: 0;\n padding: 0;\n}\n\n.App {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\n/* Header */\n.app-header {\n background: linear-gradient(90deg, #1e40af 0%, #0369a1 50%, #f59e0b 100%);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n padding: 1rem 2rem;\n position: relative;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n.app-header h1 {\n color: white;\n font-size: 1.8rem;\n margin-bottom: 0.5rem;\n}\n\n.app-header p {\n color: rgba(255, 255, 255, 0.8);\n font-size: 1rem;\n}\n\n/* Layout principal en 3 colonnes */\n.app-grid {\n display: flex;\n min-height: calc(100vh - 120px);\n gap: 1rem;\n padding: 1rem;\n flex: 1;\n max-width: 100vw;\n overflow-x: hidden;\n}\n\n/* Colonne gauche - Documents (étroite) */\n.left-column {\n width: 260px;\n min-width: 240px;\n max-width: 300px;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex-shrink: 1;\n}\n\n/* Colonne centre - Chat (large) */\n.center-column {\n flex: 1;\n min-width: 300px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Colonne droite - Console (fixe) */\n.right-column {\n width: 320px;\n min-width: 280px;\n max-width: 350px;\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n}\n\n/* Cards communes */\n.card {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(15px);\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\n padding: 1.5rem;\n color: white;\n}\n\n.card h2 {\n margin-bottom: 1rem;\n font-size: 1.2rem;\n color: white;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n/* Upload zone (compacte) */\n.upload-zone {\n border: 2px dashed rgba(255, 255, 255, 0.3);\n border-radius: 12px;\n padding: 1rem;\n text-align: center;\n cursor: pointer;\n transition: all 0.3s ease;\n min-height: 100px;\n}\n\n.upload-zone:hover,\n.upload-zone.drag-active {\n border-color: rgba(255, 255, 255, 0.6);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.upload-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n font-weight: 300;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.upload-text {\n font-size: 0.9rem;\n color: rgba(255, 255, 255, 0.8);\n margin-bottom: 0.5rem;\n}\n\n.upload-hint {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Liste documents (compacte) */\n.documents-list {\n max-height: 300px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.document-item {\n padding: 0.75rem;\n margin-bottom: 0.5rem;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n}\n\n.document-item:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.document-item.selected {\n border-color: #f59e0b;\n background: rgba(245, 158, 11, 0.2);\n}\n\n.document-name {\n font-size: 0.85rem;\n font-weight: 600;\n margin-bottom: 0.25rem;\n}\n\n.document-status {\n font-size: 0.7rem;\n opacity: 0.8;\n}\n\n/* Interface Chat (centre) */\n.chat-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.chat-messages {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n max-height: calc(100vh - 300px);\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.message {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n}\n\n.message.message-user {\n align-self: flex-end;\n}\n\n.message.message-assistant {\n align-self: flex-start;\n}\n\n.message-content {\n padding: 1rem 1.5rem;\n border-radius: 18px;\n line-height: 1.5;\n word-wrap: break-word;\n overflow-wrap: break-word;\n max-width: 100%;\n}\n\n.message-user .message-content {\n background: linear-gradient(135deg, #0369a1, #0f766e);\n color: white;\n}\n\n.message-assistant .message-content {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: white;\n}\n\n.chat-input-container {\n padding: 1rem;\n border-top: 1px solid rgba(255, 255, 255, 0.2);\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.chat-input {\n flex: 1;\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.3);\n border-radius: 12px;\n padding: 0.75rem 1rem;\n color: white;\n resize: none;\n min-height: 44px;\n max-height: 120px;\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.chat-input::placeholder {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.chat-input:focus {\n outline: none;\n border-color: rgba(255, 255, 255, 0.5);\n}\n\n/* Console de Debug (droite) */\n.debug-console {\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(10px);\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.debug-console-header {\n padding: 1rem 1.5rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.debug-console-header h3 {\n color: #f59e0b;\n font-size: 1rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.debug-console-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 1rem;\n font-family: 'Monaco', 'Menlo', monospace;\n font-size: 0.8rem;\n line-height: 1.4;\n max-height: calc(100vh - 200px);\n}\n\n.debug-log {\n margin-bottom: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border-left: 3px solid;\n background: rgba(255, 255, 255, 0.05);\n}\n\n.debug-log.info {\n border-left-color: #3b82f6;\n color: #93c5fd;\n}\n\n.debug-log.success {\n border-left-color: #0f766e;\n color: #5eead4;\n}\n\n.debug-log.warning {\n border-left-color: #d97706;\n color: #fbbf24;\n}\n\n.debug-log.error {\n border-left-color: #ef4444;\n color: #fca5a5;\n}\n\n.debug-log.vision {\n border-left-color: #0369a1;\n color: #7dd3fc;\n}\n\n.debug-log.chunking {\n border-left-color: #0891b2;\n color: #67e8f9;\n}\n\n.debug-log.rag {\n border-left-color: #0f766e;\n color: #5eead4;\n}\n\n.debug-timestamp {\n color: rgba(255, 255, 255, 0.5);\n font-size: 0.7rem;\n margin-right: 0.5rem;\n}\n\n.debug-message {\n word-wrap: break-word;\n}\n\n/* Boutons */\n.btn {\n background: linear-gradient(135deg, #0369a1, #0f766e);\n color: white;\n border: none;\n padding: 0.75rem 1.5rem;\n border-radius: 12px;\n cursor: pointer;\n font-weight: 600;\n transition: all 0.2s ease;\n font-size: 0.9rem;\n}\n\n.btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n}\n\n.btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n}\n\n.btn-secondary {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.btn-small {\n padding: 0.5rem 1rem;\n font-size: 0.8rem;\n}\n\n/* Alerts */\n.alert {\n padding: 0.75rem 1rem;\n border-radius: 8px;\n margin-bottom: 1rem;\n font-size: 0.9rem;\n}\n\n.alert-error {\n background: rgba(239, 68, 68, 0.2);\n border: 1px solid #ef4444;\n color: #fca5a5;\n}\n\n.alert-success {\n background: rgba(15, 118, 110, 0.2);\n border: 1px solid #0f766e;\n color: #5eead4;\n}\n\n/* Loading */\n.loading {\n display: inline-block;\n width: 16px;\n height: 16px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top: 2px solid white;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: 3rem 2rem;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.empty-state h3 {\n margin-bottom: 1rem;\n color: white;\n}\n\n/* Scrollbar styling */\n::-webkit-scrollbar {\n width: 6px;\n}\n\n::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n\n::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n\n/* Responsive */\n@media (max-width: 1400px) {\n .app-grid {\n gap: 0.75rem;\n padding: 0.75rem;\n }\n \n .left-column {\n width: 220px;\n min-width: 200px;\n }\n \n .right-column {\n width: 280px;\n min-width: 260px;\n }\n}\n\n@media (max-width: 1200px) {\n .app-grid {\n gap: 0.5rem;\n padding: 0.5rem;\n }\n \n .left-column {\n width: 200px;\n min-width: 180px;\n }\n \n .right-column {\n width: 250px;\n min-width: 220px;\n }\n \n .center-column {\n min-width: 250px;\n }\n}\n\n@media (max-width: 1024px) {\n .app-grid {\n flex-direction: column;\n min-height: auto;\n gap: 0.75rem;\n }\n \n .left-column,\n .right-column {\n width: 100%;\n min-width: auto;\n max-width: none;\n max-height: 300px;\n min-height: 200px;\n }\n \n .center-column {\n min-height: 400px;\n min-width: auto;\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .app-grid {\n padding: 0.5rem;\n gap: 0.5rem;\n }\n \n .app-header {\n padding: 0.5rem 1rem;\n }\n \n .app-header h1 {\n font-size: 1.4rem;\n }\n \n .app-header p {\n font-size: 0.9rem;\n }\n \n .card {\n padding: 1rem;\n }\n \n .left-column,\n .right-column {\n max-height: 250px;\n }\n}\n\n@media (max-width: 480px) {\n .app-grid {\n padding: 0.25rem;\n }\n \n .app-header {\n padding: 0.5rem;\n }\n \n .app-header h1 {\n font-size: 1.2rem;\n }\n \n .card {\n padding: 0.75rem;\n }\n \n .card h2 {\n font-size: 1rem;\n }\n}\n\n/* Animation pour le curseur de streaming */\n.streaming-cursor {\n color: #10b981;\n font-weight: bold;\n animation: blink 1s infinite;\n margin-left: 2px;\n}\n\n@keyframes blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* Spinner médical élégant */\n.medical-spinner {\n width: 20px;\n height: 20px;\n border: 2px solid rgba(255, 255, 255, 0.1);\n border-left: 2px solid #10b981;\n border-radius: 50%;\n animation: medical-spin 1s linear infinite;\n flex-shrink: 0;\n}\n\n@keyframes medical-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n} "],"names":[],"sourceRoot":""}
 
 
frontend/build/static/css/{main.8406b832.css → main.cc9f8701.css} RENAMED
@@ -1,2 +1,2 @@
1
- body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.container{margin:0 auto;max-width:1200px;padding:20px}.card{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;margin-bottom:20px;padding:24px}.btn{background:#3b82f6;border-radius:8px;font-size:14px;font-weight:500;padding:12px 24px;transition:background-color .2s}.btn:hover{background:#2563eb}.btn:disabled{background:#9ca3af}.btn-secondary{background:#6b7280}.btn-secondary:hover{background:#4b5563}.input{border:2px solid #e5e7eb;border-radius:8px;font-size:14px;padding:12px;transition:border-color .2s;width:100%}.input:focus{border-color:#3b82f6;outline:none}.textarea{min-height:120px;resize:vertical}.loading{animation:spin 1s ease-in-out infinite;border:3px solid #ffffff4d;height:20px;width:20px}.alert{font-size:14px;margin-bottom:16px;padding:12px 16px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.alert-warning{background:#fffbeb;border:1px solid #fed7aa;color:#d97706}*{box-sizing:border-box}*,body{margin:0;padding:0}body{background:linear-gradient(135deg,#1e40af,#0f766e);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden;overflow-y:auto}.App,body{min-height:100vh}.App{display:flex;flex-direction:column}.app-header{background:linear-gradient(90deg,#1e40af,#0369a1 50%,#f59e0b);border-bottom:1px solid #ffffff4d;box-shadow:0 4px 6px #0000001a;padding:1rem 2rem;position:relative}.app-header h1{color:#fff;font-size:1.8rem;margin-bottom:.5rem}.app-header p{color:#fffc;font-size:1rem}.app-grid{display:flex;flex:1 1;gap:1rem;max-width:100vw;min-height:calc(100vh - 120px);overflow-x:hidden;padding:1rem}.left-column{display:flex;flex-direction:column;flex-shrink:1;gap:1rem;max-width:300px;min-width:240px;width:260px}.center-column{flex:1 1;min-width:300px;overflow:hidden}.center-column,.right-column{display:flex;flex-direction:column}.right-column{flex-shrink:1;max-width:350px;min-width:280px;width:320px}.card{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffff1a;border:1px solid #fff3;border-radius:16px;box-shadow:0 8px 32px #0000001a;color:#fff;padding:1.5rem}.card h2{align-items:center;color:#fff;display:flex;font-size:1.2rem;gap:.5rem;margin-bottom:1rem}.upload-zone{border:2px dashed #ffffff4d;border-radius:12px;cursor:pointer;min-height:100px;padding:1rem;text-align:center;transition:all .3s ease}.upload-zone.drag-active,.upload-zone:hover{background:#ffffff0d;border-color:#fff9}.upload-icon{color:#ffffffb3;font-size:2rem;font-weight:300;margin-bottom:.5rem}.upload-text{color:#fffc;font-size:.9rem;margin-bottom:.5rem}.upload-hint{color:#fff9;font-size:.75rem}.documents-list{max-height:300px;overflow-x:hidden;overflow-y:auto}.document-item{background:#ffffff1a;border:1px solid #0000;border-radius:8px;cursor:pointer;margin-bottom:.5rem;padding:.75rem;transition:all .2s ease}.document-item:hover{background:#ffffff26}.document-item.selected{background:#f59e0b33;border-color:#f59e0b}.document-name{font-size:.85rem;font-weight:600;margin-bottom:.25rem}.document-status{font-size:.7rem;opacity:.8}.chat-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.chat-messages{word-wrap:break-word;flex:1 1;gap:1rem;max-height:calc(100vh - 300px);overflow-wrap:break-word;overflow-x:hidden;overflow-y:auto;padding:1rem}.chat-messages,.message{display:flex;flex-direction:column}.message{max-width:80%}.message.message-user{align-self:flex-end}.message.message-assistant{align-self:flex-start}.message-content{word-wrap:break-word;border-radius:18px;line-height:1.5;max-width:100%;overflow-wrap:break-word;padding:1rem 1.5rem}.message-user .message-content{background:linear-gradient(135deg,#0369a1,#0f766e);color:#fff}.message-assistant .message-content{background:#ffffff1a;border:1px solid #fff3;color:#fff}.chat-input-container{align-items:flex-end;border-top:1px solid #fff3;display:flex;gap:1rem;padding:1rem}.chat-input{word-wrap:break-word;background:#ffffff1a;border:1px solid #ffffff4d;border-radius:12px;color:#fff;flex:1 1;max-height:120px;min-height:44px;overflow-wrap:break-word;padding:.75rem 1rem;resize:none}.chat-input::placeholder{color:#fff9}.chat-input:focus{border-color:#ffffff80;outline:none}.debug-console{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0006;border:1px solid #ffffff1a;border-radius:16px;display:flex;flex-direction:column;height:100%;overflow:hidden}.debug-console-header{background:#ffffff0d;border-bottom:1px solid #ffffff1a;padding:1rem 1.5rem}.debug-console-header h3{align-items:center;color:#f59e0b;display:flex;font-size:1rem;gap:.5rem}.debug-console-content{flex:1 1;font-family:Monaco,Menlo,monospace;font-size:.8rem;line-height:1.4;max-height:calc(100vh - 200px);overflow-x:hidden;overflow-y:auto;padding:1rem}.debug-log{background:#ffffff0d;border-left:3px solid;border-radius:6px;margin-bottom:.5rem;padding:.5rem .75rem}.debug-log.info{border-left-color:#3b82f6;color:#93c5fd}.debug-log.success{border-left-color:#0f766e;color:#5eead4}.debug-log.warning{border-left-color:#d97706;color:#fbbf24}.debug-log.error{border-left-color:#ef4444;color:#fca5a5}.debug-log.vision{border-left-color:#0369a1;color:#7dd3fc}.debug-log.chunking{border-left-color:#0891b2;color:#67e8f9}.debug-log.rag{border-left-color:#0f766e;color:#5eead4}.debug-timestamp{color:#ffffff80;font-size:.7rem;margin-right:.5rem}.debug-message{word-wrap:break-word}.btn{background:linear-gradient(135deg,#0369a1,#0f766e);border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s ease}.btn:hover{box-shadow:0 4px 12px #0003;transform:translateY(-1px)}.btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn-secondary{background:#ffffff1a;border:1px solid #ffffff4d}.btn-small{font-size:.8rem;padding:.5rem 1rem}.alert{border-radius:8px;font-size:.9rem;margin-bottom:1rem;padding:.75rem 1rem}.alert-error{background:#ef444433;border:1px solid #ef4444;color:#fca5a5}.alert-success{background:#0f766e33;border:1px solid #0f766e;color:#5eead4}.loading{animation:spin 1s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:16px;width:16px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.empty-state{color:#ffffffb3;padding:3rem 2rem;text-align:center}.empty-state h3{color:#fff;margin-bottom:1rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff80}@media (max-width:1400px){.app-grid{gap:.75rem;padding:.75rem}.left-column{min-width:200px;width:220px}.right-column{min-width:260px;width:280px}}@media (max-width:1200px){.app-grid{gap:.5rem;padding:.5rem}.left-column{min-width:180px;width:200px}.right-column{min-width:220px;width:250px}.center-column{min-width:250px}}@media (max-width:1024px){.app-grid{flex-direction:column;gap:.75rem;min-height:auto}.left-column,.right-column{max-height:300px;max-width:none;min-height:200px;min-width:auto;width:100%}.center-column{flex:1 1;min-height:400px;min-width:auto}}@media (max-width:768px){.app-grid{gap:.5rem;padding:.5rem}.app-header{padding:.5rem 1rem}.app-header h1{font-size:1.4rem}.app-header p{font-size:.9rem}.card{padding:1rem}.left-column,.right-column{max-height:250px}}@media (max-width:480px){.app-grid{padding:.25rem}.app-header{padding:.5rem}.app-header h1{font-size:1.2rem}.card{padding:.75rem}.card h2{font-size:1rem}}.streaming-cursor{animation:blink 1s infinite;color:#10b981;font-weight:700;margin-left:2px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.medical-spinner{animation:medical-spin 1s linear infinite;border:2px solid #ffffff1a;border-left-color:#10b981;border-radius:50%;flex-shrink:0;height:20px;width:20px}@keyframes medical-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
2
- /*# sourceMappingURL=main.8406b832.css.map*/
 
1
+ body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.container{margin:0 auto;max-width:1200px;padding:20px}.card{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;margin-bottom:20px;padding:24px}.btn{background:#3b82f6;border-radius:8px;font-size:14px;font-weight:500;padding:12px 24px;transition:background-color .2s}.btn:hover{background:#2563eb}.btn:disabled{background:#9ca3af}.btn-secondary{background:#6b7280}.btn-secondary:hover{background:#4b5563}.input{border:2px solid #e5e7eb;border-radius:8px;font-size:14px;padding:12px;transition:border-color .2s;width:100%}.input:focus{border-color:#3b82f6;outline:none}.textarea{min-height:120px;resize:vertical}.loading{animation:spin 1s ease-in-out infinite;border:3px solid #ffffff4d;height:20px;width:20px}.alert{font-size:14px;margin-bottom:16px;padding:12px 16px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.alert-warning{background:#fffbeb;border:1px solid #fed7aa;color:#d97706}*{box-sizing:border-box}*,body{margin:0;padding:0}body{background:linear-gradient(135deg,#1e40af,#0f766e);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden;overflow-y:auto}.App,body{min-height:100vh}.App{display:flex;flex-direction:column}.app-header{background:linear-gradient(90deg,#1e40af,#0369a1 50%,#f59e0b);border-bottom:1px solid #ffffff4d;box-shadow:0 4px 6px #0000001a;padding:1rem 2rem;position:relative}.app-header h1{color:#fff;font-size:1.8rem;margin-bottom:.5rem}.app-header p{color:#fffc;font-size:1rem}.app-grid{display:flex;flex:1 1;gap:1rem;max-width:100vw;min-height:calc(100vh - 120px);overflow-x:hidden;padding:1rem}.left-column{display:flex;flex-direction:column;flex-shrink:1;gap:1rem;max-width:300px;min-width:240px;width:260px}.center-column{flex:1 1;min-width:300px;overflow:hidden}.center-column,.right-column{display:flex;flex-direction:column}.right-column{flex-shrink:1;max-width:350px;min-width:280px;width:320px}.card{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffff1a;border:1px solid #fff3;border-radius:16px;box-shadow:0 8px 32px #0000001a;color:#fff;padding:1.5rem}.card h2{align-items:center;color:#fff;display:flex;font-size:1.2rem;gap:.5rem;margin-bottom:1rem}.upload-zone{border:2px dashed #ffffff4d;border-radius:12px;cursor:pointer;min-height:100px;padding:1rem;text-align:center;transition:all .3s ease}.upload-zone.drag-active,.upload-zone:hover{background:#ffffff0d;border-color:#fff9}.upload-icon{color:#ffffffb3;font-size:2rem;font-weight:300;margin-bottom:.5rem}.upload-text{color:#fffc;font-size:.9rem;margin-bottom:.5rem}.upload-hint{color:#fff9;font-size:.75rem}.documents-list{max-height:300px;overflow-x:hidden;overflow-y:auto}.document-item{align-items:center;background:#ffffff1a;border:1px solid #0000;border-radius:8px;cursor:pointer;display:flex;gap:.5rem;justify-content:space-between;margin-bottom:.5rem;padding:.75rem;transition:all .2s ease}.document-item:hover{background:#ffffff26}.document-item.selected{background:#f59e0b33;border-color:#f59e0b}.document-content{flex:1 1;min-width:0}.document-name{font-size:.85rem;font-weight:600;margin-bottom:.25rem}.document-status{font-size:.7rem;opacity:.8}.delete-btn{background:#ef444433;border:1px solid #ef444466;border-radius:6px;color:#ef4444;cursor:pointer;flex-shrink:0;font-size:.9rem;padding:.3rem .5rem;transition:all .2s ease}.delete-btn:hover{background:#ef444466;border-color:#ef444499;transform:scale(1.05)}.delete-btn:active{transform:scale(.95)}.chat-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.chat-messages{word-wrap:break-word;flex:1 1;gap:1rem;max-height:calc(100vh - 300px);overflow-wrap:break-word;overflow-x:hidden;overflow-y:auto;padding:1rem}.chat-messages,.message{display:flex;flex-direction:column}.message{max-width:80%}.message.message-user{align-self:flex-end}.message.message-assistant{align-self:flex-start}.message-content{word-wrap:break-word;border-radius:18px;line-height:1.5;max-width:100%;overflow-wrap:break-word;padding:1rem 1.5rem}.message-user .message-content{background:linear-gradient(135deg,#0369a1,#0f766e);color:#fff}.message-assistant .message-content{background:#ffffff1a;border:1px solid #fff3;color:#fff}.chat-input-container{align-items:flex-end;border-top:1px solid #fff3;display:flex;gap:1rem;padding:1rem}.chat-input{word-wrap:break-word;background:#ffffff1a;border:1px solid #ffffff4d;border-radius:12px;color:#fff;flex:1 1;max-height:120px;min-height:44px;overflow-wrap:break-word;padding:.75rem 1rem;resize:none}.chat-input::placeholder{color:#fff9}.chat-input:focus{border-color:#ffffff80;outline:none}.debug-console{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0006;border:1px solid #ffffff1a;border-radius:16px;display:flex;flex-direction:column;height:100%;overflow:hidden}.debug-console-header{background:#ffffff0d;border-bottom:1px solid #ffffff1a;padding:1rem 1.5rem}.debug-console-header h3{align-items:center;color:#f59e0b;display:flex;font-size:1rem;gap:.5rem}.debug-console-content{flex:1 1;font-family:Monaco,Menlo,monospace;font-size:.8rem;line-height:1.4;max-height:calc(100vh - 200px);overflow-x:hidden;overflow-y:auto;padding:1rem}.debug-log{background:#ffffff0d;border-left:3px solid;border-radius:6px;margin-bottom:.5rem;padding:.5rem .75rem}.debug-log.info{border-left-color:#3b82f6;color:#93c5fd}.debug-log.success{border-left-color:#0f766e;color:#5eead4}.debug-log.warning{border-left-color:#d97706;color:#fbbf24}.debug-log.error{border-left-color:#ef4444;color:#fca5a5}.debug-log.vision{border-left-color:#0369a1;color:#7dd3fc}.debug-log.chunking{border-left-color:#0891b2;color:#67e8f9}.debug-log.rag{border-left-color:#0f766e;color:#5eead4}.debug-timestamp{color:#ffffff80;font-size:.7rem;margin-right:.5rem}.debug-message{word-wrap:break-word}.btn{background:linear-gradient(135deg,#0369a1,#0f766e);border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s ease}.btn:hover{box-shadow:0 4px 12px #0003;transform:translateY(-1px)}.btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn-secondary{background:#ffffff1a;border:1px solid #ffffff4d}.btn-small{font-size:.8rem;padding:.5rem 1rem}.alert{border-radius:8px;font-size:.9rem;margin-bottom:1rem;padding:.75rem 1rem}.alert-error{background:#ef444433;border:1px solid #ef4444;color:#fca5a5}.alert-success{background:#0f766e33;border:1px solid #0f766e;color:#5eead4}.loading{animation:spin 1s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:16px;width:16px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.empty-state{color:#ffffffb3;padding:3rem 2rem;text-align:center}.empty-state h3{color:#fff;margin-bottom:1rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff80}@media (max-width:1400px){.app-grid{gap:.75rem;padding:.75rem}.left-column{min-width:200px;width:220px}.right-column{min-width:260px;width:280px}}@media (max-width:1200px){.app-grid{gap:.5rem;padding:.5rem}.left-column{min-width:180px;width:200px}.right-column{min-width:220px;width:250px}.center-column{min-width:250px}}@media (max-width:1024px){.app-grid{flex-direction:column;gap:.75rem;min-height:auto}.left-column,.right-column{max-height:300px;max-width:none;min-height:200px;min-width:auto;width:100%}.center-column{flex:1 1;min-height:400px;min-width:auto}}@media (max-width:768px){.app-grid{gap:.5rem;padding:.5rem}.app-header{padding:.5rem 1rem}.app-header h1{font-size:1.4rem}.app-header p{font-size:.9rem}.card{padding:1rem}.left-column,.right-column{max-height:250px}}@media (max-width:480px){.app-grid{padding:.25rem}.app-header{padding:.5rem}.app-header h1{font-size:1.2rem}.card{padding:.75rem}.card h2{font-size:1rem}}.streaming-cursor{animation:blink 1s infinite;color:#10b981;font-weight:700;margin-left:2px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.medical-spinner{animation:medical-spin 1s linear infinite;border:2px solid #ffffff1a;border-left-color:#10b981;border-radius:50%;flex-shrink:0;height:20px;width:20px}@keyframes medical-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
2
+ /*# sourceMappingURL=main.cc9f8701.css.map*/
frontend/build/static/css/main.cc9f8701.css.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"static/css/main.cc9f8701.css","mappings":"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","sources":["index.css","App.css"],"sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #f5f7fa;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n* {\n box-sizing: border-box;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n}\n\n.card {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n padding: 24px;\n margin-bottom: 20px;\n}\n\n.btn {\n background: #3b82f6;\n color: white;\n border: none;\n padding: 12px 24px;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n transition: background-color 0.2s;\n}\n\n.btn:hover {\n background: #2563eb;\n}\n\n.btn:disabled {\n background: #9ca3af;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n background: #6b7280;\n}\n\n.btn-secondary:hover {\n background: #4b5563;\n}\n\n.input {\n width: 100%;\n padding: 12px;\n border: 2px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: border-color 0.2s;\n}\n\n.input:focus {\n outline: none;\n border-color: #3b82f6;\n}\n\n.textarea {\n min-height: 120px;\n resize: vertical;\n}\n\n.loading {\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 3px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: #fff;\n animation: spin 1s ease-in-out infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n.alert {\n padding: 12px 16px;\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 14px;\n}\n\n.alert-error {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #dc2626;\n}\n\n.alert-success {\n background: #f0fdf4;\n border: 1px solid #bbf7d0;\n color: #166534;\n}\n\n.alert-warning {\n background: #fffbeb;\n border: 1px solid #fed7aa;\n color: #d97706;\n} ","/* Reset et base */\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n background: linear-gradient(135deg, #1e40af 0%, #0f766e 100%);\n min-height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n margin: 0;\n padding: 0;\n}\n\n.App {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\n/* Header */\n.app-header {\n background: linear-gradient(90deg, #1e40af 0%, #0369a1 50%, #f59e0b 100%);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n padding: 1rem 2rem;\n position: relative;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n.app-header h1 {\n color: white;\n font-size: 1.8rem;\n margin-bottom: 0.5rem;\n}\n\n.app-header p {\n color: rgba(255, 255, 255, 0.8);\n font-size: 1rem;\n}\n\n/* Layout principal en 3 colonnes */\n.app-grid {\n display: flex;\n min-height: calc(100vh - 120px);\n gap: 1rem;\n padding: 1rem;\n flex: 1;\n max-width: 100vw;\n overflow-x: hidden;\n}\n\n/* Colonne gauche - Documents (étroite) */\n.left-column {\n width: 260px;\n min-width: 240px;\n max-width: 300px;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex-shrink: 1;\n}\n\n/* Colonne centre - Chat (large) */\n.center-column {\n flex: 1;\n min-width: 300px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Colonne droite - Console (fixe) */\n.right-column {\n width: 320px;\n min-width: 280px;\n max-width: 350px;\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n}\n\n/* Cards communes */\n.card {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(15px);\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\n padding: 1.5rem;\n color: white;\n}\n\n.card h2 {\n margin-bottom: 1rem;\n font-size: 1.2rem;\n color: white;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n/* Upload zone (compacte) */\n.upload-zone {\n border: 2px dashed rgba(255, 255, 255, 0.3);\n border-radius: 12px;\n padding: 1rem;\n text-align: center;\n cursor: pointer;\n transition: all 0.3s ease;\n min-height: 100px;\n}\n\n.upload-zone:hover,\n.upload-zone.drag-active {\n border-color: rgba(255, 255, 255, 0.6);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.upload-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n font-weight: 300;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.upload-text {\n font-size: 0.9rem;\n color: rgba(255, 255, 255, 0.8);\n margin-bottom: 0.5rem;\n}\n\n.upload-hint {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Liste documents (compacte) */\n.documents-list {\n max-height: 300px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.document-item {\n padding: 0.75rem;\n margin-bottom: 0.5rem;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n}\n\n.document-item:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.document-item.selected {\n border-color: #f59e0b;\n background: rgba(245, 158, 11, 0.2);\n}\n\n.document-content {\n flex: 1;\n min-width: 0;\n}\n\n.document-name {\n font-size: 0.85rem;\n font-weight: 600;\n margin-bottom: 0.25rem;\n}\n\n.document-status {\n font-size: 0.7rem;\n opacity: 0.8;\n}\n\n.delete-btn {\n background: rgba(239, 68, 68, 0.2);\n border: 1px solid rgba(239, 68, 68, 0.4);\n color: #ef4444;\n border-radius: 6px;\n padding: 0.3rem 0.5rem;\n font-size: 0.9rem;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.delete-btn:hover {\n background: rgba(239, 68, 68, 0.4);\n border-color: rgba(239, 68, 68, 0.6);\n transform: scale(1.05);\n}\n\n.delete-btn:active {\n transform: scale(0.95);\n}\n\n/* Interface Chat (centre) */\n.chat-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.chat-messages {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n max-height: calc(100vh - 300px);\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.message {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n}\n\n.message.message-user {\n align-self: flex-end;\n}\n\n.message.message-assistant {\n align-self: flex-start;\n}\n\n.message-content {\n padding: 1rem 1.5rem;\n border-radius: 18px;\n line-height: 1.5;\n word-wrap: break-word;\n overflow-wrap: break-word;\n max-width: 100%;\n}\n\n.message-user .message-content {\n background: linear-gradient(135deg, #0369a1, #0f766e);\n color: white;\n}\n\n.message-assistant .message-content {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: white;\n}\n\n.chat-input-container {\n padding: 1rem;\n border-top: 1px solid rgba(255, 255, 255, 0.2);\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.chat-input {\n flex: 1;\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.3);\n border-radius: 12px;\n padding: 0.75rem 1rem;\n color: white;\n resize: none;\n min-height: 44px;\n max-height: 120px;\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.chat-input::placeholder {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.chat-input:focus {\n outline: none;\n border-color: rgba(255, 255, 255, 0.5);\n}\n\n/* Console de Debug (droite) */\n.debug-console {\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(10px);\n border-radius: 16px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.debug-console-header {\n padding: 1rem 1.5rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.debug-console-header h3 {\n color: #f59e0b;\n font-size: 1rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.debug-console-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 1rem;\n font-family: 'Monaco', 'Menlo', monospace;\n font-size: 0.8rem;\n line-height: 1.4;\n max-height: calc(100vh - 200px);\n}\n\n.debug-log {\n margin-bottom: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border-left: 3px solid;\n background: rgba(255, 255, 255, 0.05);\n}\n\n.debug-log.info {\n border-left-color: #3b82f6;\n color: #93c5fd;\n}\n\n.debug-log.success {\n border-left-color: #0f766e;\n color: #5eead4;\n}\n\n.debug-log.warning {\n border-left-color: #d97706;\n color: #fbbf24;\n}\n\n.debug-log.error {\n border-left-color: #ef4444;\n color: #fca5a5;\n}\n\n.debug-log.vision {\n border-left-color: #0369a1;\n color: #7dd3fc;\n}\n\n.debug-log.chunking {\n border-left-color: #0891b2;\n color: #67e8f9;\n}\n\n.debug-log.rag {\n border-left-color: #0f766e;\n color: #5eead4;\n}\n\n.debug-timestamp {\n color: rgba(255, 255, 255, 0.5);\n font-size: 0.7rem;\n margin-right: 0.5rem;\n}\n\n.debug-message {\n word-wrap: break-word;\n}\n\n/* Boutons */\n.btn {\n background: linear-gradient(135deg, #0369a1, #0f766e);\n color: white;\n border: none;\n padding: 0.75rem 1.5rem;\n border-radius: 12px;\n cursor: pointer;\n font-weight: 600;\n transition: all 0.2s ease;\n font-size: 0.9rem;\n}\n\n.btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n}\n\n.btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n}\n\n.btn-secondary {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.btn-small {\n padding: 0.5rem 1rem;\n font-size: 0.8rem;\n}\n\n/* Alerts */\n.alert {\n padding: 0.75rem 1rem;\n border-radius: 8px;\n margin-bottom: 1rem;\n font-size: 0.9rem;\n}\n\n.alert-error {\n background: rgba(239, 68, 68, 0.2);\n border: 1px solid #ef4444;\n color: #fca5a5;\n}\n\n.alert-success {\n background: rgba(15, 118, 110, 0.2);\n border: 1px solid #0f766e;\n color: #5eead4;\n}\n\n/* Loading */\n.loading {\n display: inline-block;\n width: 16px;\n height: 16px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top: 2px solid white;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Empty state */\n.empty-state {\n text-align: center;\n padding: 3rem 2rem;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.empty-state h3 {\n margin-bottom: 1rem;\n color: white;\n}\n\n/* Scrollbar styling */\n::-webkit-scrollbar {\n width: 6px;\n}\n\n::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n\n::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n\n/* Responsive */\n@media (max-width: 1400px) {\n .app-grid {\n gap: 0.75rem;\n padding: 0.75rem;\n }\n \n .left-column {\n width: 220px;\n min-width: 200px;\n }\n \n .right-column {\n width: 280px;\n min-width: 260px;\n }\n}\n\n@media (max-width: 1200px) {\n .app-grid {\n gap: 0.5rem;\n padding: 0.5rem;\n }\n \n .left-column {\n width: 200px;\n min-width: 180px;\n }\n \n .right-column {\n width: 250px;\n min-width: 220px;\n }\n \n .center-column {\n min-width: 250px;\n }\n}\n\n@media (max-width: 1024px) {\n .app-grid {\n flex-direction: column;\n min-height: auto;\n gap: 0.75rem;\n }\n \n .left-column,\n .right-column {\n width: 100%;\n min-width: auto;\n max-width: none;\n max-height: 300px;\n min-height: 200px;\n }\n \n .center-column {\n min-height: 400px;\n min-width: auto;\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .app-grid {\n padding: 0.5rem;\n gap: 0.5rem;\n }\n \n .app-header {\n padding: 0.5rem 1rem;\n }\n \n .app-header h1 {\n font-size: 1.4rem;\n }\n \n .app-header p {\n font-size: 0.9rem;\n }\n \n .card {\n padding: 1rem;\n }\n \n .left-column,\n .right-column {\n max-height: 250px;\n }\n}\n\n@media (max-width: 480px) {\n .app-grid {\n padding: 0.25rem;\n }\n \n .app-header {\n padding: 0.5rem;\n }\n \n .app-header h1 {\n font-size: 1.2rem;\n }\n \n .card {\n padding: 0.75rem;\n }\n \n .card h2 {\n font-size: 1rem;\n }\n}\n\n/* Animation pour le curseur de streaming */\n.streaming-cursor {\n color: #10b981;\n font-weight: bold;\n animation: blink 1s infinite;\n margin-left: 2px;\n}\n\n@keyframes blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* Spinner médical élégant */\n.medical-spinner {\n width: 20px;\n height: 20px;\n border: 2px solid rgba(255, 255, 255, 0.1);\n border-left: 2px solid #10b981;\n border-radius: 50%;\n animation: medical-spin 1s linear infinite;\n flex-shrink: 0;\n}\n\n@keyframes medical-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n} "],"names":[],"sourceRoot":""}
frontend/build/static/js/{main.aba3906b.js → main.a2abf0c3.js} RENAMED
The diff for this file is too large to render. See raw diff
 
frontend/build/static/js/{main.aba3906b.js.LICENSE.txt → main.a2abf0c3.js.LICENSE.txt} RENAMED
File without changes
frontend/build/static/js/{main.aba3906b.js.map → main.a2abf0c3.js.map} RENAMED
The diff for this file is too large to render. See raw diff
 
frontend/src/App.css CHANGED
@@ -152,6 +152,10 @@ body {
152
  cursor: pointer;
153
  transition: all 0.2s ease;
154
  border: 1px solid transparent;
 
 
 
 
155
  }
156
 
157
  .document-item:hover {
@@ -163,6 +167,11 @@ body {
163
  background: rgba(245, 158, 11, 0.2);
164
  }
165
 
 
 
 
 
 
166
  .document-name {
167
  font-size: 0.85rem;
168
  font-weight: 600;
@@ -174,6 +183,28 @@ body {
174
  opacity: 0.8;
175
  }
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  /* Interface Chat (centre) */
178
  .chat-container {
179
  display: flex;
 
152
  cursor: pointer;
153
  transition: all 0.2s ease;
154
  border: 1px solid transparent;
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: space-between;
158
+ gap: 0.5rem;
159
  }
160
 
161
  .document-item:hover {
 
167
  background: rgba(245, 158, 11, 0.2);
168
  }
169
 
170
+ .document-content {
171
+ flex: 1;
172
+ min-width: 0;
173
+ }
174
+
175
  .document-name {
176
  font-size: 0.85rem;
177
  font-weight: 600;
 
183
  opacity: 0.8;
184
  }
185
 
186
+ .delete-btn {
187
+ background: rgba(239, 68, 68, 0.2);
188
+ border: 1px solid rgba(239, 68, 68, 0.4);
189
+ color: #ef4444;
190
+ border-radius: 6px;
191
+ padding: 0.3rem 0.5rem;
192
+ font-size: 0.9rem;
193
+ cursor: pointer;
194
+ transition: all 0.2s ease;
195
+ flex-shrink: 0;
196
+ }
197
+
198
+ .delete-btn:hover {
199
+ background: rgba(239, 68, 68, 0.4);
200
+ border-color: rgba(239, 68, 68, 0.6);
201
+ transform: scale(1.05);
202
+ }
203
+
204
+ .delete-btn:active {
205
+ transform: scale(0.95);
206
+ }
207
+
208
  /* Interface Chat (centre) */
209
  .chat-container {
210
  display: flex;
frontend/src/components/DocumentList.js CHANGED
@@ -86,14 +86,24 @@ const DocumentList = ({
86
  }`}
87
  onClick={() => onDocumentSelected(doc)}
88
  >
89
- <div className="document-name">
90
- {doc.filename.length > 20 ? doc.filename.substring(0, 20) + '...' : doc.filename}
 
 
 
 
 
 
 
91
  </div>
92
 
93
- <div className="document-status">
94
- {getStatusLabel(doc.status)}
95
- {doc.total_chunks && ` • ${doc.total_chunks} chunks`}
96
- </div>
 
 
 
97
  </div>
98
  ))}
99
  </div>
 
86
  }`}
87
  onClick={() => onDocumentSelected(doc)}
88
  >
89
+ <div className="document-content">
90
+ <div className="document-name">
91
+ {doc.filename.length > 20 ? doc.filename.substring(0, 20) + '...' : doc.filename}
92
+ </div>
93
+
94
+ <div className="document-status">
95
+ {getStatusLabel(doc.status)}
96
+ {doc.total_chunks && ` • ${doc.total_chunks} chunks`}
97
+ </div>
98
  </div>
99
 
100
+ <button
101
+ className="delete-btn"
102
+ onClick={(e) => handleDelete(doc.document_id, e)}
103
+ title="Supprimer ce document"
104
+ >
105
+ 🗑️
106
+ </button>
107
  </div>
108
  ))}
109
  </div>