Fluxo: salvar canvas

Abre uma janela auxiliar, ajusta a sobreposição manualmente e grava a imagem final na simulação.

Entrada: sistema/painel/paginas/simulador.php Tabelas: simulacoes_protese, clientes, proteses Ator: Profissional que quer ajuste manual após ou sem geração IA.

Cadeia de chamada

simulador.php -> abrirCanvas() -> paginas/simulador/canvas.php?id={id}
canvas.php -> usuário ajusta overlay -> POST salvar_canvas.php
salvar_canvas.php -> UPDATE simulacoes_protese.imagem_simulada
Esta seção responde à pergunta central de manutenção: qual arquivo chama qual arquivo dentro deste fluxo.

Arquivos envolvidos

ArquivoPapel dentro do fluxo
sistema/painel/paginas/simulador.phpOrigem do botão “Abrir Canvas”.
sistema/painel/paginas/simulador/canvas.phpTela auxiliar de edição com controles JS/Canvas.
sistema/painel/paginas/simulador/salvar_canvas.phpRecebe imagem base64, grava PNG e atualiza o banco.

Passo a passo

EtapaO que acontece
1. OrigemNa tela principal, `abrirCanvas()` valida se existe `id` e abre `canvas.php?id=...` em nova aba.
2. Preparação`canvas.php` busca a simulação, carrega foto original, prótese e imagem simulada atual quando existir.
3. Edição visualNo navegador, o usuário reposiciona a sobreposição da prótese, escala, gira e ajusta opacidade diretamente no `<canvas>`.
4. Captura finalAo clicar em “Salvar”, o JS executa `canvas.toDataURL('image/png')` e produz a imagem final em base64.
5. Envio HTTPUm `XMLHttpRequest` faz POST para `salvar_canvas.php` com `id` e `img`.
6. Persistência`salvar_canvas.php` valida pasta, decodifica o base64, grava o PNG e atualiza `simulacoes_protese.imagem_simulada`.
7. Limpeza de estadoQuando já existe uma imagem simulada anterior, o backend pode sobrescrever a referência e o novo arquivo vira o resultado oficial da simulação.

Entradas

EntradaOrigem/uso
idID da simulação
imgPNG base64 gerado no navegador

Saídas

SaídaDestino
Arquivo PNGVersão final de ajuste manual
Texto`Salvo com Sucesso` ou mensagem de erro

Pontos críticos de manutenção

  • O canvas funciona em janela separada. O fluxo não sincroniza automaticamente a tela anterior além da persistência no banco.
  • Como a imagem trafega inteira em base64 via POST, arquivos muito grandes podem sofrer limite de memória ou `post_max_size`.
  • Sem `id` salvo, o canvas nem abre; isso precisa ficar explícito para quem der manutenção no frontend.

Abrir a camada linha por linha

Use estes links quando já souber qual arquivo do fluxo precisa ser alterado e quiser leitura minuciosa do código.