đ DĂ©ploiement automatique RAG CHU 2025-07-01 06:27:28
Browse files- .gitignore +0 -106
- backend/.env +4 -0
- backend/src/__pycache__/__init__.cpython-313.pyc +0 -0
- backend/src/__pycache__/config.cpython-313.pyc +0 -0
- backend/src/__pycache__/main.cpython-313.pyc +0 -0
- backend/src/__pycache__/rag_service.cpython-313.pyc +0 -0
- backend/src/__pycache__/vision_processor.cpython-313.pyc +0 -0
- frontend/build/asset-manifest.json +13 -0
- frontend/build/index.html +1 -0
- frontend/build/manifest.json +9 -0
- frontend/build/static/css/main.8406b832.css +2 -0
- frontend/build/static/css/main.8406b832.css.map +1 -0
- frontend/build/static/js/main.aba3906b.js +0 -0
- frontend/build/static/js/main.aba3906b.js.LICENSE.txt +56 -0
- frontend/build/static/js/main.aba3906b.js.map +0 -0
- frontend/src/components/ChatInterface.js +3 -3
.gitignore
DELETED
|
@@ -1,106 +0,0 @@
|
|
| 1 |
-
# .gitignore pour Hugging Face Spaces - RAG CHU
|
| 2 |
-
|
| 3 |
-
# Variables d'environnement sensibles
|
| 4 |
-
.env
|
| 5 |
-
.env.local
|
| 6 |
-
.env.production
|
| 7 |
-
*.env
|
| 8 |
-
|
| 9 |
-
# Fichiers temporaires Python
|
| 10 |
-
__pycache__/
|
| 11 |
-
*.py[cod]
|
| 12 |
-
*$py.class
|
| 13 |
-
*.so
|
| 14 |
-
.Python
|
| 15 |
-
build/
|
| 16 |
-
develop-eggs/
|
| 17 |
-
dist/
|
| 18 |
-
downloads/
|
| 19 |
-
eggs/
|
| 20 |
-
.eggs/
|
| 21 |
-
lib/
|
| 22 |
-
lib64/
|
| 23 |
-
parts/
|
| 24 |
-
sdist/
|
| 25 |
-
var/
|
| 26 |
-
wheels/
|
| 27 |
-
*.egg-info/
|
| 28 |
-
.installed.cfg
|
| 29 |
-
*.egg
|
| 30 |
-
MANIFEST
|
| 31 |
-
|
| 32 |
-
# Virtual environments
|
| 33 |
-
.venv/
|
| 34 |
-
venv/
|
| 35 |
-
ENV/
|
| 36 |
-
env/
|
| 37 |
-
|
| 38 |
-
# uv
|
| 39 |
-
.uv/
|
| 40 |
-
# uv.lock - On garde le lockfile pour la reproductibilité
|
| 41 |
-
|
| 42 |
-
# Logs
|
| 43 |
-
*.log
|
| 44 |
-
logs/
|
| 45 |
-
|
| 46 |
-
# Uploads et données temporaires
|
| 47 |
-
uploads/*
|
| 48 |
-
!uploads/.gitkeep
|
| 49 |
-
temp/
|
| 50 |
-
tmp/
|
| 51 |
-
|
| 52 |
-
# Frontend build (gardé pour HF Spaces)
|
| 53 |
-
frontend/node_modules/
|
| 54 |
-
# frontend/build/ # Commenté pour HF Spaces
|
| 55 |
-
frontend/.env
|
| 56 |
-
|
| 57 |
-
# IDEs
|
| 58 |
-
.vscode/
|
| 59 |
-
.idea/
|
| 60 |
-
*.swp
|
| 61 |
-
*.swo
|
| 62 |
-
*~
|
| 63 |
-
|
| 64 |
-
# OS
|
| 65 |
-
.DS_Store
|
| 66 |
-
.DS_Store?
|
| 67 |
-
._*
|
| 68 |
-
.Spotlight-V100
|
| 69 |
-
.Trashes
|
| 70 |
-
ehthumbs.db
|
| 71 |
-
Thumbs.db
|
| 72 |
-
|
| 73 |
-
# Tests et coverage
|
| 74 |
-
.pytest_cache/
|
| 75 |
-
.coverage
|
| 76 |
-
htmlcov/
|
| 77 |
-
.tox/
|
| 78 |
-
|
| 79 |
-
# Jupyter
|
| 80 |
-
.ipynb_checkpoints/
|
| 81 |
-
|
| 82 |
-
# Cache
|
| 83 |
-
.cache/
|
| 84 |
-
*.cache
|
| 85 |
-
|
| 86 |
-
# Locales
|
| 87 |
-
*.mo
|
| 88 |
-
*.pot
|
| 89 |
-
|
| 90 |
-
# Documentation build
|
| 91 |
-
docs/_build/
|
| 92 |
-
|
| 93 |
-
# DuckDB (si utilisé)
|
| 94 |
-
*.duckdb
|
| 95 |
-
*.db
|
| 96 |
-
|
| 97 |
-
# Qdrant data
|
| 98 |
-
qdrant_data/
|
| 99 |
-
|
| 100 |
-
# Models et données lourdes (pas pour HF)
|
| 101 |
-
models/
|
| 102 |
-
data/large_files/
|
| 103 |
-
|
| 104 |
-
# Secrets
|
| 105 |
-
secrets/
|
| 106 |
-
private/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backend/.env
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# .env
|
| 2 |
+
ANTHROPIC_API_KEY = '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'
|
| 3 |
+
|
| 4 |
+
OPENAI_API_KEY='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'
|
backend/src/__pycache__/__init__.cpython-313.pyc
ADDED
|
Binary file (338 Bytes). View file
|
|
|
backend/src/__pycache__/config.cpython-313.pyc
ADDED
|
Binary file (2.56 kB). View file
|
|
|
backend/src/__pycache__/main.cpython-313.pyc
ADDED
|
Binary file (32 kB). View file
|
|
|
backend/src/__pycache__/rag_service.cpython-313.pyc
ADDED
|
Binary file (14 kB). View file
|
|
|
backend/src/__pycache__/vision_processor.cpython-313.pyc
ADDED
|
Binary file (18.2 kB). View file
|
|
|
frontend/build/asset-manifest.json
ADDED
|
@@ -0,0 +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 |
+
}
|
frontend/build/index.html
ADDED
|
@@ -0,0 +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>
|
frontend/build/manifest.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"short_name": "RAG CHU",
|
| 3 |
+
"name": "RAG CHU - Documents Médicaux",
|
| 4 |
+
"icons": [],
|
| 5 |
+
"start_url": ".",
|
| 6 |
+
"display": "standalone",
|
| 7 |
+
"theme_color": "#000000",
|
| 8 |
+
"background_color": "#ffffff"
|
| 9 |
+
}
|
frontend/build/static/css/main.8406b832.css
ADDED
|
@@ -0,0 +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*/
|
frontend/build/static/css/main.8406b832.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"static/css/main.8406b832.css","mappings":"AAAA,KAKE,kCAAmC,CACnC,iCAAkC,CAClC,wBAAyB,CALzB,mIAMF,CAEA,KACE,uEAEF,CAMA,WAEE,aAAc,CADd,gBAAiB,CAEjB,YACF,CAEA,MACE,eAAiB,CACjB,kBAAmB,CACnB,+BAAyC,CAEzC,kBAAmB,CADnB,YAEF,CAEA,KACE,kBAAmB,CAInB,iBAAkB,CAElB,cAAe,CACf,eAAgB,CAJhB,iBAAkB,CAKlB,+BACF,CAEA,WACE,kBACF,CAEA,cACE,kBAEF,CAEA,eACE,kBACF,CAEA,qBACE,kBACF,CAEA,OAGE,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CAHf,YAAa,CAIb,2BAA6B,CAL7B,UAMF,CAEA,aAEE,oBAAqB,CADrB,YAEF,CAEA,UACE,gBAAiB,CACjB,eACF,CAEA,SAOE,sCAAuC,CADvC,0BAAsB,CAHtB,WAAY,CADZ,UAMF,CAMA,OAIE,cAAe,CADf,kBAAmB,CAFnB,iBAIF,CAEA,aACE,kBAAmB,CACnB,wBAAyB,CACzB,aACF,CAEA,eACE,kBAAmB,CACnB,wBAAyB,CACzB,aACF,CAEA,eACE,kBAAmB,CACnB,wBAAyB,CACzB,aACF,CCrHA,EAGE,qBACF,CAEA,OALE,QAAS,CACT,SAYF,CARA,KAEE,kDAA6D,CAD7D,uEAAgF,CAGhF,iBAAkB,CAClB,eAGF,CAEA,UAPE,gBAWF,CAJA,KAEE,YAAa,CACb,qBACF,CAGA,YACE,6DAAyE,CACzE,iCAAiD,CAGjD,8BAAwC,CAFxC,iBAAkB,CAClB,iBAEF,CAEA,eACE,UAAY,CACZ,gBAAiB,CACjB,mBACF,CAEA,cACE,WAA+B,CAC/B,cACF,CAGA,UACE,YAAa,CAIb,QAAO,CAFP,QAAS,CAGT,eAAgB,CAJhB,8BAA+B,CAK/B,iBAAkB,CAHlB,YAIF,CAGA,aAIE,YAAa,CACb,qBAAsB,CAEtB,aAAc,CADd,QAAS,CAHT,eAAgB,CADhB,eAAgB,CADhB,WAOF,CAGA,eACE,QAAO,CACP,eAAgB,CAGhB,eACF,CAGA,6BANE,YAAa,CACb,qBAYF,CAPA,cAME,aAAc,CAHd,eAAgB,CADhB,eAAgB,CADhB,WAMF,CAGA,MAEE,kCAA2B,CAA3B,0BAA2B,CAD3B,oBAAoC,CAGpC,sBAA0C,CAD1C,kBAAmB,CAEnB,+BAAyC,CAEzC,UAAY,CADZ,cAEF,CAEA,SAKE,kBAAmB,CAFnB,UAAY,CACZ,YAAa,CAFb,gBAAiB,CAIjB,SAAW,CALX,kBAMF,CAGA,aACE,2BAA2C,CAC3C,kBAAmB,CAGnB,cAAe,CAEf,gBAAiB,CAJjB,YAAa,CACb,iBAAkB,CAElB,uBAEF,CAEA,4CAGE,oBAAqC,CADrC,kBAEF,CAEA,aAIE,eAA+B,CAH/B,cAAe,CAEf,eAAgB,CADhB,mBAGF,CAEA,aAEE,WAA+B,CAD/B,eAAiB,CAEjB,mBACF,CAEA,aAEE,WAA+B,CAD/B,gBAEF,CAGA,gBACE,gBAAiB,CAEjB,iBAAkB,CADlB,eAEF,CAEA,eAGE,oBAAoC,CAIpC,sBAA6B,CAH7B,iBAAkB,CAClB,cAAe,CAHf,mBAAqB,CADrB,cAAgB,CAKhB,uBAEF,CAEA,qBACE,oBACF,CAEA,wBAEE,oBAAmC,CADnC,oBAEF,CAEA,eACE,gBAAkB,CAClB,eAAgB,CAChB,oBACF,CAEA,iBACE,eAAiB,CACjB,UACF,CAGA,gBACE,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,eACF,CAEA,eASE,oBAAqB,CARrB,QAAO,CAMP,QAAS,CACT,8BAA+B,CAE/B,wBAAyB,CAPzB,iBAAkB,CADlB,eAAgB,CAEhB,YAOF,CAEA,wBARE,YAAa,CACb,qBAWF,CAJA,SAGE,aACF,CAEA,sBACE,mBACF,CAEA,2BACE,qBACF,CAEA,iBAIE,oBAAqB,CAFrB,kBAAmB,CACnB,eAAgB,CAGhB,cAAe,CADf,wBAAyB,CAJzB,mBAMF,CAEA,+BACE,kDAAqD,CACrD,UACF,CAEA,oCACE,oBAAoC,CACpC,sBAA0C,CAC1C,UACF,CAEA,sBAKE,oBAAqB,CAHrB,0BAA8C,CAC9C,YAAa,CACb,QAAS,CAHT,YAKF,CAEA,YAUE,oBAAqB,CARrB,oBAAoC,CACpC,0BAA0C,CAC1C,kBAAmB,CAEnB,UAAY,CALZ,QAAO,CAQP,gBAAiB,CADjB,eAAgB,CAGhB,wBAAyB,CANzB,mBAAqB,CAErB,WAKF,CAEA,yBACE,WACF,CAEA,kBAEE,sBAAsC,CADtC,YAEF,CAGA,eAGE,kCAA2B,CAA3B,0BAA2B,CAD3B,gBAA8B,CAG9B,0BAA0C,CAD1C,kBAAmB,CAEnB,YAAa,CACb,qBAAsB,CANtB,WAAY,CAOZ,eACF,CAEA,sBAGE,oBAAqC,CADrC,iCAAiD,CADjD,mBAGF,CAEA,yBAIE,kBAAmB,CAHnB,aAAc,CAEd,YAAa,CADb,cAAe,CAGf,SACF,CAEA,uBACE,QAAO,CAIP,kCAAyC,CACzC,eAAiB,CACjB,eAAgB,CAChB,8BAA+B,CAL/B,iBAAkB,CADlB,eAAgB,CAEhB,YAKF,CAEA,WAKE,oBAAqC,CADrC,qBAAsB,CADtB,iBAAkB,CAFlB,mBAAqB,CACrB,oBAIF,CAEA,gBACE,yBAA0B,CAC1B,aACF,CAEA,mBACE,yBAA0B,CAC1B,aACF,CAEA,mBACE,yBAA0B,CAC1B,aACF,CAEA,iBACE,yBAA0B,CAC1B,aACF,CAEA,kBACE,yBAA0B,CAC1B,aACF,CAEA,oBACE,yBAA0B,CAC1B,aACF,CAEA,eACE,yBAA0B,CAC1B,aACF,CAEA,iBACE,eAA+B,CAC/B,eAAiB,CACjB,kBACF,CAEA,eACE,oBACF,CAGA,KACE,kDAAqD,CAErD,WAAY,CAEZ,kBAAmB,CAHnB,UAAY,CAIZ,cAAe,CAGf,eAAiB,CAFjB,eAAgB,CAHhB,qBAAuB,CAIvB,uBAEF,CAEA,WAEE,2BAAyC,CADzC,0BAEF,CAEA,cAEE,kBAAmB,CADnB,UAAY,CAEZ,cACF,CAEA,eACE,oBAAoC,CACpC,0BACF,CAEA,WAEE,eAAiB,CADjB,kBAEF,CAGA,OAEE,iBAAkB,CAElB,eAAiB,CADjB,kBAAmB,CAFnB,mBAIF,CAEA,aACE,oBAAkC,CAClC,wBAAyB,CACzB,aACF,CAEA,eACE,oBAAmC,CACnC,wBAAyB,CACzB,aACF,CAGA,SAOE,iCAAkC,CAFlC,0BAA2B,CAC3B,iBAAkB,CADlB,qBAA2B,CAJ3B,oBAAqB,CAErB,WAAY,CADZ,UAMF,CAEA,gBACE,GAAK,sBAAyB,CAC9B,GAAO,uBAA2B,CACpC,CAGA,aAGE,eAA+B,CAD/B,iBAAkB,CADlB,iBAGF,CAEA,gBAEE,UAAY,CADZ,kBAEF,CAGA,oBACE,SACF,CAEA,0BACE,oBAAoC,CACpC,iBACF,CAEA,0BACE,oBAAoC,CACpC,iBACF,CAEA,gCACE,oBACF,CAGA,0BACE,UACE,UAAY,CACZ,cACF,CAEA,aAEE,eAAgB,CADhB,WAEF,CAEA,cAEE,eAAgB,CADhB,WAEF,CACF,CAEA,0BACE,UACE,SAAW,CACX,aACF,CAEA,aAEE,eAAgB,CADhB,WAEF,CAEA,cAEE,eAAgB,CADhB,WAEF,CAEA,eACE,eACF,CACF,CAEA,0BACE,UACE,qBAAsB,CAEtB,UAAY,CADZ,eAEF,CAEA,2BAKE,gBAAiB,CADjB,cAAe,CAEf,gBAAiB,CAHjB,cAAe,CADf,UAKF,CAEA,eAGE,QAAO,CAFP,gBAAiB,CACjB,cAEF,CACF,CAEA,yBACE,UAEE,SAAW,CADX,aAEF,CAEA,YACE,kBACF,CAEA,eACE,gBACF,CAEA,cACE,eACF,CAEA,MACE,YACF,CAEA,2BAEE,gBACF,CACF,CAEA,yBACE,UACE,cACF,CAEA,YACE,aACF,CAEA,eACE,gBACF,CAEA,MACE,cACF,CAEA,SACE,cACF,CACF,CAGA,kBAGE,2BAA4B,CAF5B,aAAc,CACd,eAAiB,CAEjB,eACF,CAEA,iBACE,OAAU,SAAY,CACtB,OAAY,SAAY,CAC1B,CAGA,iBAME,yCAA0C,CAF1C,0BAA8B,CAA9B,yBAA8B,CAC9B,iBAAkB,CAElB,aAAc,CALd,WAAY,CADZ,UAOF,CAEA,wBACE,GAAK,sBAAyB,CAC9B,GAAO,uBAA2B,CACpC","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/js/main.aba3906b.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
frontend/build/static/js/main.aba3906b.js.LICENSE.txt
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*!
|
| 2 |
+
* Determine if an object is a Buffer
|
| 3 |
+
*
|
| 4 |
+
* @author Feross Aboukhadijeh <https://feross.org>
|
| 5 |
+
* @license MIT
|
| 6 |
+
*/
|
| 7 |
+
|
| 8 |
+
/**
|
| 9 |
+
* @license React
|
| 10 |
+
* react-dom.production.min.js
|
| 11 |
+
*
|
| 12 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 13 |
+
*
|
| 14 |
+
* This source code is licensed under the MIT license found in the
|
| 15 |
+
* LICENSE file in the root directory of this source tree.
|
| 16 |
+
*/
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* @license React
|
| 20 |
+
* react-is.production.min.js
|
| 21 |
+
*
|
| 22 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 23 |
+
*
|
| 24 |
+
* This source code is licensed under the MIT license found in the
|
| 25 |
+
* LICENSE file in the root directory of this source tree.
|
| 26 |
+
*/
|
| 27 |
+
|
| 28 |
+
/**
|
| 29 |
+
* @license React
|
| 30 |
+
* react-jsx-runtime.production.min.js
|
| 31 |
+
*
|
| 32 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 33 |
+
*
|
| 34 |
+
* This source code is licensed under the MIT license found in the
|
| 35 |
+
* LICENSE file in the root directory of this source tree.
|
| 36 |
+
*/
|
| 37 |
+
|
| 38 |
+
/**
|
| 39 |
+
* @license React
|
| 40 |
+
* react.production.min.js
|
| 41 |
+
*
|
| 42 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 43 |
+
*
|
| 44 |
+
* This source code is licensed under the MIT license found in the
|
| 45 |
+
* LICENSE file in the root directory of this source tree.
|
| 46 |
+
*/
|
| 47 |
+
|
| 48 |
+
/**
|
| 49 |
+
* @license React
|
| 50 |
+
* scheduler.production.min.js
|
| 51 |
+
*
|
| 52 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 53 |
+
*
|
| 54 |
+
* This source code is licensed under the MIT license found in the
|
| 55 |
+
* LICENSE file in the root directory of this source tree.
|
| 56 |
+
*/
|
frontend/build/static/js/main.aba3906b.js.map
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
frontend/src/components/ChatInterface.js
CHANGED
|
@@ -68,8 +68,8 @@ N'hĂ©sitez pas Ă ĂȘtre prĂ©cis dans vos questions.`,
|
|
| 68 |
}, 30000); // 30 secondes de timeout
|
| 69 |
|
| 70 |
try {
|
| 71 |
-
//
|
| 72 |
-
console.log('
|
| 73 |
const response = await fetch('/api/chat', {
|
| 74 |
method: 'POST',
|
| 75 |
headers: {
|
|
@@ -97,7 +97,7 @@ N'hĂ©sitez pas Ă ĂȘtre prĂ©cis dans vos questions.`,
|
|
| 97 |
// Récupérer la réponse complÚte
|
| 98 |
const result = await response.json();
|
| 99 |
|
| 100 |
-
// Afficher la réponse directement
|
| 101 |
const assistantMessage = {
|
| 102 |
id: assistantMessageId,
|
| 103 |
type: 'assistant',
|
|
|
|
| 68 |
}, 30000); // 30 secondes de timeout
|
| 69 |
|
| 70 |
try {
|
| 71 |
+
// Utiliser directement l'endpoint normal pour simplicité et fiabilité
|
| 72 |
+
console.log('đŹ Utilisation endpoint normal /api/chat');
|
| 73 |
const response = await fetch('/api/chat', {
|
| 74 |
method: 'POST',
|
| 75 |
headers: {
|
|
|
|
| 97 |
// Récupérer la réponse complÚte
|
| 98 |
const result = await response.json();
|
| 99 |
|
| 100 |
+
// Afficher la réponse directement
|
| 101 |
const assistantMessage = {
|
| 102 |
id: assistantMessageId,
|
| 103 |
type: 'assistant',
|