Cheat Sheet

🚀 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:



Última atualização: 2025-12-01

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir