saveinmed/docs/BACKEND.md
Tiago Yamamoto 8f1e893142 feat: major implementation - seeder, payments, docs
Seeder API:
- 110 pharmacies across 5 cities (Goiânia 72, Anápolis 22, Nerópolis 10, Senador Canedo 5, Aparecida 1)
- 3-300 products per pharmacy
- Dynamic city/state in company records

Payment Gateways:
- stripe.go: Stripe integration with PaymentIntent
- mock.go: Mock gateway with auto-approve for testing
- PaymentResult and RefundResult domain types

Documentation:
- docs/BACKEND.md: Architecture, invisible fee, endpoints
- docs/SEEDER_API.md: City distribution, product counts
- docs/MARKETPLACE.md: Frontend structure, stores, utils
- docs/BACKOFFICE.md: Admin features, encrypted settings
2025-12-26 23:39:49 -03:00

81 lines
1.9 KiB
Markdown

# Backend API - Documentação Técnica
## 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
```