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:
Ao comparar os dados de um card com o retorno da API, podemos observar que os dados foram obtidos corretamente:
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.