public-form-intake
Skill para manutencao do fluxo /diagnostico e endpoints relacionados.
Inputs
form_fields: campos esperados no payloadvalidation_rules: regras obrigatoriasanalysis_mode:aioufallbacknotification_channels: ex:telegram,email
Outputs
- Atualizacao em
config/routes.php(se necessario) - Atualizacao em
src/Controllers/Client/PublicFormController.php - Atualizacao opcional de migration de suporte
Fontes do projeto
config/routes.phpsrc/Controllers/Client/PublicFormController.phpdatabase/migrations/008_public_form_responses.sql
Passo a passo
- Validar entradas obrigatorias e termos de uso.
- Implementar interface de wizard multi-step em
templates/pages/public/diagnostico.php.- Resiliência: Utilizar o operador null-safe (
??) para acessar chaves do JSON estrutural (ex:$field['type'] ?? 'text'). Isso evita que um erro PHP interrompa o layout e cause problemas de encoding. - Arquitetura de Tradução (Ideal):
- Criar helper
$t($obj, $key)que suporte strings e arrays (paraoptions). - Display vs Value: Traduzir apenas o rótulo visual (
display). Ovaluedo input deve permanecer na língua original (PT) para garantir consistência dos dados no banco e evitar quebras em relatórios/IA. - Fallback: Sempre garantir fallback para o array original se a tradução falhar ou tiver tamanho diferente.
- Criar helper
- Resiliência: Utilizar o operador null-safe (
- Adicionar barra de progresso e mensagens motivacionais em
public/js/diagnostico.js. - Persistir submissao com metadados (
ip,user_agent,submitted_at). - Retornar resposta JSON e disparar redirecionamento para página de agradecimento.
Troubleshooting: Encoding (Mojibake)
Se a página exibir caracteres como "ç" em vez de "ç":
- Verifique se há erros PHP ocorrendo durante o rendering do template.
- Certifique-se de que o layout (que contém
<meta charset="UTF-8">) está sendo aplicado e não foi interrompido por um crash. - Verifique se o banco de dados e os arquivos PHP estão salvos em UTF-8 sem BOM.
- Use
curl.exe -s URLpara verificar se o HTML bruto contém a declaração de charset antes de qualquer script.
Criterios de aceite
- Erros de validacao retornam 422 com payload consistente.
- Fluxo nao depende 100% de API externa.
- Registro salvo com status inicial
pending.
Nao faz
- Nao aprova/rejeita respostas automaticamente.
- Nao cria conta de usuario sem validacao de email.