Fluxo: processar análise IA

Cadastra a análise, envia a foto à OpenAI e grava o retorno estruturado no banco.

Entrada: sistema/painel/paginas/analises.php Tabelas: analise_capilar, proteses, clientes, config Ator: Profissional técnico que cadastrou ou abriu uma análise existente.

Cadeia de chamada

analises.php -> submit #form_analise -> paginas/analises/salvar.php
analises.php -> buscarDadosProtese() -> paginas/analises/buscar_protese.php
analises.php -> processarAnalise() -> paginas/analises/processar.php
processar.php -> tabela config (openai_key) -> OpenAI Responses API
processar.php -> UPDATE analise_capilar
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/analises.phpTela principal, modal, previews e funções JS.
sistema/painel/paginas/analises/salvar.phpUpload da foto e persistência do cadastro.
sistema/painel/paginas/analises/buscar_protese.phpPré-preenche dados técnicos a partir da última prótese do cliente.
sistema/painel/paginas/analises/processar.phpMonta prompt, chama OpenAI, valida JSON e atualiza o banco.

Passo a passo

EtapaO que acontece
1. Seleção do clienteNo formulário de `analises.php`, a troca de cliente chama `buscarDadosProtese()` para consultar `buscar_protese.php` e sugerir modelo, cor, densidade e observações.
2. Cadastro da análiseO registro é salvo por `salvar.php`, que exige cliente, data e imagem, grava o upload em `images/analises/` e persiste em `analise_capilar`.
3. Pré-condição da IAO botão “Analisar Imagem” só funciona se já existir `id` salvo; o JS bloqueia o fluxo quando o registro ainda não foi persistido.
4. Chamada AJAX`processarAnalise()` envia `id` para `paginas/analises/processar.php` e espera JSON de resposta.
5. Preparação da requisição`processar.php` carrega o registro, lê a foto do disco, consulta `config.openai_key`, converte a imagem em base64 e monta um prompt restritivo.
6. Execução externaO backend faz `curl` para `https://api.openai.com/v1/responses` usando o modelo `gpt-4o`.
7. Normalização da respostaO código extrai JSON, valida cor/densidade/modelo permitidos e preserva `grau_falha` já salvo no banco quando necessário.
8. Persistência final`processar.php` executa `UPDATE analise_capilar` preenchendo `cor_detectada`, `densidade_detectada`, `grau_falha` e `sugestao_protese`.
9. Retorno à interfaceO JS atualiza os campos do formulário sem recarregar a página e informa sucesso ou erro técnico.

Entradas

EntradaOrigem/uso
idRegistro já salvo
fotoArquivo salvo anteriormente
openai_keyLida da tabela `config`
clienteUsado também em `buscar_protese.php`

Saídas

SaídaDestino
JSON`status`, `mensagem`, `cor_detectada`, `densidade_detectada`, `grau_falha`, `sugestao_protese`
UPDATECampos técnicos da tabela `analise_capilar`

Pontos críticos de manutenção

  • `buscar_protese.php` preenche `grau_falha` com `tamanho` da prótese. Isso é útil como chute inicial, mas conceitualmente mistura medida da base com diagnóstico clínico.
  • A chave OpenAI está sendo lida de `config`; para manutenção isso cria dependência operacional fora do código.
  • O fluxo depende de imagem em disco. Se o upload falhar, a IA falha mesmo com registro salvo.

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.