- migrations/001_initial_schema.sql: DDL idempotente con CREATE TABLE/INDEX IF NOT EXISTS - database.py: run_migrations() aplica .sql pendientes en orden; init_db() queda como alias - health.py: servidor aiohttp en puerto 8080 — GET /health, GET /health/history, POST /webhook Watcher loop alerta al admin por Telegram si el poller no actualiza en N horas - config.py: webhook_url, webhook_secret, health_port, health_alert_hours - poller.py: on_poll_done callback (conecta con health.record_poll) - main.py: arranca HealthServer, llama run_migrations, modo webhook opt-in via WEBHOOK_URL - Dockerfile + docker-compose.yml + .dockerignore - pyproject.toml: aiohttp>=3.9 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
299 B
Plaintext
29 lines
299 B
Plaintext
# Secretos — nunca en la imagen
|
|
.env
|
|
.env.bak
|
|
.env.*
|
|
|
|
# Datos en tiempo de ejecución (se montan como volumen)
|
|
data/
|
|
|
|
# Logs
|
|
logs/
|
|
|
|
# Cache y builds
|
|
__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
.pytest_cache/
|
|
.ruff_cache/
|
|
.mypy_cache/
|
|
.venv/
|
|
|
|
# Git
|
|
.git/
|
|
.gitignore
|
|
|
|
# Docs y archivos de desarrollo
|
|
*.md
|
|
docs/
|
|
tests/
|