51 lines
3.3 KiB
Markdown
51 lines
3.3 KiB
Markdown
# Revisão final contra o escopo V3
|
|
|
|
Status consolidado: **Pilot Ready in Code / Environment Validation Pending**. O gate, a ordem da validação no ambiente Elo Pro e a regra de manter a feature flag desligada estão em `18-pilot-final-gate.md`.
|
|
|
|
| Requisito | Status | Evidência |
|
|
| --- | --- | --- |
|
|
| Sem login, senha ou token próprio | OK | `src/server/auth`, ausência de tabela de senha |
|
|
| Sessão Supabase e cookie de workspace | OK | `context.ts`, middleware |
|
|
| Flag de módulo, padrão desligado | OK | `workspace_module_flags`, página de módulo desligado |
|
|
| RLS e papéis | OK | `0003_rls.sql`, testes de RLS e jornada |
|
|
| 10 modelos, nome único, soft delete provisório | OK | triggers, unique index, `status` |
|
|
| XLSX/CSV, 10 MB, 50k, 10 fontes | OK | domínio + testes; 50k no caminho CSV |
|
|
| Uma aba e linha de cabeçalho | OK | jornada e `updateSource` |
|
|
| Mapeamento 1:1, obrigatórias, select e drag | OK | domínio, UI e testes |
|
|
| Prévia antes de processar | OK | `previewSource` e passo da jornada |
|
|
| Lock, idempotência, Redis obrigatório em produção | OK | coordinator e teste de indisponibilidade |
|
|
| Modelo imutável | OK | SHA-256 e comparação de bytes na jornada |
|
|
| Temporários e limpeza | OK | `cleanupExpired`; TTL de produto aberto |
|
|
| Exclusão só owner/admin e bloqueio com job ativo | OK | jornada |
|
|
| Auditoria sem células | OK | scrub e teste do token `=CMD()` |
|
|
| Sentry sem planilha | OK | `beforeSend` e teste de scrub |
|
|
| Saída XLSX, CSV e PDF | OK | jornada gera os três |
|
|
| UI com tokens V3, Manrope, Lucide | PARCIAL | Componentes locais no token do escopo; biblioteca oficial do Elo Pro não estava no repo |
|
|
| Acessibilidade básica | PARCIAL | Select, switch, dialog e foco visível cobertos; não houve auditoria WCAG formal |
|
|
| E2E no browser do Elo Pro | PARCIAL | Jornada de API completa; browser do ecossistema inexistente aqui |
|
|
| Performance 10 MB / 50k XLSX / 10 fontes paralelas | PARCIAL | 50k CSV e rejeição de arquivo acima de 10 MB; ExcelJS de 50k linhas não medido |
|
|
| Job runner de produção | DECISÃO ABERTA | Worker no mesmo código; fila externa não escolhida |
|
|
| Storage de produção | DECISÃO ABERTA | Interface pronta; local só fora de produção |
|
|
| TTL, biblioteca XLSX, soft delete, SSO entre hosts | DECISÃO ABERTA | ADRs |
|
|
|
|
## Bloqueios de release para o piloto no ecossistema
|
|
|
|
1. Apontar `DATABASE_URL` do Postgres Elo Pro e não aplicar o shim de identidade se as tabelas já existirem com outro formato.
|
|
2. Aprovar bucket privado e preencher as envs de storage.
|
|
3. Definir TTL numérico em `SPREADSHEET_TEMP_TTL_SECONDS`.
|
|
4. Rodar `ADAPTER_JOB_MODE=worker` com Redis, não o modo inline, no ambiente de piloto.
|
|
5. Confirmar a biblioteca ExcelJS (MIT, provisória) ou trocar o codec em `src/infra/spreadsheet/parse.ts`.
|
|
6. Ligar a flag só no workspace piloto.
|
|
|
|
## Riscos residuais
|
|
|
|
PDF truncado de propósito. Formatação do modelo não é reaproveitada. Conexão de serviço ignora RLS. Lock em memória não atravessa várias instâncias.
|
|
|
|
## Checklist de release
|
|
|
|
- [x] Suíte Vitest, typecheck, lint e build de produção locais
|
|
- [ ] Smoke no staging com Supabase, Redis e bucket reais
|
|
- [ ] Smoke no staging com Supabase, Redis e bucket reais
|
|
- [ ] Flag desligada para quem não é piloto
|
|
- [ ] Sentry com DSN, sem anexo de arquivo
|