-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
117 lines (95 loc) · 4.19 KB
/
Makefile
File metadata and controls
117 lines (95 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# =============================================================================
# Makefile - Fraud Detection MLOps
# =============================================================================
# Comandos padronizados para desenvolvimento, teste e execução
# Use: make <target>
# =============================================================================
.PHONY: help install test train run batch docker-build docker-run clean
# Variáveis
PYTHON := python
MODEL_NAME := fraud_detector_v1
PORT := 5000
# -----------------------------------------------------------------------------
# Ajuda
# -----------------------------------------------------------------------------
help:
@echo "Comandos disponíveis:"
@echo ""
@echo " make install - Instala dependências"
@echo " make test - Executa testes com cobertura"
@echo " make train - Treina o modelo"
@echo " make run - Inicia a API"
@echo " make batch - Executa predição em lote"
@echo " make docker-build - Constrói imagem Docker"
@echo " make docker-run - Executa container Docker"
@echo " make clean - Remove arquivos temporários"
@echo ""
# -----------------------------------------------------------------------------
# Setup
# -----------------------------------------------------------------------------
install:
$(PYTHON) -m pip install --upgrade pip
$(PYTHON) -m pip install -r requirements.txt
# -----------------------------------------------------------------------------
# Testes
# -----------------------------------------------------------------------------
test:
$(PYTHON) -m pytest tests/
test-verbose:
$(PYTHON) -m pytest tests/ -v --tb=long
test-cov:
$(PYTHON) -m pytest tests/ --cov-report=html
@echo "Relatório HTML gerado em htmlcov/index.html"
# -----------------------------------------------------------------------------
# Treinamento
# -----------------------------------------------------------------------------
train:
$(PYTHON) -m ml.models.train --model-type logistic_regression --output-name $(MODEL_NAME)
train-rf:
$(PYTHON) -m ml.models.train --model-type random_forest --output-name $(MODEL_NAME)_rf
evaluate:
$(PYTHON) -m ml.models.evaluate --model-name $(MODEL_NAME)
# -----------------------------------------------------------------------------
# API
# -----------------------------------------------------------------------------
run:
$(PYTHON) -m app.main --port $(PORT)
run-debug:
$(PYTHON) -m app.main --port $(PORT) --debug
# -----------------------------------------------------------------------------
# Batch
# -----------------------------------------------------------------------------
batch:
@echo "Uso: make batch INPUT=<arquivo.csv> OUTPUT=<saida.csv>"
@echo "Exemplo: make batch INPUT=data/sample.csv OUTPUT=data/predictions.csv"
batch-run:
$(PYTHON) -m batch.run_batch --input $(INPUT) --output $(OUTPUT) --model $(MODEL_NAME)
# -----------------------------------------------------------------------------
# Docker
# -----------------------------------------------------------------------------
docker-build:
docker build -t fraud-detection-api -f docker/Dockerfile .
docker-run:
docker run -p $(PORT):5000 --env-file .env fraud-detection-api
docker-compose-up:
docker-compose -f docker/docker-compose.yml up -d
docker-compose-down:
docker-compose -f docker/docker-compose.yml down
# -----------------------------------------------------------------------------
# Limpeza
# -----------------------------------------------------------------------------
clean:
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name "htmlcov" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete 2>/dev/null || true
find . -type f -name ".coverage" -delete 2>/dev/null || true
@echo "Arquivos temporários removidos"
# -----------------------------------------------------------------------------
# Atalhos de desenvolvimento
# -----------------------------------------------------------------------------
dev: install test run
lint:
@echo "TODO: Adicionar linter (ruff, flake8, etc.)"
format:
@echo "TODO: Adicionar formatter (black, ruff format, etc.)"