chore: add AGENT.md
This commit is contained in:
parent
07245021d4
commit
8b68bbb066
4 changed files with 76 additions and 0 deletions
23
AGENT.md
Normal file
23
AGENT.md
Normal 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
15
TASKS.md
Normal 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
15
TESTING.md
Normal 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
23
backend/DOMAIN.md
Normal 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.
|
||||||
Loading…
Reference in a new issue