1
Liste os Fluxos Principais/Funcionalidades
- Escreva, rapidamente, as principais funcionalidades do sistema (não se preocupe com telas ou detalhes).
-
Exemplos:
- Usuário cadastra operação financeira
- Sistema executa grid na Binance
- Sistema simula estratégia com histórico
- Usuário consulta extrato/saldo
- Robô executa ordem real
2
Identifique os Substantivos e Atores
- Para cada fluxo, destaque substantivos (potenciais entidades do domínio).
- Marque também os atores envolvidos (usuário, robô, admin, exchange, etc).
-
Exemplo de substantivos:
Usuário, Conta, Operação, Ordem, Grid, Estratégia, Mercado, Preço, Histórico, Robô, Exchange, Saldo...
3
Separe os Domínios Principais
- Divida em blocos de assunto próprio (domínios), sem misturar conceitos diferentes.
-
Exemplos de domínios:
- user
- account
- operation
- order
- market_data
- strategy
- simulation
- wallet
- Cuidado: "operation" ≠ "order" ≠ "market_data"
4
Modele as Entidades principais
- Modele apenas as principais entidades, listando nome, campos e sentido no negócio.
- Não pense em implementação agora!
- Use nomes claros e autoexplicativos.
class User: id: str name: str email: str class Operation: id: str user_id: str strategy: str capital: float status: str created_at: datetime class Order: id: str operation_id: str symbol: str side: str # buy/sell qty: float price: float executed_at: datetime class PriceEntry: id: str symbol: str timestamp: datetime open: float close: float high: float low: float volume: float
5
Defina os Casos de Uso ("use cases")
- Liste as ações importantes do sistema. Cada ação principal vira um caso de uso.
-
Exemplos:
- SimulateGridStrategyCommand
- CreateOrderCommand
- GetAccountBalanceQuery
- RunTradingBotCommand
6
Pense nos Limites de Integração
- Marque tudo que depende de API externa, banco de dados, microserviços, etc.
- Exemplos: Binance API, serviços de broker, storage, etc.
7
Crie a Estrutura de Pastas
- Monte as pastas para cada domínio principal, já pensando em crescimento.
src/
domain/
user/
entities/
repositories/
strategies/
operation/
entities/
repositories/
strategies/
market_data/
entities/
repositories/
...
application/
user/
commands/
queries/
dtos/
operation/
commands/
queries/
dtos/
market_data/
commands/
queries/
dtos/
infrastructure/
user/
operation/
market_data/
...
shared/
logging/
utils/
...
api/
routers/
schemas/
...
Dicas de Ouro:
- Não invente nomes: use o vocabulário do negócio!
- Revise nomes com alguém do negócio. Consulte docs e open-source se precisar.
- Se um nome começar a "abranger tudo", provavelmente está ERRADO (ex: data, register, info).
- Evite classes/tabelas com nome genérico: seja específico!
- Errar um nome agora dói lá na frente. Siga o método e evite retrabalho!
✅ Liste funcionalidades principais
🔎 Extraia substantivos e atores
🗂️ Separe domínios de negócio
📦 Modele entidades (nome + campos)
🧠 Liste casos de uso
🌐 Pense nas integrações externas
📁 Monte estrutura já pensando em crescimento