Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cria novo parâmetro de filtro por tipo de publicação #154

Merged
merged 14 commits into from
Nov 11, 2024
21 changes: 21 additions & 0 deletions dag_confs/examples_and_tests/pubtype_example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
dag:
id: pubtype_example
description: DAG de teste (filtro por tipo de publicação)
search:
sources:
- DOU
terms:
- programa
pubtype:
- Ato
- Portaria
- Edital
- Extrato
- Ratificação
- Resolução
- Retificação
- Protocolo
report:
emails:
- destination@economia.gov.br
subject: "Teste do Ro-dou"
28 changes: 28 additions & 0 deletions docs/docs/como_funciona/exemplos.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,4 +281,32 @@ dag:
emails:
- destination@gestao.gov.br
subject: "Teste do Ro-dou"
```

### Exemplo 12
Esta configuração filtra os resultados por tipos de publicações selecionadas.
Disponível para as pesquisas no DOU e INLABS.

```yaml
dag:
id: pubtype_example
description: DAG de teste (filtro por tipo de publicação)
search:
sources:
- DOU
terms:
- programa
pubtype:
- Ato
- Portaria
- Edital
- Extrato
- Ratificação
- Resolução
- Retificação
- Protocolo
report:
emails:
- destination@gestao.gov.br
subject: "Teste do Ro-dou"
```
1 change: 1 addition & 0 deletions docs/docs/como_funciona/parametros.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ A página abaixo lista os parâmetros configuráveis nos arquivos YAML:
- **use_summary**: Define se no relatório será exibido a ementa, se existir. Valores: True ou False. Default: False. (Funcionalidade disponível apenas no INLABS)
- **ignore_signature_match**: Ignora a correspondência de assinatura ao realizar a busca. Valores: True ou False. Default: False.
- **is_exact_search**: Busca somente o termo exato. Valores: True ou False. Default: True.
- **pubtype**: Lista de tipos de publicações a serem filtradas na busca. Valores: [Lista de tipos de publicações](tipos_de_publicacoes.md).
- **sources**: Fontes de pesquisa dos diários oficiais. Pode ser uma ou uma lista. Opções disponíveis: DOU, QD, INLABS.
- **terms**: Lista de termos a serem buscados. Para o INLABS podem ser utilizados operadores avançados de busca.
- **territory_id**: Lista de identificadores do id do município. Necessário para buscar no Querido Diário.
Expand Down
230 changes: 230 additions & 0 deletions docs/docs/como_funciona/tipos_de_publicacoes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
## Tipos de publicações (parâmetro pubtype)
- Ação Direta de Inconstitucionalidade e Ação Declaratória de Constitucionalidade
- Acórdão
- Acordo Coletivo de Trabalho
- Ajuste
- Alvará
- Aresto
- Ata
- Ato
- Ato Complementar
- Ato Concessório
- Ato Declaratório
- Ato Declaratório Conjunto
- Ato Normativo
- Ato Regimental
- Ato Regulamentar
- Auto de Infração
- Autorização
- Aviso
- Aviso aos Acionistas
- Aviso de Adiamento
- Aviso de Adjudicação
- Aviso de Alienação
- Aviso de Alteração
- Aviso de Alteração de Resultado de Habilitação
- Aviso de Anulação
- Aviso de Audiência Pública
- Aviso de Cadastramento
- Aviso de Cancelamento
- Aviso de Cancelamento de Termo Aditivo
- Aviso de Chamamento Público
- Aviso de Coleta de Preços
- Aviso de Consulta Pública
- Aviso de Convalidação
- Aviso de Credenciamento
- Aviso de Dispensa de Licitação
- Aviso de Eleição
- Aviso de Extravio
- Aviso de Fato Relevante
- Aviso de Habilitação
- Aviso de Homologação
- Aviso de Homologação e Adjudicação
- Aviso de Índice Técnico
- Aviso de Inexigibilidade de Licitação
- Aviso de Julgamento
- Aviso de Licença
- Aviso de Licitação
- Aviso de Licitação-Concorrência
- Aviso de Licitação-Convite
- Aviso de Licitação Deserta
- Aviso de Licitação-Leilão
- Aviso de Licitação-Pregão
- Aviso de Licitação-RDC Eletrônico
- Aviso de Licitação-RDC Presencial
- Aviso de Licitação-Registro de Preços
- Aviso de Licitação-Tomada de Preços
- Aviso de Nota Técnica
- Aviso de Padronização
- Aviso de Penalidade
- Aviso de Preços Registrados
- Aviso de Pré-Qualificação
- Aviso de Processo Seletivo
- Aviso de Proposta Comercial
- Aviso de Proposta Técnica
- Aviso de Prorrogação
- Aviso de Reabertura de Prazo
- Aviso de Registro de Chapas
- Aviso de Registro de Diplomas
- Aviso de Registro de Preços
- Aviso de Relação de Compras
- Aviso de Rescisão
- Aviso de Retificação
- Aviso de Revogação
- Aviso de Seleção
- Aviso de Serviço e Compra
- Aviso de Sorteio
- Aviso de Suspensão
- Aviso de Tomada de Subsídios
- Balancete
- Balancete Financeiro
- Balancete Patrimonial e Financeiro
- Balanço Patrimonial
- Balanço Social
- Certidão
- Circular
- Comunicado
- Consulta Pública
- Contrato de Gestão
- Convênio
- Decisão
- Decreto de Pessoal
- Decreto Legislativo
- Decreto não numerado
- Decreto numerado
- Deliberação
- Demonstração Contábil
- Despacho
- Despacho Interministerial
- Edital
- Edital da Justiça Gratuita (Art. 32 Portaria 268/2009-IN)
- Edital de Citação
- Edital de Concurso Público
- Edital de Convocação
- Edital de Credenciamento
- Edital de Intimação
- Edital de Leilão
- Edital de Notificação
- Edital de Processo Seletivo
- Edital de Vestibular
- Emenda
- Emenda Constitucional
- Estatuto
- Extrato
- Extrato da Ata
- Extrato de Acordo de Cooperação
- Extrato de Acordo de Cooperação Federativa
- Extrato de Acordo de Cooperação Técnica
- Extrato de Adesão
- Extrato de Ajuste
- Extrato de Apostilamento
- Extrato de Autorização de Fornecimento de Material
- Extrato de Autorização de Serviço
- Extrato de Autorização de Uso
- Extrato de Carta Contrato
- Extrato de Carta Reversal
- Extrato de Cessão
- Extrato de Cessão de Uso
- Extrato de Comodato
- Extrato de Compromisso
- Extrato de Concessão de Uso
- Extrato de Contrato
- Extrato de Convênio
- Extrato de Cooperação Mútua
- Extrato de Credenciamento
- Extrato de Denúncia
- Extrato de Depósito
- Extrato de Dispensa de Chamamento Público
- Extrato de Dispensa de Licitação
- Extrato de Distrato
- Extrato de Doação
- Extrato de Escritura de Compra e Venda
- Extrato de Extinção (Lei nº 8.745 - contratação temporária)
- Extrato de Fornecimento
- Extrato de Inexigibilidade de Licitação
- Extrato de Instrumento Convocatório
- Extrato de Instrumentos Contratuais
- Extrato de Memorando de Entendimento
- Extrato de Nota de Empenho
- Extrato de Ordem de Compra
- Extrato de Ordem de Execução de Serviço
- Extrato de Ordem de Fornecimento
- Extrato de Parceria
- Extrato de Parecer Técnico
- Extrato de Permissão de Uso
- Extrato de Permuta
- Extrato de Prorrogação de Ofício
- Extrato de Protocolo de Cooperação
- Extrato de Protocolo de Intenção
- Extrato de Recolhimento
- Extrato de Reconhecimento
- Extrato de Reconhecimento de Dívida
- Extrato de Registro de Preços
- Extrato de Rerratificação
- Extrato de Rescisão
- Extrato de Rescisão Contratual
- Extrato de Resilição
- Extrato de Sub-rogação
- Extrato de Termo Aditivo
- Extrato de Termo de Ajustamento de Conduta
- Extrato de Termo de Cooperação Técnica
- Extrato de Termo de Entrega
- Extrato de Termo de Execução de Projeto
- Extrato de Termo de Execução Descentralizada
- Extrato de Termo de Fomento
- Extrato de Termo de Ocupação de Imóvel
- Extrato de Termo de Parceria
- Extrato de Transferência de Posse
- Extrato Prévio
- Fato Relevante
- Instrução
- Instrução Normativa
- Instrução Normativa Conjunta
- Lei
- Lei Complementar
- Lista de Antiguidade
- Medida Provisória
- Memorando de Entendimento
- Mensagem
- Norma Complementar
- Ofício circular
- Ordem de Serviço
- Orientação Normativa
- Pacto
- Parecer Normativo
- Pauta
- Portaria
- Portaria Conjunta
- Portaria Intergovernamental
- Portaria Interministerial
- Processo Disciplinar
- Proposta Orçamentária
- Protocolo
- Protocolo de Intenções
- Provimento
- Ratificação
- Recomendação
- Recurso Disciplinar
- Relatórios
- Republicação
- Resolução
- Resolução do Senado Federal
- Resultado de Análise
- Resultado de Avaliação Técnica
- Resultado de Cadastramento
- Resultado de Concurso Público
- Resultado de Eleição
- Resultado de Habilitação
- Resultado de Índice Técnico
- Resultado de Julgamento
- Resultado de Julgamento de Licitação
- Resultado de Leilão
- Resultado de Proposta Técnica
- Resultado de Qualificação
- Retificação
- Retificação (de Edital)
- Solução de Consulta
- Súmula
- Súmula Administrativa
- Termo de Autorização
- Termo de Liberação de Operação
5 changes: 5 additions & 0 deletions src/dou_dag_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ def perform_searches(
use_summary: Optional[bool],
result_as_email: Optional[bool],
department: List[str],
pubtype: List[str],
**context,
) -> dict:
"""Performs the search in each source and merge the results"""
Expand All @@ -296,6 +297,7 @@ def perform_searches(
ignore_signature_match=ignore_signature_match,
force_rematch=force_rematch,
department=department,
pubtype=pubtype,
reference_date=get_trigger_date(context, local_time=True),
)
elif "INLABS" in sources:
Expand All @@ -307,6 +309,7 @@ def perform_searches(
ignore_signature_match=ignore_signature_match,
full_text=full_text,
use_summary=use_summary,
pubtype=pubtype,
reference_date=get_trigger_date(context, local_time=True),
)

Expand Down Expand Up @@ -340,6 +343,7 @@ def perform_searches(
search_dict["result"] = result
search_dict["header"] = header
search_dict["department"] = department
search_dict["pubtype"] = pubtype

return search_dict

Expand Down Expand Up @@ -490,6 +494,7 @@ def create_dag(self, specs: DAGConfig, config_file: str) -> DAG:
"full_text": subsearch.full_text,
"use_summary": subsearch.use_summary,
"department": subsearch.department,
"pubtype": subsearch.pubtype,
"result_as_email": result_as_html(specs),
},
)
Expand Down
5 changes: 3 additions & 2 deletions src/hooks/dou_hook.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@


class DOUHook(BaseHook):
IN_WEB_BASE_URL = "https://www.in.gov.br/web/dou/-/"
IN_API_BASE_URL = "https://www.in.gov.br/consulta/-/buscar/dou"
IN_WEB_BASE_URL = "http://www.in.gov.br/web/dou/-/"
IN_API_BASE_URL = "http://www.in.gov.br/consulta/-/buscar/dou"
SEC_DESCRIPTION = {
Section.SECAO_1.value: "Seção 1",
Section.SECAO_2.value: "Seção 2",
Expand Down Expand Up @@ -158,6 +158,7 @@ def search_text(
item["id"] = content["classPK"]
item["display_date_sortable"] = content["displayDateSortable"]
item["hierarchyList"] = content["hierarchyList"]
item["arttype"] = content["artType"]

all_results.append(item)

Expand Down
1 change: 1 addition & 0 deletions src/hooks/inlabs_hook.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ def _generate_sql(payload: dict) -> str:
"name",
"pubname",
"artcategory",
"arttype",
"identifica",
"titulo",
"subtitulo",
Expand Down
19 changes: 14 additions & 5 deletions src/notification/email_sender.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,23 @@ def generate_email_content(self) -> str:
blocks.append(f"<h1>{search['header']}</h1>")

if not self.report_config.hide_filters:
if search["department"]:
if search["department"] or search["pubtype"]:
blocks.append(
"""<p class="secao-marker">Filtrando resultados somente para:</p>"""
)
blocks.append("<ul>")
for dpt in search["department"]:
blocks.append(f"<li>{dpt}</li>")
blocks.append("</ul>")
if search["department"]:
blocks.append("<small>Unidades:</small>")
blocks.append("<ul>")
for dpt in search["department"]:
blocks.append(f"<li><small>{dpt}</small></li>")
blocks.append("</ul>")

if search["pubtype"]:
blocks.append("<small>Tipos de publicações:</small>")
blocks.append("<ul>")
for pub in search["pubtype"]:
blocks.append(f"<li><small>{pub}</small></li>")
blocks.append("</ul>")

for group, search_results in search["result"].items():

Expand Down
Loading
Loading