# 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.
