7c20b518d4
Repositorio estava ha ~5 sessoes sem commit. Consolida tudo desde d088a89.
Ver commit.md na raiz para descricao completa por sessao.
# Numeros
- A# auditoria abertos: 0/30
- V# verificacoes abertos: 5/52 (todos adiados com plano)
- T# testes escritos: 10/10
- Vitest: 192/192
- SQL integration: 33/33
- E2E (Playwright, novo): 5/5
- Migrations: 17 (10 novas Sessao 6)
- Areas auditadas: 7 (+documentos com 10 V#)
# Highlights Sessao 6 (hoje)
- V#34/V#41 Opcao B2: tenant_features com plano + override (RPC SECURITY DEFINER, tela /saas/tenant-features)
- A#20 rev2 self-hosted: defesa em 5 camadas (honeypot + rate limit + math captcha condicional + paranoid mode + dashboard /saas/security)
- Documentos hardening (V#43-V#49): tenant scoping em storage policies (vazamento entre clinicas eliminado), RPC validate_share_token, signatures policy granular
- SaaS Twilio Config (/saas/twilio-config): UI editavel para SID/webhook/cotacao; AUTH_TOKEN permanece em env var
- T#9 + T#10: useAgendaEvents.spec.js + Playwright E2E (descobriu bug no front que foi corrigido)
# Sessoes anteriores (1-5) consolidadas
- Sessao 1: auth/router/session, normalizeRole extraido
- Sessao 2: agenda - composables/services consolidados
- Sessao 3: pacientes - tenant_id em todas queries
- Sessao 4: security review pagina publica - 14/15 vulnerabilidades corrigidas
- Sessao 5: SaaS - P0 (A#30: 7 tabelas com RLS off corrigidas)
# .gitignore ajustado
- supabase/* + !supabase/functions/ (mantem 10 edge functions, ignora .temp/migrations gerados pelo CLI)
- database-novo/backups/ (regeneravel via db.cjs backup)
- test-results/ + playwright-report/
- .claude/settings.local.json (config local com senha de dev removida do tracking)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
171 lines
8.6 KiB
Markdown
171 lines
8.6 KiB
Markdown
# Development — Pendências
|
|
|
|
> Registro vivo do que ficou pra próximas etapas da área de desenvolvimento.
|
|
> **Nada aqui pode se perder** — cada item vira task quando for tratado.
|
|
|
|
**Última atualização:** 2026-04-17
|
|
**Responsável:** Leonardo (user) · **Implementação:** Claude (dev sessions)
|
|
|
|
---
|
|
|
|
## ✅ Entregue até agora
|
|
|
|
### Parte A — Banco + estrutura (2026-04-17)
|
|
- [x] Pasta `development/` criada com estrutura hierárquica (`01-visao-geral`…`05-database`)
|
|
- [x] 6 arquivos `.md`/`.txt`/`.html` movidos da raiz pra subpastas temáticas
|
|
- [x] `development/README.md` de navegação
|
|
- [x] Migration `20260417000001_dev_tables.sql` aplicada com 8 tabelas (`dev_*`) + RLS via `is_saas_admin()`
|
|
- [x] 3 seeds executados:
|
|
- `seed_030_dev_phases_items.sql` → 3 fases + 48 items
|
|
- `seed_031_dev_auditoria.sql` → 14 bugs/débitos (12 resolvidos + 2 abertos)
|
|
- `seed_032_dev_competitors.sql` → 7 concorrentes + 74 features + 60 linhas de matriz
|
|
|
|
### Parte B — UI read-only (2026-04-17)
|
|
- [x] Rota `/saas/desenvolvimento` registrada em `routes.saas.js`
|
|
- [x] Item de menu "Desenvolvimento > Área de Dev" em `saas.menu.js`
|
|
- [x] `SaasDevelopmentPage.vue` com TabView de 7 abas
|
|
- [x] 7 sub-componentes (read-only):
|
|
- `DevOverviewTab.vue` — stats + progresso das fases + últimas gerações
|
|
- `DevRoadmapTab.vue` — fases, items, filtros por status/prioridade/bloco
|
|
- `DevEstruturaTab.vue` — ESTRUTURA.md embutido + iframe do mapa-sistema.html
|
|
- `DevAuditoriaTab.vue` — bugs/débitos expansíveis, filtros por status/severidade
|
|
- `DevCompetitorsTab.vue` — concorrentes + features agrupadas por categoria + matriz de gaps
|
|
- `DevDatabaseTab.vue` — comandos do db.cjs com copy-to-clipboard + log de execuções
|
|
- `DevExportTab.vue` — stubs de "Gerar ROADMAP.md/AUDITORIA.md/concorrentes.md/ESTRUTURA.md" (desabilitados, mensagem "Pendente — Parte C")
|
|
|
|
---
|
|
|
|
## 🔨 Parte C — Edição + integração CLI
|
|
|
|
### C.1 Edição inline na UI ✅ **CONCLUÍDA (2026-04-17)**
|
|
|
|
Banco agora é source-of-truth. Implementado:
|
|
|
|
**Infra reutilizável:**
|
|
- [x] `components/DevDrawer.vue` — drawer lateral com footer (save/cancel/delete)
|
|
- [x] `components/DevField.vue` — wrapper de label/input padronizado
|
|
- [x] `composables/useDraggableList.js` — drag-drop HTML5 nativo (sem deps)
|
|
- [x] Migration `20260417000002_dev_tables_ordem.sql` — coluna `ordem` em `dev_auditoria_items` e `dev_competitor_features`
|
|
|
|
**Roadmap (`DevRoadmapTab.vue`)**
|
|
- [x] Drawer pra editar item (todos os campos)
|
|
- [x] Drag & drop pra reordenar items dentro de um bloco (via `BlocoItems.vue`)
|
|
- [x] Mover item entre fases (via select no drawer)
|
|
- [x] Criar novo item
|
|
- [x] Excluir item (com confirm)
|
|
- [x] Criar nova fase (botão "+" no seletor)
|
|
- [x] Editar fase (nome, objetivo, timeline, status, datas)
|
|
- [x] Excluir fase (cascade nos items)
|
|
|
|
**Auditoria (`DevAuditoriaTab.vue`)**
|
|
- [x] Drawer com todos os campos (título, categoria, severidade, status, problema, solução, arquivo, tags, datas)
|
|
- [x] Criar/editar/excluir
|
|
- [x] Drag-reorder (desativado quando filtro ativo)
|
|
|
|
**Concorrentes (`DevCompetitorsTab.vue`)**
|
|
- [x] CRUD de concorrente (slug, nome, país, foco, pricing, posicionamento, url, notas, ativo)
|
|
- [x] CRUD de feature por concorrente (categoria, nome, descrição, fonte, url, destaque)
|
|
- [x] CRUD de linha da matriz (domínio, feature, status, nota, importância)
|
|
- [x] **Edição inline de status na matriz** (dropdown colorido)
|
|
|
|
**Pendências menores que ficaram:**
|
|
- [ ] Drag-reorder no overview das fases
|
|
- [ ] Drag-reorder na matriz de comparação
|
|
- [ ] Drag-reorder nas features dentro de um concorrente
|
|
- [ ] Drag-reorder do topo da lista de concorrentes
|
|
- [ ] Autosave nos drawers (hoje é "clique em Salvar")
|
|
- [ ] Undo recente
|
|
- [ ] Keyboard shortcuts (`/` busca, `n` novo, `Esc` fecha)
|
|
- [ ] Mudança rápida de status direto no badge do card (sem abrir drawer)
|
|
- [ ] Marcar fase como concluída automaticamente quando 100% items concluídos
|
|
- [ ] Quick filters no overview (só bloqueadores, só Fase 1, etc.)
|
|
|
|
### C.2 Integração CLI local (opcional — usuário disse "copy-to-clipboard por ora")
|
|
|
|
Hoje todos os comandos do `DevDatabaseTab.vue` são copy-to-clipboard. Na próxima onda (se for quiser):
|
|
|
|
- [ ] Pequeno server Node em `development/cli-server/server.cjs`
|
|
- Escuta em `127.0.0.1:3456` (localhost-only)
|
|
- Whitelist de comandos: `backup`, `dashboard`, `schema-export`, `status`, `verify`, `migrate`, `seed`, `diff`
|
|
- Endpoints: `POST /run/:cmd` com SSE pra streaming do stdout
|
|
- Escreve em `dev_generation_log` o resultado
|
|
- [ ] Script `npm run dev:cli` pra iniciar o server
|
|
- [ ] Indicador na UI (verde/vermelho) mostrando se server está online
|
|
- [ ] Botões "Executar agora" ao lado de cada comando (alternativo ao copy)
|
|
|
|
### C.3 Export banco → .md (botões da aba "Exportar")
|
|
|
|
- [ ] Edge Function `generate-roadmap-md` que lê `dev_roadmap_phases` + `dev_roadmap_items` e retorna markdown
|
|
- [ ] Edge Function `generate-auditoria-md` análogo
|
|
- [ ] Edge Function `generate-concorrentes-md` análogo
|
|
- [ ] Na UI: botão clica → fetch da edge function → `<a download>` do resultado
|
|
- [ ] OU: endpoint no CLI server escreve direto em `development/04-roadmap/ROADMAP.md` (se CLI server existir)
|
|
- [ ] Versionar os arquivos gerados no git (script "publish": gera tudo + `git add development/`)
|
|
|
|
### C.4 Pesquisa automática de concorrentes
|
|
|
|
O usuário **disse "não sei"** sobre essa feature. Quando for decidir:
|
|
|
|
- [ ] Edge Function `fetch-competitor-page` — recebe URL, faz `fetch()` do HTML, retorna raw
|
|
- [ ] UI: botão "Pesquisar este concorrente" abre modal com:
|
|
- Input de URL
|
|
- Preview do HTML capturado
|
|
- Campo de texto livre pra colar observações
|
|
- Opção: "extrair com IA" (chama Anthropic API com system prompt pra listar features)
|
|
- [ ] Features extraídas entram numa fila de revisão (usuário aprova → salva em `dev_competitor_features`)
|
|
- [ ] Histórico: `dev_competitor_features` ganha campos `aprovado_em`, `aprovado_por`, `revisao_status`
|
|
|
|
### C.5 Melhorias secundárias
|
|
|
|
- [ ] **Autosave** nos drawers de edição (debounce 1s)
|
|
- [ ] **Toast de feedback** em toda mutação
|
|
- [ ] **Undo recente** (Ctrl+Z nos últimos 5 minutos via revision log)
|
|
- [ ] **Keyboard shortcuts** — `/` foca busca, `n` novo item, `Esc` fecha drawer
|
|
- [ ] **Dark mode** — se o app tem, garantir compatibilidade (surface tokens estão OK mas validar)
|
|
- [ ] **Responsividade mobile** — tabs scroll horizontal já tratado, mas drawers precisam virar modals full-screen em mobile
|
|
- [ ] **Paginação/virtualização** nas listas grandes (quando matriz passar de 100 linhas)
|
|
|
|
---
|
|
|
|
## 📋 Itens órfãos / decisões estratégicas
|
|
|
|
### Decisões **abertas** (do `ROADMAP.md`)
|
|
Repetidas aqui pra não perder:
|
|
|
|
1. **Pricing** — R$ 59, R$ 99 ou R$ 149 solo? Afeta quanto tempo você tem pra Fase 2.
|
|
2. **Tier clínica** — existe desde o MVP ou só na Fase 3? Afeta TISS (item 32) e multi-unidade (42).
|
|
3. **Gateway de pagamento** — Asaas (barato) vs Iugu (melhor DX)? Escolher agora.
|
|
4. **IA própria ou terceirizada?** — Claude/OpenAI via API (rápido, custo variável) vs open-source local (lento, custo fixo)? Recomendo API pra começar.
|
|
5. **Foco da Fase 3** — IA-first, teleconsulta-first ou enterprise-first? Capacity só dá pra uma aposta no primeiro semestre.
|
|
6. **Data de lançamento MVP** — se meta é 2026-06-01, Fase 1 termina mid-maio.
|
|
|
|
### Itens técnicos **abertos** do `AUDITORIA.md`
|
|
Ainda não resolvidos (já no banco como `dev_auditoria_items` com status `aberto` / `em_analise`):
|
|
|
|
- `window.__guardsBound / window.__supabaseAuthListenerBound` — flags globais no window (anti-pattern)
|
|
- Arquivos obsoletos no projeto (cleanup parcial — a finalizar)
|
|
|
|
---
|
|
|
|
## 🎯 Ordem sugerida pra Parte C
|
|
|
|
Se quiser atacar **agora**:
|
|
|
|
1. **C.1 roadmap** — drawer de edição (mais valor imediato — marcar items concluídos)
|
|
2. **C.1 auditoria** — mesmo padrão do roadmap
|
|
3. **C.3 export** — ROADMAP.md e AUDITORIA.md (para versionar o que você editou)
|
|
4. **C.1 concorrentes** — edição completa
|
|
5. **C.2 CLI server** — quando cansar de copy-paste
|
|
6. **C.4 pesquisa auto** — se decidir que vale
|
|
|
|
---
|
|
|
|
## 📁 Referências
|
|
|
|
- Migração: `database-novo/migrations/20260417000001_dev_tables.sql`
|
|
- Seeds: `database-novo/seeds/seed_030_dev_phases_items.sql`, `seed_031_dev_auditoria.sql`, `seed_032_dev_competitors.sql`
|
|
- Frontend: `src/views/pages/saas/development/`
|
|
- Rota: `src/router/routes.saas.js` (path `desenvolvimento`)
|
|
- Menu: `src/navigation/menus/saas.menu.js` (grupo "Desenvolvimento")
|
|
- Docs fonte: `development/04-roadmap/ROADMAP.md` · `development/02-auditoria/AUDITORIA.md` · `development/03-concorrentes/concorrentes.md`
|