Recebe uma conversa e devolve, por turno, sentimento, emoção, intenção e urgência — sempre dentro de enums fechados, para que um dashboard possa depender deles. Mais um agregado com tendência e os picos da conversa.
Roda 100% local. Não tem banco, não guarda nada: nenhum texto de conversa sai da infraestrutura, e quem chama é dono do dado.
Este serviço roda na máquina do mantenedor, junto do
gwan-slm. Isso decide qual caminho serve para quem.
É o caminho para qualquer app em produção — e o único que atravessa a internet. Atravessa por pull: este serviço puxa do RabbitMQ, nada entra pela NAT.
publica → classify.jobs.requests
resposta → a fila do seu replyTo
(com correlation_id preservado)
Só alcança quem está na mesma máquina: backend co-locado e desenvolvimento. Não sai daqui.
POST http://gwan-classify:8000/api/classify GET /health → estado e providers GET /contract → JSON Schema
Com a máquina do mantenedor desligada, a fila acumula e ninguém responde. Publique com
TTL (x-message-ttl) e trate a ausência de resposta como caso normal, não
como incidente. Isto é característica da topologia, não pendência de deploy.
Todo rótulo que vem de modelo passa por uma camada de coerção antes de entrar no resultado. O que não mapeia vira o rótulo neutro do eixo — nunca um valor novo. É isso que permite um dashboard depender destes nomes.