23 lines
1.5 KiB
Markdown
23 lines
1.5 KiB
Markdown
# SaveInMed - Domínio e Lógica de Negócio Profunda
|
|
|
|
## 🏢 Arquitetura Multi-Tenant
|
|
- **Isolamento**: Usamos `company_id` em todas as tabelas transacionais.
|
|
- **Identificadores**: Usamos **UUID v7** para chaves primárias (sortable e performance-friendly).
|
|
- **Cadastro**: Toda empresa (`Tenant`) deve fornecer um CNPJ válido. A validação (`is_verified`) é manual pelo admin da plataforma.
|
|
|
|
## 📦 Gestão de Inventário e Medicamentos
|
|
- **Lotes e Validades**: O sistema é focado em medicamentos. Produtos sem `batch` (lote) e `expires_at` (validade) são proibidos.
|
|
- **Preços**:
|
|
- `price_cents`: Preço base em centavos.
|
|
- `commercial_discount_cents`: Desconto aplicado.
|
|
- `tax_substitution_cents`: ST (Substituição Tributária) obrigatória para farmácias.
|
|
- **Estoque**: Reservas de estoque ocorrem no momento da criação do pedido (`Order`). Se o pedido expirar ou for cancelado, o estoque volta (`InventoryAdjustment`).
|
|
|
|
## 💰 Fluxo Financeiro e Split de Pagamento
|
|
- **Ledger (Livro Razão)**: Toda transação gera uma entrada imutável no `ledger_entries`.
|
|
- **Marketplace Fee**: A plataforma retém uma porcentagem fixa (configurável em `MARKETPLACE_COMMISSION`).
|
|
- **Withdrawals**: Distribuidoras solicitam saques. O status muda de `PENDING` -> `APPROVED` -> `PAID`.
|
|
|
|
## 📍 Logística e Geolocalização
|
|
- **Cálculo de Frete**: Baseado na distância euclidiana entre as coordenadas (lat/long) da Farmácia e da Distribuidora.
|
|
- **Mapbox**: Usado para geocodificação de endereços no cadastro.
|