fix(convex): mover cron jobs para API HTTP + crontab do Linux

Problema:
- Cron jobs do Convex criam registros em _scheduled_job_logs
- Convex self-hosted carrega TODAS as versoes em memoria
- 1488 execucoes/dia = ~45k registros/mes acumulando
- Uso de memoria chegando a 19GB, causando 12 OOM kills/dia

Solucao:
- Criar endpoints HTTP em /api/cron/* para substituir crons
- Desabilitar crons no Convex (comentados em crons.ts)
- Chamar endpoints via crontab do Linux

Novos arquivos:
- src/app/api/cron/chat-cleanup/route.ts
- src/app/api/cron/usb-cleanup/route.ts
- scripts-static/* (copiado da VPS para versionamento)

Documentacao:
- docs/OPERATIONS.md secao 12 com instrucoes do crontab

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
rever-tecnologia 2025-12-10 08:51:32 -03:00
parent e2dde8510a
commit 178c7d7341
10 changed files with 1357 additions and 19 deletions

View file

@ -0,0 +1,32 @@
version: "3.8"
services:
scripts_static:
image: nginx:1.27-alpine
networks:
- traefik_public
volumes:
- /root/scripts-static:/usr/share/nginx/html:ro
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
deploy:
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.http.routers.scripts.rule=Host(`scripts.rever.com.br`)
- traefik.http.routers.scripts.entrypoints=websecure
- traefik.http.routers.scripts.tls.certresolver=le
- traefik.http.services.scripts.loadbalancer.server.port=80
restart_policy:
condition: any
delay: 5s
max_attempts: 3
networks:
traefik_public:
external: true