Skip to content

TASK03 - Puxar endpoints do service - integração com endpoints do MeasureSoftGram Service (US12) - #10

Merged
i-JSS merged 11 commits into
feat/US12from
feat/US12-endpoints-service
Jun 25, 2026
Merged

TASK03 - Puxar endpoints do service - integração com endpoints do MeasureSoftGram Service (US12)#10
i-JSS merged 11 commits into
feat/US12from
feat/US12-endpoints-service

Conversation

@jpanacleto2

@jpanacleto2 jpanacleto2 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Integra o plugin com os endpoints reais da API do MeasureSoftGram Service (/api/v1/)
  • Adiciona seletor de repositório por produto na sidebar
  • Trata o caso em que a API retorna sem métricas calculadas, exibindo alerta visual na interface (Sidebar e Dashboard)
  • Adiciona flag noData ao tipo ScoreData para propagar o estado de ausência de dados até a UI

Test plan

  • Configurar token e produto nas settings do plugin
  • Verificar que os repositórios do produto são listados corretamente no seletor
  • Selecionar um repositório com métricas calculadas e validar que score e características são exibidos
  • Selecionar um repositório sem métricas calculadas e validar que o alerta "Métricas ainda não calculadas" aparece na Sidebar e no Dashboard
  • Verificar que o plugin não trava (sem erro Cannot read properties of undefined) ao acessar repositórios sem dados

…dados mockados

- Cria src/services/msgramApi.ts com funções de login e busca de qualidade do produto
- Fluxo implementado: organização → produto → repositório → TSQMI + características
- Por enquanto suporta apenas um repositório por produto (suporte a múltiplos não implementado)
- Retorna dados mockados automaticamente quando serviceUrl ou token não estão configurados
- Atualiza MeasureSoftGramSidebar para carregar score via request_score (corrige timing de inicialização)
- DashboardView passa a exibir dados dinâmicos: score, nome do produto, metas e características
- Adiciona estado de loading no dashboard
- Adiciona OutputChannel 'MeasureSoftGram API' com log detalhado de cada requisição
…o do projeto

Implementa dropdown na sidebar para selecionar entre os repositórios de um
produto, carregando o score (TSQMI e características) do repositório escolhido.
Refatora a API em fetchRepositories e fetchScoreForRepo, separando a descoberta
de contexto (org/produto/repos) da busca de métricas por repositório.

Adiciona README com instruções de setup para novos colaboradores, cobrindo
execução local via Docker e uso de ambiente de homologação externo.
…s calculadas

Adiciona flag noData ao ScoreData para identificar quando a API retorna sem valor de TSQMI.
Sidebar e DashboardView exibem aviso visual informando que as métricas ainda não foram calculadas.
@jpanacleto2 jpanacleto2 linked an issue Jun 17, 2026 that may be closed by this pull request
@jpanacleto2 jpanacleto2 changed the title feat: integração com endpoints do MeasureSoftGram Service (US12) TASK03 - Puxar endpoints do service - integração com endpoints do MeasureSoftGram Service (US12) Jun 17, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@jpanacleto2

Copy link
Copy Markdown
Contributor Author

Estado do plugin antes da inserção dos campos para a conexão com o service, atualmente mantendo dados mocados para a visualização

Image Image

Apos a inserção dos campos, conseguimos visualizar dentro do dropdown todos os repositórios que estão presentes dentro do Produto selecionado, para cada repositório selecionado e recuperado a badge TQSMI juntamente com as métricas mais recentes

2022-1-MeasureSoftGram-CLI

Image Image

2022-1-MeasureSoftGram-Front

Image Image

2022-1-MeasureSoftGram-Core

Image Image

2022-1-MeasureSoftGram-Service

Image Image

Observações

  • O processo de subida/configuração do Service para replicação desses resultados estará disponibilizada como uma seção no README na branch feat/US12-endpoints-service
  • Ate o momento o fluxo de experimentação para a conexão com os endpoints foi realizada em ambiente local, sendo necessario subir o repositório do service, obter o token juntamente com o endereço e a porta.
  • TODOS OS VALORES UTILIZADOS PARA VALIDAÇÃO NA IMPLEMENTAÇÃO ATE O MOMENTO SÃO VALORES MOCADOS AO SUBIR O SERVICE.

@jpanacleto2
jpanacleto2 changed the base branch from develop to feat/US12 June 17, 2026 23:08
@jpanacleto2 jpanacleto2 self-assigned this Jun 17, 2026
@jpanacleto2
jpanacleto2 requested a review from i-JSS June 17, 2026 23:10
@jpanacleto2 jpanacleto2 added the enhancement New feature or request label Jun 17, 2026

@i-JSS i-JSS left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Faltou testes!

@jpanacleto2

Copy link
Copy Markdown
Contributor Author

Evidencias de funcionamento em ambiente de homologação

image image image

@jpanacleto2
jpanacleto2 force-pushed the feat/US12-endpoints-service branch from 75b0c35 to 70a0ba0 Compare June 25, 2026 14:40
Correções de qualidade de código apontadas pelo SonarCloud:
- Substitui imports 'https'/'http' por 'node:https'/'node:http' em msgramApi.ts
- Remove frações zero desnecessárias (0.80 → 0.8, 0.70 → 0.7) em msgramApi.ts
- Adiciona modificador readonly ao campo _log em MeasureSoftGramSidebar.ts
- Extrai ternário aninhado para variável metaStatus em DashboardView.tsx
- Extrai ternário aninhado para função renderCharsContent em Sidebar.tsx

Cobertura de testes para satisfazer o Quality Gate (≥ 80%):
- Adiciona testes unitários para msgramApi.ts com mock de servidor HTTP
- Adiciona c8 para geração de relatório LCOV em coverage/lcov.info
- Atualiza CI para executar testes com cobertura antes do scanner do SonarCloud
- Adiciona coverage/ ao .gitignore
- README.md: mantém conteúdo detalhado de setup do service (endpoints)
- App.tsx: mantém props de repositório (repos, selectedRepoPk, onSelectRepo)
  e scoreLoading no DashboardView adicionados nesta branch
Mescla as funcionalidades de execução local de action (save_action,
run_action, workflow YAML via Docker/Act) com as funcionalidades de
endpoints de serviço (fetchRepositories, fetchScoreForRepo, seletor
de repositório, repos_loaded). Conflitos resolvidos mantendo o máximo
das duas branches:

- package.json: scripts mocha+c8 (test:unit/coverage) + vitest webview
- types/index.ts: todos os tipos de mensagem de ambas as branches
- MeasureSoftGramSidebar.ts: listeners request_score/select_repo/
  save_settings + save_action/run_action combinados
- App.tsx: estado de repos/selectedRepoPk + scoreError + lógica
  applySettingsToYaml/getMissingSettings/settings_loaded
- DashboardView.tsx: props productName E scoreError, UI de noData,
  loading, commit-warn e score hero mantidas
- Sidebar.tsx: header de branding (feat/US12) + seletor de repo e
  aviso noData (HEAD) preservados
…encontrado

Quando a API retorna erro (produto não encontrado, sem registros, etc.),
o painel deixava de renderizar o score hero e ficava vazio. Agora:
- score hero sempre visível (mostra — quando sem dados)
- scoreData anterior persiste ao trocar de repositório com erro
- mensagem de erro exibida em vermelho na notification banner
- estado scoreError removido, consolidado em notifText/notifType
- SettingsView agora recebe initialData={settings} e sincroniza os
  campos via useEffect, preservando os valores após salvar e ao
  recarregar (inclusive via settings_loaded da extensão)
- score_error agora limpa scoreData (null) para que o painel exiba
  traços no lugar dos últimos valores, deixando claro que os dados
  não estão disponíveis enquanto o erro é exibido em vermelho
@jpanacleto2
jpanacleto2 force-pushed the feat/US12-endpoints-service branch from a415f2a to 23e66cc Compare June 25, 2026 16:21
- Corrige mapeamento de msgramServiceToken para token em MsgramSettings,
  que fazia o campo token ficar undefined e forçava o uso de dados mockados
- Persiste configurações entre sessões via workspaceState (URL, productName)
  e SecretStorage (token), carregando-as automaticamente ao abrir o painel
- Corrige TypeError no DashboardView ao chamar reduce em array vazio quando
  o repositório não possui TSQMI calculado, o que travava o painel em branco
- Passa ExtensionContext completo ao Sidebar e Panel (antes só extensionUri)
- Reestrutura tasks.json com build:webview, compile:extension e build:all
- Adiciona draft state no SettingsView para preservar campos sem salvar
@guivilela7 guivilela7 added the task It is a specific activity, task, or action with a defined objective and a deadline for completion label Jun 25, 2026
@i-JSS
i-JSS merged commit 662cec9 into feat/US12 Jun 25, 2026
@i-JSS
i-JSS deleted the feat/US12-endpoints-service branch June 29, 2026 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request task It is a specific activity, task, or action with a defined objective and a deadline for completion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TASK03 - Puxar endpoints do service

3 participants