Handlers
src.graph.handlers
Handlers de processamento do grafo de atendimento.
Cada handler encapsula a logica de um tipo especifico de processamento no fluxo de atendimento.
Example
ResultadoClarificacao(tipo: str, resposta: str, modo: MODOS, carrinho: list[dict] = list(), fila: list[dict] = list(), tentativas: int = 0)
dataclass
Resultado do processamento de clarificação.
Attributes:
| Name | Type | Description |
|---|---|---|
tipo |
str
|
Tipo do resultado ('sucesso', 'invalida', 'erro'). |
resposta |
str
|
Texto da resposta para o usuário. |
etapa |
str
|
Próxima etapa do fluxo. |
carrinho |
list[dict]
|
Carrinho atualizado. |
fila |
list[dict]
|
Fila de clarificação atualizada. |
tentativas |
int
|
Contador de tentativas atual. |
to_dict() -> RetornoNode
Converte para dicionário compatível com LangGraph State.
Source code in src/graph/handlers/clarificacao.py
ResultadoPedir(carrinho: list[dict] = list(), fila: list[dict] = list(), resposta: str = '')
dataclass
Resultado do processamento de pedido.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado. |
fila |
list[dict]
|
Itens pendentes de clarificacao. |
resposta |
str
|
Texto formatado para o usuario. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
Source code in src/graph/handlers/pedido_handler.py
ResultadoRemover(carrinho: list[dict] = list(), resposta: str = '', modo: MODOS = 'ocioso')
dataclass
Resultado do processamento de remocao.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado apos remocao. |
resposta |
str
|
Texto formatado para o usuario. |
etapa |
str
|
Proxima etapa do fluxo. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
ResultadoTrocar(carrinho: list[dict] = list(), resposta: str = '', modo: MODOS = 'coletando')
dataclass
Resultado do processamento de troca.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado apos troca. |
resposta |
str
|
Texto formatado para o usuario. |
etapa |
str
|
Proxima etapa do fluxo. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
processar_cancelamento(carrinho_dicts: list[dict]) -> RetornoNode
Processa cancelamento do pedido.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/cancelar_handler.py
processar_carrinho(carrinho_dicts: list[dict]) -> RetornoNode
Gera resposta com o conteudo atual do carrinho.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/carrinho_handler.py
clarificar(fila: list[dict], mensagem: str, tentativas: int, thread_id: str = '') -> ResultadoClarificacao
Processa a resposta do usuário durante clarificação de variante.
Tenta extrair uma variante válida da mensagem usando o extrator spaCy. Se não encontrar, usa fuzzy matching como fallback. Se válida, calcula o preço e adiciona ao carrinho. Se inválida, incrementa o contador de tentativas e faz re-prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fila
|
list[dict]
|
Fila de itens pendentes de clarificação. |
required |
mensagem
|
str
|
Mensagem do usuário com a resposta. |
required |
tentativas
|
int
|
Contador atual de tentativas falhas. |
required |
thread_id
|
str
|
Identificador da sessão para observabilidade. |
''
|
Returns:
| Type | Description |
|---|---|
ResultadoClarificacao
|
ResultadoClarificacao com estado atualizado. |
Source code in src/graph/handlers/clarificacao.py
processar_confirmacao(carrinho_dicts: list[dict]) -> RetornoNode
Processa confirmacao do pedido pelo usuario.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/confirmar_handler.py
processar_pedido(itens_extraidos: list[dict], carrinho_existente: list[dict]) -> ResultadoPedir
Processa itens extraidos e os adiciona ao carrinho.
Para cada item extraido, verifica se possui preco fixo ou variantes. Itens com variantes invalidas ou nao especificadas vao para a fila de clarificacao.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
itens_extraidos
|
list[dict]
|
Lista de itens extraidos da mensagem. |
required |
carrinho_existente
|
list[dict]
|
Carrinho atual do estado (para mesclar). |
required |
Returns:
| Type | Description |
|---|---|
ResultadoPedir
|
ResultadoPedir com carrinho, fila e resposta atualizados. |
Source code in src/graph/handlers/pedido_handler.py
processar_remocao(carrinho_dicts: list[dict], mensagem: str) -> ResultadoRemover
Processa remocao de itens do carrinho.
Source code in src/graph/handlers/remocao_handler.py
processar_saudacao() -> RetornoNode
Gera resposta de saudacao com o nome do restaurante.
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/saudacao_handler.py
processar_troca(carrinho_dicts: list[dict], mensagem: str) -> ResultadoTrocar
Processa troca de variantes de itens no carrinho.
Source code in src/graph/handlers/troca_handler.py
src.graph.handlers.carrinho
Modelos de carrinho de pedidos.
Classes OO para representar o carrinho e seus itens, substituindo o uso de dicts soltos.
Example
CarrinhoItem(item_id: str, quantidade: int, preco_centavos: int, variante: str | None = None)
dataclass
Item individual no carrinho.
Attributes:
| Name | Type | Description |
|---|---|---|
item_id |
str
|
ID do item no cardapio. |
quantidade |
int
|
Quantidade deste item. |
preco_centavos |
int
|
Preco unitario em centavos. |
variante |
str | None
|
Variante selecionada (ou None). |
preco_reais() -> float
subtotal() -> int
subtotal_reais() -> float
to_dict() -> dict
Converte para dict compativel com State.
from_dict(data: dict) -> CarrinhoItem
classmethod
Cria CarrinhoItem a partir de dict do State.
Source code in src/graph/handlers/carrinho.py
Carrinho(itens: list[CarrinhoItem] = list())
dataclass
Carrinho de pedidos com metodos de negocio.
Attributes:
| Name | Type | Description |
|---|---|---|
itens |
list[CarrinhoItem]
|
Lista de itens no carrinho. |
adicionar(item: CarrinhoItem) -> None
remover_indices(indices: set[int]) -> None
limpar() -> None
total_centavos() -> int
total_reais() -> float
vazio() -> bool
tamanho() -> int
formatar() -> str
Formata o carrinho como texto legivel.
Returns:
| Type | Description |
|---|---|
str
|
String com um item por linha. |
Source code in src/graph/handlers/carrinho.py
to_state_dicts() -> list[dict]
from_state_dicts(dados: list[dict]) -> Carrinho
classmethod
Cria Carrinho a partir de lista de dicts do State.
src.graph.handlers.pedido_handler
Handler de processamento de pedidos.
Processa itens extraidos da mensagem do usuario, calcula precos, adiciona ao carrinho e envia itens pendentes para fila de clarificacao.
Example
ResultadoPedir(carrinho: list[dict] = list(), fila: list[dict] = list(), resposta: str = '')
dataclass
Resultado do processamento de pedido.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado. |
fila |
list[dict]
|
Itens pendentes de clarificacao. |
resposta |
str
|
Texto formatado para o usuario. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
Source code in src/graph/handlers/pedido_handler.py
processar_pedido(itens_extraidos: list[dict], carrinho_existente: list[dict]) -> ResultadoPedir
Processa itens extraidos e os adiciona ao carrinho.
Para cada item extraido, verifica se possui preco fixo ou variantes. Itens com variantes invalidas ou nao especificadas vao para a fila de clarificacao.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
itens_extraidos
|
list[dict]
|
Lista de itens extraidos da mensagem. |
required |
carrinho_existente
|
list[dict]
|
Carrinho atual do estado (para mesclar). |
required |
Returns:
| Type | Description |
|---|---|
ResultadoPedir
|
ResultadoPedir com carrinho, fila e resposta atualizados. |
Source code in src/graph/handlers/pedido_handler.py
src.graph.handlers.saudacao_handler
Handler de saudacao.
Gera resposta de saudacao com o nome do restaurante.
processar_saudacao() -> RetornoNode
Gera resposta de saudacao com o nome do restaurante.
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/saudacao_handler.py
src.graph.handlers.remocao_handler
Handler de remocao de itens do carrinho.
Extrai itens mencionados na mensagem e remove do carrinho. Suporta remocao por nome do item e por variante especifica.
Example
ResultadoRemover(carrinho: list[dict] = list(), resposta: str = '', modo: MODOS = 'ocioso')
dataclass
Resultado do processamento de remocao.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado apos remocao. |
resposta |
str
|
Texto formatado para o usuario. |
etapa |
str
|
Proxima etapa do fluxo. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
processar_remocao(carrinho_dicts: list[dict], mensagem: str) -> ResultadoRemover
Processa remocao de itens do carrinho.
Source code in src/graph/handlers/remocao_handler.py
src.graph.handlers.troca_handler
Handler de troca de variantes de itens do carrinho.
Extrai itens e variantes mencionados na mensagem e troca a variante de itens existentes no carrinho, recalculando o preco.
Example
ResultadoTrocar(carrinho: list[dict] = list(), resposta: str = '', modo: MODOS = 'coletando')
dataclass
Resultado do processamento de troca.
Attributes:
| Name | Type | Description |
|---|---|---|
carrinho |
list[dict]
|
Carrinho atualizado apos troca. |
resposta |
str
|
Texto formatado para o usuario. |
etapa |
str
|
Proxima etapa do fluxo. |
to_dict() -> RetornoNode
Converte para dicionario compativel com LangGraph State.
processar_troca(carrinho_dicts: list[dict], mensagem: str) -> ResultadoTrocar
Processa troca de variantes de itens no carrinho.
Source code in src/graph/handlers/troca_handler.py
src.graph.handlers.confirmar_handler
Handler de confirmacao de pedido.
Calcula o total do carrinho, gera mensagem de confirmacao e limpa o carrinho apos o pedido ser finalizado.
processar_confirmacao(carrinho_dicts: list[dict]) -> RetornoNode
Processa confirmacao do pedido pelo usuario.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/confirmar_handler.py
src.graph.handlers.cancelar_handler
Handler de cancelamento de pedido.
Limpa o carrinho e reseta o estado do fluxo.
processar_cancelamento(carrinho_dicts: list[dict]) -> RetornoNode
Processa cancelamento do pedido.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/cancelar_handler.py
src.graph.handlers.carrinho_handler
Handler de exibicao do carrinho.
Lista todos os itens no carrinho com quantidades e precos.
processar_carrinho(carrinho_dicts: list[dict]) -> RetornoNode
Gera resposta com o conteudo atual do carrinho.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
carrinho_dicts
|
list[dict]
|
Lista de dicts do carrinho no State. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionario com |
Source code in src/graph/handlers/carrinho_handler.py
src.graph.handlers.clarificacao
Handler de clarificação de variantes.
Processa respostas do usuário durante a clarificação de itens pendentes no pedido. Suporta validação via extrator spaCy, re-prompt com limite de tentativas e avanço automático na fila.
Example
from src.graph.handlers.clarificacao import clarificar
fila = [
{
'item': {
'item_id': 'lanche_001',
'quantidade': 1,
'variante': None,
'remocoes': [],
},
'item_id': 'lanche_001',
'nome': 'Hambúrguer',
'campo': 'variante',
'opcoes': ['simples', 'duplo'],
}
]
result = clarificar(fila, 'duplo', 0)
result.tipo
'sucesso'
MAX_TENTATIVAS = 3
module-attribute
Número máximo de tentativas antes de desistir do item.
ResultadoClarificacao(tipo: str, resposta: str, modo: MODOS, carrinho: list[dict] = list(), fila: list[dict] = list(), tentativas: int = 0)
dataclass
Resultado do processamento de clarificação.
Attributes:
| Name | Type | Description |
|---|---|---|
tipo |
str
|
Tipo do resultado ('sucesso', 'invalida', 'erro'). |
resposta |
str
|
Texto da resposta para o usuário. |
etapa |
str
|
Próxima etapa do fluxo. |
carrinho |
list[dict]
|
Carrinho atualizado. |
fila |
list[dict]
|
Fila de clarificação atualizada. |
tentativas |
int
|
Contador de tentativas atual. |
to_dict() -> RetornoNode
Converte para dicionário compatível com LangGraph State.
Source code in src/graph/handlers/clarificacao.py
clarificar(fila: list[dict], mensagem: str, tentativas: int, thread_id: str = '') -> ResultadoClarificacao
Processa a resposta do usuário durante clarificação de variante.
Tenta extrair uma variante válida da mensagem usando o extrator spaCy. Se não encontrar, usa fuzzy matching como fallback. Se válida, calcula o preço e adiciona ao carrinho. Se inválida, incrementa o contador de tentativas e faz re-prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fila
|
list[dict]
|
Fila de itens pendentes de clarificação. |
required |
mensagem
|
str
|
Mensagem do usuário com a resposta. |
required |
tentativas
|
int
|
Contador atual de tentativas falhas. |
required |
thread_id
|
str
|
Identificador da sessão para observabilidade. |
''
|
Returns:
| Type | Description |
|---|---|
ResultadoClarificacao
|
ResultadoClarificacao com estado atualizado. |
Source code in src/graph/handlers/clarificacao.py
src.graph.handlers.desconhecido
Handler para intents desconhecidas.
node_handler_desconhecido(state: State) -> RetornoNode
Gera resposta de esclarecimento para intents desconhecidas.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
State
|
Estado atual do grafo de atendimento. |
required |
Returns:
| Type | Description |
|---|---|
RetornoNode
|
Dicionário com |