fiscaliza


Namefiscaliza JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/InovaFiscaliza/fiscaliza
SummaryImplementação de API python a instância do Redmine da Anatel: Fiscaliza
upload_time2024-08-10 02:29:24
maintainerNone
docs_urlNone
authorronaldokun
requires_python>=3.10
licenseApache Software License 2.0
keywords nbdev jupyter notebook python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # API para relato no Fiscaliza da Anatel


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

``` python
import os
import random
from random import randint
from dotenv import load_dotenv
from fiscaliza.main import Fiscaliza
from fiscaliza.constants import MUNICIPIOS, SERVICOS
from fiscaliza.attrs import FIELDS
load_dotenv(override=True)
```

    True

## Autenticação e Conexão com o servidor do Redmine

A classe
[`Fiscaliza`](https://InovaFiscaliza.github.io/fiscaliza/main.html#fiscaliza)
é somente para efetuar a conexão e autenticação com o servidor do
Redmine.

``` python
issue_id = "124182"
fiscaliza = Fiscaliza(os.environ["USERNAME"], os.environ["PASSWORD"], teste=True)
issue = fiscaliza.get_issue(issue_id)
```

## Conexão com dada inspeção

O método `get_issue` instancia e retorna um objeto do tipo
[`Issue`](https://InovaFiscaliza.github.io/fiscaliza/main.html#issue),
este que encapsula a funcionalidade principal de resgate de informações,
validação e formatação de informações e atualização de inspeção. O mesmo
objeto pode ser instanciado diretamente passando o `client` do objeto
[`Fiscaliza`](https://InovaFiscaliza.github.io/fiscaliza/main.html#fiscaliza)
após autenticado e o `id` da inspeção.

    issue = Issue(fiscaliza.client, issue_id)

## Informações da Inspeção

Todas as informações principais da Inspeção estão disponíveis através do
atributo `attrs`

``` python
issue.attrs
```

    {'acao': {'type': 'acao_de_inspecao',
      'status': 'Em andamento',
      'name': 'ACAO_GR08_2024_0014',
      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n'},
     'agrupamento': '',
     'allowed_statuses': '',
     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json',
      'https://sistemasnethm/fiscaliza/attachments/download/9191/Info.json'],
     'ano_de_execucao': 2024,
     'app_fiscaliza': 0,
     'assigned_to': 'Eric Magalhães Delgado',
     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 às 05:05:36',
     'author': 'Eric Magalhães Delgado',
     'changesets': '',
     'children': '',
     'classe_da_inspecao': 'Técnica',
     'closed_on': '',
     'coordenacao_responsavel': 'FI2',
     'created_on': '2024-04-18T12:38:03Z',
     'data_de_inicio_efetivo': '2024-07-25',
     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n',
     'done_ratio': 0,
     'due_date': '2024-05-30',
     'entidade_da_inspecao': [],
     'estimated_hours': '',
     'fiscais': ['Eric Magalhães Delgado', 'Ronaldo da Silva Alves Batista'],
     'fiscal_responsavel': 'Eric Magalhães Delgado',
     'horas_de_conclusao': 2,
     'horas_de_deslocamento': 3,
     'horas_de_execucao': 29,
     'horas_de_preparacao': 1,
     'id': 124182,
     'irregularidade': [],
     'is_private': False,
     'membros': ['Gilmar Ferreira do Nascimento',
      'Luis Fernando Camelier de Queiroz',
      'Michel Kulhavy Cerqueira',
      'Iulo de Araújo Lima Lobo',
      'Carlos Fernando Muniz Santos',
      'Isabel Cristina Cruz Soares e Souza',
      'Alessandro Vasconcelos Fernandes',
      'Anecy Oliveira de Freitas',
      'Wilton Machado de Oliveira',
      'Ilva Perla Monteiro Ferreira',
      'Lin Yu Wan',
      'Alexnaldo Cerqueira da Silva',
      'Jorgean Ferreira Leal',
      'José Mauricio Leite Araújo',
      'Arildo Oliva Franca Filho',
      'Leonardo Lago Araújo',
      'Brasilio Rios Leite',
      'Fiscal UD',
      'José Ivan Gomes',
      'Jaqueline Cesario da Silva',
      'Eric Magalhães Delgado',
      'Ronaldo da Silva Alves Batista'],
     'no_fiscaliza_issue': {'numero': '124182',
      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},
     'no_pcdp': '',
     'no_sav': 'Teste de Quebra\n de linha',
     'no_sei_processo_fiscalizacao': "{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}",
     'numero_do_pai': 123456,
     'observacao_tecnica_amostral': 'Simulação com o HTZ',
     'pai_instaurado_pela_anatel': 'Sim',
     'precisa_reservar_instrumentos': 0,
     'priority': 'Normal',
     'procedimentos': ['Análise/coleta de Dados'],
     'project': 'GR08',
     'servicos_da_inspecao': ['099 - RESTRITO - SERVIÇO DE RADIAÇÃO RESTRITA',
      '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVIÇO REDE TRANSPORTE TELECOMUNICAÇÃO'],
     'situacao_constatada': 'Irregular',
     'spent_hours': 0.0,
     'start_date': '2024-03-01',
     'status': 'Relatando',
     'subject': 'INSP_GR08_2024_0147',
     'subtema': ['Radiomonitoração Terrestre'],
     'tema': ['Uso do Espectro'],
     'time_entries': '',
     'tipo_de_inspecao': 'Outorga - Aspectos não Técnicos',
     'total_de_horas': 35.0,
     'total_estimated_hours': '',
     'total_spent_hours': 0.0,
     'tracker': 'Atividade de Inspeção',
     'ufmunicipio': ['MG/Bocaina de Minas', 'AL/União dos Palmares'],
     'updated_on': '2024-07-25T08:05:36Z',
     'utilizou_algum_instrumento': 0,
     'utilizou_tecnicas_amostrais': 'Usou técnicas amostrais',
     'watchers': ''}

O atributo acima retorna um dicionário com atributos atuais da Inspeção
no Fiscaliza. Existem campos editáveis através da API ou da interface
Web e outros meramente informativos, além de alguns campos presentes no
`Redmine` mas sem uso na instância Fiscaliza da Anatel. Um exemplo
desses é o atributo `children`, sempre vazio.

## Campos editáveis

Os dados que são editáveis, tanto pela API quanto pela interface web
aparecem em `minúsculo` no dicionário. Para estes dados temos um outro
método mais informativo:

``` python
issue.editable_fields
```

    {'status': (value: Rascunho),
     'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.
     ) | <mandatory>,
     'start_date': (value: 2024-03-01) | <mandatory>,
     'due_date': (value: 2024-11-30) | <mandatory>,
     'tipo_de_inspecao': (value: ) | <mandatory>, <options>, conditional,
     'fiscal_responsavel': (value: ) | <mandatory>, <options>,
     'fiscais': (value: []) | <mandatory>, <multiple>, <options>,
     'entidade_da_inspecao': (value: []), <multiple>,
     'ufmunicipio': (value: []) | <mandatory>, <multiple>, <options>,
     'servicos_da_inspecao': (value: []) | <mandatory>, <multiple>, <options>,
     'procedimentos': (value: []) | <mandatory>, <multiple>, <options>, conditional,
     'horas_de_preparacao': (value: 0) | <mandatory>,
     'horas_de_deslocamento': (value: 0) | <mandatory>,
     'horas_de_execucao': (value: 0) | <mandatory>,
     'horas_de_conclusao': (value: 0) | <mandatory>,
     'no_sav': (value: ),
     'no_pcdp': (value: ),
     'coordenacao_responsavel': (value: FI2), <options>,
     'agrupamento': (value: ),
     'no_sei_processo_fiscalizacao': ({'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}),
     'precisa_reservar_instrumentos': (value: ) | <mandatory>, <options>, conditional,
     'utilizou_algum_instrumento': (value: ) | <mandatory>, <options>, conditional,
     'utilizou_tecnicas_amostrais': (value: ) | <mandatory>, <options>,
     'observacao_tecnica_amostral': (value: ) | <mandatory>}

Nesse caso as chaves são os nomes dos campos e os valores são os objetos
que modelam o campo. Ao mostrar ou imprimir o dicionário, como mostrado
acima, é impresso o valor atual do campo entre parênteses.

    'tipo_de_inspecao': (value: Uso do Espectro - Não Outorgado) | <mandatory>, <options>, conditional

Separado pela barra vertical são mostrados alguns atributos do campo:

- `<mandatory>` Atributo booleano indicando se o campo é obrigatório;
- `<multiple>` Atributo booleano. `False`: Campo de valor único. `True`
  Campo aceita mais de um valor e por conseguinte deve ser fornecido uma
  lista em vez de um valor atômico ( `int`, `float`, `str` );
- `<options>` Atributo do tipo lista. Quando presente sinaliza que o
  campo é restrito e só aceita valores pré-definidos;
- `conditional` Esse não é um atributo, somente um sinalizador indicando
  que o campo é condicional e para dado valor preenchido neste campo,
  ficam disponíveis outros campos, estes podem ser obrigatórios e
  inclusive condicionais.

O valor em si do campo é guardado no atributo `value`, acessado através
da notação de ponto

``` python
issue.editable_fields['tipo_de_inspecao'].value
```

    'Outorga - Aspectos não Técnicos'

### Campos Obrigatórios e Condicionais

Os dois métodos a seguir filtram, dentre os campos editáveis, os campos
obrigatório e condicionais:

``` python
issue.mandatory_fields()
```

    {'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.
     ) | <mandatory>,
     'start_date': (value: 2024-03-01) | <mandatory>,
     'due_date': (value: 2024-05-30) | <mandatory>,
     'tipo_de_inspecao': (value: Outorga - Aspectos não Técnicos) | <mandatory>, <options>, conditional,
     'fiscal_responsavel': (value: Eric Magalhães Delgado) | <mandatory>, <options>,
     'fiscais': (value: ['Eric Magalhães Delgado', 'Ronaldo da Silva Alves Batista']) | <mandatory>, <multiple>, <options>,
     'ufmunicipio': (value: ['MG/Bocaina de Minas', 'AL/União dos Palmares']) | <mandatory>, <multiple>, <options>,
     'servicos_da_inspecao': (value: ['099 - RESTRITO - SERVIÇO DE RADIAÇÃO RESTRITA', '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVIÇO REDE TRANSPORTE TELECOMUNICAÇÃO']) | <mandatory>, <multiple>, <options>,
     'situacao_constatada': (value: Irregular) | <mandatory>, <options>,
     'procedimentos': (value: ['Análise/coleta de Dados']) | <mandatory>, <multiple>, <options>, conditional,
     'horas_de_preparacao': (value: 1) | <mandatory>,
     'horas_de_deslocamento': (value: 3) | <mandatory>,
     'horas_de_execucao': (value: 29) | <mandatory>,
     'horas_de_conclusao': (value: 2) | <mandatory>,
     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,
     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,
     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional,
     'utilizou_tecnicas_amostrais': (value: Usou técnicas amostrais) | <mandatory>, <options>,
     'observacao_tecnica_amostral': (value: Simulação com o HTZ) | <mandatory>}

``` python
issue.conditional_fields()
```

    {'tipo_de_inspecao': (value: Outorga - Aspectos não Técnicos) | <mandatory>, <options>, conditional,
     'procedimentos': (value: ['Análise/coleta de Dados']) | <mandatory>, <multiple>, <options>, conditional,
     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,
     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,
     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional}

> O conjunto de valores para os campos com opções pré-definidas estão
> relacionados no atributo `.options`

``` python
issue.editable_fields['tipo_de_inspecao'].options
```

    ['',
     'Bloqueio Administrativo',
     'Certificação',
     'Medição de CEMRF (RNI)',
     'Outorga - Aspectos não Técnicos',
     'Outorga - Aspectos Técnicos',
     'Uso do Espectro - Interferência',
     'Uso do Espectro - Monitoração',
     'Uso do Espectro - Não Outorgado']

``` python
issue.editable_fields['procedimentos'].options
```

    ['Nenhum',
     'Lacração',
     'Apreensão',
     'Interrupção',
     'Não Cadastrado',
     'Notificado',
     'A Notificar',
     'Liberação/Desinterrupção',
     'Orientação ao Usuário',
     'Comunicado',
     'Deslacrado',
     'Vistoriado',
     'Emissão Termo Violação de Lacre',
     'Apoio a busca e apreensão',
     'Investigação/Pesquisa',
     'Não Lacrado - Impedimento',
     'Não Lacrado - Amparo Judicial',
     'Não Lacrado - Responsável Ausente',
     'Não Lacrado - Local Fechado',
     'Constatação Violação Lacre/Relacrado',
     'Constatação Violação Lacre/Impedimento',
     'Notícia Crime',
     'Monitorado alterado',
     'Constatação Encerramento - Informe',
     'Levantamento de Dados',
     'Análise/coleta de Dados',
     'Monitorado',
     'Não Lacrado - Desativado',
     'Devolução de Produto(s)',
     'Outros']

## Atualizando os campos editáveis da Inspeção

Dada a existência de campos condicionais, para obtermos todos os campos
editáveis para dado tipo de inspeção, é preciso fornecer um dicionário
de dados para que os campos sejam atualizados de acordo com os valores
fornecidos para os campos condicionais.

``` python
dados = {
    "tipo_de_inspecao": "Certificação",
    "precisa_reservar_instrumentos": "0",
    "utilizou_algum_instrumento": "0",
    "procedimentos": "Lacração",
}
```

A atualização dos campos é feita passando o dicionário para o método
`update_fields`.

``` python
issue.update_fields(dados)
```

Depois de atualizado os campos com o método acima, checamos novamente o
atributo `editable_fields`

``` python
issue.editable_fields
```

    {'status': (value: Relatando),
     'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.
     ) | <mandatory>,
     'start_date': (value: 2024-03-01) | <mandatory>,
     'due_date': (value: 2024-05-30) | <mandatory>,
     'tipo_de_inspecao': (value: Certificação) | <mandatory>, <options>, conditional,
     'fiscal_responsavel': (value: Eric Magalhães Delgado) | <mandatory>, <options>,
     'fiscais': (value: ['Eric Magalhães Delgado', 'Ronaldo da Silva Alves Batista']) | <mandatory>, <multiple>, <options>,
     'entidade_da_inspecao': (value: []), <multiple>,
     'ufmunicipio': (value: ['MG/Bocaina de Minas', 'AL/União dos Palmares']) | <mandatory>, <multiple>, <options>,
     'servicos_da_inspecao': (value: ['099 - RESTRITO - SERVIÇO DE RADIAÇÃO RESTRITA', '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVIÇO REDE TRANSPORTE TELECOMUNICAÇÃO']) | <mandatory>, <multiple>, <options>,
     'situacao_constatada': (value: Irregular) | <mandatory>, <options>,
     'procedimentos': (value: ['Lacração']) | <mandatory>, <multiple>, <options>, conditional,
     'irregularidade': (value: []), <multiple>, <options>,
     'horas_de_preparacao': (value: 1) | <mandatory>,
     'horas_de_deslocamento': (value: 3) | <mandatory>,
     'horas_de_execucao': (value: 29) | <mandatory>,
     'horas_de_conclusao': (value: 2) | <mandatory>,
     'no_sav': (value: Teste de Quebra
      de linha),
     'no_pcdp': (value: ),
     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,
     'coordenacao_responsavel': (value: FI2), <options>,
     'numero_do_pai': (value: 123456),
     'agrupamento': (value: ),
     'no_sei_processo_fiscalizacao': ({'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}),
     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,
     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional,
     'utilizou_tecnicas_amostrais': (value: Usou técnicas amostrais) | <mandatory>, <options>,
     'observacao_tecnica_amostral': (value: Simulação com o HTZ) | <mandatory>}

Caso o conjunto de dados já seja conhecido para dado tipo de inspeção,
basta passar o dicionário diretamente para o método `update`.
Internamente os métodos mostrados anteriormente de atualização dos
campos são chamados.

## Exemplo completo

O dicionário a seguir contém valores misturados de diversos tipos de
inspeção distintos, além de valores aleatorizados. A API simplesmente
filtra os valores que se aplicam para o tipo de inspeção solicitada e o
valor do dado fornecido para os campos condicionais. As demais chaves
que não se aplicam são ignoradas.

<details class="code-fold">
<summary>Code</summary>

``` python
dados = {
    "endereco_da_inspecao": "Rua Machado de Assis, 27 - Morro Grande, Rio de Janeiro - RJ",
    "campo_eletrico__pico_vm": randint(50, 100),
    "campo_eletrico_rms_vm": randint(20, 100),
    "coordenacao_responsavel": "FI2",
    "cnpjcpf_da_entidade": "27865757000102",
    "entidade_com_cadastro_stel": "Não",
    "entidade_outorgada": randint(0, 1),
    "esta_em_operacao": randint(0, 1),
    "numero_da_estacao": "1493671",
    "fiscais": ["Eric Magalhães Delgado", "Ronaldo da Silva Alves Batista"],
    "fiscal_responsavel": "Eric Magalhães Delgado",
    "foi_constatada_interferencia": randint(0, 1),
    "frequencia_inicial": randint(70, 110),
    "frequencia_final": randint(110, 117),
    "gerar_relatorio": randint(0, 1),
    "gerar_plai": randint(0, 1),
    "tipo_do_processo_plai": random.choice(FIELDS["tipo_do_processo_plai"].options),
    "coord_fi_plai": random.choice(FIELDS["coord_fi_plai"].options),
    "html_path": "/mnt/c/Users/rsilva/code/fiscaliza/tests/Report_2024.02.18_T11.30.55_123456.html",
    "uploads": [
        {
            "path": "/mnt/c/Users/code/fiscaliza/tests/Report_2024.02.18_T11.30.55_123456.json",
            "filename": "Info.json",
        }
    ],
    "identificada_a_origem": str(randint(0, 1)),
    "unidade_da_frequencia_final": "MHz",
    "unidade_da_frequencia_inicial": "MHz",
    "horas_de_conclusao": randint(1, 8),
    "horas_de_deslocamento": randint(1, 8),
    "horas_de_execucao": randint(8, 40),
    "horas_de_preparacao": randint(1, 8),
    "houve_obice": random.randint(0, 1),
    "houve_interferencia": random.choice(["Sim", "Não"]),
    "latitude_coordenadas": -randint(0, 33),
    "longitude_coordenadas": -randint(34, 73),
    "latitude_da_estacao": -randint(0, 33),
    "longitude_da_estacao": -randint(34, 73),
    "nome_da_entidade": "Globo S/A",
    "numero_do_pai": "123456",
    "observacao_tecnica_amostral": "Simulação com o HTZ",
    "pai_instaurado_pela_anatel": random.choice(["Sim", "Não"]),
    "precisa_reservar_instrumentos": "0",  #
    "procedimentos": random.choices(FIELDS["procedimentos"].options, k=2),  #
    "qnt_produt_lacradosapreend": "0",
    "reserva_de_instrumentos": "0",
    "no_sav": "Teste de Quebra\n de linha",
    "documento_instaurador_do_pado": "0201235\n0201239\n0201237",
    "no_do_lacre": "50",
    "motivo_de_lai": random.choice(FIELDS["motivo_de_lai"].options),
    "no_sei_do_aviso_lai": "",
    "sanada_ou_mitigada": random.choice(["0", "1"]),
    "servicos_da_inspecao": random.choices(list(SERVICOS.values()), k=2),
    "situacao_constatada": "Irregular",
    "situacao_de_risco_a_vida": "Sim",
    "tipo_de_inspecao": random.choice(FIELDS["tipo_de_inspecao"].options),
    "ufmunicipio": random.choices(MUNICIPIOS, k=2),
    "uso_de_produto_homologado": random.choice(["0", "1"]),
    "utilizou_algum_instrumento": "0",
    "utilizou_apoio_policial": random.choice(FIELDS["utilizou_apoio_policial"].options),
    "utilizou_tecnicas_amostrais": random.choice(
        FIELDS["utilizou_tecnicas_amostrais"].options
    ),
    "description": "[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n",
    "start_date": "2024-03-01",
    "due_date": "2024-05-30",
}
```

</details>

``` python
issue.update(dados)
```

    ValueError: Arquivo C:\Users\rsilva\code\fiscaliza\tests\Report_2024.02.18_T11.30.55_123456.json não existe ou não é um arquivo
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    Cell In[18], line 1
    ----> 1 issue.update(dados)

    File ~/anatel/fiscaliza/fiscaliza/main.py:577, in Issue.update(self, dados)
        575     self.client.issue.update(self.id, status_id=status_id, **data)
        576 else:
    --> 577     data = self._parse_value_dict(dados)
        578     self.client.issue.update(self.id, status_id=status_id, **data)
        579 print(f"Atualizado para o status {new_status}")

    File ~/anatel/fiscaliza/fiscaliza/main.py:539, in Issue._parse_value_dict(self, dados)
        537 data = {k: editable_fields[k](v) for k, v in data.items()}
        538 submitted_fields = {"custom_fields": []}
    --> 539 if uploads := self._check_uploads(dados):
        540     submitted_fields["uploads"] = uploads
        541 for key, value in data.items():

    File ~/anatel/fiscaliza/fiscaliza/main.py:517, in Issue._check_uploads(self, dados)
        515         if (path := file.get("path")) is not None:
        516             if not Path(path).is_file():
    --> 517                 raise ValueError(
        518                     f"Arquivo {path} não existe ou não é um arquivo"
        519                 )
        520             uploads.append(file)
        521 return uploads

    ValueError: Arquivo C:\Users\rsilva\code\fiscaliza\tests\Report_2024.02.18_T11.30.55_123456.json não existe ou não é um arquivo

## Gerar Relatório de Atividades

Para as inspeções de `Certificação` e `Uso do Espectro - Monitoração` é
possível gerar o relatório de atividades no SEI por meio do Fiscaliza,
para tal basta fornecer o valor:

    dados['gerar_relatório'] = '1'

``` python
dados['gerar_relatorio'] = '1'
issue.update(dados)
```

    Atualizado para o status Relatando

``` python
issue.attrs
```

    {'acao': {'type': 'acao_de_inspecao',
      'status': 'Em andamento',
      'name': 'ACAO_GR08_2024_0014',
      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n'},
     'agrupamento': '',
     'allowed_statuses': '',
     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json'],
     'ano_de_execucao': 2024,
     'app_fiscaliza': 0,
     'assigned_to': 'Eric Magalhães Delgado',
     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 às 05:03:48',
     'author': 'Eric Magalhães Delgado',
     'changesets': '',
     'children': '',
     'classe_da_inspecao': 'Técnica',
     'closed_on': '',
     'coordenacao_responsavel': 'FI2',
     'created_on': '2024-04-18T12:38:03Z',
     'data_de_inicio_efetivo': '2024-07-25',
     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n',
     'done_ratio': 0,
     'due_date': '2024-05-30',
     'entidade_da_inspecao': [],
     'estimated_hours': '',
     'fiscais': ['Eric Magalhães Delgado', 'Ronaldo da Silva Alves Batista'],
     'fiscal_responsavel': 'Eric Magalhães Delgado',
     'horas_de_conclusao': 4,
     'horas_de_deslocamento': 3,
     'horas_de_execucao': 11,
     'horas_de_preparacao': 2,
     'id': 124182,
     'irregularidade': [],
     'is_private': False,
     'membros': ['Gilmar Ferreira do Nascimento',
      'Luis Fernando Camelier de Queiroz',
      'Michel Kulhavy Cerqueira',
      'Iulo de Araújo Lima Lobo',
      'Carlos Fernando Muniz Santos',
      'Isabel Cristina Cruz Soares e Souza',
      'Alessandro Vasconcelos Fernandes',
      'Anecy Oliveira de Freitas',
      'Wilton Machado de Oliveira',
      'Ilva Perla Monteiro Ferreira',
      'Lin Yu Wan',
      'Alexnaldo Cerqueira da Silva',
      'Jorgean Ferreira Leal',
      'José Mauricio Leite Araújo',
      'Arildo Oliva Franca Filho',
      'Leonardo Lago Araújo',
      'Brasilio Rios Leite',
      'Fiscal UD',
      'José Ivan Gomes',
      'Jaqueline Cesario da Silva',
      'Eric Magalhães Delgado',
      'Ronaldo da Silva Alves Batista'],
     'motivo_de_lai': ['Interferência prejudicial'],
     'no_fiscaliza_issue': {'numero': '124182',
      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},
     'no_pcdp': '',
     'no_sav': 'Teste de Quebra\n de linha',
     'no_sei_do_aviso_lai': '',
     'no_sei_do_plaiguarda': '',
     'no_sei_processo_fiscalizacao': "{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}",
     'numero_do_pai': 123456,
     'observacao_tecnica_amostral': 'Simulação com o HTZ',
     'pai_instaurado_pela_anatel': 'Sim',
     'precisa_reservar_instrumentos': 0,
     'priority': 'Normal',
     'procedimentos': ['Emissão Termo Violação de Lacre', 'Interrupção'],
     'project': 'GR08',
     'servicos_da_inspecao': ['729 - COLETIVO - TV A CABO',
      '507 - RESTRITO - MÓVEL AERONÁUTICO'],
     'situacao_constatada': 'Irregular',
     'spent_hours': 0.0,
     'start_date': '2024-03-01',
     'status': 'Relatando',
     'subject': 'INSP_GR08_2024_0147',
     'subtema': ['Radiomonitoração Terrestre'],
     'tema': ['Uso do Espectro'],
     'time_entries': '',
     'tipo_de_inspecao': 'Outorga - Aspectos não Técnicos',
     'total_de_horas': 20.0,
     'total_estimated_hours': '',
     'total_spent_hours': 0.0,
     'tracker': 'Atividade de Inspeção',
     'ufmunicipio': ['MG/Baldim', 'PA/São João da Ponta'],
     'updated_on': '2024-07-25T08:03:48Z',
     'utilizou_algum_instrumento': 0,
     'utilizou_tecnicas_amostrais': 'Usou técnicas amostrais',
     'watchers': ''}

> Para substituir o relatório de atividades, basta refazer a chamada
> fornecendo o valor `1` para a chave `gerar_relatorio`.

``` python
dados["gerar_relatorio"] = "1"
issue.update(dados)
```

    Atualizado para o status Relatando

``` python
issue.attrs
```

    {'acao': {'type': 'acao_de_inspecao',
      'status': 'Em andamento',
      'name': 'ACAO_GR08_2024_0014',
      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n'},
     'agrupamento': '',
     'allowed_statuses': '',
     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json'],
     'ano_de_execucao': 2024,
     'app_fiscaliza': 0,
     'assigned_to': 'Eric Magalhães Delgado',
     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 às 05:03:48',
     'author': 'Eric Magalhães Delgado',
     'changesets': '',
     'children': '',
     'classe_da_inspecao': 'Técnica',
     'closed_on': '',
     'coordenacao_responsavel': 'FI2',
     'created_on': '2024-04-18T12:38:03Z',
     'data_de_inicio_efetivo': '2024-07-25',
     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequências relacionados às aplicações críticas (como, por exemplo, radionavegação e radiocomunicação aeronáutica e canais de emergência) na forma a ser estabelecida no Plano de Ação de Fiscalização.\r\n',
     'done_ratio': 0,
     'due_date': '2024-05-30',
     'entidade_da_inspecao': [],
     'estimated_hours': '',
     'fiscais': ['Eric Magalhães Delgado', 'Ronaldo da Silva Alves Batista'],
     'fiscal_responsavel': 'Eric Magalhães Delgado',
     'horas_de_conclusao': 4,
     'horas_de_deslocamento': 3,
     'horas_de_execucao': 11,
     'horas_de_preparacao': 2,
     'id': 124182,
     'irregularidade': [],
     'is_private': False,
     'membros': ['Gilmar Ferreira do Nascimento',
      'Luis Fernando Camelier de Queiroz',
      'Michel Kulhavy Cerqueira',
      'Iulo de Araújo Lima Lobo',
      'Carlos Fernando Muniz Santos',
      'Isabel Cristina Cruz Soares e Souza',
      'Alessandro Vasconcelos Fernandes',
      'Anecy Oliveira de Freitas',
      'Wilton Machado de Oliveira',
      'Ilva Perla Monteiro Ferreira',
      'Lin Yu Wan',
      'Alexnaldo Cerqueira da Silva',
      'Jorgean Ferreira Leal',
      'José Mauricio Leite Araújo',
      'Arildo Oliva Franca Filho',
      'Leonardo Lago Araújo',
      'Brasilio Rios Leite',
      'Fiscal UD',
      'José Ivan Gomes',
      'Jaqueline Cesario da Silva',
      'Eric Magalhães Delgado',
      'Ronaldo da Silva Alves Batista'],
     'motivo_de_lai': ['Interferência prejudicial'],
     'no_fiscaliza_issue': {'numero': '124182',
      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},
     'no_pcdp': '',
     'no_sav': 'Teste de Quebra\n de linha',
     'no_sei_do_aviso_lai': '',
     'no_sei_do_plaiguarda': '',
     'no_sei_processo_fiscalizacao': "{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}",
     'numero_do_pai': 123456,
     'observacao_tecnica_amostral': 'Simulação com o HTZ',
     'pai_instaurado_pela_anatel': 'Sim',
     'precisa_reservar_instrumentos': 0,
     'priority': 'Normal',
     'procedimentos': ['Emissão Termo Violação de Lacre', 'Interrupção'],
     'project': 'GR08',
     'servicos_da_inspecao': ['729 - COLETIVO - TV A CABO',
      '507 - RESTRITO - MÓVEL AERONÁUTICO'],
     'situacao_constatada': 'Irregular',
     'spent_hours': 0.0,
     'start_date': '2024-03-01',
     'status': 'Relatando',
     'subject': 'INSP_GR08_2024_0147',
     'subtema': ['Radiomonitoração Terrestre'],
     'tema': ['Uso do Espectro'],
     'time_entries': '',
     'tipo_de_inspecao': 'Outorga - Aspectos não Técnicos',
     'total_de_horas': 20.0,
     'total_estimated_hours': '',
     'total_spent_hours': 0.0,
     'tracker': 'Atividade de Inspeção',
     'ufmunicipio': ['MG/Baldim', 'PA/São João da Ponta'],
     'updated_on': '2024-07-25T08:04:01Z',
     'utilizou_algum_instrumento': 0,
     'utilizou_tecnicas_amostrais': 'Usou técnicas amostrais',
     'watchers': ''}

> Caso o intuito seja somente editar o campo `Relatório de Atividades`,
> basta fornecer o valor para a chave `relatorio_de_atividades` e não
> esquecer de fornecer o valor `0` para a chave `gerar_relatório` ou
> simplesmente excluí-la.

``` python
dados['relatorio_de_atividades'] = '0206885'
dados['gerar_relatorio'] = '0'
issue.update(dados)
```

    Atualizado para o status Relatando

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/InovaFiscaliza/fiscaliza",
    "name": "fiscaliza",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "nbdev jupyter notebook python",
    "author": "ronaldokun",
    "author_email": "ronaldokun@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4c/74/3452c5d16ad9607daab2ce7256c72f9b9e0100e473842ed13dd09ccd8e97/fiscaliza-1.0.0.tar.gz",
    "platform": null,
    "description": "# API para relato no Fiscaliza da Anatel\r\n\r\n\r\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\r\n\r\n``` python\r\nimport os\r\nimport random\r\nfrom random import randint\r\nfrom dotenv import load_dotenv\r\nfrom fiscaliza.main import Fiscaliza\r\nfrom fiscaliza.constants import MUNICIPIOS, SERVICOS\r\nfrom fiscaliza.attrs import FIELDS\r\nload_dotenv(override=True)\r\n```\r\n\r\n    True\r\n\r\n## Autentica\u00e7\u00e3o e Conex\u00e3o com o servidor do Redmine\r\n\r\nA classe\r\n[`Fiscaliza`](https://InovaFiscaliza.github.io/fiscaliza/main.html#fiscaliza)\r\n\u00e9 somente para efetuar a conex\u00e3o e autentica\u00e7\u00e3o com o servidor do\r\nRedmine.\r\n\r\n``` python\r\nissue_id = \"124182\"\r\nfiscaliza = Fiscaliza(os.environ[\"USERNAME\"], os.environ[\"PASSWORD\"], teste=True)\r\nissue = fiscaliza.get_issue(issue_id)\r\n```\r\n\r\n## Conex\u00e3o com dada inspe\u00e7\u00e3o\r\n\r\nO m\u00e9todo `get_issue` instancia e retorna um objeto do tipo\r\n[`Issue`](https://InovaFiscaliza.github.io/fiscaliza/main.html#issue),\r\neste que encapsula a funcionalidade principal de resgate de informa\u00e7\u00f5es,\r\nvalida\u00e7\u00e3o e formata\u00e7\u00e3o de informa\u00e7\u00f5es e atualiza\u00e7\u00e3o de inspe\u00e7\u00e3o. O mesmo\r\nobjeto pode ser instanciado diretamente passando o `client` do objeto\r\n[`Fiscaliza`](https://InovaFiscaliza.github.io/fiscaliza/main.html#fiscaliza)\r\nap\u00f3s autenticado e o `id` da inspe\u00e7\u00e3o.\r\n\r\n    issue = Issue(fiscaliza.client, issue_id)\r\n\r\n## Informa\u00e7\u00f5es da Inspe\u00e7\u00e3o\r\n\r\nTodas as informa\u00e7\u00f5es principais da Inspe\u00e7\u00e3o est\u00e3o dispon\u00edveis atrav\u00e9s do\r\natributo `attrs`\r\n\r\n``` python\r\nissue.attrs\r\n```\r\n\r\n    {'acao': {'type': 'acao_de_inspecao',\r\n      'status': 'Em andamento',\r\n      'name': 'ACAO_GR08_2024_0014',\r\n      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n'},\r\n     'agrupamento': '',\r\n     'allowed_statuses': '',\r\n     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json',\r\n      'https://sistemasnethm/fiscaliza/attachments/download/9191/Info.json'],\r\n     'ano_de_execucao': 2024,\r\n     'app_fiscaliza': 0,\r\n     'assigned_to': 'Eric Magalh\u00e3es Delgado',\r\n     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 \u00e0s 05:05:36',\r\n     'author': 'Eric Magalh\u00e3es Delgado',\r\n     'changesets': '',\r\n     'children': '',\r\n     'classe_da_inspecao': 'T\u00e9cnica',\r\n     'closed_on': '',\r\n     'coordenacao_responsavel': 'FI2',\r\n     'created_on': '2024-04-18T12:38:03Z',\r\n     'data_de_inicio_efetivo': '2024-07-25',\r\n     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n',\r\n     'done_ratio': 0,\r\n     'due_date': '2024-05-30',\r\n     'entidade_da_inspecao': [],\r\n     'estimated_hours': '',\r\n     'fiscais': ['Eric Magalh\u00e3es Delgado', 'Ronaldo da Silva Alves Batista'],\r\n     'fiscal_responsavel': 'Eric Magalh\u00e3es Delgado',\r\n     'horas_de_conclusao': 2,\r\n     'horas_de_deslocamento': 3,\r\n     'horas_de_execucao': 29,\r\n     'horas_de_preparacao': 1,\r\n     'id': 124182,\r\n     'irregularidade': [],\r\n     'is_private': False,\r\n     'membros': ['Gilmar Ferreira do Nascimento',\r\n      'Luis Fernando Camelier de Queiroz',\r\n      'Michel Kulhavy Cerqueira',\r\n      'Iulo de Ara\u00fajo Lima Lobo',\r\n      'Carlos Fernando Muniz Santos',\r\n      'Isabel Cristina Cruz Soares e Souza',\r\n      'Alessandro Vasconcelos Fernandes',\r\n      'Anecy Oliveira de Freitas',\r\n      'Wilton Machado de Oliveira',\r\n      'Ilva Perla Monteiro Ferreira',\r\n      'Lin Yu Wan',\r\n      'Alexnaldo Cerqueira da Silva',\r\n      'Jorgean Ferreira Leal',\r\n      'Jos\u00e9 Mauricio Leite Ara\u00fajo',\r\n      'Arildo Oliva Franca Filho',\r\n      'Leonardo Lago Ara\u00fajo',\r\n      'Brasilio Rios Leite',\r\n      'Fiscal UD',\r\n      'Jos\u00e9 Ivan Gomes',\r\n      'Jaqueline Cesario da Silva',\r\n      'Eric Magalh\u00e3es Delgado',\r\n      'Ronaldo da Silva Alves Batista'],\r\n     'no_fiscaliza_issue': {'numero': '124182',\r\n      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},\r\n     'no_pcdp': '',\r\n     'no_sav': 'Teste de Quebra\\n de linha',\r\n     'no_sei_processo_fiscalizacao': \"{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}\",\r\n     'numero_do_pai': 123456,\r\n     'observacao_tecnica_amostral': 'Simula\u00e7\u00e3o com o HTZ',\r\n     'pai_instaurado_pela_anatel': 'Sim',\r\n     'precisa_reservar_instrumentos': 0,\r\n     'priority': 'Normal',\r\n     'procedimentos': ['An\u00e1lise/coleta de Dados'],\r\n     'project': 'GR08',\r\n     'servicos_da_inspecao': ['099 - RESTRITO - SERVI\u00c7O DE RADIA\u00c7\u00c3O RESTRITA',\r\n      '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVI\u00c7O REDE TRANSPORTE TELECOMUNICA\u00c7\u00c3O'],\r\n     'situacao_constatada': 'Irregular',\r\n     'spent_hours': 0.0,\r\n     'start_date': '2024-03-01',\r\n     'status': 'Relatando',\r\n     'subject': 'INSP_GR08_2024_0147',\r\n     'subtema': ['Radiomonitora\u00e7\u00e3o Terrestre'],\r\n     'tema': ['Uso do Espectro'],\r\n     'time_entries': '',\r\n     'tipo_de_inspecao': 'Outorga - Aspectos n\u00e3o T\u00e9cnicos',\r\n     'total_de_horas': 35.0,\r\n     'total_estimated_hours': '',\r\n     'total_spent_hours': 0.0,\r\n     'tracker': 'Atividade de Inspe\u00e7\u00e3o',\r\n     'ufmunicipio': ['MG/Bocaina de Minas', 'AL/Uni\u00e3o dos Palmares'],\r\n     'updated_on': '2024-07-25T08:05:36Z',\r\n     'utilizou_algum_instrumento': 0,\r\n     'utilizou_tecnicas_amostrais': 'Usou t\u00e9cnicas amostrais',\r\n     'watchers': ''}\r\n\r\nO atributo acima retorna um dicion\u00e1rio com atributos atuais da Inspe\u00e7\u00e3o\r\nno Fiscaliza. Existem campos edit\u00e1veis atrav\u00e9s da API ou da interface\r\nWeb e outros meramente informativos, al\u00e9m de alguns campos presentes no\r\n`Redmine` mas sem uso na inst\u00e2ncia Fiscaliza da Anatel. Um exemplo\r\ndesses \u00e9 o atributo `children`, sempre vazio.\r\n\r\n## Campos edit\u00e1veis\r\n\r\nOs dados que s\u00e3o edit\u00e1veis, tanto pela API quanto pela interface web\r\naparecem em `min\u00fasculo` no dicion\u00e1rio. Para estes dados temos um outro\r\nm\u00e9todo mais informativo:\r\n\r\n``` python\r\nissue.editable_fields\r\n```\r\n\r\n    {'status': (value: Rascunho),\r\n     'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\r\n     ) | <mandatory>,\r\n     'start_date': (value: 2024-03-01) | <mandatory>,\r\n     'due_date': (value: 2024-11-30) | <mandatory>,\r\n     'tipo_de_inspecao': (value: ) | <mandatory>, <options>, conditional,\r\n     'fiscal_responsavel': (value: ) | <mandatory>, <options>,\r\n     'fiscais': (value: []) | <mandatory>, <multiple>, <options>,\r\n     'entidade_da_inspecao': (value: []), <multiple>,\r\n     'ufmunicipio': (value: []) | <mandatory>, <multiple>, <options>,\r\n     'servicos_da_inspecao': (value: []) | <mandatory>, <multiple>, <options>,\r\n     'procedimentos': (value: []) | <mandatory>, <multiple>, <options>, conditional,\r\n     'horas_de_preparacao': (value: 0) | <mandatory>,\r\n     'horas_de_deslocamento': (value: 0) | <mandatory>,\r\n     'horas_de_execucao': (value: 0) | <mandatory>,\r\n     'horas_de_conclusao': (value: 0) | <mandatory>,\r\n     'no_sav': (value: ),\r\n     'no_pcdp': (value: ),\r\n     'coordenacao_responsavel': (value: FI2), <options>,\r\n     'agrupamento': (value: ),\r\n     'no_sei_processo_fiscalizacao': ({'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}),\r\n     'precisa_reservar_instrumentos': (value: ) | <mandatory>, <options>, conditional,\r\n     'utilizou_algum_instrumento': (value: ) | <mandatory>, <options>, conditional,\r\n     'utilizou_tecnicas_amostrais': (value: ) | <mandatory>, <options>,\r\n     'observacao_tecnica_amostral': (value: ) | <mandatory>}\r\n\r\nNesse caso as chaves s\u00e3o os nomes dos campos e os valores s\u00e3o os objetos\r\nque modelam o campo. Ao mostrar ou imprimir o dicion\u00e1rio, como mostrado\r\nacima, \u00e9 impresso o valor atual do campo entre par\u00eanteses.\r\n\r\n    'tipo_de_inspecao': (value: Uso do Espectro - N\u00e3o Outorgado) | <mandatory>, <options>, conditional\r\n\r\nSeparado pela barra vertical s\u00e3o mostrados alguns atributos do campo:\r\n\r\n- `<mandatory>` Atributo booleano indicando se o campo \u00e9 obrigat\u00f3rio;\r\n- `<multiple>` Atributo booleano. `False`: Campo de valor \u00fanico. `True`\r\n  Campo aceita mais de um valor e por conseguinte deve ser fornecido uma\r\n  lista em vez de um valor at\u00f4mico ( `int`, `float`, `str` );\r\n- `<options>` Atributo do tipo lista. Quando presente sinaliza que o\r\n  campo \u00e9 restrito e s\u00f3 aceita valores pr\u00e9-definidos;\r\n- `conditional` Esse n\u00e3o \u00e9 um atributo, somente um sinalizador indicando\r\n  que o campo \u00e9 condicional e para dado valor preenchido neste campo,\r\n  ficam dispon\u00edveis outros campos, estes podem ser obrigat\u00f3rios e\r\n  inclusive condicionais.\r\n\r\nO valor em si do campo \u00e9 guardado no atributo `value`, acessado atrav\u00e9s\r\nda nota\u00e7\u00e3o de ponto\r\n\r\n``` python\r\nissue.editable_fields['tipo_de_inspecao'].value\r\n```\r\n\r\n    'Outorga - Aspectos n\u00e3o T\u00e9cnicos'\r\n\r\n### Campos Obrigat\u00f3rios e Condicionais\r\n\r\nOs dois m\u00e9todos a seguir filtram, dentre os campos edit\u00e1veis, os campos\r\nobrigat\u00f3rio e condicionais:\r\n\r\n``` python\r\nissue.mandatory_fields()\r\n```\r\n\r\n    {'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\r\n     ) | <mandatory>,\r\n     'start_date': (value: 2024-03-01) | <mandatory>,\r\n     'due_date': (value: 2024-05-30) | <mandatory>,\r\n     'tipo_de_inspecao': (value: Outorga - Aspectos n\u00e3o T\u00e9cnicos) | <mandatory>, <options>, conditional,\r\n     'fiscal_responsavel': (value: Eric Magalh\u00e3es Delgado) | <mandatory>, <options>,\r\n     'fiscais': (value: ['Eric Magalh\u00e3es Delgado', 'Ronaldo da Silva Alves Batista']) | <mandatory>, <multiple>, <options>,\r\n     'ufmunicipio': (value: ['MG/Bocaina de Minas', 'AL/Uni\u00e3o dos Palmares']) | <mandatory>, <multiple>, <options>,\r\n     'servicos_da_inspecao': (value: ['099 - RESTRITO - SERVI\u00c7O DE RADIA\u00c7\u00c3O RESTRITA', '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVI\u00c7O REDE TRANSPORTE TELECOMUNICA\u00c7\u00c3O']) | <mandatory>, <multiple>, <options>,\r\n     'situacao_constatada': (value: Irregular) | <mandatory>, <options>,\r\n     'procedimentos': (value: ['An\u00e1lise/coleta de Dados']) | <mandatory>, <multiple>, <options>, conditional,\r\n     'horas_de_preparacao': (value: 1) | <mandatory>,\r\n     'horas_de_deslocamento': (value: 3) | <mandatory>,\r\n     'horas_de_execucao': (value: 29) | <mandatory>,\r\n     'horas_de_conclusao': (value: 2) | <mandatory>,\r\n     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,\r\n     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,\r\n     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional,\r\n     'utilizou_tecnicas_amostrais': (value: Usou t\u00e9cnicas amostrais) | <mandatory>, <options>,\r\n     'observacao_tecnica_amostral': (value: Simula\u00e7\u00e3o com o HTZ) | <mandatory>}\r\n\r\n``` python\r\nissue.conditional_fields()\r\n```\r\n\r\n    {'tipo_de_inspecao': (value: Outorga - Aspectos n\u00e3o T\u00e9cnicos) | <mandatory>, <options>, conditional,\r\n     'procedimentos': (value: ['An\u00e1lise/coleta de Dados']) | <mandatory>, <multiple>, <options>, conditional,\r\n     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,\r\n     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,\r\n     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional}\r\n\r\n> O conjunto de valores para os campos com op\u00e7\u00f5es pr\u00e9-definidas est\u00e3o\r\n> relacionados no atributo `.options`\r\n\r\n``` python\r\nissue.editable_fields['tipo_de_inspecao'].options\r\n```\r\n\r\n    ['',\r\n     'Bloqueio Administrativo',\r\n     'Certifica\u00e7\u00e3o',\r\n     'Medi\u00e7\u00e3o de CEMRF (RNI)',\r\n     'Outorga - Aspectos n\u00e3o T\u00e9cnicos',\r\n     'Outorga - Aspectos T\u00e9cnicos',\r\n     'Uso do Espectro - Interfer\u00eancia',\r\n     'Uso do Espectro - Monitora\u00e7\u00e3o',\r\n     'Uso do Espectro - N\u00e3o Outorgado']\r\n\r\n``` python\r\nissue.editable_fields['procedimentos'].options\r\n```\r\n\r\n    ['Nenhum',\r\n     'Lacra\u00e7\u00e3o',\r\n     'Apreens\u00e3o',\r\n     'Interrup\u00e7\u00e3o',\r\n     'N\u00e3o Cadastrado',\r\n     'Notificado',\r\n     'A Notificar',\r\n     'Libera\u00e7\u00e3o/Desinterrup\u00e7\u00e3o',\r\n     'Orienta\u00e7\u00e3o ao Usu\u00e1rio',\r\n     'Comunicado',\r\n     'Deslacrado',\r\n     'Vistoriado',\r\n     'Emiss\u00e3o Termo Viola\u00e7\u00e3o de Lacre',\r\n     'Apoio a busca e apreens\u00e3o',\r\n     'Investiga\u00e7\u00e3o/Pesquisa',\r\n     'N\u00e3o Lacrado - Impedimento',\r\n     'N\u00e3o Lacrado - Amparo Judicial',\r\n     'N\u00e3o Lacrado - Respons\u00e1vel Ausente',\r\n     'N\u00e3o Lacrado - Local Fechado',\r\n     'Constata\u00e7\u00e3o Viola\u00e7\u00e3o Lacre/Relacrado',\r\n     'Constata\u00e7\u00e3o Viola\u00e7\u00e3o Lacre/Impedimento',\r\n     'Not\u00edcia Crime',\r\n     'Monitorado alterado',\r\n     'Constata\u00e7\u00e3o Encerramento - Informe',\r\n     'Levantamento de Dados',\r\n     'An\u00e1lise/coleta de Dados',\r\n     'Monitorado',\r\n     'N\u00e3o Lacrado - Desativado',\r\n     'Devolu\u00e7\u00e3o de Produto(s)',\r\n     'Outros']\r\n\r\n## Atualizando os campos edit\u00e1veis da Inspe\u00e7\u00e3o\r\n\r\nDada a exist\u00eancia de campos condicionais, para obtermos todos os campos\r\nedit\u00e1veis para dado tipo de inspe\u00e7\u00e3o, \u00e9 preciso fornecer um dicion\u00e1rio\r\nde dados para que os campos sejam atualizados de acordo com os valores\r\nfornecidos para os campos condicionais.\r\n\r\n``` python\r\ndados = {\r\n    \"tipo_de_inspecao\": \"Certifica\u00e7\u00e3o\",\r\n    \"precisa_reservar_instrumentos\": \"0\",\r\n    \"utilizou_algum_instrumento\": \"0\",\r\n    \"procedimentos\": \"Lacra\u00e7\u00e3o\",\r\n}\r\n```\r\n\r\nA atualiza\u00e7\u00e3o dos campos \u00e9 feita passando o dicion\u00e1rio para o m\u00e9todo\r\n`update_fields`.\r\n\r\n``` python\r\nissue.update_fields(dados)\r\n```\r\n\r\nDepois de atualizado os campos com o m\u00e9todo acima, checamos novamente o\r\natributo `editable_fields`\r\n\r\n``` python\r\nissue.editable_fields\r\n```\r\n\r\n    {'status': (value: Relatando),\r\n     'description': (value: [PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\r\n     ) | <mandatory>,\r\n     'start_date': (value: 2024-03-01) | <mandatory>,\r\n     'due_date': (value: 2024-05-30) | <mandatory>,\r\n     'tipo_de_inspecao': (value: Certifica\u00e7\u00e3o) | <mandatory>, <options>, conditional,\r\n     'fiscal_responsavel': (value: Eric Magalh\u00e3es Delgado) | <mandatory>, <options>,\r\n     'fiscais': (value: ['Eric Magalh\u00e3es Delgado', 'Ronaldo da Silva Alves Batista']) | <mandatory>, <multiple>, <options>,\r\n     'entidade_da_inspecao': (value: []), <multiple>,\r\n     'ufmunicipio': (value: ['MG/Bocaina de Minas', 'AL/Uni\u00e3o dos Palmares']) | <mandatory>, <multiple>, <options>,\r\n     'servicos_da_inspecao': (value: ['099 - RESTRITO - SERVI\u00c7O DE RADIA\u00c7\u00c3O RESTRITA', '032 - COLETIVO - RADIOENLACES ASSOCIADOS AO SERVI\u00c7O REDE TRANSPORTE TELECOMUNICA\u00c7\u00c3O']) | <mandatory>, <multiple>, <options>,\r\n     'situacao_constatada': (value: Irregular) | <mandatory>, <options>,\r\n     'procedimentos': (value: ['Lacra\u00e7\u00e3o']) | <mandatory>, <multiple>, <options>, conditional,\r\n     'irregularidade': (value: []), <multiple>, <options>,\r\n     'horas_de_preparacao': (value: 1) | <mandatory>,\r\n     'horas_de_deslocamento': (value: 3) | <mandatory>,\r\n     'horas_de_execucao': (value: 29) | <mandatory>,\r\n     'horas_de_conclusao': (value: 2) | <mandatory>,\r\n     'no_sav': (value: Teste de Quebra\r\n      de linha),\r\n     'no_pcdp': (value: ),\r\n     'pai_instaurado_pela_anatel': (value: Sim) | <mandatory>, <options>, conditional,\r\n     'coordenacao_responsavel': (value: FI2), <options>,\r\n     'numero_do_pai': (value: 123456),\r\n     'agrupamento': (value: ),\r\n     'no_sei_processo_fiscalizacao': ({'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}),\r\n     'precisa_reservar_instrumentos': (value: 0) | <mandatory>, <options>, conditional,\r\n     'utilizou_algum_instrumento': (value: 0) | <mandatory>, <options>, conditional,\r\n     'utilizou_tecnicas_amostrais': (value: Usou t\u00e9cnicas amostrais) | <mandatory>, <options>,\r\n     'observacao_tecnica_amostral': (value: Simula\u00e7\u00e3o com o HTZ) | <mandatory>}\r\n\r\nCaso o conjunto de dados j\u00e1 seja conhecido para dado tipo de inspe\u00e7\u00e3o,\r\nbasta passar o dicion\u00e1rio diretamente para o m\u00e9todo `update`.\r\nInternamente os m\u00e9todos mostrados anteriormente de atualiza\u00e7\u00e3o dos\r\ncampos s\u00e3o chamados.\r\n\r\n## Exemplo completo\r\n\r\nO dicion\u00e1rio a seguir cont\u00e9m valores misturados de diversos tipos de\r\ninspe\u00e7\u00e3o distintos, al\u00e9m de valores aleatorizados. A API simplesmente\r\nfiltra os valores que se aplicam para o tipo de inspe\u00e7\u00e3o solicitada e o\r\nvalor do dado fornecido para os campos condicionais. As demais chaves\r\nque n\u00e3o se aplicam s\u00e3o ignoradas.\r\n\r\n<details class=\"code-fold\">\r\n<summary>Code</summary>\r\n\r\n``` python\r\ndados = {\r\n    \"endereco_da_inspecao\": \"Rua Machado de Assis, 27 - Morro Grande, Rio de Janeiro - RJ\",\r\n    \"campo_eletrico__pico_vm\": randint(50, 100),\r\n    \"campo_eletrico_rms_vm\": randint(20, 100),\r\n    \"coordenacao_responsavel\": \"FI2\",\r\n    \"cnpjcpf_da_entidade\": \"27865757000102\",\r\n    \"entidade_com_cadastro_stel\": \"N\u00e3o\",\r\n    \"entidade_outorgada\": randint(0, 1),\r\n    \"esta_em_operacao\": randint(0, 1),\r\n    \"numero_da_estacao\": \"1493671\",\r\n    \"fiscais\": [\"Eric Magalh\u00e3es Delgado\", \"Ronaldo da Silva Alves Batista\"],\r\n    \"fiscal_responsavel\": \"Eric Magalh\u00e3es Delgado\",\r\n    \"foi_constatada_interferencia\": randint(0, 1),\r\n    \"frequencia_inicial\": randint(70, 110),\r\n    \"frequencia_final\": randint(110, 117),\r\n    \"gerar_relatorio\": randint(0, 1),\r\n    \"gerar_plai\": randint(0, 1),\r\n    \"tipo_do_processo_plai\": random.choice(FIELDS[\"tipo_do_processo_plai\"].options),\r\n    \"coord_fi_plai\": random.choice(FIELDS[\"coord_fi_plai\"].options),\r\n    \"html_path\": \"/mnt/c/Users/rsilva/code/fiscaliza/tests/Report_2024.02.18_T11.30.55_123456.html\",\r\n    \"uploads\": [\r\n        {\r\n            \"path\": \"/mnt/c/Users/code/fiscaliza/tests/Report_2024.02.18_T11.30.55_123456.json\",\r\n            \"filename\": \"Info.json\",\r\n        }\r\n    ],\r\n    \"identificada_a_origem\": str(randint(0, 1)),\r\n    \"unidade_da_frequencia_final\": \"MHz\",\r\n    \"unidade_da_frequencia_inicial\": \"MHz\",\r\n    \"horas_de_conclusao\": randint(1, 8),\r\n    \"horas_de_deslocamento\": randint(1, 8),\r\n    \"horas_de_execucao\": randint(8, 40),\r\n    \"horas_de_preparacao\": randint(1, 8),\r\n    \"houve_obice\": random.randint(0, 1),\r\n    \"houve_interferencia\": random.choice([\"Sim\", \"N\u00e3o\"]),\r\n    \"latitude_coordenadas\": -randint(0, 33),\r\n    \"longitude_coordenadas\": -randint(34, 73),\r\n    \"latitude_da_estacao\": -randint(0, 33),\r\n    \"longitude_da_estacao\": -randint(34, 73),\r\n    \"nome_da_entidade\": \"Globo S/A\",\r\n    \"numero_do_pai\": \"123456\",\r\n    \"observacao_tecnica_amostral\": \"Simula\u00e7\u00e3o com o HTZ\",\r\n    \"pai_instaurado_pela_anatel\": random.choice([\"Sim\", \"N\u00e3o\"]),\r\n    \"precisa_reservar_instrumentos\": \"0\",  #\r\n    \"procedimentos\": random.choices(FIELDS[\"procedimentos\"].options, k=2),  #\r\n    \"qnt_produt_lacradosapreend\": \"0\",\r\n    \"reserva_de_instrumentos\": \"0\",\r\n    \"no_sav\": \"Teste de Quebra\\n de linha\",\r\n    \"documento_instaurador_do_pado\": \"0201235\\n0201239\\n0201237\",\r\n    \"no_do_lacre\": \"50\",\r\n    \"motivo_de_lai\": random.choice(FIELDS[\"motivo_de_lai\"].options),\r\n    \"no_sei_do_aviso_lai\": \"\",\r\n    \"sanada_ou_mitigada\": random.choice([\"0\", \"1\"]),\r\n    \"servicos_da_inspecao\": random.choices(list(SERVICOS.values()), k=2),\r\n    \"situacao_constatada\": \"Irregular\",\r\n    \"situacao_de_risco_a_vida\": \"Sim\",\r\n    \"tipo_de_inspecao\": random.choice(FIELDS[\"tipo_de_inspecao\"].options),\r\n    \"ufmunicipio\": random.choices(MUNICIPIOS, k=2),\r\n    \"uso_de_produto_homologado\": random.choice([\"0\", \"1\"]),\r\n    \"utilizou_algum_instrumento\": \"0\",\r\n    \"utilizou_apoio_policial\": random.choice(FIELDS[\"utilizou_apoio_policial\"].options),\r\n    \"utilizou_tecnicas_amostrais\": random.choice(\r\n        FIELDS[\"utilizou_tecnicas_amostrais\"].options\r\n    ),\r\n    \"description\": \"[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n\",\r\n    \"start_date\": \"2024-03-01\",\r\n    \"due_date\": \"2024-05-30\",\r\n}\r\n```\r\n\r\n</details>\r\n\r\n``` python\r\nissue.update(dados)\r\n```\r\n\r\n    ValueError: Arquivo C:\\Users\\rsilva\\code\\fiscaliza\\tests\\Report_2024.02.18_T11.30.55_123456.json n\u00e3o existe ou n\u00e3o \u00e9 um arquivo\r\n    \u001b[0;31m---------------------------------------------------------------------------\u001b[0m\r\n    \u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)\r\n    Cell \u001b[0;32mIn[18], line 1\u001b[0m\r\n    \u001b[0;32m----> 1\u001b[0m \u001b[43missue\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupdate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdados\u001b[49m\u001b[43m)\u001b[49m\r\n\r\n    File \u001b[0;32m~/anatel/fiscaliza/fiscaliza/main.py:577\u001b[0m, in \u001b[0;36mIssue.update\u001b[0;34m(self, dados)\u001b[0m\r\n    \u001b[1;32m    575\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient\u001b[38;5;241m.\u001b[39missue\u001b[38;5;241m.\u001b[39mupdate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mid, status_id\u001b[38;5;241m=\u001b[39mstatus_id, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdata)\r\n    \u001b[1;32m    576\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\r\n    \u001b[0;32m--> 577\u001b[0m     data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parse_value_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdados\u001b[49m\u001b[43m)\u001b[49m\r\n    \u001b[1;32m    578\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient\u001b[38;5;241m.\u001b[39missue\u001b[38;5;241m.\u001b[39mupdate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mid, status_id\u001b[38;5;241m=\u001b[39mstatus_id, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdata)\r\n    \u001b[1;32m    579\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAtualizado para o status \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnew_status\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\r\n\r\n    File \u001b[0;32m~/anatel/fiscaliza/fiscaliza/main.py:539\u001b[0m, in \u001b[0;36mIssue._parse_value_dict\u001b[0;34m(self, dados)\u001b[0m\r\n    \u001b[1;32m    537\u001b[0m data \u001b[38;5;241m=\u001b[39m {k: editable_fields[k](v) \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m data\u001b[38;5;241m.\u001b[39mitems()}\r\n    \u001b[1;32m    538\u001b[0m submitted_fields \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcustom_fields\u001b[39m\u001b[38;5;124m\"\u001b[39m: []}\r\n    \u001b[0;32m--> 539\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m uploads \u001b[38;5;241m:=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_uploads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdados\u001b[49m\u001b[43m)\u001b[49m:\r\n    \u001b[1;32m    540\u001b[0m     submitted_fields[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124muploads\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m uploads\r\n    \u001b[1;32m    541\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, value \u001b[38;5;129;01min\u001b[39;00m data\u001b[38;5;241m.\u001b[39mitems():\r\n\r\n    File \u001b[0;32m~/anatel/fiscaliza/fiscaliza/main.py:517\u001b[0m, in \u001b[0;36mIssue._check_uploads\u001b[0;34m(self, dados)\u001b[0m\r\n    \u001b[1;32m    515\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m (path \u001b[38;5;241m:=\u001b[39m file\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpath\u001b[39m\u001b[38;5;124m\"\u001b[39m)) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\r\n    \u001b[1;32m    516\u001b[0m             \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m Path(path)\u001b[38;5;241m.\u001b[39mis_file():\r\n    \u001b[0;32m--> 517\u001b[0m                 \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\r\n    \u001b[1;32m    518\u001b[0m                     \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mArquivo \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m n\u00e3o existe ou n\u00e3o \u00e9 um arquivo\u001b[39m\u001b[38;5;124m\"\u001b[39m\r\n    \u001b[1;32m    519\u001b[0m                 )\r\n    \u001b[1;32m    520\u001b[0m             uploads\u001b[38;5;241m.\u001b[39mappend(file)\r\n    \u001b[1;32m    521\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m uploads\r\n\r\n    \u001b[0;31mValueError\u001b[0m: Arquivo C:\\Users\\rsilva\\code\\fiscaliza\\tests\\Report_2024.02.18_T11.30.55_123456.json n\u00e3o existe ou n\u00e3o \u00e9 um arquivo\r\n\r\n## Gerar Relat\u00f3rio de Atividades\r\n\r\nPara as inspe\u00e7\u00f5es de `Certifica\u00e7\u00e3o` e `Uso do Espectro - Monitora\u00e7\u00e3o` \u00e9\r\nposs\u00edvel gerar o relat\u00f3rio de atividades no SEI por meio do Fiscaliza,\r\npara tal basta fornecer o valor:\r\n\r\n    dados['gerar_relat\u00f3rio'] = '1'\r\n\r\n``` python\r\ndados['gerar_relatorio'] = '1'\r\nissue.update(dados)\r\n```\r\n\r\n    Atualizado para o status Relatando\r\n\r\n``` python\r\nissue.attrs\r\n```\r\n\r\n    {'acao': {'type': 'acao_de_inspecao',\r\n      'status': 'Em andamento',\r\n      'name': 'ACAO_GR08_2024_0014',\r\n      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n'},\r\n     'agrupamento': '',\r\n     'allowed_statuses': '',\r\n     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json'],\r\n     'ano_de_execucao': 2024,\r\n     'app_fiscaliza': 0,\r\n     'assigned_to': 'Eric Magalh\u00e3es Delgado',\r\n     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 \u00e0s 05:03:48',\r\n     'author': 'Eric Magalh\u00e3es Delgado',\r\n     'changesets': '',\r\n     'children': '',\r\n     'classe_da_inspecao': 'T\u00e9cnica',\r\n     'closed_on': '',\r\n     'coordenacao_responsavel': 'FI2',\r\n     'created_on': '2024-04-18T12:38:03Z',\r\n     'data_de_inicio_efetivo': '2024-07-25',\r\n     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n',\r\n     'done_ratio': 0,\r\n     'due_date': '2024-05-30',\r\n     'entidade_da_inspecao': [],\r\n     'estimated_hours': '',\r\n     'fiscais': ['Eric Magalh\u00e3es Delgado', 'Ronaldo da Silva Alves Batista'],\r\n     'fiscal_responsavel': 'Eric Magalh\u00e3es Delgado',\r\n     'horas_de_conclusao': 4,\r\n     'horas_de_deslocamento': 3,\r\n     'horas_de_execucao': 11,\r\n     'horas_de_preparacao': 2,\r\n     'id': 124182,\r\n     'irregularidade': [],\r\n     'is_private': False,\r\n     'membros': ['Gilmar Ferreira do Nascimento',\r\n      'Luis Fernando Camelier de Queiroz',\r\n      'Michel Kulhavy Cerqueira',\r\n      'Iulo de Ara\u00fajo Lima Lobo',\r\n      'Carlos Fernando Muniz Santos',\r\n      'Isabel Cristina Cruz Soares e Souza',\r\n      'Alessandro Vasconcelos Fernandes',\r\n      'Anecy Oliveira de Freitas',\r\n      'Wilton Machado de Oliveira',\r\n      'Ilva Perla Monteiro Ferreira',\r\n      'Lin Yu Wan',\r\n      'Alexnaldo Cerqueira da Silva',\r\n      'Jorgean Ferreira Leal',\r\n      'Jos\u00e9 Mauricio Leite Ara\u00fajo',\r\n      'Arildo Oliva Franca Filho',\r\n      'Leonardo Lago Ara\u00fajo',\r\n      'Brasilio Rios Leite',\r\n      'Fiscal UD',\r\n      'Jos\u00e9 Ivan Gomes',\r\n      'Jaqueline Cesario da Silva',\r\n      'Eric Magalh\u00e3es Delgado',\r\n      'Ronaldo da Silva Alves Batista'],\r\n     'motivo_de_lai': ['Interfer\u00eancia prejudicial'],\r\n     'no_fiscaliza_issue': {'numero': '124182',\r\n      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},\r\n     'no_pcdp': '',\r\n     'no_sav': 'Teste de Quebra\\n de linha',\r\n     'no_sei_do_aviso_lai': '',\r\n     'no_sei_do_plaiguarda': '',\r\n     'no_sei_processo_fiscalizacao': \"{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}\",\r\n     'numero_do_pai': 123456,\r\n     'observacao_tecnica_amostral': 'Simula\u00e7\u00e3o com o HTZ',\r\n     'pai_instaurado_pela_anatel': 'Sim',\r\n     'precisa_reservar_instrumentos': 0,\r\n     'priority': 'Normal',\r\n     'procedimentos': ['Emiss\u00e3o Termo Viola\u00e7\u00e3o de Lacre', 'Interrup\u00e7\u00e3o'],\r\n     'project': 'GR08',\r\n     'servicos_da_inspecao': ['729 - COLETIVO - TV A CABO',\r\n      '507 - RESTRITO - M\u00d3VEL AERON\u00c1UTICO'],\r\n     'situacao_constatada': 'Irregular',\r\n     'spent_hours': 0.0,\r\n     'start_date': '2024-03-01',\r\n     'status': 'Relatando',\r\n     'subject': 'INSP_GR08_2024_0147',\r\n     'subtema': ['Radiomonitora\u00e7\u00e3o Terrestre'],\r\n     'tema': ['Uso do Espectro'],\r\n     'time_entries': '',\r\n     'tipo_de_inspecao': 'Outorga - Aspectos n\u00e3o T\u00e9cnicos',\r\n     'total_de_horas': 20.0,\r\n     'total_estimated_hours': '',\r\n     'total_spent_hours': 0.0,\r\n     'tracker': 'Atividade de Inspe\u00e7\u00e3o',\r\n     'ufmunicipio': ['MG/Baldim', 'PA/S\u00e3o Jo\u00e3o da Ponta'],\r\n     'updated_on': '2024-07-25T08:03:48Z',\r\n     'utilizou_algum_instrumento': 0,\r\n     'utilizou_tecnicas_amostrais': 'Usou t\u00e9cnicas amostrais',\r\n     'watchers': ''}\r\n\r\n> Para substituir o relat\u00f3rio de atividades, basta refazer a chamada\r\n> fornecendo o valor `1` para a chave `gerar_relatorio`.\r\n\r\n``` python\r\ndados[\"gerar_relatorio\"] = \"1\"\r\nissue.update(dados)\r\n```\r\n\r\n    Atualizado para o status Relatando\r\n\r\n``` python\r\nissue.attrs\r\n```\r\n\r\n    {'acao': {'type': 'acao_de_inspecao',\r\n      'status': 'Em andamento',\r\n      'name': 'ACAO_GR08_2024_0014',\r\n      'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n'},\r\n     'agrupamento': '',\r\n     'allowed_statuses': '',\r\n     'anexos': ['https://sistemasnethm/fiscaliza/attachments/download/9190/Info.json'],\r\n     'ano_de_execucao': 2024,\r\n     'app_fiscaliza': 0,\r\n     'assigned_to': 'Eric Magalh\u00e3es Delgado',\r\n     'atualizacao': 'Atualizada por Ronaldo da Silva Alves Batista em 25/07/2024 \u00e0s 05:03:48',\r\n     'author': 'Eric Magalh\u00e3es Delgado',\r\n     'changesets': '',\r\n     'children': '',\r\n     'classe_da_inspecao': 'T\u00e9cnica',\r\n     'closed_on': '',\r\n     'coordenacao_responsavel': 'FI2',\r\n     'created_on': '2024-04-18T12:38:03Z',\r\n     'data_de_inicio_efetivo': '2024-07-25',\r\n     'description': '[PMEC 2024 Etapa 2] Monitorar canais e faixas de frequ\u00eancias relacionados \u00e0s aplica\u00e7\u00f5es cr\u00edticas (como, por exemplo, radionavega\u00e7\u00e3o e radiocomunica\u00e7\u00e3o aeron\u00e1utica e canais de emerg\u00eancia) na forma a ser estabelecida no Plano de A\u00e7\u00e3o de Fiscaliza\u00e7\u00e3o.\\r\\n',\r\n     'done_ratio': 0,\r\n     'due_date': '2024-05-30',\r\n     'entidade_da_inspecao': [],\r\n     'estimated_hours': '',\r\n     'fiscais': ['Eric Magalh\u00e3es Delgado', 'Ronaldo da Silva Alves Batista'],\r\n     'fiscal_responsavel': 'Eric Magalh\u00e3es Delgado',\r\n     'horas_de_conclusao': 4,\r\n     'horas_de_deslocamento': 3,\r\n     'horas_de_execucao': 11,\r\n     'horas_de_preparacao': 2,\r\n     'id': 124182,\r\n     'irregularidade': [],\r\n     'is_private': False,\r\n     'membros': ['Gilmar Ferreira do Nascimento',\r\n      'Luis Fernando Camelier de Queiroz',\r\n      'Michel Kulhavy Cerqueira',\r\n      'Iulo de Ara\u00fajo Lima Lobo',\r\n      'Carlos Fernando Muniz Santos',\r\n      'Isabel Cristina Cruz Soares e Souza',\r\n      'Alessandro Vasconcelos Fernandes',\r\n      'Anecy Oliveira de Freitas',\r\n      'Wilton Machado de Oliveira',\r\n      'Ilva Perla Monteiro Ferreira',\r\n      'Lin Yu Wan',\r\n      'Alexnaldo Cerqueira da Silva',\r\n      'Jorgean Ferreira Leal',\r\n      'Jos\u00e9 Mauricio Leite Ara\u00fajo',\r\n      'Arildo Oliva Franca Filho',\r\n      'Leonardo Lago Ara\u00fajo',\r\n      'Brasilio Rios Leite',\r\n      'Fiscal UD',\r\n      'Jos\u00e9 Ivan Gomes',\r\n      'Jaqueline Cesario da Silva',\r\n      'Eric Magalh\u00e3es Delgado',\r\n      'Ronaldo da Silva Alves Batista'],\r\n     'motivo_de_lai': ['Interfer\u00eancia prejudicial'],\r\n     'no_fiscaliza_issue': {'numero': '124182',\r\n      'link_acesso': 'https://sistemasnethm/fiscaliza/issues/124182'},\r\n     'no_pcdp': '',\r\n     'no_sav': 'Teste de Quebra\\n de linha',\r\n     'no_sei_do_aviso_lai': '',\r\n     'no_sei_do_plaiguarda': '',\r\n     'no_sei_processo_fiscalizacao': \"{'numero': '53554.000005/2024-18', 'link_acesso': 'https://seihm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1982134'}\",\r\n     'numero_do_pai': 123456,\r\n     'observacao_tecnica_amostral': 'Simula\u00e7\u00e3o com o HTZ',\r\n     'pai_instaurado_pela_anatel': 'Sim',\r\n     'precisa_reservar_instrumentos': 0,\r\n     'priority': 'Normal',\r\n     'procedimentos': ['Emiss\u00e3o Termo Viola\u00e7\u00e3o de Lacre', 'Interrup\u00e7\u00e3o'],\r\n     'project': 'GR08',\r\n     'servicos_da_inspecao': ['729 - COLETIVO - TV A CABO',\r\n      '507 - RESTRITO - M\u00d3VEL AERON\u00c1UTICO'],\r\n     'situacao_constatada': 'Irregular',\r\n     'spent_hours': 0.0,\r\n     'start_date': '2024-03-01',\r\n     'status': 'Relatando',\r\n     'subject': 'INSP_GR08_2024_0147',\r\n     'subtema': ['Radiomonitora\u00e7\u00e3o Terrestre'],\r\n     'tema': ['Uso do Espectro'],\r\n     'time_entries': '',\r\n     'tipo_de_inspecao': 'Outorga - Aspectos n\u00e3o T\u00e9cnicos',\r\n     'total_de_horas': 20.0,\r\n     'total_estimated_hours': '',\r\n     'total_spent_hours': 0.0,\r\n     'tracker': 'Atividade de Inspe\u00e7\u00e3o',\r\n     'ufmunicipio': ['MG/Baldim', 'PA/S\u00e3o Jo\u00e3o da Ponta'],\r\n     'updated_on': '2024-07-25T08:04:01Z',\r\n     'utilizou_algum_instrumento': 0,\r\n     'utilizou_tecnicas_amostrais': 'Usou t\u00e9cnicas amostrais',\r\n     'watchers': ''}\r\n\r\n> Caso o intuito seja somente editar o campo `Relat\u00f3rio de Atividades`,\r\n> basta fornecer o valor para a chave `relatorio_de_atividades` e n\u00e3o\r\n> esquecer de fornecer o valor `0` para a chave `gerar_relat\u00f3rio` ou\r\n> simplesmente exclu\u00ed-la.\r\n\r\n``` python\r\ndados['relatorio_de_atividades'] = '0206885'\r\ndados['gerar_relatorio'] = '0'\r\nissue.update(dados)\r\n```\r\n\r\n    Atualizado para o status Relatando\r\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "Implementa\u00e7\u00e3o de API python a inst\u00e2ncia do Redmine da Anatel: Fiscaliza",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/InovaFiscaliza/fiscaliza"
    },
    "split_keywords": [
        "nbdev",
        "jupyter",
        "notebook",
        "python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d3cb8ef03defc6fe5e478dc6b0c720ad24b0cc4468d72d1fd7aeda4425d4bfa",
                "md5": "f242571a71c8ab6bb13298977d269926",
                "sha256": "7a96f7beb5a255cd965affcd249f9a3cdc126c69e38b39315e06f5a7b4a24f1d"
            },
            "downloads": -1,
            "filename": "fiscaliza-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f242571a71c8ab6bb13298977d269926",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 62291,
            "upload_time": "2024-08-10T02:29:21",
            "upload_time_iso_8601": "2024-08-10T02:29:21.273537Z",
            "url": "https://files.pythonhosted.org/packages/4d/3c/b8ef03defc6fe5e478dc6b0c720ad24b0cc4468d72d1fd7aeda4425d4bfa/fiscaliza-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c743452c5d16ad9607daab2ce7256c72f9b9e0100e473842ed13dd09ccd8e97",
                "md5": "020c932e70711eac41fcdea6b03009e8",
                "sha256": "9b683f76b91cff304cc8dd3f6f2f6fd612d3045c5eaefba30aeeca3339e38edb"
            },
            "downloads": -1,
            "filename": "fiscaliza-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "020c932e70711eac41fcdea6b03009e8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 75560,
            "upload_time": "2024-08-10T02:29:24",
            "upload_time_iso_8601": "2024-08-10T02:29:24.919899Z",
            "url": "https://files.pythonhosted.org/packages/4c/74/3452c5d16ad9607daab2ce7256c72f9b9e0100e473842ed13dd09ccd8e97/fiscaliza-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-10 02:29:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "InovaFiscaliza",
    "github_project": "fiscaliza",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "fiscaliza"
}
        
Elapsed time: 0.26863s