diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e910d59..6d020bd 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -17,7 +17,8 @@ "Bash(/usr/bin/node node_modules/.bin/tsc --noEmit)", "Bash(fish -c \"which node\")", "Read(//opt/**)", - "Bash(/home/anthony/.config/JetBrains/WebStorm2026.1/node/versions/24.14.1/bin/node node_modules/.bin/tsc --noEmit)" + "Bash(/home/anthony/.config/JetBrains/WebStorm2026.1/node/versions/24.14.1/bin/node node_modules/.bin/tsc --noEmit)", + "Bash(chmod +x /home/anthony/Documents/Projects/Tradarr/build-push.sh)" ] } } diff --git a/.gitignore b/.gitignore index 76fb642..66f8265 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ Thumbs.db # Logs *.log + +# Scripts de déploiement +build-push.sh diff --git a/backend/internal/ai/pipeline.go b/backend/internal/ai/pipeline.go index d8356ce..fe0b000 100644 --- a/backend/internal/ai/pipeline.go +++ b/backend/internal/ai/pipeline.go @@ -157,6 +157,7 @@ func (p *Pipeline) filterByRelevance(ctx context.Context, provider Provider, sym func buildFilterPrompt(symbols []string, articles []models.Article, max int) string { var sb strings.Builder + sb.WriteString("/no_think\n") sb.WriteString("Tu es un assistant de trading financier. ") sb.WriteString(fmt.Sprintf("Parmi les %d articles ci-dessous, sélectionne les %d plus pertinents pour un trader actif.\n", len(articles), max)) @@ -275,6 +276,7 @@ func buildPrompt(systemPrompt string, symbols []string, articles []models.Articl sb.WriteString(".\n\n") } sb.WriteString(fmt.Sprintf("Date d'analyse : %s\n\n", time.Now().Format("02/01/2006 15:04"))) + sb.WriteString("/think\n\n") sb.WriteString("## Actualités\n\n") for i, a := range articles { diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..27045dc --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,58 @@ +services: + postgres: + image: postgres:16-alpine + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB:-tradarr} + POSTGRES_USER: ${POSTGRES_USER:-tradarr} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} + volumes: + - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-tradarr}"] + interval: 10s + timeout: 5s + retries: 5 + + scraper: + image: gitea.anthonybouteiller.ovh/blomios/tradarr-scraper:v1.0.0 + restart: unless-stopped + expose: + - "3001" + + backend: + image: gitea.anthonybouteiller.ovh/blomios/tradarr-backend:v1.0.0 + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + scraper: + condition: service_started + environment: + DATABASE_URL: "host=postgres port=5432 user=${POSTGRES_USER:-tradarr} password=${POSTGRES_PASSWORD} dbname=${POSTGRES_DB:-tradarr} sslmode=disable" + JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required} + ENCRYPTION_KEY: ${ENCRYPTION_KEY:?ENCRYPTION_KEY must be 32 bytes hex} + PORT: "8080" + SCRAPER_URL: "http://scraper:3001" + ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@tradarr.local} + ADMIN_PASSWORD: ${ADMIN_PASSWORD:-changeme} + expose: + - "8080" + + ollama: + image: ollama/ollama + restart: unless-stopped + volumes: + - ollama_data:/root/.ollama + + frontend: + image: gitea.anthonybouteiller.ovh/blomios/tradarr-frontend:v1.0.0 + restart: unless-stopped + depends_on: + - backend + ports: + - "${FRONTEND_PORT:-80}:80" + +volumes: + pgdata: + ollama_data: