2026-02-20 17:19:15 -03:00
|
|
|
.PHONY: install clean db-reset db-seed-fake db-seed-test-users admin-reset admin-rotate-otp \
|
|
|
|
|
run run-gunicorn docker-db-reset docker-db-seed-fake docker-db-seed-test-users \
|
|
|
|
|
docker-admin-reset docker-admin-rotate-otp docker-build docker-up docker-down docker-logs \
|
|
|
|
|
docker-restart docker-db-reset-xplat docker-db-seed-fake-xplat docker-db-seed-test-users-xplat \
|
|
|
|
|
docker-admin-reset-xplat docker-admin-rotate-otp-xplat docker-build-xplat docker-up-xplat \
|
|
|
|
|
docker-down-xplat docker-logs-xplat cache-clear cache-status cache-keys dev-up dev-down \
|
|
|
|
|
prod-build prod-up prod-logs cache-warmup cache-monitor
|
|
|
|
|
|
2025-01-08 00:19:49 -03:00
|
|
|
install:
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
2025-03-27 14:34:16 -03:00
|
|
|
clean:
|
2026-02-20 17:19:15 -03:00
|
|
|
rm -f ~/.local/share/controles/database.db*
|
|
|
|
|
rm -f database.db*
|
|
|
|
|
rm -f data/database.db*
|
2025-03-27 14:34:16 -03:00
|
|
|
rm -f admin_qr.png
|
2026-02-20 17:19:15 -03:00
|
|
|
rm -f data/admin_qr.png
|
|
|
|
|
rm -f /tmp/admin_qr.png
|
2026-03-06 17:37:54 -03:00
|
|
|
find . -type d -name "__pycache__" -prune -exec rm -rf {} +
|
2025-03-27 14:34:16 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
db-reset: clean
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B scripts/manage.py db_reset
|
2025-03-27 14:34:16 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
# Apenas seed (seed_database.py)
|
|
|
|
|
db-seed-fake:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B scripts/manage.py db_seed_fake
|
2025-04-04 09:24:56 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
# Apenas seed (create_test_users.py)
|
|
|
|
|
db-seed-test-users:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B scripts/manage.py db_seed_test_users
|
2025-04-15 15:10:21 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
# Busca o OTP padrão
|
|
|
|
|
admin-reset:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B scripts/manage.py admin_reset
|
2025-04-09 09:59:12 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
# Novo OTP
|
|
|
|
|
admin-rotate-otp:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B scripts/manage.py admin_rotate_otp
|
2025-04-04 09:24:56 -03:00
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
# Server padrão do python
|
|
|
|
|
run:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B app.py
|
|
|
|
|
|
|
|
|
|
# server padrão de produção (recomendado)
|
|
|
|
|
run-gunicorn:
|
|
|
|
|
PYTHONUNBUFFERED=1 python -B -m gunicorn --bind 0.0.0.0:5000 app:app
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
# Docker commands
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-db-reset:
|
|
|
|
|
mkdir -p data logs
|
|
|
|
|
docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_reset
|
|
|
|
|
|
|
|
|
|
docker-db-seed-fake:
|
|
|
|
|
docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_seed_fake
|
|
|
|
|
|
|
|
|
|
docker-db-seed-test-users:
|
|
|
|
|
docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_seed_test_users
|
|
|
|
|
|
|
|
|
|
docker-admin-reset:
|
|
|
|
|
docker-compose -f docker-compose.yml exec app python -B scripts/manage.py admin_reset
|
|
|
|
|
|
|
|
|
|
docker-admin-rotate-otp:
|
|
|
|
|
docker-compose -f docker-compose.yml exec app python -B scripts/manage.py admin_rotate_otp
|
|
|
|
|
|
2025-07-01 13:42:56 -03:00
|
|
|
docker-build:
|
2026-02-20 17:19:15 -03:00
|
|
|
mkdir -p data logs
|
|
|
|
|
docker-compose -f docker-compose.yml build
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
docker-up:
|
2026-02-20 17:19:15 -03:00
|
|
|
mkdir -p data logs
|
|
|
|
|
docker-compose -f docker-compose.yml up -d
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
docker-down:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml down
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
docker-logs:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml logs -f
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
docker-restart:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml restart
|
|
|
|
|
|
|
|
|
|
# Docker commands (fallback cross-platform)
|
|
|
|
|
docker-db-reset-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_reset
|
|
|
|
|
|
|
|
|
|
docker-db-seed-fake-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_seed_fake
|
|
|
|
|
|
|
|
|
|
docker-db-seed-test-users-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_seed_test_users
|
|
|
|
|
|
|
|
|
|
docker-admin-reset-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py admin_reset
|
|
|
|
|
|
|
|
|
|
docker-admin-rotate-otp-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py admin_rotate_otp
|
|
|
|
|
|
|
|
|
|
docker-build-xplat:
|
|
|
|
|
mkdir -p data logs
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml build
|
|
|
|
|
|
|
|
|
|
docker-up-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml up -d
|
|
|
|
|
|
|
|
|
|
docker-down-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml down
|
|
|
|
|
|
|
|
|
|
docker-logs-xplat:
|
|
|
|
|
docker-compose -f docker-compose.crossplatform.yml logs -f
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
# Redis cache commands
|
|
|
|
|
cache-clear:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml exec redis redis-cli FLUSHDB
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
cache-status:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml exec redis redis-cli INFO
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
cache-keys:
|
2026-02-20 17:19:15 -03:00
|
|
|
docker-compose -f docker-compose.yml exec redis redis-cli KEYS "*"
|
2025-07-01 13:42:56 -03:00
|
|
|
|
|
|
|
|
# Development with Docker
|
|
|
|
|
dev-up: docker-build docker-up
|
|
|
|
|
@echo "Development environment started with Redis cache"
|
|
|
|
|
@echo "Application: http://localhost:5000"
|
|
|
|
|
|
|
|
|
|
dev-down: docker-down
|
|
|
|
|
@echo "Development environment stopped"
|
|
|
|
|
|
|
|
|
|
# Production commands
|
|
|
|
|
prod-build:
|
|
|
|
|
docker-compose -f docker-compose.yml build --no-cache
|
|
|
|
|
|
|
|
|
|
prod-up:
|
|
|
|
|
docker-compose -f docker-compose.yml up -d
|
|
|
|
|
|
|
|
|
|
prod-logs:
|
|
|
|
|
docker-compose -f docker-compose.yml logs -f app
|
|
|
|
|
|
|
|
|
|
# Cache management
|
|
|
|
|
cache-warmup:
|
|
|
|
|
@echo "Warming up cache..."
|
|
|
|
|
curl -X GET http://localhost:5000/api/dashboard/stats
|
|
|
|
|
curl -X GET http://localhost:5000/api/dashboard/militante-stats
|
|
|
|
|
curl -X GET http://localhost:5000/api/dashboard/financial-stats
|
|
|
|
|
@echo "Cache warmup completed"
|
|
|
|
|
|
|
|
|
|
cache-monitor:
|
|
|
|
|
@echo "Monitoring Redis cache..."
|
2026-02-20 17:19:15 -03:00
|
|
|
watch -n 5 'docker-compose -f docker-compose.yml exec redis redis-cli INFO memory'
|