chore: add AGENT.md

This commit is contained in:
Tiago Ribeiro 2026-03-07 18:45:58 -03:00
parent 07245021d4
commit 8b68bbb066
4 changed files with 76 additions and 0 deletions

23
AGENT.md Normal file
View file

@ -0,0 +1,23 @@
# SaveInMed - AI Engineering Standards (Advanced)
## 🎨 Lei do Estilo Único (Frontend)
1. **Zero CSS Customizado**: É PROIBIDO criar classes CSS novas no `globals.css` ou usar o atributo `style={{}}`.
2. **Componentes UI**: Use EXCLUSIVAMENTE componentes da pasta `@/components/ui` (padrão shadcn). Se precisar de um componente novo, peça permissão ou siga o padrão Radix UI.
3. **Atomicidade**: Separe "Smart Components" (que buscam dados) de "Dumb Components" (que apenas renderizam UI).
4. **Tailwind Only**: Use apenas classes utilitárias padrão do Tailwind. Não invente valores arbitrários (ex: `w-[347px]`), use a escala padrão (`w-80`).
## 🧪 Protocolo de Teste (Mandatório)
1. **Backend**: Todo UseCase em `internal/usecase` DEVE ter um arquivo `_test.go` cobrindo sucesso e erro (usando mocks das interfaces em `domain/ports`).
2. **Frontend**: Componentes críticos (Checkout, Cart) devem ter testes unitários com Vitest.
3. **Validação**: Antes de dar a tarefa como pronta, o agente deve rodar `go test ./...` e `npm run build` no frontend para garantir que não quebrou tipos.
## ðŸ“<C5B8> Estrutura de Pastas (Lei do Projeto)
- `@/components/modules/*`: Componentes complexos por funcionalidade (ex: `Cart/`, `Checkout/`).
- `@/components/ui/*`: Componentes base (Botão, Input, Modal).
- `@/hooks/*`: Toda lógica de API e estados complexos.
- `@/services/*`: Chamadas puras de API (Axios/Fetch).
## ?? Gestão de Credenciais
- **Dinâmico**: Todas as chaves de API devem ser gerenciáveis via Dashboard e salvas no banco de dados.
- **Segurança**: Chaves sensíveis devem ser armazenadas de forma segura ou rotacionadas via sistema.

15
TASKS.md Normal file
View file

@ -0,0 +1,15 @@
# SaveInMed - Atividades
## 🎯 Backlog Prioritário
1. [ ] Implementar listagem de pedidos na Distribuidora.
2. [ ] Adicionar filtro por validade no catálogo de produtos.
3. [ ] Integrar checkout com gateway de pagamento (Asaas/Stripe).
## 🐛 Bugs Conhecidos
- [x] Erro de acentuação (Encoding UTF-8) - CORRIGIDO.
- [x] Falha no login do admin (Password Pepper) - CORRIGIDO.
- [ ] Modal de endereço fechando ao clicar fora sem salvar.
## ✅ Concluído recentemente
- Setup do ambiente Docker com Hot Reload na VPS echo.
- Sincronização de domínios sim.rede5.com.br.

15
TESTING.md Normal file
View file

@ -0,0 +1,15 @@
# SaveInMed - Protocolo de Testes
## 🛠️ Ferramentas
- **Backend**: Go `testing` package + `stretchr/testify` + `sqlmock`.
- **Frontend**: `Vitest` + `Testing Library`.
## 🔬 O que testar? (Prioridades)
1. **Auth**: Fluxo de login e extração de `company_id` do JWT.
2. **Cart**: Adição de itens, cálculo de centavos e prevenção de quantidades negativas.
3. **Checkout**: Garantir que a reserva de estoque ocorre corretamente.
4. **CORS/Nginx**: Testes de fumaça (Smoke Tests) via `curl` nas URLs da VPS.
## 🏃 Como rodar
- **Backend**: `docker exec sim-backend-dev go test ./...`
- **Frontend**: `npm run test`

23
backend/DOMAIN.md Normal file
View file

@ -0,0 +1,23 @@
# 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.