-
-
Save DATAUNIRIO/a36ec17965810f59a9514bb4d2b072b6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tibble::tibble() | |
tribunais <- forosCNJ::da_tribunal |> | |
dplyr::filter(id_justica == 8) |> | |
dplyr::pull(sigla) |> | |
tolower() | |
endpoints <- glue::glue( | |
"https://api-publica.datajud.cnj.jus.br/api_publica_{tribunais}/_search" | |
) | |
codigos_assuntos_inadimplentes <- c( | |
"6226" | |
) | |
header <- c( | |
"Authorization" = "ApiKey cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw==", | |
"Content-Type" = "application/json" | |
) | |
# base64enc::base64decode("cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw==") |> | |
# rawToChar() | |
body <- list( | |
query = list( | |
bool = list( | |
must = list( | |
match = list( | |
"assuntos.codigo" = codigos_assuntos_inadimplentes | |
) | |
) | |
) | |
), | |
size = 10000, | |
sort = list( | |
list( | |
"@timestamp" = list( | |
order = "asc" | |
) | |
) | |
) | |
) | |
pesquisar_tribunal <- function(tribunal, body, max_pag = 3) { | |
usethis::ui_info("Pesquisando tribunal {tribunal}...") | |
endpoint <- glue::glue( | |
"https://api-publica.datajud.cnj.jus.br/api_publica_{tribunal}/_search" | |
) | |
pag <- 1 | |
usethis::ui_info("Pesquisando página {pag}...") | |
r <- httr::POST( | |
endpoint, | |
body = body, | |
encode = "json", | |
httr::add_headers(header) | |
) | |
r_list <- httr::content(r)$hits$hits | |
len_list <- length(r_list) | |
usethis::ui_info("Foram encontrados {len_list} registros.") | |
while (len_list == 10000 && pag < max_pag) { | |
pag <- pag + 1 | |
usethis::ui_info("Pesquisando página {pag}...") | |
last_sort <- r_list |> | |
dplyr::last() |> | |
purrr::pluck("sort") |> | |
unlist() | |
body$search_after <- list(last_sort) | |
r <- httr::POST( | |
endpoint, | |
body = body, | |
encode = "json", | |
httr::add_headers(header) | |
) | |
r_pag <- httr::content(r)$hits$hits | |
r_list <- c(r_list, r_pag) | |
len_list <- length(r_pag) | |
usethis::ui_info("Foram encontrados {len_list} registros.") | |
} | |
r_list | |
} | |
res <- pesquisar_tribunal("tjsp", body, 2) | |
parse_item <- function(x) { | |
src <- x[["_source"]] | |
tab_parsed <- tibble::tibble( | |
id = src$id, | |
n_processo = src$numeroProcesso, | |
classe_id = src$classe$codigo, | |
classe_nm = src$classe$nome, | |
sistema_id = src$sistema$codigo, | |
sistema_nm = src$sistema$nome, | |
formato_id = src$formato$codigo, | |
formato_nm = src$formato$nome, | |
tribunal = src$tribunal, | |
data_ultima_atualizacao = src$dataHoraUltimaAtualizacao, | |
grau = src$grau, | |
data_ajuizamento = src$dataAjuizamento, | |
nivel_sigilo = src$nivelSigilo, | |
orgao_julgador_ibge = src$orgaoJulgador$codigoMunicipioIBGE, | |
orgao_julgador_id = src$orgaoJulgador$codigo, | |
orgao_julgador_nm = src$orgaoJulgador$nome, | |
movimentos = src$movimentos |> | |
tibble::enframe() |> | |
tidyr::unnest_wider(value) |> | |
janitor::clean_names() |> | |
list() | |
# assuntos = src$assuntos |> | |
# purrr::map_if(\(x) length(x) == 1, \(x) x[[1]], .else = \(x) x) |> | |
# purrr::discard(\(x) length(x) != 2) |> | |
# tibble::enframe() |> | |
# tidyr::unnest_wider(value) |> | |
# list() | |
) | |
tab_parsed | |
} | |
dados <- parse_item(res[[2]]) |> | |
dplyr::glimpse() | |
dados$movimentos[[1]] |> | |
print(n = 100) | |
safe <- purrr::possibly(parse_item, tibble::tibble()) | |
da_result <- res |> | |
sample(1000) |> | |
purrr::map(safe, .progress = TRUE) |> | |
purrr::list_rbind(names_to = "elastic_id") | |
aux_movs <- da_result |> | |
tidyr::unnest(movimentos) | |
dplyr::glimpse(aux_movs) | |
# aux_movs |> | |
# dplyr::count(nome, sort = TRUE) |> | |
# print(n = 200) | |
# aproximadamente 0,5% dos processos são decretados revelia | |
aux_movs |> | |
dplyr::filter(nome == "Decretação de revelia") |> | |
dplyr::distinct(n_processo) | |
favoravel <- c( | |
"Procedência em Parte", | |
"Provimento em Parte", | |
"Parcial", | |
"Procedência" | |
) | |
desfavoravel <- c( | |
"Não-Provimento", | |
"Indeferimento da petição inicial", | |
"Indeferimento" | |
) | |
acordo <- c( | |
"Homologação de Transação" | |
) | |
desistiu <- c( | |
"Desistência", | |
"Abandono da causa" | |
) | |
dados_arrumados <- aux_movs |> | |
dplyr::mutate(resultado = dplyr::case_when( | |
nome %in% favoravel ~ "favoravel", | |
nome %in% desfavoravel ~ "desfavoravel", | |
nome %in% acordo ~ "acordo", | |
nome %in% desistiu ~ "desistiu", | |
.default = NA | |
)) |> | |
dplyr::filter(!is.na(resultado)) |> | |
dplyr::arrange(data_hora) |> | |
dplyr::distinct(id, .keep_all = TRUE) |> | |
dplyr::filter(grau %in% c("G1", "JE")) | |
dados_arrumados |> | |
dplyr::count(grau, resultado) |> | |
dplyr::group_by(grau) |> | |
dplyr::mutate(prop = n/sum(n)) |> | |
dplyr::ungroup() | |
dados_arrumados |> | |
dplyr::count(grau, resultado) |> | |
dplyr::mutate(prop = n / sum(n), .by = grau) |> | |
dplyr::mutate(prop = formattable::percent(prop)) | |
dados_arrumados |> | |
dplyr::count(grau, resultado) |> | |
dplyr::mutate(prop = n / sum(n), .by = grau) |> | |
dplyr::mutate(prop = formattable::percent(prop)) |> | |
ggplot2::ggplot(ggplot2::aes(x = grau, fill = resultado, y = prop)) + | |
ggplot2::geom_col(position = "dodge") + | |
ggplot2::scale_fill_viridis_d(begin = .2, end = .8) + | |
ggplot2::theme_minimal() | |
readr::write_rds(da_result, "data-raw/rds/da_franquia.rds") | |
readr::read_rds("data-raw/rds/da_franquia.rds") |> | |
dplyr::glimpse() | |
da_result |> | |
dplyr::count(grau) | |
da_result |> | |
dplyr::mutate(ano = lubridate::year(data_ajuizamento)) |> | |
dplyr::filter(grau %in% c("G1", "JE")) |> | |
dplyr::count(grau, ano) |> | |
dplyr::filter(ano >= 2020) |> | |
print(n = 100) | |
set.seed(1) | |
da_result |> | |
dplyr::mutate(ano = lubridate::year(data_ajuizamento)) |> | |
dplyr::filter(grau %in% c("G1", "JE")) |> | |
dplyr::filter(ano >= 2020) |> | |
dplyr::distinct(n_processo, .keep_all = TRUE) |> | |
dplyr::group_by(grau, ano) |> | |
dplyr::slice_sample(n = 3) |> | |
dplyr::select(n_processo, ano, grau, orgao_julgador_nm) |> | |
knitr::kable() | |
da_result |> | |
dplyr::mutate(ano = lubridate::year(data_ajuizamento)) |> | |
dplyr::filter(grau %in% c("G1", "JE")) |> | |
dplyr::filter(ano >= 2020) |> | |
dplyr::distinct(n_processo, .keep_all = TRUE) |> | |
dplyr::count(grau) | |
da_result |> | |
dplyr::mutate(ano = lubridate::year(data_ajuizamento)) |> | |
dplyr::filter(grau %in% c("G1", "JE")) |> | |
dplyr::filter(ano >= 2020) |> | |
tidyr::unnest(assuntos) |> | |
dplyr::count(nome, sort = TRUE) | |
tjsp::tjsp_baixar_cjpg(assunto = "", diretorio = "data-raw/franquias/cjpg") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment