Java App simples que roda ad-hoc onde integra via API REST da pied puxando dados de clientes, produtos e pedidos.
This repository has been archived on 2026-07-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Java 97.4%
  • Shell 1.9%
  • HTML 0.7%
Find a file
2026-07-17 00:26:38 +00:00
.claude docs: migra constituição 0.14.11 → 0.14.14 (fix token de release + estáticos verbatim) 2026-06-24 15:17:03 -03:00
.forgejo/workflows Add .forgejo/workflows/purge.yml 2026-07-17 00:26:38 +00:00
config/checkstyle docs: migra a constituição de 0.11.0 para 0.12.3 2026-06-19 17:07:35 -03:00
docs docs: migra constituição 0.14.14 → 0.14.16 2026-06-25 10:35:40 -03:00
gradle/wrapper feat: entrega a Fase 1 do cliente PIED — importação de produtos 2026-06-18 10:46:29 -03:00
overrides docs: migra constituição 0.14.11 → 0.14.14 (fix token de release + estáticos verbatim) 2026-06-24 15:17:03 -03:00
src chore: corrige achados da auditoria de engenharia (constituição 0.14.0) 2026-06-22 10:22:30 -03:00
.env.example feat: Fase 3 do cliente PIED — pedidos, modos e cursor incremental 2026-06-18 11:08:55 -03:00
.gitignore build: gera fat jar versionado e o copia para a raiz do projeto 2026-06-19 09:12:42 -03:00
build.gradle.kts chore(release): v0.1.8 2026-06-25 11:49:04 -03:00
CHANGELOG.md chore(release): v0.1.8 2026-06-25 11:49:04 -03:00
CLAUDE.md docs: migra constituição 0.14.14 → 0.14.16 2026-06-25 10:35:40 -03:00
gradle.properties fix: gradlew run sem args valida e mostra o help, não roda dev 2026-06-18 14:56:46 -03:00
gradlew feat: entrega a Fase 1 do cliente PIED — importação de produtos 2026-06-18 10:46:29 -03:00
gradlew.bat feat: entrega a Fase 1 do cliente PIED — importação de produtos 2026-06-18 10:46:29 -03:00
mkdocs.yml docs: migra constituição 0.14.6 → 0.14.11 (docs versionada + Release de artefato) 2026-06-24 15:04:37 -03:00
README.md docs: reestrutura o site por ciclo de vida e adiciona o Guia de Código 2026-06-19 10:52:11 -03:00
settings.gradle.kts build: gera fat jar versionado e o copia para a raiz do projeto 2026-06-19 09:12:42 -03:00

xadm-pied-cliente

Cliente Java de linha de comando que puxa produtos, clientes e pedidos da API REST da PIED, mapeia para o formato do X-Adm e grava arquivos JSON (imprimindo um resumo no stdout). Não envia nada ao X-Adm — a ingestão dos arquivos é responsabilidade da equipe X-Adm.

Cliente da Maxsul. 📖 Documentação Completa no portal X-Adm (o fonte fica em docs/); este README cobre só o essencial de build/execução.

Requisitos

  • JDK 25 — o Gradle usa toolchain Java 25.
  • ./gradlew (wrapper versionado) — não precisa instalar Gradle.

Build e testes

./gradlew check        # compila + Checkstyle + testes (JUnit 5/WireMock) — gate de CI
./gradlew shadowJar    # gera build/libs/xadm-pied-cliente-*.jar e copia para a raiz do projeto

Execução

Crie um .env no diretório de execução (cp .env.example .env e preencha) — o app o lê automaticamente. Variáveis reais do SO têm precedência (CI/prod).

java -jar xadm-pied-cliente-*.jar               # sem flags: valida config + lista opções
java -jar xadm-pied-cliente-*.jar --dev         # amostra de 5 por entidade
java -jar xadm-pied-cliente-*.jar --mode incremental --output-dir ./saida
./gradlew run                                           # valida config + mostra help
./gradlew run --args="--dev"                            # modo DEV (amostra de 5)

Flags

Flag Descrição
--mode incremental|reconcile|full modo de execução (padrão: incremental)
--last-update-after AAAA-MM-DD data inicial — só no modo reconcile
--entity produtos|clientes|pedidos limita a execução a uma entidade
--page-limit N itens por página (máx. 50)
--output-dir DIR diretório de saída (padrão ./saida)
--print-json imprime também os arrays mapeados no stdout
--dev amostra de 5 por entidade (1 página)

Exit codes

Código Significado
0 sucesso
1 erro parcial (itens rejeitados)
2 erro de configuração/autenticação
3 indisponibilidade externa (PIED)

Saída

Em XADM_OUTPUT_DIR (padrão ./saida), prefixados pelo timestamp <ts> da execução:

Arquivo Conteúdo
<ts>-<entidade>.json dados mapeados para o X-Adm
<ts>-bruto-*.json resposta crua da PIED (auditoria)
<ts>-resumo.json contadores e erros por entidade
estado.json cursor do modo incremental

Logs vão para STDERR e logs/; o token nunca é logado.

Fronteira — handoff para a equipe X-Adm

Este app NÃO envia nada ao X-Adm. Ele lê da PIED, mapeia para o formato do X-Adm e grava arquivos JSON. Enviar esses dados ao X-Adm é a parte que a equipe X-Adm implementa.

O ponto de extensão está marcado no código:

  • xadm/EnvioXAdm.java — stub com o TODO. É aqui que você implementa o envio (Despachador.despachar(entidade, objetos)), chamado pelo pipeline logo após cada entidade ser mapeada. objetos já está no formato do X-Adm (idêntico ao JSON gravado).
  • Faça upsert pela chave de origem — produtos: productCode · clientes: CNPJ/CPF · pedidos: code. A ordem produtos → clientes → pedidos já é garantida.
  • Stack livre: não precisa usar Gradle/picocli/OkHttp — o mapeamento é isolado. No limite, dá para ignorar o código Java e só consumir os arquivos JSON em outra linguagem.

Formato/schema da saída: modelagem e mapeamento. Visão de operação: integração com o X-Adm.

Estrutura

  • docs/ — documentação (livro do projeto, requisitos, decisões, operação).
  • src/main/java/br/com/xadm/maxsul/pied/ — código (feature-first com kernel: cli/, produtos/, clientes/, pedidos/, core/).
  • Operação detalhada: docs/operacao/operacao-local.md; como rodar localmente: docs/dev/index.md.