From c403c476a653bae48d57a97df6cfbb9b18a928c1 Mon Sep 17 00:00:00 2001 From: JezzDiego Date: Mon, 25 Nov 2024 16:45:35 -0300 Subject: [PATCH 1/3] feat: add 'inconsistent' field to summaryzedMI, v2MonthTotals, and annualSummaryData --- go.mod | 6 +- go.sum | 9 --- papi/handlers.go | 123 +++++++++++++++--------------- papi/models.go | 1 + uiapi/handlers.go | 182 ++++++++++++++++++++++---------------------- uiapi/models.go | 2 + uiapi/uiapi_test.go | 6 +- 7 files changed, 166 insertions(+), 163 deletions(-) diff --git a/go.mod b/go.mod index acbbd17..70dd23c 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 - github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 + // github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 github.com/gocarina/gocsv v0.0.0-20220712153207-8b2118da4570 github.com/golang/mock v1.6.0 github.com/joho/godotenv v1.4.0 @@ -32,6 +32,8 @@ require ( github.com/go-sql-driver/mysql v1.7.0 // indirect ) +require github.com/dadosjusbr/storage v0.0.0-00010101000000-000000000000 + require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect @@ -70,3 +72,5 @@ require ( google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa // indirect google.golang.org/grpc v1.53.0 // indirect ) + +replace github.com/dadosjusbr/storage => ../storage diff --git a/go.sum b/go.sum index 54dd294..c396a44 100644 --- a/go.sum +++ b/go.sum @@ -31,18 +31,9 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dadosjusbr/datapackage v0.0.0-20230904162108-6e2264aafb68/go.mod h1:o1FghJC46mR+lgHcQWVve/q84/SAd0WVdYMcgq88BBU= github.com/dadosjusbr/datapackage v0.0.0-20240320203926-5f369dadd3a5/go.mod h1:xDZc4jX8VDOP7SFo793x0Q8gjUjuMSOmNEUG/wqLKAw= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 h1:ufl8nbCEo6g2VHUbedGy0gYk9Sgrynf9rcnzuSw4TEg= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12/go.mod h1:gPA7VxjEmyez/xtln4qBj+tM1NO0/zcw3ryjxTRNSco= -github.com/dadosjusbr/storage v0.0.0-20240315221019-5da10c81ab80 h1:mo6k/MAl6aF662JFUYHxqCNvRkX8OXZN0DmQKJe55D4= -github.com/dadosjusbr/storage v0.0.0-20240315221019-5da10c81ab80/go.mod h1:PszGy6CDoG3kNLjIsCmwD3MAWED7xL7U/OWj7ajsiHc= -github.com/dadosjusbr/storage v0.0.0-20240514131514-43ac5da3ae8a h1:1LyzfsNzKgLjC4/cyQr+N724a4dcRCHB5yIauAnhhcI= -github.com/dadosjusbr/storage v0.0.0-20240514131514-43ac5da3ae8a/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= -github.com/dadosjusbr/storage v0.0.0-20240913213102-72765cc03b4e h1:RNcbmof3iPyJQNWbEPkNyKKffmQ8jkZa8QH/vZ5eJP0= -github.com/dadosjusbr/storage v0.0.0-20240913213102-72765cc03b4e/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= -github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 h1:cgrdaqWjNN9enNcWPaPtqWFbxo1bLWz9C/Lxhke4WM4= -github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/papi/handlers.go b/papi/handlers.go index f3b566e..addae4e 100644 --- a/papi/handlers.go +++ b/papi/handlers.go @@ -39,14 +39,14 @@ func (h handler) V1GetAgencyById(c echo.Context) error { return c.JSON(http.StatusOK, agency) } -// @ID GetAgencyById -// @Tags public_api -// @Description Busca um órgão específico utilizando seu ID. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Success 200 {object} agency "Requisição bem sucedida." -// @Failure 404 {string} string "Órgão não encontrado." -// @Router /v2/orgao/{orgao} [get] +// @ID GetAgencyById +// @Tags public_api +// @Description Busca um órgão específico utilizando seu ID. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Success 200 {object} agency "Requisição bem sucedida." +// @Failure 404 {string} string "Órgão não encontrado." +// @Router /v2/orgao/{orgao} [get] func (h handler) V2GetAgencyById(c echo.Context) error { agencyName := c.Param("orgao") strAgency, err := h.client.Db.GetAgency(agencyName) @@ -92,13 +92,13 @@ func (h handler) V1GetAllAgencies(c echo.Context) error { return c.JSON(http.StatusOK, agencies) } -// @ID GetAllAgencies -// @Tags public_api -// @Description Busca todos os órgãos disponíveis. -// @Produce json -// @Success 200 {object} []agency "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /v2/orgaos [get] +// @ID GetAllAgencies +// @Tags public_api +// @Description Busca todos os órgãos disponíveis. +// @Produce json +// @Success 200 {object} []agency "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /v2/orgaos [get] func (h handler) V2GetAllAgencies(c echo.Context) error { strAgencies, err := h.client.Db.GetAllAgencies() if err != nil { @@ -264,17 +264,17 @@ func (h handler) GetMonthlyInfo(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetMonthlyInfo -// @Tags public_api -// @Description Busca um dado mensal de um órgão -// @Produce json -// @Success 200 {object} summaryzedMI "Requisição bem sucedida" -// @Failure 400 {string} string "Parâmetros inválidos" -// @Failure 404 {string} string "Não existem dados para os parâmetros informados" -// @Param ano path int true "Ano" -// @Param orgao path string true "Órgão" -// @Param mes path int true "Mês" -// @Router /v2/dados/{orgao}/{ano}/{mes} [get] +// @ID GetMonthlyInfo +// @Tags public_api +// @Description Busca um dado mensal de um órgão +// @Produce json +// @Success 200 {object} summaryzedMI "Requisição bem sucedida" +// @Failure 400 {string} string "Parâmetros inválidos" +// @Failure 404 {string} string "Não existem dados para os parâmetros informados" +// @Param ano path int true "Ano" +// @Param orgao path string true "Órgão" +// @Param mes path int true "Mês" +// @Router /v2/dados/{orgao}/{ano}/{mes} [get] func (h handler) V2GetMonthlyInfo(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -374,6 +374,7 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error { ParserVersion: monthlyInfo.ParserVersion, }, ManualCollection: monthlyInfo.ManualCollection, + Inconsistent: monthlyInfo.Inconsistent, } //O status 4 informa que os dados estão indisponíveis. Ao removê-los dos resultados da API, garantimos que eles sejam exibidos como se não houvesse dados. } else if monthlyInfo.ProcInfo.Status != 4 { @@ -397,16 +398,16 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetMonthlyInfosByYear -// @Tags public_api -// @Description Busca os dados mensais de um órgão por ano -// @Produce json -// @Success 200 {object} []summaryzedMI "Requisição bem sucedida" -// @Failure 400 {string} string "Parâmetros inválidos" -// @Failure 404 {string} string "Não existem dados para os parâmetros informados" -// @Param ano path int true "Ano" -// @Param orgao path string true "Órgão" -// @Router /v2/dados/{orgao}/{ano} [get] +// @ID GetMonthlyInfosByYear +// @Tags public_api +// @Description Busca os dados mensais de um órgão por ano +// @Produce json +// @Success 200 {object} []summaryzedMI "Requisição bem sucedida" +// @Failure 400 {string} string "Parâmetros inválidos" +// @Failure 404 {string} string "Não existem dados para os parâmetros informados" +// @Param ano path int true "Ano" +// @Param orgao path string true "Órgão" +// @Router /v2/dados/{orgao}/{ano} [get] func (h handler) GetMonthlyInfosByYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -531,16 +532,16 @@ func (h handler) GetMonthlyInfosByYear(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetAggregateIndexesWithParams -// @Tags public_api -// @Description Busca as informações de índices de um grupo ou órgão específico. -// @Produce json -// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida." -// @Failure 400 {string} string "Requisição inválida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Param param path string true "'grupo' ou 'orgao'" -// @Param valor path string true "Jurisdição ou ID do órgao" -// @Router /v2/indice/{param}/{valor} [get] +// @ID GetAggregateIndexesWithParams +// @Tags public_api +// @Description Busca as informações de índices de um grupo ou órgão específico. +// @Produce json +// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida." +// @Failure 400 {string} string "Requisição inválida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Param param path string true "'grupo' ou 'orgao'" +// @Param valor path string true "Jurisdição ou ID do órgao" +// @Router /v2/indice/{param}/{valor} [get] func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error { param := c.Param("param") valor := c.Param("valor") @@ -688,13 +689,13 @@ func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error { return c.JSON(http.StatusOK, aggregate) } -// @ID GetAggregateIndexes -// @Tags public_api -// @Description Busca as informações de índices de todos os órgãos. -// @Produce json -// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /v2/indice [get] +// @ID GetAggregateIndexes +// @Tags public_api +// @Description Busca as informações de índices de todos os órgãos. +// @Produce json +// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /v2/indice [get] func (h handler) V2GetAggregateIndexes(c echo.Context) error { agregado := c.QueryParam("agregado") detalhe := c.QueryParam("detalhe") @@ -798,14 +799,14 @@ func (h handler) V2GetAggregateIndexes(c echo.Context) error { return c.JSON(http.StatusOK, dados) } -// @ID GetAllAgencyInformation -// @Tags public_api -// @Description Busca todas as informações de um órgão específico. -// @Produce json -// @Success 200 {object} allAgencyInformation "Requisição bem sucedida." -// @Failure 400 {string} string "Requisição inválida." -// @Param orgao path string true "órgão" -// @Router /v2/dados/{orgao} [get] +// @ID GetAllAgencyInformation +// @Tags public_api +// @Description Busca todas as informações de um órgão específico. +// @Produce json +// @Success 200 {object} allAgencyInformation "Requisição bem sucedida." +// @Failure 400 {string} string "Requisição inválida." +// @Param orgao path string true "órgão" +// @Router /v2/dados/{orgao} [get] func (h handler) V2GetAllAgencyInformation(c echo.Context) error { agency := strings.ToLower(c.Param("orgao")) diff --git a/papi/models.go b/papi/models.go index a286b0a..1268512 100644 --- a/papi/models.go +++ b/papi/models.go @@ -82,6 +82,7 @@ type summaryzedMI struct { Collect *collect `json:"dados_coleta,omitempty"` ManualCollection bool `json:"coleta_manual"` Error *miError `json:"error,omitempty"` + Inconsistent bool `json:"inconsistente"` } type agency struct { diff --git a/uiapi/handlers.go b/uiapi/handlers.go index 3f2376a..6a1fcf0 100644 --- a/uiapi/handlers.go +++ b/uiapi/handlers.go @@ -80,17 +80,17 @@ func (h handler) GetSummaryOfAgency(c echo.Context) error { return c.JSON(http.StatusOK, agencySummary) } -// @ID GetSummaryOfAgency -// @Tags ui_api -// @Description Resume os dados de remuneração mensal de um órgão. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param ano path int true "Ano da remuneração. Exemplo: 2018." -// @Param mes path int true "Mês da remuneração. Exemplo: 1." -// @Success 200 {object} v2AgencySummary "Requisição bem sucedida." -// @Failure 404 {string} string "Órgão não encontrado." -// @Failure 400 {string} string "Parâmetro ano, mês ou nome do órgão são inválidos." -// @Router /uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes} [get] +// @ID GetSummaryOfAgency +// @Tags ui_api +// @Description Resume os dados de remuneração mensal de um órgão. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param ano path int true "Ano da remuneração. Exemplo: 2018." +// @Param mes path int true "Mês da remuneração. Exemplo: 1." +// @Success 200 {object} v2AgencySummary "Requisição bem sucedida." +// @Failure 404 {string} string "Órgão não encontrado." +// @Failure 400 {string} string "Parâmetro ano, mês ou nome do órgão são inválidos." +// @Router /uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes} [get] func (h handler) V2GetSummaryOfAgency(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -177,17 +177,17 @@ func (h handler) GetSalaryOfAgencyMonthYear(c echo.Context) error { }) } -// @ID GetSalaryOfAgencyMonthYear -// @Tags ui_api -// @Description Busca dados das remunerações mensais de um órgão. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param mes path string true "Mês da remuneração. Exemplos: 01, 02, 03..." -// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." -// @Success 200 {object} agencyRemuneration "Requisição bem sucedida." -// @Success 206 {object} v2ProcInfoResult "Requisição bem sucedida, mas os dados do órgão não foram bem processados" -// @Failure 400 {string} string "Parâmetros inválidos." -// @Router /uiapi/v2/orgao/salario/{orgao}/{ano}/{mes} [get] +// @ID GetSalaryOfAgencyMonthYear +// @Tags ui_api +// @Description Busca dados das remunerações mensais de um órgão. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param mes path string true "Mês da remuneração. Exemplos: 01, 02, 03..." +// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." +// @Success 200 {object} agencyRemuneration "Requisição bem sucedida." +// @Success 206 {object} v2ProcInfoResult "Requisição bem sucedida, mas os dados do órgão não foram bem processados" +// @Failure 400 {string} string "Parâmetros inválidos." +// @Router /uiapi/v2/orgao/salario/{orgao}/{ano}/{mes} [get] func (h handler) V2GetSalaryOfAgencyMonthYear(c echo.Context) error { month, err := strconv.Atoi(c.Param("mes")) if err != nil { @@ -300,15 +300,15 @@ func (h handler) GetTotalsOfAgencyYear(c echo.Context) error { return c.JSON(http.StatusOK, agencyTotalsYear) } -// @ID GetTotalsOfAgencyYear -// @Tags ui_api -// @Description Busca os dados de remuneração de um órgão em um ano específico. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param ano path int true "Ano. Exemplo: 2018." -// @Success 200 {object} v2AgencyTotalsYear "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro ano ou orgao inválido." -// @Router /uiapi/v2/orgao/totais/{orgao}/{ano} [get] +// @ID GetTotalsOfAgencyYear +// @Tags ui_api +// @Description Busca os dados de remuneração de um órgão em um ano específico. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param ano path int true "Ano. Exemplo: 2018." +// @Success 200 {object} v2AgencyTotalsYear "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro ano ou orgao inválido." +// @Router /uiapi/v2/orgao/totais/{orgao}/{ano} [get] func (h handler) V2GetTotalsOfAgencyYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -359,6 +359,7 @@ func (h handler) V2GetTotalsOfAgencyYear(c echo.Context) error { HealthAllowance: agencyMonthlyInfo.Summary.ItemSummary.HealthAllowance, Others: agencyMonthlyInfo.Summary.ItemSummary.Others, }, + Inconsistent: agencyMonthlyInfo.Inconsistent, } monthTotalsOfYear = append(monthTotalsOfYear, monthTotals) @@ -496,15 +497,15 @@ func (h handler) GetBasicInfoOfType(c echo.Context) error { return c.JSON(http.StatusOK, state) } -// @ID GetBasicInfoOfType -// @Tags ui_api -// @Description Busca os órgãos de um determinado grupo. -// @Produce json -// @Param grupo path string false "Grupo de órgãos" Enums(justica-eleitoral, ministerios-publicos, justica-estadual, justica-do-trabalho, justica-federal, justica-militar, justica-superior, conselhos-de-justica, AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO) -// @Success 200 {object} state "Órgãos do grupo" -// @Failure 400 {object} string "Parâmetro inválido" -// @Failure 404 {object} string "Grupo não encontrado" -// @Router /uiapi/v2/orgao/{grupo} [get] +// @ID GetBasicInfoOfType +// @Tags ui_api +// @Description Busca os órgãos de um determinado grupo. +// @Produce json +// @Param grupo path string false "Grupo de órgãos" Enums(justica-eleitoral, ministerios-publicos, justica-estadual, justica-do-trabalho, justica-federal, justica-militar, justica-superior, conselhos-de-justica, AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO) +// @Success 200 {object} state "Órgãos do grupo" +// @Failure 400 {object} string "Parâmetro inválido" +// @Failure 404 {object} string "Grupo não encontrado" +// @Router /uiapi/v2/orgao/{grupo} [get] func (h handler) V2GetBasicInfoOfType(c echo.Context) error { groupName := strings.ToLower(c.Param("grupo")) var strAgencies []strModels.Agency @@ -589,15 +590,15 @@ func (h handler) GetGeneralRemunerationFromYear(c echo.Context) error { return c.JSON(http.StatusOK, data) } -// @ID GetGeneralRemunerationFromYear -// @Tags ui_api -// @Description Busca os dados, das remunerações de um ano inteiro, agrupados por mês. -// @Produce json -// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." -// @Success 200 {object} []mensalRemuneration "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro ano inválido." -// @Failure 500 {string} string "Erro interno." -// @Router /uiapi/v2/geral/remuneracao/{ano} [get] +// @ID GetGeneralRemunerationFromYear +// @Tags ui_api +// @Description Busca os dados, das remunerações de um ano inteiro, agrupados por mês. +// @Produce json +// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." +// @Success 200 {object} []mensalRemuneration "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro ano inválido." +// @Failure 500 {string} string "Erro interno." +// @Router /uiapi/v2/geral/remuneracao/{ano} [get] func (h handler) V2GetGeneralRemunerationFromYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -669,13 +670,13 @@ func (h handler) GeneralSummaryHandler(c echo.Context) error { }) } -// @ID GetGeneralSummary -// @Tags ui_api -// @Description Busca e resume os dados das remunerações de todos os anos -// @Produce json -// @Success 200 {object} generalSummary "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/geral/resumo [get] +// @ID GetGeneralSummary +// @Tags ui_api +// @Description Busca e resume os dados das remunerações de todos os anos +// @Produce json +// @Success 200 {object} generalSummary "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/geral/resumo [get] func (h handler) GetGeneralSummary(c echo.Context) error { agencies, err := h.client.Db.GetAgenciesCount() if err != nil { @@ -711,18 +712,18 @@ func (h handler) GetGeneralSummary(c echo.Context) error { }) } -// @ID SearchByUrl -// @Tags ui_api -// @Description Faz uma busca por remunerações a partir de filtros -// @Produce json -// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" -// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" -// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" -// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) -// @Success 200 {object} searchResponse "Requisição bem sucedida." -// @Failure 400 {string} string "Erro de validação dos parâmetros." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/pesquisar [get] +// @ID SearchByUrl +// @Tags ui_api +// @Description Faz uma busca por remunerações a partir de filtros +// @Produce json +// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" +// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" +// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" +// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) +// @Success 200 {object} searchResponse "Requisição bem sucedida." +// @Failure 400 {string} string "Erro de validação dos parâmetros." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/pesquisar [get] func (h handler) SearchByUrl(c echo.Context) error { //Pegando os query params years := c.QueryParam("anos") @@ -761,18 +762,18 @@ func (h handler) SearchByUrl(c echo.Context) error { return c.JSON(http.StatusOK, response) } -// @ID DownloadByUrl -// @Tags ui_api -// @Description Baixa dados referentes a remunerações a partir de filtros -// @Produce json -// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" -// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" -// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" -// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) -// @Success 200 {file} file "Arquivo CSV com os dados." -// @Failure 400 {string} string "Erro de validação dos parâmetros." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/download [get] +// @ID DownloadByUrl +// @Tags ui_api +// @Description Baixa dados referentes a remunerações a partir de filtros +// @Produce json +// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" +// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" +// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" +// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) +// @Success 200 {file} file "Arquivo CSV com os dados." +// @Failure 400 {string} string "Erro de validação dos parâmetros." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/download [get] func (h handler) DownloadByUrl(c echo.Context) error { //Pegando os query params years := c.QueryParam("anos") @@ -805,15 +806,15 @@ func (h handler) DownloadByUrl(c echo.Context) error { return nil } -// @ID GetAnnualSummary -// @Tags ui_api -// @Description Retorna os dados anuais de um orgão -// @Produce json -// @Param orgao path string true "Nome do orgão" -// @Success 200 {object} []annualSummary "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro orgao inválido" -// @Failure 500 {string} string "Algo deu errado ao tentar coletar os dados anuais do orgao" -// @Router /uiapi/v1/orgao/resumo/{orgao} [get] +// @ID GetAnnualSummary +// @Tags ui_api +// @Description Retorna os dados anuais de um orgão +// @Produce json +// @Param orgao path string true "Nome do orgão" +// @Success 200 {object} []annualSummary "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro orgao inválido" +// @Failure 500 {string} string "Algo deu errado ao tentar coletar os dados anuais do orgao" +// @Router /uiapi/v1/orgao/resumo/{orgao} [get] func (h handler) GetAnnualSummary(c echo.Context) error { agencyName := c.Param("orgao") strAgency, err := h.client.Db.GetAgency(agencyName) @@ -869,7 +870,8 @@ func (h handler) GetAnnualSummary(c echo.Context) error { Hash: s.Package.Hash, Size: s.Package.Size, }, - ItemSummary: itemSummary, + ItemSummary: itemSummary, + Inconsistent: s.Inconsistent, }) } var collect []collecting diff --git a/uiapi/models.go b/uiapi/models.go index 8ef4a2f..7d98a72 100644 --- a/uiapi/models.go +++ b/uiapi/models.go @@ -168,6 +168,7 @@ type v2MonthTotals struct { RemunerationsPerCapita float64 `json:"remuneracoes_por_membro"` CrawlingTimestamp timestamp `json:"timestamp"` ItemSummary itemSummary `json:"resumo_rubricas"` + Inconsistent bool `json:"inconsistente"` } type timestamp struct { @@ -271,6 +272,7 @@ type annualSummaryData struct { NumMonthsWithData int `json:"meses_com_dados"` Package *backup `json:"package,omitempty"` ItemSummary itemSummary `json:"resumo_rubricas"` + Inconsistent bool `json:"inconsistente"` } type itemSummary struct { diff --git a/uiapi/uiapi_test.go b/uiapi/uiapi_test.go index ec747a3..290ce4d 100644 --- a/uiapi/uiapi_test.go +++ b/uiapi/uiapi_test.go @@ -1393,6 +1393,7 @@ func (g getAnnualSummary) testWhenDataExists(t *testing.T) { HealthAllowance: 300, Others: 200, }, + Inconsistent: true, }, } dbMock.EXPECT().Connect().Return(nil).Times(1) @@ -1462,8 +1463,9 @@ func (g getAnnualSummary) testWhenDataExists(t *testing.T) { "licenca_compensatoria": 120, "auxilio_saude": 300, "outras": 200 - } - } + }, + "inconsistente": true + } ] } ` From a912b9c89f20a7eeba3819053e4c240d2cf7b630 Mon Sep 17 00:00:00 2001 From: Joellensilva Date: Thu, 19 Dec 2024 15:44:22 -0300 Subject: [PATCH 2/3] =?UTF-8?q?atualizando=20documenta=C3=A7=C3=A3o=20e=20?= =?UTF-8?q?teste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs.go | 9 ++++ docs/swagger.json | 9 ++++ docs/swagger.yaml | 6 +++ papi/handlers.go | 122 ++++++++++++++++++++++---------------------- uiapi/uiapi_test.go | 3 +- 5 files changed, 87 insertions(+), 62 deletions(-) diff --git a/docs/docs.go b/docs/docs.go index 9ed57fe..5e383c9 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1185,6 +1185,9 @@ const docTemplate = `{ "id_orgao": { "type": "string" }, + "inconsistente": { + "type": "boolean" + }, "indice_transparencia": { "$ref": "#/definitions/papi.score" }, @@ -1309,6 +1312,9 @@ const docTemplate = `{ "descontos_por_mes": { "type": "number" }, + "inconsistente": { + "type": "boolean" + }, "meses_com_dados": { "type": "integer" }, @@ -1686,6 +1692,9 @@ const docTemplate = `{ "error": { "$ref": "#/definitions/uiapi.procError" }, + "inconsistente": { + "type": "boolean" + }, "mes": { "type": "integer" }, diff --git a/docs/swagger.json b/docs/swagger.json index 14867df..cf333cf 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1176,6 +1176,9 @@ "id_orgao": { "type": "string" }, + "inconsistente": { + "type": "boolean" + }, "indice_transparencia": { "$ref": "#/definitions/papi.score" }, @@ -1300,6 +1303,9 @@ "descontos_por_mes": { "type": "number" }, + "inconsistente": { + "type": "boolean" + }, "meses_com_dados": { "type": "integer" }, @@ -1677,6 +1683,9 @@ "error": { "$ref": "#/definitions/uiapi.procError" }, + "inconsistente": { + "type": "boolean" + }, "mes": { "type": "integer" }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index c807c37..46c8f53 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -278,6 +278,8 @@ definitions: $ref: '#/definitions/papi.miError' id_orgao: type: string + inconsistente: + type: boolean indice_transparencia: $ref: '#/definitions/papi.score' mes: @@ -364,6 +366,8 @@ definitions: type: number descontos_por_mes: type: number + inconsistente: + type: boolean meses_com_dados: type: integer num_membros: @@ -612,6 +616,8 @@ definitions: type: number error: $ref: '#/definitions/uiapi.procError' + inconsistente: + type: boolean mes: type: integer outras_remuneracoes: diff --git a/papi/handlers.go b/papi/handlers.go index addae4e..9ec0c1f 100644 --- a/papi/handlers.go +++ b/papi/handlers.go @@ -39,14 +39,14 @@ func (h handler) V1GetAgencyById(c echo.Context) error { return c.JSON(http.StatusOK, agency) } -// @ID GetAgencyById -// @Tags public_api -// @Description Busca um órgão específico utilizando seu ID. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Success 200 {object} agency "Requisição bem sucedida." -// @Failure 404 {string} string "Órgão não encontrado." -// @Router /v2/orgao/{orgao} [get] +// @ID GetAgencyById +// @Tags public_api +// @Description Busca um órgão específico utilizando seu ID. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Success 200 {object} agency "Requisição bem sucedida." +// @Failure 404 {string} string "Órgão não encontrado." +// @Router /v2/orgao/{orgao} [get] func (h handler) V2GetAgencyById(c echo.Context) error { agencyName := c.Param("orgao") strAgency, err := h.client.Db.GetAgency(agencyName) @@ -92,13 +92,13 @@ func (h handler) V1GetAllAgencies(c echo.Context) error { return c.JSON(http.StatusOK, agencies) } -// @ID GetAllAgencies -// @Tags public_api -// @Description Busca todos os órgãos disponíveis. -// @Produce json -// @Success 200 {object} []agency "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /v2/orgaos [get] +// @ID GetAllAgencies +// @Tags public_api +// @Description Busca todos os órgãos disponíveis. +// @Produce json +// @Success 200 {object} []agency "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /v2/orgaos [get] func (h handler) V2GetAllAgencies(c echo.Context) error { strAgencies, err := h.client.Db.GetAllAgencies() if err != nil { @@ -264,17 +264,17 @@ func (h handler) GetMonthlyInfo(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetMonthlyInfo -// @Tags public_api -// @Description Busca um dado mensal de um órgão -// @Produce json -// @Success 200 {object} summaryzedMI "Requisição bem sucedida" -// @Failure 400 {string} string "Parâmetros inválidos" -// @Failure 404 {string} string "Não existem dados para os parâmetros informados" -// @Param ano path int true "Ano" -// @Param orgao path string true "Órgão" -// @Param mes path int true "Mês" -// @Router /v2/dados/{orgao}/{ano}/{mes} [get] +// @ID GetMonthlyInfo +// @Tags public_api +// @Description Busca um dado mensal de um órgão +// @Produce json +// @Success 200 {object} summaryzedMI "Requisição bem sucedida" +// @Failure 400 {string} string "Parâmetros inválidos" +// @Failure 404 {string} string "Não existem dados para os parâmetros informados" +// @Param ano path int true "Ano" +// @Param orgao path string true "Órgão" +// @Param mes path int true "Mês" +// @Router /v2/dados/{orgao}/{ano}/{mes} [get] func (h handler) V2GetMonthlyInfo(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -398,16 +398,16 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetMonthlyInfosByYear -// @Tags public_api -// @Description Busca os dados mensais de um órgão por ano -// @Produce json -// @Success 200 {object} []summaryzedMI "Requisição bem sucedida" -// @Failure 400 {string} string "Parâmetros inválidos" -// @Failure 404 {string} string "Não existem dados para os parâmetros informados" -// @Param ano path int true "Ano" -// @Param orgao path string true "Órgão" -// @Router /v2/dados/{orgao}/{ano} [get] +// @ID GetMonthlyInfosByYear +// @Tags public_api +// @Description Busca os dados mensais de um órgão por ano +// @Produce json +// @Success 200 {object} []summaryzedMI "Requisição bem sucedida" +// @Failure 400 {string} string "Parâmetros inválidos" +// @Failure 404 {string} string "Não existem dados para os parâmetros informados" +// @Param ano path int true "Ano" +// @Param orgao path string true "Órgão" +// @Router /v2/dados/{orgao}/{ano} [get] func (h handler) GetMonthlyInfosByYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -532,16 +532,16 @@ func (h handler) GetMonthlyInfosByYear(c echo.Context) error { return c.JSON(http.StatusOK, sumMI) } -// @ID GetAggregateIndexesWithParams -// @Tags public_api -// @Description Busca as informações de índices de um grupo ou órgão específico. -// @Produce json -// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida." -// @Failure 400 {string} string "Requisição inválida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Param param path string true "'grupo' ou 'orgao'" -// @Param valor path string true "Jurisdição ou ID do órgao" -// @Router /v2/indice/{param}/{valor} [get] +// @ID GetAggregateIndexesWithParams +// @Tags public_api +// @Description Busca as informações de índices de um grupo ou órgão específico. +// @Produce json +// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida." +// @Failure 400 {string} string "Requisição inválida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Param param path string true "'grupo' ou 'orgao'" +// @Param valor path string true "Jurisdição ou ID do órgao" +// @Router /v2/indice/{param}/{valor} [get] func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error { param := c.Param("param") valor := c.Param("valor") @@ -689,13 +689,13 @@ func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error { return c.JSON(http.StatusOK, aggregate) } -// @ID GetAggregateIndexes -// @Tags public_api -// @Description Busca as informações de índices de todos os órgãos. -// @Produce json -// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /v2/indice [get] +// @ID GetAggregateIndexes +// @Tags public_api +// @Description Busca as informações de índices de todos os órgãos. +// @Produce json +// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /v2/indice [get] func (h handler) V2GetAggregateIndexes(c echo.Context) error { agregado := c.QueryParam("agregado") detalhe := c.QueryParam("detalhe") @@ -799,14 +799,14 @@ func (h handler) V2GetAggregateIndexes(c echo.Context) error { return c.JSON(http.StatusOK, dados) } -// @ID GetAllAgencyInformation -// @Tags public_api -// @Description Busca todas as informações de um órgão específico. -// @Produce json -// @Success 200 {object} allAgencyInformation "Requisição bem sucedida." -// @Failure 400 {string} string "Requisição inválida." -// @Param orgao path string true "órgão" -// @Router /v2/dados/{orgao} [get] +// @ID GetAllAgencyInformation +// @Tags public_api +// @Description Busca todas as informações de um órgão específico. +// @Produce json +// @Success 200 {object} allAgencyInformation "Requisição bem sucedida." +// @Failure 400 {string} string "Requisição inválida." +// @Param orgao path string true "órgão" +// @Router /v2/dados/{orgao} [get] func (h handler) V2GetAllAgencyInformation(c echo.Context) error { agency := strings.ToLower(c.Param("orgao")) diff --git a/uiapi/uiapi_test.go b/uiapi/uiapi_test.go index 290ce4d..662c08d 100644 --- a/uiapi/uiapi_test.go +++ b/uiapi/uiapi_test.go @@ -1219,7 +1219,8 @@ func (g getTotalsOfAgencyYear) testWhenDataExists(t *testing.T) { "licenca_compensatoria": 120, "auxilio_saude": 300, "outras": 200 - } + }, + "inconsistente": false } ], "package": { From 841dc66a05ec639eba1800b76162ab46cb1637ca Mon Sep 17 00:00:00 2001 From: Joellensilva Date: Thu, 19 Dec 2024 22:33:41 -0300 Subject: [PATCH 3/3] atualizando storage --- go.mod | 6 +----- go.sum | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 70dd23c..8d97d21 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 - // github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 + github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e github.com/gocarina/gocsv v0.0.0-20220712153207-8b2118da4570 github.com/golang/mock v1.6.0 github.com/joho/godotenv v1.4.0 @@ -32,8 +32,6 @@ require ( github.com/go-sql-driver/mysql v1.7.0 // indirect ) -require github.com/dadosjusbr/storage v0.0.0-00010101000000-000000000000 - require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect @@ -72,5 +70,3 @@ require ( google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa // indirect google.golang.org/grpc v1.53.0 // indirect ) - -replace github.com/dadosjusbr/storage => ../storage diff --git a/go.sum b/go.sum index c396a44..0b47fc9 100644 --- a/go.sum +++ b/go.sum @@ -34,6 +34,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/dadosjusbr/datapackage v0.0.0-20240320203926-5f369dadd3a5/go.mod h1:xDZc4jX8VDOP7SFo793x0Q8gjUjuMSOmNEUG/wqLKAw= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 h1:ufl8nbCEo6g2VHUbedGy0gYk9Sgrynf9rcnzuSw4TEg= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12/go.mod h1:gPA7VxjEmyez/xtln4qBj+tM1NO0/zcw3ryjxTRNSco= +github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e h1:1tg4+bUdok+k92a8ucui4PCe1J6ST19d88PuYR8pfQg= +github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=