# Tech Spec — Exportar CSV
## Rastreabilidade
- Origem: `02-prd.md`
- Estado atual: aprovado
- Dono humano: Tech Lead
- Evidências: checkpoint Tech Spec
- Próximo artefato: Tasks
## Visão técnica
Adicionar endpoint de exportação e botão na UI que chama o endpoint com os filtros atuais.
## Arquitetura
- Frontend adiciona ação no relatório.
- Backend reutiliza query do relatório com projeção segura de colunas.
- Streaming pode ser adicionado se o volume crescer.
## Contratos
`GET /reports/sales/export.csv?filters=...`
Resposta: `text/csv; charset=utf-8`.
## Dados
Usar a mesma fonte do relatório. Não incluir campos internos ou sensíveis.
## Segurança
Validar permissão do usuário antes da consulta. Colunas exportadas devem passar por allowlist.
## Performance
Aplicar limite inicial de linhas e registrar métrica de tempo de exportação.
## Observabilidade
Logar sucesso/falha sem dados sensíveis. Métrica de duração.
## Testes
- Teste de permissão.
- Teste de filtros.
- Teste de cabeçalho e encoding.
- Teste de regressão para campos não autorizados.
## Riscos
- Exportação lenta para filtros amplos.
- Divergência entre query de tela e query de exportação.
## Plano de implementação
1. Criar helper de CSV com allowlist.
2. Criar endpoint.
3. Adicionar botão na UI.
4. Criar testes.