Saltar a contenido

Deployment Checklist - SignalDashPro#

Playbook para mover cambios a demo/live sin pasar por alto migraciones, seeds y trabajos automatizados. Sigue el orden antes / durante / despues y marca cada paso en tu runbook.

1. Antes del despliegue#

  • Ventana y comunicacion
  • Confirma la ventana con trading/operaciones y silencia automatizaciones sensibles (ej. ejecucion real de senales).
  • Notifica al canal operativo interno que aplicaras cambios y comparte un ETA.
  • Respaldos
  • Ejecuta pg_dump -h <host> -U postgres signaldashpro > backups/<fecha>.sql.
  • Copia storage/models/ y storage/bi_exports/ si entrenaste modelos o exportaste datasets recientes.
  • Infra y configuracion
  • Revisa las variables en tu .env o secret store. Claves: DATABASE_URL, BINANCE_*, AUTH_*, CORS_ALLOW_ORIGINS, NEWS*_, DATA_PIPELINE_*, BI_EXPORT_*, TRAINING_*, META_GOAL_*.
  • Verifica credenciales de APIs externas (NEWSAPI_KEY, PRIXE_API_KEY, TRADINGECONOMICS_API_KEY o FMP_API_KEY).
  • Salud del codigo
  • python -m pytest backend/tests -q
  • Ejecutar linters/tests del frontend segun el stack vigente (Next.js/React cuando este disponible).
  • Corrige cualquier error antes de continuar.

2. Durante el despliegue#

  1. Congela automatizaciones
  2. Deten systemd services, Task Scheduler o cron jobs que invoquen scripts run_*.py.
  3. Si hace falta, pon *_AUTO_RUN=false temporalmente en el .env.

  4. Actualizar codigo

  5. git pull --ff-only
  6. Backend: cd backend && pip install -r requirements.txt
  7. Frontend: actualizar dependencias segun el proyecto (Next.js/React cuando este disponible).

  8. Migraciones y seeds

  9. Crea o actualiza tablas:

    python - <<'PY'
    from backend.database import create_db_and_tables
    create_db_and_tables()
    PY
    
  10. Verifica cambios en Postgres (\d <tabla>).

  11. Seeds / ingestas utiles (orden recomendado):

    1. Histórico de velas M15 (backfill diario desde Binance)

      Dato Script Nota
      M15 1-año histórico python scripts/backfill_paxg_m15_history.py --symbol PAXGUSDT --interval 15m --days 365 Sincroniza datos históricos M15 desde Binance a la BD. Ejecutar diariamente (cron @midnight UTC) para mantener actualizados los últimos 30-365 días. Es idempotente (no duplica).
    2. Velas base (M1/M15) desde ticks (opcional)

      Dato Script Nota
      Candles M1/M15 python scripts/build_candles_from_ticks.py --symbol EURUSD --timeframe M15 --start ... --end ... Agrega velas intradia a partir de la tabla ticks.
    3. Velas derivadas y volatilidad

      Dato Script Nota
      H1/H4 + stats python scripts/build_higher_timeframes.py --timeframes H1 H4 --symbol EURUSD Deriva H1/H4 desde M15 y recalcula estadisticas VolatilityStat.
      Market windows python scripts/build_market_windows.py --timeframe H1 --symbols EURUSD XAUUSD Fusiona velas + volatilidad + noticias en market_windows.
    4. Indicadores tecnicos

      Dato Script Nota
      SMA/EMA/RSI/ATR python scripts/build_candle_indicators.py --symbol EURUSD --timeframe M15 Precalcula indicadores sobre las velas almacenadas.
    5. News, IA y pipeline

      Dato Script Nota
      Noticias + resumen IA python scripts/import_market_news.py --symbols EURUSD XAUUSD --brainstorm Reanuda news + brainstorming inicial.
      Pipeline completo python scripts/run_data_pipeline.py --symbols EURUSD XAUUSD --timeframe H1 Ejecuta news -> summaries -> windows -> brainstorming/backtests segun configuracion.
    6. Backtest de humo

      Dato Script Nota
      Backtest baseline python scripts/run_backtest.py --strategy-name DeploymentSmoke --symbol EURUSD --timeframe H1 --start ... --end ... --fast-ma 10 --slow-ma 30 --allow-short Verifica que existan velas suficientes y que se generan backtest_jobs/backtest_trades.
  12. Variables y servicios

  13. Actualiza .env en el host y reinicia FastAPI (scripts/run_backend.ps1, systemctl restart signaldashpro.service, etc.).
  14. Vigila storage/logs/signaldashpro.log hasta que no aparezcan errores de arranque.

  15. Jobs recurrentes

  16. Programa cron/Task Scheduler usando esta referencia:

    Job Variable *_AUTO_RUN Script Frecuencia sugerida
    Import news NEWS_AUTO_RUN python scripts/import_market_news.py --symbols ... Cada 15 min
    News summary NEWS_SUMMARY_AUTO_RUN python scripts/import_market_news.py --summary-only Cada 30 min
    Backfill histórico M15 N/A (manual) python scripts/backfill_paxg_m15_history.py --symbol PAXGUSDT --interval 15m --days 30 Cada medianoche UTC
    Data pipeline DATA_PIPELINE_AUTO_RUN python scripts/run_data_pipeline.py Cada 60 min
    BI export BI_EXPORT_AUTO_RUN python scripts/export_bi_datasets.py ... Cada 4 h
    Training TRAINING_AUTO_RUN python scripts/run_training_pipeline.py ... Diario
    Goal monitor META_GOAL_AUTO_RUN Endpoint /analytics/goals/run o job dedicado Cada 60 min
  17. Documenta en el host (/etc/cron.d/signaldashpro, Task Scheduler, etc.) quien ejecuta cada job y con que usuario.

3. Despues del despliegue#

  • Smoke tests
  • curl http://<host>:8096/binance/status responde 200.
  • GET /analytics/summary y /analytics/diary responden en menos de 1 s.
  • GET /jobs/status muestra market_sync en verde (si MARKET_SYNC_AUTO_RUN=true).
  • Docs: GET /docs/CHANGELOG/ responde 200 y contiene la etiqueta Changelog (fallback permitido: /docs/changelog/).
  • Desde el frontend revisa que /binance, /jobs, /market carguen sin errores.
  • Automatizaciones
  • Lanza manualmente cada cron (systemctl start signaldashpro-news.service, schtasks /run /tn "SignalDashPro_BI_Export", etc.) y valida en storage/logs/signaldashpro.log.
  • Devuelve *_AUTO_RUN=true si lo habias deshabilitado.
  • Alertas externas/locales
  • Ejecuta systemctl start signaldashpro-alerts.service y valida artefacto storage/logs/ops/alerts-*.log antes de cerrar la ventana.
  • Cierre
  • Actualiza TODO.md o el issue correspondiente con hora/resultado.
  • Informa al canal operativo que el despliegue termino y adjunta los resultados de smoke tests.

Manten este checklist en docs/deploy_checklist.md y ajustalo cuando se agreguen servicios o jobs nuevos.

Nota operativa: scripts/ct110_deploy_release.sh valida automaticamente rutas de changelog del servicio docs (/docs/CHANGELOG/ y fallback /docs/changelog/; puede desactivarse con --verify-docs-changelog=false).

Atajo recomendado para docs solamente:

scripts/ct110_deploy_docs.sh

Este atajo reutiliza ct110_deploy_retry.sh y ejecuta deploy del servicio docs con verificacion de changelog habilitada.

Para el monitor semanal (docs_changelog_check.sh), el chequeo publico viene desactivado por defecto para evitar falsos negativos por routing/edge desde CT110. Si quieres exigir endpoint publico, define DOCS_CHANGELOG_CHECK_PUBLIC=true en el entorno del host.