Pular para conteúdo

Comparação MEDCENTER × CLINFETO

Tabela abrangente de todas as diferenças observadas entre os dois projetos de referência. Use como guia para decidir o que replicar e o que evoluir em um projeto novo.

Configuração

Dimensão MEDCENTER CLINFETO
OTIMUS URL https://medcenteracai-node.otimusclinic.com/api/v1 https://clinfeto.otimusclinic.com:9100
OTIMUS token hardcoded em scheduling.py env OTIMUS_TOKEN (com default hardcoded)
LLM gpt-4.1 gpt-4.1-mini
Gemini gemini-2.5-flash gemini-2.0-flash
Debounce 2s 10s
ALLOWED_TEAM "IA ATENDIMENTOS" "Geral"
Tabela chat history dados_cliente_medcenter dados_cliente_clinfeto
Tabela fila n8n_fila_mensagens_medcenter n8n_fila_mensagens_clinfeto

Domínio clínico

Dimensão MEDCENTER CLINFETO
Tipo de clínica Multi-especialidade Ultrassonografia / medicina fetal
Médicos 7 com agendamento web 5
Convênios 5 com automação 12
Procedimentos 7 (1 por médico — consulta da especialidade) ~100+ exames
Aliases 0 ~100
Preços no prompt Sim (~311 linhas de tabela) Parcial
Telefones exclusivos no prompt Sim (Ana Claudia, Silvana) Não
Regras de exceção Sim (Ellen Thais, Diogo Sales) Regras de IG obstétrica

Código / arquitetura

Dimensão MEDCENTER CLINFETO
Tools → OTIMUS In-process (import Python) Loopback HTTP (POST /webhook/consultar)
Endpoints FastAPI /webhook/message, /webhook/transfer, /health + /webhook/consultar, /webhook/agendar
scheduling.py / agendamento.py 642 linhas 853 linhas
agent.py 896 linhas 949 linhas
Prompt (linhas no agent.py) ~660 ~880
Guardian anti-inversão não sim
Validação primeiro-nome único trava no boot via raise não valida (5 nomes naturalmente únicos)
"Sem preferência de médico" não suporta nativamente suporta (itera médicos)
ordenacao em /horarios "desc" "asc"
Range de datas 90 dias 90 dias
Pre-check de disponibilidade antes de agendar sim sim
Validação de agendaNome sim (_validar_agenda_medico) sim (embutida em _consultar_horarios_medico)

Chamadas OTIMUS (payload)

Dimensão MEDCENTER CLINFETO
filter.suceder 0 0
filter.limit 100 100
filter.agendas[].tipo "cs" "cs"
agenda_tipo (cadastro) "cs" "cs"
status (cadastro) "ativo" "ativo"
servicos [{"id": procedimento_id}] [{"id": procedimento_id}]
id: 123 hardcoded no cadastro de paciente sim sim

Mídia

Dimensão MEDCENTER CLINFETO
Imagem Gemini 2.5-flash Gemini 2.0-flash
PDF Gemini Gemini
Áudio Whisper-1 Whisper-1

Telemetria

Dimensão MEDCENTER CLINFETO
dashboard_sessions sim sim
dashboard_token_usage sim sim
dashboard_errors sim sim
dashboard_tags sim sim

O que preferir para um projeto novo

Decisão Escolha recomendada
Tool → OTIMUS In-process (Medcenter)
Token OTIMUS Env var (nunca hardcoded)
LLM gpt-4.1-mini (menos custo; subir só se necessário)
Debounce 5s (meio-termo)
ordenacao "asc"
Guardian anti-inversão Implementar (Clinfeto)
Validação primeiro-nome Trava no boot (Medcenter)
"Sem preferência" Suportar (Clinfeto)
Formato de saída para o agente JSON estruturado (Clinfeto)
Preços no prompt Evitar — colocar em tool dedicada
Horários no prompt Apenas descritivo — agenda vem do OTIMUS
CLAUDE.md Sim, baseado no do Clinfeto

Divergências que precisam ser unificadas

Ambos os projetos têm débitos técnicos convergentes:

  1. Ambos hardcodam id: 123 no cadastro — investigar com OTIMUS se pode remover.
  2. Ambos concentram preços no prompt — deveria ser tool.
  3. Medcenter precisa herdar o guardian do Clinfeto.
  4. Clinfeto precisa eliminar o loopback HTTP — usar in-process direto.
  5. Ambos precisam externalizar a lista de médicos/convênios (ex: YAML ou DB).