ready packed app
This commit is contained in:
16
Dockerfile
Normal file
16
Dockerfile
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
FROM python:3.10-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN mkdir -p static
|
||||||
|
|
||||||
|
COPY static/index.html static/
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
19
docker-compose.yml
Normal file
19
docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/api/benchmarks"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 10s
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1'
|
||||||
|
memory: 512M
|
||||||
2
main.py
2
main.py
@@ -3,7 +3,7 @@ from fastapi.middleware.cors import CORSMiddleware
|
|||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
import os
|
import os
|
||||||
from services import benchmarks
|
import benchmarks
|
||||||
|
|
||||||
app = FastAPI(title="RAG Benchmark Dashboard")
|
app = FastAPI(title="RAG Benchmark Dashboard")
|
||||||
|
|
||||||
|
|||||||
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fastapi==0.100.0
|
||||||
|
uvicorn==0.22.0
|
||||||
|
python-multipart==0.0.6
|
||||||
3
run.sh
Executable file
3
run.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
uvicorn main:app --host 0.0.0.0 --port 8888 --reload
|
||||||
@@ -230,7 +230,8 @@
|
|||||||
expandedQuestions: {},
|
expandedQuestions: {},
|
||||||
notification: {
|
notification: {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: 'Benchmark data loaded successfully!'
|
message: 'Benchmark data loaded successfully!',
|
||||||
|
autoDismiss: true // Add autoDismiss flag for success notifications
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -300,7 +301,8 @@
|
|||||||
expandedQuestions: {},
|
expandedQuestions: {},
|
||||||
notification: {
|
notification: {
|
||||||
type: 'info',
|
type: 'info',
|
||||||
message: 'All uploaded benchmarks have been cleared.'
|
message: 'All uploaded benchmarks have been cleared.',
|
||||||
|
autoDismiss: true // Auto-dismiss for info notifications too
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -308,6 +310,18 @@
|
|||||||
// Update state and trigger re-render
|
// Update state and trigger re-render
|
||||||
setState(newState) {
|
setState(newState) {
|
||||||
this.state = { ...this.state, ...newState };
|
this.state = { ...this.state, ...newState };
|
||||||
|
|
||||||
|
// Auto-dismiss success and info notifications
|
||||||
|
if (this.state.notification && this.state.notification.autoDismiss) {
|
||||||
|
setTimeout(() => {
|
||||||
|
// Only clear the notification if it hasn't changed since the timeout was set
|
||||||
|
if (this.state.notification && this.state.notification.autoDismiss) {
|
||||||
|
this.state.notification = null;
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
}, 3000); // Auto-dismiss after 3 seconds
|
||||||
|
}
|
||||||
|
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user