Triagem — Fluxos
1. Entrada na fila (formulário externo)
Seção intitulada “1. Entrada na fila (formulário externo)”- Associado/lead abre o formulário público de triagem (URL pública configurável; campos definidos no admin).
- Preenche os campos visíveis (padrão + personalizados).
- Submit →
POSTcria registro emreception:
status= valor do status Espera (chave estávelwaiting; label editável no admin)code= UUID geradodate_created= now- Campos padrão mapeados para colunas de
reception - Campos personalizados gravados em
tags(JSONB) sob chavecustom_fields(ver fields)
- Vínculo por e-mail (obrigatório neste passo):
- Se
emailinformado → buscar associado emuserscom o mesmo e-mail (normalizado, case-insensitive) - Se existir → preencher
associate_code,associate_name,is_associateadequado, e opcionalmenteavatar_url/patient_namese disponíveis - Se não existir → permanece sem vínculo (
associate_codenull); entra na fila normalmente
flowchart TD Form[Formulário público] -->|POST reception| Create[Cria reception status=Espera] Create --> EmailCheck{email existe em users?} EmailCheck -->|sim| Link[Preenche associate_code/name] EmailCheck -->|não| Queue[Fila sem vínculo] Link --> Queue2. Operação na página de triagem (apps/kunk)
Seção intitulada “2. Operação na página de triagem (apps/kunk)”- Operador abre
/app/acolhimento/triagem. - Carrega
reception(lista + filtros). - Sidebar lateral de status (configurados no admin):
- Cada status mostra contagem dos registros com aquele status (no produto).
- Status padrão de entrada: Espera.
- Status terminal padrão: Concluído .
- Clique no avatar da linha → menu para selecionar outro status (lista = statuses cadastrados no admin, inclusive os custom).
- Busca textual (nome, e-mail, telefone, código) e filtros auxiliares (ex.: atendente), sem depender de chat ou afiliados externos.
- Ações por linha (mínimo v1):
- Editar telefone / tags (se mantidos)
- Linkar / deslinkar associado manualmente
- Pedido → só habilitado se
associate_codepreenchido - Serviço → só habilitado se
associate_codepreenchido - Abrir módulo de documentos/dados do associado — somente se o módulo estiver ativo no admin
3. Redirecionamento para pedidos / serviços
Seção intitulada “3. Redirecionamento para pedidos / serviços”| Condição | Comportamento |
|---|---|
Sem associate_code |
Botões Pedido/Serviço desabilitados + mensagem para linkar |
Com associate_code |
Navega para pedido/serviço com query u={associate_code} (padrão) |
Contabilização (no produto)
Seção intitulada “Contabilização (no produto)”Ao criar o pedido ou o serviço (não necessariamente no clique do redirect):
- Localizar
receptionaberta vinculada ao e-mail / associado (status ≠ Concluído). - Marcar como concluída:
status= status Concluído (config)completion_reason=Pedido|Serviço
- A contagem da sidebar atualiza: sai de Espera (ou status intermediário) e entra em Concluído.
Redirect para serviços com finalização imediata (opcional, espelhananteriores appointmentRedirect):
- Pode PATCH
completion_reason=Agendamento(ouServiço) + status Concluído no momento do redirect, se o produto mantiver esse comportamento.
flowchart LR Row[Linha triagem] -->|associate_code?| Gate{Linkado?} Gate -->|não| Block[Bloqueia Pedido/Serviço] Gate -->|sim Pedido| Cart["/app/loja/novo-pedido?u="] Gate -->|sim Serviço| Svc["/app/acolhimento/servicos?u="] Cart -->|pedido criado| FinP[Concluído + completion_reason=Pedido] Svc -->|serviço criado| FinS[Concluído + completion_reason=Serviço]4. Status customizados
Seção intitulada “4. Status customizados”- Admin cadastra statuses além de Espera e Concluído (ex.: “Aguardando Retorno”, “Aguardando Cadastro”).
- Valores persistidos em
system_configs(system=triage). - UI da sidebar e do menu do avatar leem a lista dinâmica.
- Contagens =
COUNTporreception.statusigual ao value do status (não o label).
5. Módulo documentos/dados (opcional)
Seção intitulada “5. Módulo documentos/dados (opcional)”- Feature flag em
system_configs:triage.module.associate_docs(defaultfalse). - Quando desabilitado: não renderizar entrada “Documentos/Dados” na linha; APIs do módulo podem existir mas a UI da triagem não expõe.
- Quando habilitado: abrir painel/modal do associado (dados + documentos), sem aba de histórico de doações.
6. O que não entra no fluxo
Seção intitulada “6. O que não entra no fluxo”- Chat externo como eixo obrigatório da fila (Utalk é módulo opcional)
- Match de afiliado /
bvid - Modal “Histórico de doações”
