diff --git a/dag_confs/examples_and_tests/qd_list_territory_id_example.yaml b/dag_confs/examples_and_tests/qd_list_territory_id_example.yaml new file mode 100644 index 0000000..d9bb3d2 --- /dev/null +++ b/dag_confs/examples_and_tests/qd_list_territory_id_example.yaml @@ -0,0 +1,23 @@ +dag: + id: qd_list_territory_id_example + description: DAG de teste com múltiplos territory_id + schedule: 0 8 * * MON-FRI + search: + header: "Teste com múltiplos territory_id" + territory_id: + - 3300100 + - 3300159 + - 3300209 + - 3305703 + sources: + - QD + terms: + - LGPD + - RIO DE JANEIRO + force_rematch: On + ignore_signature_match: On + report: + emails: + - destination@economia.gov.br + subject: "Teste do Ro-dou" + skip_null: False \ No newline at end of file diff --git a/docs/docs/como_funciona/parametros.md b/docs/docs/como_funciona/parametros.md index d367add..75320f0 100644 --- a/docs/docs/como_funciona/parametros.md +++ b/docs/docs/como_funciona/parametros.md @@ -24,7 +24,7 @@ A página abaixo lista os parâmetros configuráveis nos arquivos YAML: - **is_exact_search**: Busca somente o termo exato. Valores: True ou False. Default: True. - **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**: Identificador do id do município. Necessário para buscar no Querido Diário. +- **territory_id**: Lista de identificadores do id do município. Necessário para buscar no Querido Diário. ## Parâmetros do Relatório (Report) - **attach_csv**: Anexar no email o resultado da pesquisa em CSV. diff --git a/schemas/ro-dou.json b/schemas/ro-dou.json index 492a5ee..93531fe 100644 --- a/schemas/ro-dou.json +++ b/schemas/ro-dou.json @@ -63,9 +63,21 @@ } }, "territory_id": { - "type": "integer", - "description": "Id do território no Querido Diário - QD" + "oneOf": [ + { + "type": "integer", + "description": "Id do território no Querido Diário - QD", + }, + { + "type": "array", + "description": "Lista de Id do território no Querido Diário - QD", + "items": { + "type": "integer" + } + } + ] }, + "terms": { "oneOf": [ { diff --git a/src/schemas.py b/src/schemas.py index 196bdb5..7644792 100644 --- a/src/schemas.py +++ b/src/schemas.py @@ -60,7 +60,7 @@ class SearchConfig(BaseModel): description="Lista de fontes de dados para pesquisar (Querido Diário [QD], " "Diário Oficial da União [DOU], INLABS). Default: DOU.", ) - territory_id: Optional[int] = Field( + territory_id: Optional[Union[int, List[int]]] = Field( default=None, description="ID do território no Querido Diário para filtragem " "baseada em localização", diff --git a/src/searchers.py b/src/searchers.py index 02fc750..c20ed6a 100644 --- a/src/searchers.py +++ b/src/searchers.py @@ -365,7 +365,9 @@ def _search_term( payload = _build_query_payload(search_term, reference_date) if territory_id: - payload.append(("territory_ids", territory_id)) + if isinstance(territory_id, int): territory_id = [territory_id] + for terr_id in territory_id: + payload.append(("territory_ids", terr_id)) req_result = requests.get(self.API_BASE_URL, params=payload)