Execução a seco do Adobe Commerce Developer Agent App Builder
Uma apresentação prática para criar, implantar e testar casos de uso de extensibilidade do Commerce com o Adobe Commerce Developer Agent (CDA). Essa simulação abrange três casos de uso: um webhook de limite de quantidade do carrinho, uma retenção de pedido de alto valor e arquivamento orientado por eventos para pedidos suspensos, desde o blueprint até o teste funcional.
Introdução
Como relatar problemas e feedback
Durante todo o período de seca, você encontra bordas ásperas — o que é esperado ao trabalhar com um novo recurso. Capture e compartilhe quaisquer problemas com o contato do programa do Adobe usando o modelo de feedback fornecido durante a integração.
- Inclua o
projectId(visível na URL do navegador). - Inclua capturas de tela sempre que relevante.
Pré-requisitos
Contas e acesso
- Pelo menos a função Desenvolvedor em sua Organização de IMS de Acesso Antecipado.
- Acesso de administrador a uma instância do Adobe Commerce as a Cloud Service (ACCS) nessa organização, disponível em experience.adobe.com em Instâncias do Cloud Service.
- Uma conta do GitHub.
Ferramentas
Uma loja Edge Delivery Services (EDS) é necessária para a validação funcional. Você precisará de:
- Node.js 22+
- CLI DO Adobe I/O:
npm install -g @adobe/aio-cli - Plug-in AIO CLI Commerce:
aio plugins:install https://github.com/adobe-commerce/aio-cli-plugin-commerce
Instale a placa-mãe da loja em uma pasta vazia, selecionando a instância ACCS quando solicitado:
aio commerce extensibility app-setup -s aem-boilerplate-commerce -n storefront
Iniciar a loja:
cd storefront
npm run start
Abrir o Commerce Developer Agent
- Navegue até o Commerce Developer Agent em experience.adobe.com, em Developer Agent.
- Faça logon usando suas credenciais da Organização IMS de acesso antecipado.
Caso de uso 1: webhook de unidades máximas do carrinho
Esse caso de uso valida os limites de quantidade do carrinho antes que um produto seja adicionado, usando um webhook síncrono do Commerce.
Estágio de blueprint
Digite o prompt a seguir e clique em Gerar blueprint:
Add a validation webhook that runs before a product is added to the cart.
Use the Commerce webhook method observer.sales_quote_item_save_before (type before) — do not use
observer.checkout_cart_product_add_before, observer.sales_quote_add_item, or any other event.
Calculate the total by summing all quote line quantities and the quantity of the current item.
If the same SKU already exists in the quote, exclude its existing quantity to avoid double-counting.
If the total is greater than the maximum allowed, block the add and show:
"You have reached the maximum amount of items."
The maximum allowed must be configurable in Commerce Admin as max_cart_units, with default 10.
Map payload fields using name and source properties:
- name: item.qty, source: data.item.qty
- name: item.sku, source: data.item.sku
- name: quote, source: context_checkout_session.get_quote[items.qty,items.sku]
Set required: true and fallback_error_message: "You have reached the maximum amount of items."
on the webhook config.
When blocking the add, do not use exceptionOperation, because it serializes exceptionClass as class.
Instead, manually return an exception operation response whose body includes type:
{
"op": "exception",
"message": "You have reached the maximum amount of items.",
"type": "\\Magento\\Framework\\GraphQl\\Exception\\GraphQlInputException"
}
- Um blueprint (v1) que captura os requisitos é criado.
- São criadas tarefas para orientar a implementação.
Refine o blueprint inserindo detalhes na caixa de chat ou clicando em uma das pílulas acima da caixa de chat (Desafiar hipóteses, Localizar lacunas de design etc.). Quando estiver satisfeito, clique em Aprovar plano para prosseguir.
Estágio de desenvolvimento
O agente faz a transição para o estágio Desenvolver e começa a provisionar o espaço de trabalho.
app.commerce.config.tsapp.config.yamlinstall.yamlpackage-lock.jsonpackage.json
Depois de provisionado, o agente mostra uma lista de tarefas de implementação e começa a criar.
- O código gerado corresponde aos requisitos.
- A tela de streaming
Validatemostra o progresso na validação do espaço de trabalho (aio app build). - O agente corrige automaticamente o código gerado se a validação falhar.
Depois de satisfeito com o código, clique na guia Integrações para avançar.
Configurar integrações
Conectar ou criar um espaço de trabalho do App Builder
Para criar ou conectar um projeto do App Builder, siga as instruções na tela.
Se estiver se conectando a um espaço de trabalho existente, verifique se ele tem:
- O serviço
Runtimefoi adicionado. - As seguintes APIs foram adicionadas: Adobe Commerce as a Cloud Service, API de gerenciamento de E/S, App Builder Data Services, Eventos de E/S, Adobe I/O Events para Adobe Commerce.
Ao criar um novo espaço de trabalho, adicione manualmente a API do Adobe Commerce as a Cloud Service.
Clique em Avançar para continuar.
Conectar-se ao Commerce
Selecione a instância do ACCS na lista ou insira a URL no campo URL da Base REST do Commerce e clique em Conectar instância do Commerce. Clique em Avançar para continuar.
Conectar-se ao GitHub
Conecte o espaço de trabalho a um repositório GitHub inserindo o URL do repositório e usando o aplicativo GitHub ou um token de acesso pessoal. Clique em Avançar para continuar.
Configurar variáveis de ambiente
Preencha todas as variáveis de ambiente exigidas pelo projeto.
Implantar
Clique em Desenvolver para retornar ao estágio de desenvolvimento e solicitar que o agente implante no campo de prompt.
Confirme a implantação.
- A tela de transmissão
Validatemostrando o progresso da validação pré-implantação. - O agente corrigirá automaticamente o código se a validação falhar.
- A tela de streaming
Deploymostrando o progresso da implantação (aio app deploy). - O agente fará a autocorreção do código se a implantação falhar.
Associar o aplicativo no Gerenciamento de aplicativos
- Navegue até o URL do administrador da instância do ACCS e faça logon.
- Selecione Aplicativos no menu à esquerda e depois Gerenciamento de Aplicativos.
- Clique em + Associar aplicativo (canto superior direito).
- Selecione o Projeto e a Workspace nos quais o CDA implantou e clique em Associar.
Instalar e configurar no Gerenciamento de aplicativos
- Na linha do aplicativo, clique em Instalar e em Fechar.
- Na mesma linha, clique em Configurar para preencher os valores de configuração comercial e em Fechar.
Teste funcional
- Na configuração do aplicativo Gerenciamento de aplicativos, defina Máximo de unidades do carrinho como 3 (um valor baixo para um teste rápido).
- Na loja, comece com um carrinho vazio.
- Adicione produtos da Página de detalhes do produto (PDP) até que a quantidade total exceda 3 — a última adição falhará.
- No PDP, você vê: “Você atingiu a quantidade máxima de itens.”
- Abaixo do limite, as adições ainda têm êxito.
Caso de uso 2: retenção de ordem de alto valor e código de verificação
Volte para o estágio Blueprint para iniciar este caso de uso.
Estágio de blueprint
Digite o prompt a seguir e clique em Gerar blueprint:
Add a Commerce event priority subscription to `plugin.sales.api.order_management.place`.
Extract `entity_id` and `grand_total` from the Commerce event payload using event `fields` in `app.commerce.config.ts`.
Important: the runtime action receives a CloudEvents-shaped payload. For Commerce eventing extracted fields,
parse them from `params.data.value`, not directly from `params.data`. The handler must use:
- `params.data.value.entity_id`
- `params.data.value.grand_total`
When `grand_total` is greater than `order_hold_threshold`:
1. Generate a verification code locally.
2. Put the order on hold with state and status `holded`.
When putting the order on hold, save the verification code using `custom_attributes`, not `extension_attributes`.
The Commerce `POST V1/orders` payload should include:
{
"entity": {
"entity_id": <entity_id>,
"state": "holded",
"status": "holded",
"custom_attributes": [
{
"attribute_code": "<hold_verification_attribute>",
"value": "<verification_code>"
}
]
}
}
3. Save the verification code via a `POST V1/orders` Commerce REST API call.
Make these configurable in Commerce Admin:
- `order_hold_threshold`, default `500`
- `hold_verification_attribute`, default `lab_verification_code`
Validate inputs before use:
- `entity_id` must be a positive integer.
- `grand_total` must be a non-negative number.
- Um blueprint (v2) que captura os requisitos é criado.
- As tarefas do plano original são retidas.
- Novas tarefas correspondentes aos novos requisitos foram adicionadas.
Refine o blueprint conforme necessário, em seguida, clique em Aprovar plano para prosseguir.
Desenvolver, implantar, associar e instalar
Siga o mesmo processo usado no Caso de uso 1 para passar dos requisitos para um aplicativo instalado — não há necessidade de reconfigurar as integrações.
Teste funcional
- Na configuração do aplicativo Gerenciamento de aplicativos, defina o Limite de bloqueio de pedido (USD) como 50 (fácil de exceder em um carrinho de teste).
- Confirmar se o atributo personalizado da ordem existe (padrão
lab_verification_code). - Faça um pedido com um total geral superior a US$ 50.
- Aguarde aproximadamente 30 segundos (os eventos são assíncronos; a entrega não prioritária pode levar até ~59 s).
- Em Commerce Admin → Vendas → Pedidos, abra o pedido. O status é Em Espera (
holded); os atributos personalizados incluemlab_verification_codecom um valor aleatório. - Opcional: coloque um pedido abaixo de US$ 50 primeiro — esse manipulador não o coloca em retenção.
Caso de uso 3: arquivamento orientado por eventos para pedidos retidos
Volte para o estágio Blueprint para iniciar este caso de uso.
Estágio de blueprint
Digite o prompt a seguir e clique em Gerar blueprint:
When an order is saved with state holded, archive it to external storage and
record a reference that can be looked up later by order ID.
Add an event priority subscription on observer.sales_order_save_after, filtered to fire only when
state equals holded. From the event payload, extract:
- `entity_id`
- `payment.amount_ordered`
- `custom_attributes` (to read the `lab_verification_code` attribute set in Step 3)
The event handler must:
1. Persist the order details to the `held_orders` App Builder DB collection:
{
"order_id": <entity_id>,
"grand_total": <payment.amount_ordered>,
"verification_code": <lab_verification_code>,
"archived_at": <ISO timestamp>
}
2. Ensure the record can be looked up later by order ID.
The `held_orders` collection must exist before the handler runs:
- Provision persistent App Builder Database Storage in region `amer`.
- Create the collection during app installation.
- Create a unique index on `order_id` during installation.
- Drop the whole `held_orders` collection when the app is uninstalled.
Register the event handler separately from the existing cart validation webhook and high-value order hold action:
- runtime action: `order-archive/archive-held-order`
- non-web action
- `include-ims-credentials: true` on the archive action and the installation action
Follow the `commerce-app-storage` skill for DB auth, installation steps, and ext.config wiring.
Do not use custom IMS credential normalization or `Core.AuthClient.generateAccessToken`.
- Um blueprint (v3) que captura os requisitos é criado.
- As tarefas do plano original são retidas.
- Novas tarefas correspondentes aos novos requisitos foram adicionadas.
Refine o blueprint conforme necessário, em seguida, clique em Aprovar plano para prosseguir.
Desenvolver, implantar, associar e instalar
Siga o mesmo processo usado nos casos de uso anteriores para migrar dos requisitos para um aplicativo instalado — não há necessidade de reconfigurar as integrações.
Teste funcional
- Verifique se o limite do Caso de uso 2 é baixo o suficiente para testes (por exemplo, US$ 50 na configuração do aplicativo).
- Coloque um pedido acima desse limite para que o Caso de uso 2 o coloque em espera (~30 segundos).
- Em Adobe Developer Console → Seu projeto → Estágio → Eventos, abra o registro para o evento de arquivamento em pedido retido (adicionado ou atualizado na instalação).
- Confirme se um evento foi entregue a esse registro depois que o pedido foi movido para espera. Use o rastreamento ou monitoramento de eventos para o evento do Commerce vinculado a
order-archive/archive-held-order.
Solução de problemas
Se o aplicativo gerado pelo CDA não estiver se comportando como esperado ou estiver produzindo erros, peça ao agente para solucionar os problemas no estágio de desenvolvimento.
- O que você fez e onde (por exemplo, "clicou em Instalar no Gerenciamento de aplicativos").
- O que você esperava que acontecesse.
- O que aconteceu.
- O texto ou a mensagem de erro exato mostrada na tela.
- Quaisquer erros relevantes no console do navegador ou nos registros de depuração do App Builder e do registro de eventos do Adobe Developer Console.
Quanto mais concreto for o relatório, melhor o agente poderá diagnosticar o problema.
Etapas opcionais
Baixar o código
Para continuar refinando ou editando em seu IDE favorito, baixe o código gerado pelo CDA clicando no ícone de download na barra de ferramentas do explorador de estágio de desenvolvimento. Selecione uma pasta de destino, clique em Salvar e descompacte o pacote do espaço de trabalho.
- Todos os arquivos exibidos no Gerenciador de estágio de desenvolvimento estão presentes na pasta descompactada.
- Nenhum erro de "compilação" ao compilar o projeto com
aio app build.
Para usar as mesmas habilidades do agente que o CDA usa, instale-as na pasta do projeto:
npx skills add adobe/aio-commerce-sdk --skill commerce-app-init -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-eventing -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-webhooks -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-business-config -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-storage -y && \
npx skills add adobe/skills --skill appbuilder-project-init -y
Em seguida, inicie o IDE ou CLI e comece a solicitar.
Anexar contexto via arquivo ou link
Em vez de solicitar diretamente nos estágios Blueprint ou Desenvolver, é possível anexar contexto usando um arquivo de texto ou um link:
- Clique no ícone de anexo na caixa de diálogo.
- Clique em Adicionar Arquivo para carregar um arquivo de texto local ou insira uma URL e clique em Adicionar Link para adicionar contexto via arquivo remoto.
- Clique em Concluído e insira um aviso para chamar o agente.
Problemas conhecidos e soluções alternativas
O estágio de blueprint não gera tarefas
Para desbloquear e continuar, mova o agente para gerar tarefas.
Os botões para enviar e receber do GitHub não estão funcionais
Em vez disso, baixe o arquivo ZIP do projeto no estágio Desenvolver.