π DIAGRAMA DE FLUXO - AGENTE DE RESERVAS¶
VisΓ£o Geral do Sistema¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USUΓRIO β
β (Slack / API) β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
β "Quero fazer uma reserva"
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ROOT AGENT β
β - Detecta intenΓ§Γ£o de reserva β
β - Delega ao booking_agent β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BOOKING AGENT β
β Fluxo conversacional para emitir reserva β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
[Fluxo Detalhado Abaixo]
Fluxo Detalhado do Booking Agent¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. IDENTIFICAR CLIENTE β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
β "Qual Γ© o seu email?"
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β buscar_usuario_tool(email) β
β GET /users?userEmail={email} β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄ββββββ
β β
found=True found=False
β β
βΌ βΌ
βββββββββββ ββββββββββββββββββ
β Usar β β Coletar dados β
β user.id β β completos do β
β β β customer β
ββββββ¬βββββ ββββββββββ¬ββββββββ
β β
ββββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 2. IDENTIFICAR PRODUTO E TIPO β
β "Qual produto deseja reservar? (ID)" β
β "Tipo: guia, experience, ticket, transfer?" β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄ββββββββββ
β β
Tipo: GUIA Tipo: EXPERIENCE
β β
β βΌ
β ββββββββββββββββββββββ
β β tem_variacao_tool? β
β ββββββββββ¬ββββββββββββ
β β
β βββββββ΄ββββββ
β β β
β Sim=True NΓ£o=False
β β β
β βΌ β
β ββββββββββββ β
β β Listar β β
β β VariaΓ§Γ΅esβ β
β ββββββ¬ββββββ β
β β β
β βΌ β
β [UsuΓ‘rio β
β escolhe] β
β β β
βββββββββββ΄ββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 3. COLETAR DADOS DA RESERVA β
β - Data(s): YYYY-MM-DD β
β - HorΓ‘rio: HH:MM (ou M/T/N para guias) β
β - Participantes: num_adult, num_child β
β - Outros: isIfriendCar, hours, etc β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 4. COLETAR DADOS DOS PASSAGEIROS (PAX) β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄βββββββββββ
β β
1 Adulto Apenas MΓΊltiplos
β β
βΌ βΌ
ββββββββββββ ββββββββββββββββ
β PAX = β β Loop para β
β Customer β β cada pessoa: β
β β β - fullname β
β β β - doc β
β β β - gender β
β β β - birthday β
β β β - email β
β β β - phone β
ββββββ¬ββββββ ββββββββ¬ββββββββ
β β
βββββββββββ¬βββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 5. VALIDAR DADOS β
β validar_dados_reserva_tool(...) β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄ββββββ
β β
valid=True valid=False
β β
β βΌ
β ββββββββββββββββ
β β Solicitar β
β β correΓ§Γ΅es β
β ββββββββ¬ββββββββ
β β
β [Loop atΓ© vΓ‘lido]
β β
βββββββββββ¬ββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 6. EMITIR RESERVA β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄ββββββββββ
β β
Tipo: GUIA Tipo: EXPERIENCE
β β
βΌ βΌ
ββββββββββββββββββ βββββββββββββββββββββββ
β emitir_reserva β β emitir_reserva β
β _guia_tool β β _experience_tool β
β β β β
β POST /bookings β β POST /bookings β
ββββββββββ¬ββββββββ βββββββββββ¬ββββββββββββ
β β
ββββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Response β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββ΄ββββββ
β β
success=True success=False
β β
βΌ βΌ
ββββββββββββ ββββββββββββββ
β β
OK β β β Erro β
β β β β
β Retorna: β β Retorna: β
β booking_ β β error msg β
β id β β β
ββββββ¬ββββββ βββββββ¬βββββββ
β β
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 7. RESPOSTA AO USUΓRIO β
β β
β Se sucesso: β
β "β
Reserva #123 criada com sucesso!" β
β "PrΓ³ximo passo: realizar o pagamento" β
β β
β Se erro: β
β "β NΓ£o foi possΓvel criar a reserva: {erro}" β
β "Por favor, verifique: {detalhes}" β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Fluxo de Dados - Estrutura¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ENTRADA: IntenΓ§Γ£o do UsuΓ‘rio β
β "Quero reservar o guia ID 3 para 10/09/2026 Γ s 12h" β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PROCESSAMENTO: ExtraΓ§Γ£o de InformaΓ§Γ΅es β
β β
β product_id: 3 β
β product_type: "guia" β
β day: "2026-09-10" β
β period: "12:00" β
β num_adult: 1 (inferido) β
β num_child: 0 (inferido) β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β COLETA INTERATIVA: Dados Faltantes β
β β
β 1. Email β busca usuΓ‘rio β
β ββ Se existe: customer_id β
β ββ Se nΓ£o: firstname, lastname, phone, birthday β
β β
β 2. PAX (para cada pessoa): β
β ββ fullname β
β ββ doc (CPF/Passaporte) β
β ββ gender (m/f/o) β
β ββ birthday (YYYY-MM-DD) β
β ββ email β
β ββ phone (+5531...) β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VALIDAΓΓO: Todos os Campos β
β β
β β Email vΓ‘lido β
β β Telefone com cΓ³digo paΓs β
β β Data futura β
β β Formato de data correto β
β β Todos campos obrigatΓ³rios preenchidos β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PAYLOAD FINAL: JSON para API β
β β
β { β
β "type": "normal", β
β "ifriend": {"id": 3}, β
β "customer": {"id": 7}, β
β "dates": [{ β
β "day": "2026-09-10", β
β "hours": 4, β
β "period": "12:00", β
β "numAdult": 1, β
β "numChild": 0, β
β "isIfriendCar": false β
β }], β
β "pax": [{ β
β "fullname": "JoΓ£o Silva", β
β "doc": "123.456.789-00", β
β "gender": "m", β
β "birthday": "1990-01-15", β
β "email": "joao@exemplo.com", β
β "phone": "+5531999999999" β
β }] β
β } β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ POST /bookings
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API iFriend β
β https://api.theifriend.com/bookings β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RESPOSTA: Booking Criado β
β β
β { β
β "id": 41, β
β "confirmStatus": 0, β
β "paymentStatus": 0, β
β "price": "64.000000", β
β "currencyCode": "USD", β
β "paymentToken": "3c4d...", β
β ... β
β } β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAΓDA: Mensagem ao UsuΓ‘rio β
β β
β "β
Reserva #41 criada com sucesso!" β
β β
β Detalhes: β
β β’ Guia: Kyla Russel (#3) β
β β’ Data: 10/09/2026 Γ s 12:00 β
β β’ DuraΓ§Γ£o: 4 horas β
β β’ Participantes: 1 adulto β
β β’ Valor: USD 64.00 β
β β
β PrΓ³ximo passo: Realizar pagamento β
β Token de pagamento: 3c4d... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Arquitetura de Componentes¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ROOT AGENT β
β (Orquestrador Principal) β
β β
β Tools disponΓveis: β
β ββ busca_produtos_tool β
β ββ detalhes_experience β
β ββ detalhes_guia β
β ββ disponibilidade_* β
β ββ calcular_preco_tool β
β ββ faq_tool β
β ββ π booking_agent ββββ NOVO! β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β
β Delega quando detecta
β "quero reservar"
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BOOKING AGENT β
β (Agente Especializado em Reservas) β
β β
β Tools disponΓveis: β
β ββ π§ buscar_usuario_tool β
β β ββ GET /users?userEmail={email} β
β β β
β ββ β
validar_dados_reserva_tool β
β β ββ ValidaΓ§Γ΅es locais (email, CPF, datas, etc) β
β β β
β ββ π― emitir_reserva_guia_tool β
β β ββ POST /bookings (type: normal/virtual_guide) β
β β β
β ββ π« emitir_reserva_experience_tool β
β β ββ POST /bookings (type: experience/ticket/transfer) β
β β β
β ββ Acesso Γ s tools do root_agent: β
β ββ detalhes_guia β
β ββ detalhes_experience β
β ββ tem_variacao_tool β
β ββ listar_variacoes_tool β
β ββ calcular_preco_tool β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
β Chamadas HTTP
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API iFriend β
β https://api.theifriend.com β
β β
β Endpoints utilizados: β
β ββ GET /users?userEmail={email} β
β ββ GET /ifriends/{id} β
β ββ GET /experiences/{id} β
β ββ GET /experiences/{id}/availability/{month} β
β ββ POST /bookings/price β
β ββ POST /bookings ββββ PRINCIPAL! β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Fluxo de ExperiΓͺncias com VariaΓ§Γ£o¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β UsuΓ‘rio: "Quero reservar experiΓͺncia 38" β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β tem_variacao_tool(38) β
β Retorna: True β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β listar_variacoes_tool(38, "2026-03-20") β
β β
β Retorna: β
β [ β
β { β
β "id": 13, β
β "name": "Tour Privativo", β
β "agePolicies": [ β
β {"id": 34, "name": "Adulto", "minAge": 18, ...}, β
β {"id": 35, "name": "CrianΓ§a", "minAge": 3, ...} β
β ] β
β }, β
β { β
β "id": 14, β
β "name": "Tour Compartilhado", β
β "agePolicies": [...] β
β } β
β ] β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Agente apresenta ao usuΓ‘rio: β
β β
β "Esta experiΓͺncia tem as seguintes opΓ§Γ΅es: β
β β
β *OpΓ§Γ£o 1: Tour Privativo* (VariaΓ§Γ£o ID: 13) β
β Participantes aceitos: β
β β’ Adulto (18-99 anos) - PolΓtica ID: 34 β
β β’ CrianΓ§a (3-17 anos) - PolΓtica ID: 35 β
β β
β *OpΓ§Γ£o 2: Tour Compartilhado* (VariaΓ§Γ£o ID: 14) β
β Participantes aceitos: β
β β’ Adulto (18-99 anos) - PolΓtica ID: 36 β
β β
β Qual opΓ§Γ£o prefere? E quantas pessoas?" β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β UsuΓ‘rio responde: "OpΓ§Γ£o 1, 2 adultos e 1 crianΓ§a" β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Agente extrai: β
β - variation_id: 13 (OpΓ§Γ£o 1) β
β - age_policies: [ β
β {"id": 34, "quantity": 2}, // 2 adultos β
β {"id": 35, "quantity": 1} // 1 crianΓ§a β
β ] β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Coleta PAX para 3 pessoas (2 adultos + 1 crianΓ§a) β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Monta payload com providerData: β
β β
β { β
β "type": "experience", β
β "experience": {"id": 38}, β
β "customer": {"id": 7}, β
β "dates": [{...}], β
β "pax": [{...}, {...}, {...}], // 3 pessoas β
β "providerData": { β
β "provider": "platform", β
β "variations": [{ β
β "id": 13, β
β "quantity": 1, β
β "agePolicies": [ β
β {"id": 34, "name": "Adulto", "quantity": 2}, β
β {"id": 35, "name": "CrianΓ§a", "quantity": 1} β
β ] β
β }] β
β } β
β } β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β POST /bookings β
β β
Reserva #47 criada! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Legenda: - π§ = Busca/Consulta - β = ValidaΓ§Γ£o - π― = AΓ§Γ£o (Guia) - π« = AΓ§Γ£o (Experience) - βΌ = Fluxo sequencial - βββ΄ββ = DecisΓ£o/RamificaΓ§Γ£o