Voltar
frigopaiva-erp-bridge
Frigopaiva — Draft v1 • Status: review
Chat com Claude
Contexto do tenant: Frigopaiva
você
Bridge entre flow e ERP legado da Frigopaiva via SOAP. Mapear campos do frete pro ERP.
claude
Gerei a extension. Configurei retry com exponential backoff e teste pra casos 503. Adiciono também um teste pro 401?
você
Sim, adiciona.
claude
Pronto. Atualizei o arquivo de testes e o handler. Quer rodar a validação?
src/index.tssrc/index.test.ts
import { Extension, ExtensionContext } from '@flow/sdk';
import { z } from 'zod';

const Input = z.object({
  freight_id: z.string(),
  amount: z.number().positive(),
});

export default class FrigopaivaErpBridge extends Extension {
  onStageEntered = async (ctx: ExtensionContext) => {
    if (ctx.stage.id !== 'agendada') return;

    const input = Input.parse({
      freight_id: ctx.entity.id,
      amount: ctx.entity.data.price,
    });

    const result = await ctx.integrations.webhook_out.call({
      action: 'create_invoice',
      input,
      retry: {
        attempts: 3,
        backoff: 'exponential',
      },
    });

    await ctx.entity.setField('invoice_id', result.id);
    ctx.events.emit('extension.invoice_created', {
      freight_id: input.freight_id,
      invoice_id: result.id,
    });
  };
}