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

JUSTIFICATIVA

Após realização de diversas reuniões com gestão, os mesmos solicitaram que os dados gerados pelo fluxo de trabalho da SETIC-CODE dentro da ferramenta Pipefy fossem persistidos em  um banco de dados próprio, permitindo aos mesmos a criação de relatórios para a avaliação e tomada de decisões.

ENVOLVIDOS

    Baymax (BI Team)

    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.