# Backend API - Documentação Técnica ## Status (pronto x faltando) **Pronto** - Conteúdo descrito neste documento. **Faltando** - Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário. --- ## Visão Geral API de alta performance em Go para o marketplace SaveInMed. Implementa Clean Architecture com foco em operações críticas de negócio. ## Arquitetura ``` cmd/api/ → Ponto de entrada internal/ ├── config/ → Configurações e env vars ├── domain/ → Entidades e regras de negócio ├── http/ │ ├── handler/ → HTTP handlers (controllers) │ └── middleware/→ Auth JWT, CORS, logging ├── payments/ → Gateways: Stripe, MercadoPago, Mock ├── repository/ → Camada de persistência (PostgreSQL) ├── server/ → Setup do servidor HTTP └── usecase/ → Casos de uso (serviços) ``` ## Taxa Invisível do Marketplace O sistema implementa uma **taxa invisível de 12%** para compradores: ``` Vendedor cadastra: R$ 10,00 Comprador vê: R$ 11,20 (+12%) Marketplace recebe: R$ 1,20 Vendedor recebe: R$ 10,00 ``` **Configuração**: `BUYER_FEE_RATE=0.12` ## Gateways de Pagamento | Gateway | Arquivo | Descrição | |---------|---------|-----------| | **Stripe** | `stripe.go` | Cartões internacionais | | **MercadoPago** | `mercadopago.go` | Pix, boleto, cartões | | **Mock** | `mock.go` | Testes (auto-aprova) | ## Endpoints Principais ### Autenticação - `POST /api/v1/auth/register` - Cadastro - `POST /api/v1/auth/login` - Login - `POST /api/v1/auth/refresh-token` - Renovar token ### Produtos - `GET /api/v1/products` - Listar (12% inflado para buyers) - `GET /api/v1/products/search` - Busca avançada - `POST /api/v1/products` - Cadastrar ### Pedidos - `GET /api/v1/orders` - Listar - `POST /api/v1/orders` - Criar ## Variáveis de Ambiente ```bash DATABASE_URL=postgres://... JWT_SECRET=your-secret BUYER_FEE_RATE=0.12 MARKETPLACE_COMMISSION=2.5 BACKEND_PORT=8080 ``` ## Executar ```bash cd backend go run ./cmd/api ``` ## Testes ```bash go test ./... -cover ``` > Para matriz completa (com/sem banco e Playwright), veja: [docs/TESTES.md](./TESTES.md)