Ir para o conteúdo principal

3) Estudo de Implantação do Pipe de Desenvolvimento

OBJETIVO

Definir arcabouço para implantação do monitoramento dos Pipes dos times de Desenvolvimento. Em conformidade ao documento de Integração com o Painel Gerencial da CODE

MAPEAMENTO

Após avaliação prévia, foi identificada a necessidade de mapear quais Pipes e Campos serão utilizados para atender a demanda. As informações estão descritas a seguir.

Pipes Mapeados

Pipes de Desenvolvimento

PIPE ID PIPE NAME PIPE URL
725642 Caveiras https://app.pipefy.com/pipes/725642
786310 Defensores https://app.pipefy.com/pipes/786310
451637 Guardiões https://app.pipefy.com/pipes/451637
451635 Vingadores https://app.pipefy.com/pipes/451635
877708 Esquadrão Suicída https://app.pipefy.com/pipes/877708
979418 Tambaqui https://app.pipefy.com/pipes/979418
961531 Baymax https://app.pipefy.com/pipes/961531
786390 Black Ops https://app.pipefy.com/pipes/786390
301411216 AC/DC https://app.pipefy.com/pipes/301411216

Pipes de Demandas

PIPE ID PIPE NAME PIPE URL
1158684 Demandas https://app.pipefy.com/pipes/1158684
1158790 Projetos https://app.pipefy.com/pipes/1158790
451374 Produtos https://app.pipefy.com/pipes/451374
735403 Dark Souls https://app.pipefy.com/pipes/735403
1083563 Amazonas https://app.pipefy.com/pipes/1083563
1263167 300 https://app.pipefy.com/pipes/1263167
Campos Mapeados

Pipes de Desenvolvimento

PROPRIEDADE TIME DE PARA
Sprint Caveiras field_20_connector  sprint
Defensores field_17_connector
Guardiões field_41_connector
Vingadores field_39_connector
Esquadrão Suicida field_10_connector
Tambaqui field_13_connector
Baymax field_11_connector
Black Ops field_13_connector
AC/DC field_15_connector
Produto Caveiras field_11_connector produto
Defensores field_3_connector
Guardiões field_31_connector
Vingadores field_28_connector
Esquadrão Suicida field_1_connector
Tambaqui field_5_connector
Baymax field_1_connector
Black Ops field_5_connector
AC/DC field_8_connector
Pontos de História de Usuário Caveiras field_6_number pontos
Defensores field_6_number
Guardiões field_8_number
Vingadores field_4_number
Esquadrão Suicida field_2_number
Tambaqui field_2_number
Baymax field_3_number
Black Ops field_4_number
AC/DC field_2_number
Tipo de Demanda Caveiras field_16_connector tipo
Defensores field_12_connector
Guardiões field_48_connector
Vingadores field_35_connector
Esquadrão Suicida field_6_connector
Tambaqui field_9_connector
Baymax field_7_connector
Black Ops field_11_connector
AC/DC field_13_connector
Release Caveiras field_17_connector release
Defensores field_13_connector
Guardiões field_46_connector
Vingadores field_36_connector
Esquadrão Suicida field_7_connector
Tambaqui field_10_connector
Baymax field_8_connector
Black Ops field_12_connector
AC/DC field_14_connector
Planejado na Sprint Caveiras field_10_string planejado
Defensores field_10_string
Guardiões field_36_string
Vingadores field_34_string
Esquadrão Suicida field_12_string
Tambaqui field_14_string
Baymax field_11_string
Black Ops field_8_string
AC/DC field_11_string
O quê? Caveiras field_2_string oque
Defensores field_2_string
Guardiões field_12_string
Vingadores field_5_string
Esquadrão Suicida field_2_string
Tambaqui field_2_string
Baymax field_1_string
Black Ops field_1_string
AC/DC field_2_string

 

Pipes de Desenvolvimento (Antigo)

Pontos de História (antigo) Caveiras field_5_number pontos_old
Defensores field_5_number
Guardiões field_6_number
Vingadores field_3_number
Esquadrão Suicida field_1_number
Tambaqui field_1_number
Baymax field_2_number
Black Ops field_3_number
AC/DC field_1_number
Necessidade (Antigo) Caveiras field_15_connector necessidade_old
Defensores field_7_connector
Guardiões field_34_connector
Vingadores field_34_connector
Esquadrão Suicida  
Tambaqui field_8_connector
Baymax field_5_connector
Black Ops field_4_connector
AC/DC field_9_connector
Projeto (Antigo) Caveiras field_14_connector projeto_old
Defensores field_5_connector
Guardiões field_33_connector
Vingadores field_33_connector
Esquadrão Suicida field_5_connector
Tambaqui field_7_connector
Baymax field_4_connector
Black Ops field_6_connector
AC/DC field_7_connector
Planejado na Sprint? (Antigo) Caveiras field_9_string planejado_old
Defensores field_10_string
Guardiões field_31_string
Vingadores field_30_string
Esquadrão Suicida field_9_string
Tambaqui field_10_string
Baymax field_9_string
Black Ops field_5_string
AC/DC field_7_string
Tipo de Demanda (label) (Antigo) Caveiras field_1_label_select atividade_old
Defensores field_1_label_select
Guardiões field_25_label_select
Vingadores field_20_label_select
Esquadrão Suicida field_1_label_select
Tambaqui field_1_label_select
Baymax field_1_label_select
Black Ops field_1_label_select
AC/DC field_1_label_select

CONSTRUÇÃO DA API

Conforme estudo anterior, os dados do Pipefy são obtidos a partir da utilização de consultas em GRAPHQL. Optamos por desenvolver uma API que atua como intermediária entre o GRAPHQL e nossos bancos de dados. 

O PAPIFY (PipeFY API) é uma solução em Python 3.8 + Flask + Simple GraphQL Cleinte (SGQLC) que a partir de determinadas consultas, retorna um JSON array contendo os cards de determinado Pipe com as defidas informações. Este Json array passa por processos de transformações utilizando ferramentas como o PENTAHO e é disponibilizado em nossa base de dados DashboardPipefy. Um exemplo de utilização da API segue a seguir.

Para o usuário que deseja retornar todos os cards do Pipe de Testes (ID 576534), o mesmo deverá realizar a seguinte consulta:

https://papify.master.local/allCards?pipeId=576534

A requisição acima aciona a aplicação PAPIFY, o comando allCards lista todos os cards de um determinado pipe, e o atributo pipeId, indica para a aplicação qual o pipe será consultado, nesse caso, o pipe Quer fazer Testes? FAÇA AQUI.

/ 20210324200618
// https://papify.master.local/allCards?pipeId=576534

[
  {
    "node": {
      "id": "413078163",
      "title": "Testando a API PAPIFY",
      "createdAt": "2021-03-24T20:05:50-04:00",
      "finished_at": null,
      "done": false,
      "current_phase": {
        "id": "310131251",
        "name": "Priorizar Reunião"
      },
      "labels": [
        
      ],
      "fields": [
        {
          "indexName": "field_24_string",
          "name": "Email do solicitante",
          "updated_at": "2021-03-24T20:05:51-04:00",
          "value": "pg@baymax.com",
          "report_value": "pg@baymax.com",
          "label_values": null
        },
        {
          "indexName": "field_2_datetime",
          "name": "Data e hora de fim",
          "updated_at": "2021-03-24T20:05:51-04:00",
          "value": "25/03/2021 00:00",
          "report_value": "25 de Março de 2021, 00:00",
          "label_values": null
        },
        {
          "indexName": "field_1_datetime",
          "name": "Data e hora de início",
          "updated_at": "2021-03-24T20:05:51-04:00",
          "value": "24/03/2021 00:00",
          "report_value": "24 de Março de 2021, 00:00",
          "label_values": null
        },
        {
          "indexName": "field_13_string",
          "name": "Por que?",
          "updated_at": "2021-03-24T20:05:51-04:00",
          "value": "para disponibilizar o resultado no spike.",
          "report_value": "para disponibilizar o resultado no spike.",
          "label_values": null
        },
        {
          "indexName": "field_12_string",
          "name": "O que?",
          "updated_at": "2021-03-24T20:05:51-04:00",
          "value": "Testando a API PAPIFY",
          "report_value": "Testando a API PAPIFY",
          "label_values": null
        }
      ]
    }
  },
  {
    "node": {
      "id": "404217766",
      "title": "Teste mover",
      "createdAt": "2021-01-28T08:55:23-04:00",
      "finished_at": null,
      "done": false,
      "current_phase": {
        "id": "310149812",
        "name": "Cancelada"
      },
      "labels": [
        
      ],
      "fields": [
        {
          "indexName": "field_24_string",
          "name": "Email do solicitante",
          "updated_at": "2021-01-28T08:55:23-04:00",
          "value": "gabrielf.oliveira97@gmail.com",
          "report_value": "gabrielf.oliveira97@gmail.com",
          "label_values": null
        },
        {
          "indexName": "field_2_datetime",
          "name": "Data e hora de fim",
          "updated_at": "2021-01-28T08:55:23-04:00",
          "value": "29/01/2021 02:30",
          "report_value": "29 de Janeiro de 2021, 02:30",
          "label_values": null
        },
        {
          "indexName": "field_1_datetime",
          "name": "Data e hora de início",
          "updated_at": "2021-01-28T08:55:23-04:00",
          "value": "29/01/2021 00:00",
          "report_value": "29 de Janeiro de 2021, 00:00",
          "label_values": null
        },
        {
          "indexName": "field_13_string",
          "name": "Por que?",
          "updated_at": "2021-01-28T08:55:23-04:00",
          "value": "Vendo se as integrações básicas do pipefy ajudam",
          "report_value": "Vendo se as integrações básicas do pipefy ajudam",
          "label_values": null
        },
        {
          "indexName": "field_12_string",
          "name": "O que?",
          "updated_at": "2021-01-28T08:55:23-04:00",
          "value": "Teste mover",
          "report_value": "Teste mover",
          "label_values": null
        }
      ]
    }
  }

No momento da requisição, o Pipe de Testes contava com os seguintes cards:

Screenshot_14.png

Ao comparar os dados de um card com o retorno da API, podemos observar que os dados foram obtidos corretamente:

papi.png

RESULTADOS

Diante do exposto, fica evidente a implantação do projeto nas seguintes etapas:

# ETAPA PREVISÃO CONCLUSÃO
1 Estudo de viabilização da implantação dos Pipes de Desenvolvimento 25/11/2020 17/11/2020
2 Disponibilização da consulta na API PAPIFY. 11/12/2020  
3 Persistência dos dados obtidos em um DataMart 29/03/2021  
4 Disponibilização do DataMart    
5 Ideação do DashBoard de Monitoramento    
6 Disponibilização do DashBoard de Monitoramento    

CONCLUSÃO

Diante do exposto,  seguiremos com as demandas conforme identificado. Conforme avanço das etapas este documento será atualizado.