# Arquitetura inicial — plataforma AI-first de segurança e câmeras

## Diretriz do produto

Plataforma própria, hospedada em um Droplet da DigitalOcean, com painel web responsivo e módulo móvel para relato de ocorrências. O fluxo central é automatizado por IA: voz para texto, classificação, extração de atributos, análise de frames/clipes, OCR de placas, correlação temporal/geográfica, busca por similaridade e geração de alertas.

A automação não transforma inferência em acusação. O sistema deve diferenciar `detectado_pela_ia`, `corroborado_por_fonte_autorizada` e `confirmado_por_autoridade`.

## Módulos

- **App/PWA do usuário:** login, relato por áudio/texto, localização consentida, anexos, protocolo e timeline.
- **Painel de operações:** fila de ocorrências, filtros, mapa, clips associados, busca por atributos, confiança e trilha de auditoria.
- **Ingestão de câmeras próprias:** RTSP/ONVIF, cadastro por câmera, health check, zonas, retenção e gravação circular.
- **Pipeline de IA:** transcrição, extração estruturada, detecção de objetos, atributos, OCR de placas, embeddings de pessoa/veículo e busca por janela temporal/local.
- **Integrações:** mapas, notificações, armazenamento, VMS e APIs oficiais/comerciais somente com credenciais e autorização válidas.
- **Governança:** RBAC, criptografia, retenção configurável, exportação de evidências, logs imutáveis, rate limiting e consentimento.

## Stack proposta para o Droplet

- Docker Compose com reverse proxy TLS, frontend, API, worker de IA, banco PostgreSQL, Redis/fila e armazenamento S3-compatible.
- FFmpeg/GStreamer para ingestão e recorte de vídeo.
- ONVIF para descoberta/configuração e RTSP para fluxo de vídeo.
- API REST/WebSocket para eventos em tempo real.
- Serviço de IA desacoplado para trocar entre modelo local e APIs pagas sem alterar o painel.

## Processamento de câmera

1. Receber RTSP privado ou stream do gateway local.
2. Manter buffer circular curto e gerar clipe somente quando houver evento ou consulta autorizada.
3. Extrair frames em intervalo controlado; não analisar 100% do vídeo por padrão sem necessidade operacional.
4. Salvar detecções com timestamp, câmera, zona, classe, atributos, bounding box e confiança.
5. Salvar placa somente quando a confiança superar limiar; manter imagem original conforme política de retenção.
6. Permitir revisão/contestação, sem editar o evento original.

## Integrações previstas

- Mapas: provedor comercial ou OpenStreetMap conforme volume e licença.
- Notificações: push, SMS/WhatsApp e e-mail por provedores contratados.
- Câmeras/VMS: ONVIF/RTSP primeiro; SDK/API do fabricante somente quando necessário.
- IA: transcrição, visão e OCR via adaptadores; opção local quando o Droplet suportar o volume.
- Autoridades: somente endpoints documentados, convênio, webhook ou canal formal. Sem scraping, bypass ou tentativa de acesso a sistemas policiais.

## Limites de segurança e conformidade

- Não usar reconhecimento facial como padrão.
- Não inferir identidade, intenção, raça, gênero ou culpabilidade.
- Não enviar automaticamente uma acusação à polícia apenas por uma detecção da IA.
- Exigir base legal, política de retenção, controle de acesso, registro de finalidade e canal para exercício de direitos.
- Placas, voz, localização, vídeo e descrições de pessoas devem ser tratados como dados sensíveis/alto risco operacional.
- Usar dados sintéticos no protótipo e mascarar identificadores em demonstrações.

## Variáveis de ambiente planejadas

`DATABASE_URL`, `REDIS_URL`, `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY`, `S3_SECRET_KEY`, `AI_PROVIDER_KEY`, `MAPS_PROVIDER_KEY`, `NOTIFICATION_PROVIDER_KEY`, `JWT_SECRET`, `APP_BASE_URL`.

Nenhum token ou senha deve ser colocado no repositório, no frontend ou em mensagens. As credenciais devem ficar em secrets do Droplet/gerenciador de segredos.
