Skip to content

Feat/7 estrutura cli - #5

Merged
MattSouza14 merged 4 commits into
GVGC26:mainfrom
MattSouza14:feat/7-estrutura-cli
Nov 13, 2026
Merged

MattSouza14 merged 4 commits into
GVGC26:mainfrom
MattSouza14:feat/7-estrutura-cli

Conversation

@MattSouza14

@MattSouza14 MattSouza14 commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Descrição

  • Funcionalidade ou correção entregue: estrutura inicial e simples da CLI do FindMyPacks, com comandos de ajuda, verificação de saúde, obtenção de token e acesso autenticado ao status da aplicação.

Issue relacionada

Motivo da correção (PR adicional)

Alterações realizadas

  • Web (index.html, se PR Web): não se aplica; nenhuma alteração visual foi realizada.
  • CLI (arquivo da CLI, se PR CLI): criada CliApplication.java, com os comandos help, health, token e status. A CLI acessa somente a API e não se conecta diretamente ao banco.
  • API (endpoints específicos e logs, quando PR CLI): adicionados GET /api/cli/health, POST /api/cli/token e GET /api/cli/status. Também foram adicionados autenticação Bearer, retorno HTTP 401 e identificação do cliente CLI nos logs.
  • Banco (logs, quando PR CLI): reutilizada a camada AppUserDataAccess, registrando eventos JSON da camada db com o mesmo request_id da API quando o comando acessa dados.
  • Documentação (README.md): adicionadas instruções para iniciar a aplicação, executar os comandos, obter e configurar o token, consultar logs e executar os testes.

Infraestrutura e suporte

  • Arquivos: compose.yaml, CliApplication.java, CliController.java, SecurityConfig.java, RequestIdFilter.java, CliApplicationTest.java, CliApiIntegrationTest.java e README.md.
  • Justificativas: compose.yaml permite executar a CLI e os testes em contêineres; os arquivos da CLI e da API implementam os comandos e endpoints; a configuração de segurança implementa Bearer e HTTP 401; o filtro registra logs correlacionados; os testes verificam o comportamento implementado; e o README documenta o uso.

Endpoints e logs

  • Endpoint(s) Web/CLI adicionados ou alterados:
    • GET /api/cli/health: público, retorna HTTP 200.
    • POST /api/cli/token: recebe usuário e senha do usuário inicial e retorna um token.
    • GET /api/cli/status: protegido por token Bearer e usado pelo comando status.
  • Logs da API e do banco, com request_id correlacionado (quando houver acesso ao banco): os eventos são registrados em uma linha JSON no stdout, com timestamp, level, layer, client, operation, status, request_id e message. Senhas e tokens não são registrados.
  • Como consultar os logs: docker compose logs -f app.

Autenticação (quando aplicável)

  • Endpoints protegidos e mecanismo Web/CLI utilizado: o endpoint GET /api/cli/status utiliza Authorization: Bearer <token>. A CLI lê o token da variável de ambiente FINDMYPACKS_TOKEN.
  • Verificação de acesso autenticado e rejeição HTTP 401: foram adicionados testes para acesso com token válido, token ausente, inválido e malformado. Os acessos não autorizados retornam HTTP 401.

Testes unitários e cobertura

  • Arquivos de teste criados ou alterados: CliApplicationTest.java e CliApiIntegrationTest.java. A alteração também mantém compatibilidade com RequestIdFilterTest.java e os testes existentes.
  • Comando para executar os testes via Docker Compose: docker compose --profile test run --build --rm tests.
  • Resultado da execução e cobertura de linhas de 100% em CLI, API e banco (conforme os arquivos existentes): a primeira execução do check executou 27 testes; 25 passaram e 2 testes antigos de mensagem de log falharam. A incompatibilidade foi corrigida no commit fix(logging): preserva mensagem dos logs web. O resultado integral e a cobertura de 100% devem ser confirmados pelo novo check Compose CI / compose-tests.
  • Confirmação de que os testes anteriores continuam passando: aguardando a conclusão do check atualizado da PR. Esta descrição deve ser atualizada para “confirmado” somente quando o check estiver verde.

Execução integral via Docker Compose

  • Comando para iniciar Web, API e banco: docker compose up --build -d --wait.
  • Comando para executar a CLI:
    • docker compose --profile cli run --rm cli help
    • docker compose --profile cli run --rm cli health
    • docker compose --profile cli run --rm cli token findmypacksadmin findmypacksadmin
    • Após configurar FINDMYPACKS_TOKEN: docker compose --profile cli run --rm cli status
  • Comando para executar testes e cobertura: docker compose --profile test run --build --rm tests.
  • Confirmação de que nenhuma linguagem, dependência ou ferramenta da aplicação precisa ser instalada no host: a aplicação, a CLI, o banco e os testes são executados em contêineres. No host são necessários somente Git e Docker com Docker Compose.

Verificação realizada

  • Como foi verificado o funcionamento:
    • Compilação do projeto Java executada com sucesso.
    • Configuração do Docker Compose validada.
    • A primeira execução do CI confirmou o funcionamento dos testes da CLI e identificou uma incompatibilidade em dois testes antigos de logs.
    • A mensagem de log foi corrigida para preservar Web operation completed nas operações Web e usar API operation completed nas operações da CLI.
    • A validação final dos testes e da cobertura ficará registrada no check atualizado da PR.

@MattSouza14 MattSouza14 self-assigned this Nov 13, 2026
@MattSouza14
MattSouza14 merged commit 895fdb9 into GVGC26:main Nov 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants