# Build, deploy e testes

O SDK atual não cobre apenas runtime. Ele também participa do empacotamento do projeto, da estratégia de logging e dos testes locais.

## Build e empacotamento

O pacote público expõe tooling de build em `@tunnelhub/sdk/building` e o bin `tunnelhub-sdk-esbuild`.

Esse fluxo lê a configuração do projeto, usa `tunnelhub.yml` como referência e normalmente gera um artefato ZIP para deploy.

Na prática, isso ajuda a padronizar:

* entrypoint;
* runtime;
* memória e timeout;
* arquivos incluídos no bundle;
* artefato final esperado pela CLI.

## Estratégia de logging

O SDK escolhe entre logging em tempo real e logging em lote conforme o volume e o perfil da execução.

Em alto nível:

* cargas pequenas tendem a usar logging em tempo real;
* cargas muito grandes tendem a usar modo em lote;
* flows podem ajustar limiares protegidos para adaptar o comportamento.

Esse desenho melhora custo e performance sem exigir lógica manual em cada integração.

## Observabilidade

Os logs da automação alimentam as telas de monitoramento da plataforma. A qualidade dos metadados e das mensagens impacta diretamente a capacidade de suporte e investigação.

Boas práticas:

* incluir identificadores de negócio nos metadados;
* evitar mensagens genéricas demais;
* diferenciar erro técnico de erro funcional;
* usar `setupInterceptor()` apenas quando o ganho investigativo justificar.

## Testes locais

Para testes, o SDK expõe o flag:

```ts
SDK.testMode = true;
```

Esse modo é recomendado para suítes Jest e cenários de mock de serviços AWS ou chamadas externas.

## Modo verboso

Quando necessário, você pode habilitar:

```ts
SDK.verbose = true;
```

Isso ajuda durante desenvolvimento e depuração local.

## O que vale testar em uma automação

Checklist mínimo:

* handler chama `AutomationExecution.executeAutomation(...)` corretamente;
* flow instancia sem erro com payload mínimo;
* `defineMetadata()` está válida;
* principal caminho feliz da integração está coberto;
* erros relevantes retornam mensagens operacionais úteis.

## Troubleshooting comum

* **parâmetro obrigatório ausente**: valide o cadastro no produto e o helper usado no código;
* **Tabela De/Para ou Sequência não encontrada**: confirme código, ambiente e associação correta;
* **erro de metadata**: revise labels reservadas e tipos inválidos;
* **artefato inconsistente**: confira `tunnelhub.yml`, entrypoint e caminho do ZIP antes do deploy.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tunnelhub.io/sdk/logging-and-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
