🚀 Cheat Sheet - C-Suite Ecosystem
Referência rápida para desenvolvedores
📦 Imports Comuns
# Logging
from common.common_logging import setup_logging, get_logger
logger = get_logger(__name__)
# Error Handling
from common.common_errors import CSuiteError, ErrorCode, error_handler
# Health Checks
from common.common_health import create_health_router
# Métricas
from common.common_metrics import create_metrics_router, create_metrics_middleware
# Tracing
from common.common_tracing import setup_tracing, get_tracer
# Circuit Breaker
from common.common_http_client import get_http_client
# Event Sourcing
from common.common_event_sourcing import get_event_store, EventType
# Business Metrics
from common.common_business_metrics import define_business_counter, get_business_metric
# SLOs
from common.common_slos import SLOTracker, SLO, SLIType
# Async Processing
from common.common_async import async_task, delay_task, get_task_result
# Configuração
from common.core_config import get_csuite_api_url, get_fourc_decision_api_url
🔧 Setup Básico de App FastAPI
from fastapi import FastAPI
import sys
from pathlib import Path
# Adiciona common ao path
COMMON_PATH = str(Path(__file__).resolve().parents[N])
sys.path.insert(0, COMMON_PATH)
# Imports com fallback
try:
from common.common_logging import setup_logging, get_logger
from common.common_errors import error_handler
from common.common_health import create_health_router
from common.common_metrics import create_metrics_router
from common.common_tracing import setup_tracing
ENABLED = True
except ImportError:
ENABLED = False
import logging
logger = logging.getLogger(__name__)
app = FastAPI(title="Meu App")
# Configuração
if ENABLED:
setup_logging(app_name="meu-app")
logger = get_logger(__name__)
app.add_exception_handler(Exception, error_handler)
app.include_router(create_health_router("meu-app"))
app.include_router(create_metrics_router("meu-app"))
setup_tracing(app, "meu-app")
📝 Padrões de Código
Logging
logger.info("Mensagem", extra={"key": "value"})
logger.error("Erro", exc_info=True)
Error Handling
raise CSuiteError(
error_code=ErrorCode.RESOURCE_NOT_FOUND,
message="Recurso não encontrado",
details={"resource_id": 123}
)
HTTP Client com Circuit Breaker
async with get_http_client(
base_url="http://api.externa.com",
timeout=5.0,
circuit_breaker_name="api_externa"
) as client:
response = await client.get("/endpoint")
data = response.json()
Event Sourcing
event_store = get_event_store("csuite")
event_id = event_store.record_event(
event_type=EventType.DECISION_CREATED,
aggregate_id=str(decision_id),
aggregate_type="decision",
payload={"decision": decision_data}
)
Business Metrics
# No startup
define_business_counter("decisions_total", "Total decisions", ["org_id"])
# No código
get_business_metric("decisions_total").labels(org_id="1").inc()
Async Task
@async_task(name="app.process_data")
def process_data(data: dict) -> dict:
# Processamento pesado
return result
# Executar
task_result = delay_task(process_data, data)
task_id = task_result.id
# Verificar status
status = get_task_result(task_id)
🧪 Testes
# Executar todos
pytest
# Com cobertura
pytest --cov=common --cov-report=html
# Teste específico
pytest tests/common/test_common_errors.py
🔍 Comandos Úteis
Formatação e Linting
# Formatar
make format
# ou
black common/ scripts/ tests/ --line-length=100
isort common/ scripts/ tests/ --profile=black --line-length=100
# Verificar formatação
make format-check
# Linting
make lint
# ou
flake8 common/ scripts/ tests/ --max-line-length=100 --extend-ignore=E203,W503,E501
Validação
# Validar ecossistema
python3 scripts/validate_ecosystem.py
# Security check
python3 scripts/security_check.py
Backup
# Backup
python3 scripts/backup_database.py backup --db_type csuite
# Restore
python3 scripts/backup_database.py restore --db_type csuite --backup_file /path/to/backup.sql
📊 Endpoints Padrão
Todos os apps expõem:
GET /health- Health check básicoGET /ready- Readiness checkGET /metrics- Métricas PrometheusGET /docs- Swagger UI
🔗 Links Rápidos
- Guia Rápido:
docs/GUIA_RAPIDO_REFERENCIA.md - Onboarding:
docs/ONBOARDING.md - Roadmap:
docs/ROADMAP.md - Pendências:
docs/PENDENCIAS.md - Índice:
docs/INDEX.md
Última atualização: 2025-12-01