37cc818f4c
- reúne todos os .md de ScoreOdonto numa pasta única (fonte única, dentro do repo versionado pelo Gitea) - arquitetura.md: reescrito p/ o estado REAL (3 VPS, banco compartilhado dev/prod, sem staging/listener/registry fantasmas) - deploy.md: reescrito p/ o estado-ALVO (Gitea CI/CD: push->build->registry->deploy por tag) - DEPLOY-PRODUCAO.md: runbook operacional executável (fluxo manual real de hoje) - VERDADE-HOJE.md: auditoria (codigo/banco/containers/deploy/versao/rollback) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
Checklist de Deploy para Produção — Pacote Financeiro + Salas (jun/2026)
Consolida a rodada: Financeiro V1 (Épicos 1–4), V2 Comissão/Repasse, Glosas, GTO→Financeiro, modelo de contrato p/ convênio e o redesenho de Salas (perfil Dono de Sala, sala como workspace, financeiro de locação, painel/relatório/agenda). O procedimento canônico de deploy é o
DEPLOY-PRODUCAO.md— este arquivo é só o checklist desta entrega.
0. Arquitetura (sem ambiente isolado)
- VPS4 = desenvolvimento + builder. O ambiente de teste é
dev.scoreodonto.com(servido pela VPS4 via Traefik da VPS1) e é onde se buildam as imagens que vão pra produção. - VPS1 = produção (
scoreodonto.com) — só recebe a imagem pronta e sobe. - VPS3 = dados (Postgres
scoreodonto, Dragonfly, Gitea). Dev e prod apontam para o MESMO bancoscoreodonto. - ⚠️ Consequência (confirmada): dev e prod compartilham o banco → as migrações desta entrega já foram aplicadas ao banco real durante o desenvolvimento (rodam no boot do backend de dev). Promover é, na prática, levar o CÓDIGO para a VPS1 — o schema já está migrado. Não há ambiente nem banco isolado entre dev e produção.
1. Fluxo de promoção (resumo do DEPLOY-PRODUCAO.md §2)
git push origin main(na VPS4) — já feito (commit3e64514).- Bump de versão (
update-version.js→frontend/constants.ts). - Build da imagem Docker na VPS4 (
npm install+vite builddentro do Dockerfile) — peso fora da produção. - Envia a imagem pronta para a VPS1 (registry privado pela WireGuard — recomendado — ou
docker save | ssh | docker load). - VPS1:
docker compose up -d(troca o container pela imagem nova). Backend leva ~10–30s no boot (reconecta Postgres/Dragonfly + roda migrações).
- (Os scripts
deploy-prod-builder.shedeploy-to-prod.shestão DEPRECADOS — ver seção "Fluxo ANTIGO" doDEPLOY-PRODUCAO.md. Não usar.)
2. Pré-requisitos
- Backup do banco VPS3 (
pg_dump scoreodonto— custom format-Fc). Como dev/prod compartilham o banco, esse backup é a única rede de segurança. - Código em
origin/main(Gitea) — ✅3e64514. node --check backend/server.jsOK; build do frontend OK.- Validado em
dev.scoreodonto.com.
3. Mudanças de banco (migrações idempotentes no boot — todas ADITIVAS)
Já aplicadas no banco (dev=prod). Listadas para auditoria/rollback. Nenhuma destrutiva.
- Novas tabelas:
procedimentos_realizados,procedimento_realizado_foto,comissao_regras,repasses,glosas. - ALTER
financeiro:paciente_id, profissional_id, procedimento_id, agendamento_id, contrato_id, realizado_id, origem, sem_comissao, pago_em, deleted_at, fornecedor, centro_custo, recorrente, convenio_id, valor_glosa, data_competencia, competencia. - ALTER
orcamentos:financeiro_gerado. ALTERcontratos:cobranca_automatica, valor_recorrente, periodicidade, dia_cobranca. ALTERgto_builders:financeiro_id. ALTERsala_reservas:financeiro_id. - CHECK
usuarios_role_check/vinculos_role_checkganhamdonosala(DROP+ADD no boot — superset, seguro). - Índices: troca
uq_comissao_regra→uq_comissao_regra2; novosidx_financeiro_contrato_comp,idx_financeiro_convenio,idx_glosas_*,idx_gto_builders_financeiro. - Seed (boot):
cmod_odo_14"Atendimento a Convênios / Repasse" (ON CONFLICT DO NOTHING).
4. Backend — env / infra (VPS1)
DATABASE_URL→…@10.99.0.3/scoreodonto.JWT_SECRETestável (login + URLs assinadas de fotos/comprovantes).- Volume de mídia persistente (
MEDIA_PATH): grava em…/procedimentos/<id>/e…/repasses/<id>/. - Cron
processarVigenciasContratos(boot + 6h): Atrasado, vigência, renovação automática, cobrança recorrente — conferir nos logs.
5. Frontend
- Imagem rebuildada com as views novas (
ComissoesView,GlosasView,ProcedimentosProntuario,SalaHomeView) e alterações (FinanceiroView,ReportsView,OrcamentoModal,ContratosView,LancarGTO,SalasPlugin,OnboardingChat,Sidebar,App.tsx,PluginsView,pluginRegistry,services/backend.ts). - Conferir: locação sempre ativa (MINHAS/ALUGAR SALAS aparecem) e seletor de workspace lista Clínicas × Salas.
6. Verificação pós-deploy (VPS1)
# versão no ar
curl -s https://scoreodonto.com | grep -o 'V[0-9]*\.[0-9]*\.[0-9]*' | head -1
# logs do backend (Docker ROOTLESS na VPS1) — espere "[MIGRATION] all migrations OK"
ssh deploy@10.99.0.1 "DOCKER_HOST=unix:///run/user/1000/docker.sock docker logs scoreodontocom-scoreodonto-backend-1 --tail 40"
Smoke tests: criar lançamento financeiro (valida normalizeFinanceiro — antes nenhum salvava pela UI); GTO → recebível; comissão/repasse/comprovante; glosa; contrato de convênio; orçamento→parcelas; fluxo de salas (Dono de Sala, reserva→recebível, painel); isolamento cross-tenant 403.
7. Rollback
- Migrações só adicionam → reverter o código (imagem anterior na VPS1) é seguro; colunas/tabelas extras ficam inertes. Restaurar o dump da §2 só se necessário (
pg_restore -d "<url>" --clean <arquivo>).
8. Riscos específicos desta entrega
normalizeFinanceiro(crítico): corrige o bug em queenforceUppercasemandavaPAGO/PIXviolando o CHECK capitalizado — antes a tabelafinanceiroficava vazia. Garantir que entrou na imagem.- Banco único dev/prod: dado de teste de desenvolvimento pode aparecer; os E2E desta rodada sempre limparam, mas conferir contagens de
financeiro,salas,repasses,glosas. - Contratos de convênio: textos seguem padrão de mercado — recomendar revisão por advogado.
- Locação sempre ativa: todos os papéis (menos superadmin) passam a ver MINHAS/ALUGAR SALAS.