Roadmap — Suporte ao Google UCP (Universal Checkout Protocol)¶
Status: Planejamento (não iniciado)
Produto: ifriend_agent (Google ADK v1.25.1)
Objetivo: Permitir que agentes de IA ajudem usuários a comprar produtos de turismo (experiências, tickets, transfers e guias) com checkout via Google UCP / Buy on Google, capturando o pagamento na iFriend (modelo híbrido) com opção de 100% Google via flag.
Contexto¶
O Google UCP permite que agentes de IA iniciem sessões de checkout no Google para produtos cadastrados no Google Merchant Center. Para o iFriend, isso viabiliza "reservar e pagar passeios/tickets/guias diretamente pelo agente de IA" com checkout nativo do Google.
Decisões de produto já tomadas:
- Escopo: experiências, tickets, transfers e guias.
- Pagamento: iFriend captura o pagamento (modelo híbrido).
- Flag opcional UCP_FULL_GOOGLE_PAYMENT para delegar 100% do pagamento ao Google (pós-MVP).
- Conta Merchant Center: operada pela iFriend (conta centralizada). Ainda não existe.
- Endpoints de booking existem; precisam de adaptação para pedidos originados do Google UCP.
Escopo do MVP¶
| Incluído | Não incluído (pós-MVP) |
|---|---|
Agente ucp_agent no root_agent |
Flag UCP_FULL_GOOGLE_PAYMENT (100% Google) |
Tools: iniciar_checkout_ucp, consultar_status_pedido_ucp, validar_elegibilidade_ucp |
Webhook de notificação de pagamento do Google (recebimento assíncrono) |
Feature flag ENABLE_UCP (default False) |
Sincronização automática contínua de feed (job periódico) |
| Routing dinâmico no orchestrator | Controle de acesso por role (affiliate/admin) |
| Feed inicial de produtos para Merchant Center (manual/one-shot) | Suporte a múltiplas contas Merchant Center (por affiliate) |
| Testes unitários das tools e do agente | Integração com pagamento 100% Google |
Fases e Cronograma (estimativa)¶
Fase 1 — Pesquisa e Viabilidade (1–2 semanas)¶
Objetivo: Entender a spec do UCP, validar endpoints de backend e definir modelo de dados.
Atividades:
- Ler documentação oficial do Google UCP (Merchant Center, checkout sessions, order API).
- Definir campos de produto: ucp_enabled, merchant_center_offer_id, google_checkout_url.
- Definir endpoints da API iFriend a adaptar/criar (receber pedido pago do Google, criar booking a partir de ordem UCP).
- Decidir se o webhook de pagamento entra no MVP ou fica para depois.
- Definir escopo de guias no feed do Merchant Center.
Entregáveis: - Documento de decisão de arquitetura (modelo de dados, endpoints necessários). - Lista de endpoints da API iFriend a criar/adaptar.
Perguntas em aberto para o time:
- Qual endpoint da API iFriend receberá a notificação de pagamento do Google?
- O booking criado a partir de ordem UCP segue o mesmo payload de emitir_reserva_experience/emitir_reserva_guia?
Fase 2 — Conta Merchant Center e Feed de Produtos (2–3 semanas)¶
Objetivo: Criar conta Merchant Center da iFriend, obter aprovação UCP e publicar produtos elegíveis.
Atividades:
- Criar e verificar conta Merchant Center da iFriend.
- Solicitar aprovação para UCP / Buy on Google.
- Criar job de sincronização de feed (novo worker ou adicionar ao cloudbuild-product-search-sync).
- Mapear campos do feed: id, title, description, link (theifriend.com), image_link, price, availability, condition, identificador de oferta UCP.
- Incluir guias no feed (produtos do tipo guia).
- Sincronização incremental (preço, disponibilidade) e remoção de produtos indisponíveis.
Entregáveis: - Conta Merchant Center ativa e aprovada para UCP. - Código do job de sync de feed. - Produtos elegíveis publicados no Merchant Center.
Dependência externa: Aprovação da conta Merchant Center pelo Google (pode demorar dias/semanas).
Fase 3 — Ferramentas UCP (2–3 semanas)¶
Objetivo: Criar as tools que interagem com o Google UCP e com o backend iFriend.
Novos arquivos:
- ifriend_agent/tools/ucp/__init__.py
- ifriend_agent/tools/ucp/iniciar_checkout_ucp_tool.py — inicia sessão de checkout do Google (retorna checkout_url/session_id).
- ifriend_agent/tools/ucp/consultar_status_pedido_ucp_tool.py — consulta status do pedido (pago, pendente, cancelado).
- ifriend_agent/tools/ucp/validar_elegibilidade_ucp_tool.py — verifica se produto é elegível UCP.
- ifriend_agent/tools/ucp/sincronizar_produtos_merchant_center_tool.py — sync manual do feed (admin, opcional).
Padrões a seguir:
- Funções async com tool_context: ToolContext.
- Usar IFriendAPIClient para chamadas ao backend iFriend.
- Sanitização de retorno via sanitize.py.
- Retorno dict {"success": bool, ...}.
Entregáveis: - Tools UCP implementadas e testadas com mocks. - Sanitização de dados sensíveis (tokens internos, dados de pagamento).
Fase 4 — Agente UCP (1–2 semanas)¶
Objetivo: Criar o ucp_agent e integrá-lo ao root_agent.
Novo arquivo:
- ifriend_agent/agents/ucp_agent.py
Padrão: Seguir quote_agent / custom_tour_agent (LlmAgent, disallow_transfer_to_peers=True, static_instruction opcional).
Fluxo do agente:
1. Recebe produto selecionado (do discovery/quote).
2. validar_elegibilidade_ucp(product_id).
3. Se elegível: iniciar_checkout_ucp(...) → apresenta checkout_url ao usuário.
4. Após pagamento: consultar_status_pedido_ucp(checkout_id) → confirma ou reporta falha.
5. Transfere ao root_agent.
Entregáveis:
- ucp_agent implementado.
- Registro no agent_builder.py.
- Routing hint no orchestrator_prompt.py.
Fase 5 — Feature Flag, Prompt e Roteamento (1 semana)¶
Atividades:
- Adicionar flag ENABLE_UCP (default False) em config/feature_flags.py.
- Registrar ucp_agent no agent_builder.py (condicional via flag).
- Adicionar routing hint para ucp_agent em ROUTING_HINTS (orchestrator_prompt.py).
- Adicionar DISABLED_HINTS["ucp_agent"].
- (Opcional) Criar config/ucp_access.py para controle de acesso por role/JWT, seguindo o padrão proposal_access.py.
Entregáveis:
- ENABLE_UCP controla ativação do agente.
- Prompt do orquestrador inclui/sem rota para ucp_agent conforme flag.
Fase 6 — Testes (1–2 semanas)¶
Novos arquivos de teste:
- ifriend_agent/tests/test_ucp_agent.py — estrutura, tools, disallow_transfer_to_peers, prompt.
- ifriend_agent/tests/test_ucp_tools.py — mock das chamadas ao Google/UCP e backend (AsyncMock, patch sobre IFriendAPIClient).
- ifriend_agent/tests/test_ucp_access.py (se houver access control).
- Extensão de test_agent_builder.py e test_orchestrator.py para verificar ucp_agent conforme flag.
Entregáveis: - Cobertura de testes unitários para tools e agente. - Testes passando no CI.
Fase 7 — Deploy e Rollout (1 semana)¶
Atividades:
- Definir env vars: ENABLE_UCP, GOOGLE_MERCHANT_CENTER_ID, credenciais Google UCP, UCP_CHECKOUT_BASE_URL.
- Atualizar cloudbuild.yaml / Cloud Run para worker de sync de feed.
- Habilitar ENABLE_UCP=true em stage para affiliate piloto.
- Monitorar: taxa de conversão checkout, erros de API Google, webhooks de pedido não recebidos.
Entregáveis: - UCP disponível em stage para contas piloto. - Monitoramento e alertas configurados.
Arquivos a criar/modificar¶
Criar¶
| Caminho | Descrição |
|---|---|
docs/UCP_IMPLEMENTATION_ROADMAP.md |
Este documento |
ifriend_agent/tools/ucp/__init__.py |
Pacote de tools UCP |
ifriend_agent/tools/ucp/iniciar_checkout_ucp_tool.py |
Tool de início de checkout |
ifriend_agent/tools/ucp/consultar_status_pedido_ucp_tool.py |
Tool de consulta de status |
ifriend_agent/tools/ucp/validar_elegibilidade_ucp_tool.py |
Tool de validação de elegibilidade |
ifriend_agent/tools/ucp/sincronizar_produtos_merchant_center_tool.py |
Tool de sync de feed (opcional) |
ifriend_agent/agents/ucp_agent.py |
Agente UCP |
ifriend_agent/config/ucp_access.py |
Controle de acesso por role (opcional) |
ifriend_agent/scripts/sync_merchant_center.py |
Job de feed do Merchant Center |
ifriend_agent/tests/test_ucp_agent.py |
Testes do agente |
ifriend_agent/tests/test_ucp_tools.py |
Testes das tools |
Modificar¶
| Caminho | Alteração |
|---|---|
ifriend_agent/config/feature_flags.py |
Adicionar flag ENABLE_UCP |
ifriend_agent/agent_builder.py |
Registrar ucp_agent |
ifriend_agent/prompts/orchestrator_prompt.py |
Routing hint + disabled hint para ucp_agent |
ifriend_agent/tools/sanitize.py |
Sanitização de resposta UCP |
ifriend_agent/requirements.txt |
Dependências Google (se faltar) |
AGENTS.md |
Documentar novo agente (pós-implementação) |
Riscos e Dependências¶
| Item | Detalhe | Mitigação |
|---|---|---|
| Conta Merchant Center | Não existe; precisa criar e verificar; aprovação UCP pode demorar | Iniciar criação o mais cedo possível (Fase 2) |
| Backend iFriend | Endpoints de booking existem; precisam adaptação para pedidos Google UCP | Definir contrato na Fase 1 com o time de API |
| Flag 100% Google | iFriend captura pagamento por padrão; flag UCP_FULL_GOOGLE_PAYMENT para delegar 100% ao Google |
Deixar para pós-MVP |
| Guias no feed | Produtos de guia precisam ser mapeados corretamente no Merchant Center | Incluir guias no mapeamento do feed desde o início |
| Concorrentes | Regra existente proíbe links de GetYourGuide/Viator etc. | Checkout do Google é próprio, não concorrente direto; confirmar com produto/legal |
Métricas de Sucesso (MVP)¶
- Percentual de pedidos iniciados via UCP que são concluídos (checkout_url gerado → pagamento confirmado).
- Taxa de erro da API Google UCP.
- Tempo médio entre início do checkout e confirmação de pagamento.
- Número de produtos elegíveis publicados no Merchant Center.
Próximos Passos Imediatos¶
- Criar branch
feature/ucp-support. - Iniciar Fase 1: pesquisa da spec UCP + definição de endpoints de backend (com o time de API).
- Criar conta Merchant Center da iFriend e solicitar aprovação UCP (pode rodar em paralelo).