Skip to main content

Essa biblioteca utiliza a API do Redmine para extrair informações da plataforma Fiscaliza da Anatel e atualizar inspeções

Project description

Fiscaliza

Scripts para baixar informações sobre inspeções no Sistema Fiscaliza da Anatel e atualizar inspeções por meio da API do Redmine.

from nbdev.showdoc import show_doc
from getpass import getuser, getpass
from fiscaliza.redmine import detalhar_inspecao, validar_dicionario, relatar_inspecao
from rich.console import Console
console = Console()

Instalação

Como boa prática é sugerido a criação de um ambiente virtual para encapsular o ambiente python no qual você irá instalar a biblioteca

Utilizando o conda:

conda create -n fiscaliza python=3.8
conda activate fiscaliza
python -m pip install fiscaliza

Utilizando somente python:

Windows

python -m venv <pasta onde criar o ambiente virtual>
<pasta onde criou o ambiente virtual>\Scripts\activate.bat
python -m pip install fiscaliza

Linux:

python -m venv <pasta onde criar o ambiente virtual>
source <pasta onde criou o ambiente virtual>/Scripts/activate
python -m pip install fiscaliza

Caso não desejar utilizar um ambiente virtual basta rodar: pip install fiscaliza

Como utilizar

O Fiscaliza da Anatel é um sistema web que utiliza a plataforma Redmine. É basicamente um softaware de gerenciamento e atividades.

O Fiscaliza possui 2 módulos para os fiscais utilizarem:

Ambos módulos precisam de um usuário e senha com acesso autorizado, em geral somente servidores da Anatel.

O Escopo desse módulo basicamente está encapsulado em 3 funções básicas:

  • detalhar_inspecao - Retorna as informações do estado atual da Issue ( Inspeção )
  • validar_dicionario - Para dado dicionário de dados, formata-o para a API do Redmine
  • relatar_inspecao - Atualiza e Issue com o dicionário de dados passado

O escopo da terceira função relatar_inspecao possui escopo limitado. Atualmente somente é formatado e relatado Inspeções ( Issue ) to tipo "Uso do Espectro - Monitoração". Essa inspeção é a principal utilizada para as atividades de monitoração da Anatel e foi o que motivou a criação da presente biblioteca. Outras inspeções possuem campos distintos e assim exigem formatação distinta. Versões futuras poderão abarcar o relato de diferentes inspeções.

Detalhar Inspeção

show_doc(detalhar_inspecao)

detalhar_inspecao[source]

> detalhar_inspecao(**`inspecao`**:`str`, **`login`**:`str`=*`None`*, **`senha`**:`str`=*`None`*, **`fiscaliza`**:`Redmine`=*`None`*, **`teste`**:`bool`=*`True`*) Recebe número da inspeção `inspecao`, o login e senha ou opcionalmente objeto Redmine logado `fiscaliza` inspecao: str - Número da Inspeção a ser relatada login: str - Login Anatel do Usuário senha: str - Senha Utilizada nos Sistemas Interativos da fiscaliza: Redmine - Objeto Redmine logado, opcional ao login e senha teste: bool - Caso verdadeiro o Fiscaliza de Teste ( Homologação ) é utilizado

Returns: dict: Retorna um dicionário com a Situação Atual e campos preenchidos da Inspeção

Vamos exemplificar a Inspeção de Teste 57684

login = getuser()
senha = getpass()
inspecao = '57684'
 ··········
detalhes = detalhar_inspecao(inspecao, login, senha)
for k,v in detalhes.items():
    console.print(f'[red]{k} [blue]-> [green]{v}')
id -> 57684
subject -> INSP_GR01_2021_0504
status -> Rascunho
priority -> Normal
start_date -> 
due_date -> 
Classe_da_Inspecao -> 
Tipo_de_Inspecao -> 
Ano -> 2021
Numero_Sei_do_Processo -> {"numero"=>"53504.000007/2021-50", "link_acesso"=>"https://seihm.an
atel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1962455"}
Descricao_da_Inspecao -> 
Fiscal_Responsavel -> 
Fiscais -> []
Entidade_da_Inspecao -> []
UF_Municipio -> []
Servicos_da_Inspecao -> []
Horas_de_Preparacao -> 
Horas_de_Deslocamento -> 
Horas_de_Execucao -> 
Horas_de_Conclusao -> 
SAV -> 
PCDP -> 
Procedimentos -> []
Agrupamento -> 
AppFiscaliza -> 0
id_ACAO -> 52876
nome_ACAO -> ACAO_GR01_2021_0491
descricao_ACAO -> Teste
Users -> ['Alexandre Elias de Andrade Oliveira', 'Alexandre Freitas de Lima', 'Alexandre 
Inacio', 'Alexandre Junzo Hamada', 'Alfredo de Andrade Filho', 'Ananias Pereira', 'Antonio 
Carlos Cardoso de Mello', 'Aparecido Sebastiao da Silva', 'Arthur Pisaruk', 'Carlos Augusto 
de Carvalho', 'Carlos Eduardo Guimaraes Silveira', 'Carlos da Paixao Filho', 'Celio Yukio 
Takahashi', 'Celso Luiz Maximino', 'Diogo Caldeira', 'Ediceu Beraldi', 'Eduardo Narkevicius',
'Elcio Maehara', 'Eustaquio Lages Duarte', 'Fiscal UD', 'Gauber Albuquerque', 'Gilson Ponce 
Ayres Filho', 'Helio Lopes de Carvalho Filho', 'Higor Paz Melo', 'Hugo Santana Lima', 
'Humberto Barbosa Vinagre', 'Jamilson Evangelista', 'Joao Yokoyama', 'Joaquim Miranda', 'José
Antônio S. Sanches', 'Julio Cesar de Assis Santos', 'Kiyotomo Kawamura', 'Laert Calil 
Junior', 'Lannei Vilela Moraes', 'Luis Lagomes', 'Luiz Vinicios Mielniczuk Seelig', 'Marcelo 
Augusto Scacabarozi', 'Marcio Costa', 'Marcio Rodrigues Maciel', 'Marcos Antônio Rodrigues', 
'Marcos Juliano Valim da Silva', 'Maria Teresa Flosi Garrafa', 'Mario Augusto Volpini', 
'Murilo Amaro', 'Osnir Lopes', 'Paulo Diogo Costa', 'Pedro Arai', 'Renato Sadao Kushioyada', 
'Ricardo Santos Marques', 'Ricardo da Silva e Souza', 'Roberto Carlos Soares Campos', 
'Roberto Ferreira dos Santos', 'Roberto Takata', 'Rodrigo Barbosa de Paula', 'Rogerio 
Zambotto', 'Ronaldo da Silva Alves Batista', 'Sergio Pereira', 'Thiago Silva', 'Thomaz Honma 
Ishida', 'Vinicius Paiva de Oliveira', 'Vitor Zelada', 'Wellington Devechi Piauilino', 
'Wladimir Senise', 'marcio colazingari']

Agora vamos testar o retorno de informações para um Inspeção no Fiscaliza de produção teste=False.

inspecao = '51804'
detalhes = detalhar_inspecao(inspecao, login, senha, teste=False)
for k,v in detalhes.items():
    console.print(f'[blue]{k} [red]-> [green]{v}')
id -> 51804
subject -> INSP_GR01_2021_0449
status -> Conferida
priority -> Normal
start_date -> 2020-10-22
due_date -> 2021-03-31
Classe_da_Inspecao -> Técnica
Tipo_de_Inspecao -> Uso do Espectro - Monitoração
Ano -> 2021
178 -> 
Numero_Sei_do_Processo -> {"numero"=>"53504.006733/2020-03", "link_acesso"=>"https://sei.anat
el.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=6892566"}
Descricao_da_Inspecao -> Atendimento da Denúncia AC202010213075425 (6104512), verificação da 
Potência e Intensidade de Campo Elétrico da Frequência 105.1MHz e seus harmônicos, além da 
checagem de Intermodulação e Espúrios nas frequências 450.3MHz e 750MHz.
Fiscal_Responsavel -> Ronaldo da Silva Alves Batista
Fiscais -> ['Ronaldo da Silva Alves Batista']
Entidade_da_Inspecao -> ['{"valor":"30913990000110","texto":"SISTEMA TRANSRIO DE COMUNICACAO 
LTDA  (30913990000110)"}']
UF_Municipio -> ['RJ/Rio de Janeiro']
Servicos_da_Inspecao -> ['230 - COLETIVO - RADIODIFUSÃO SONORA EM FREQÜÊNCIA MODULADA']
Qnt_de_emissoes_na_faixa -> 1
Emissoes_nao_autorizadas -> 0
Horas_de_Preparacao -> 2
Horas_de_Deslocamento -> 0
Horas_de_Execucao -> 32
Horas_de_Conclusao -> 6
SAV -> 
PCDP -> 
Procedimentos -> []
Latitude (coordenadas) -> -22.94694
Longitude (coordenadas) -> -43.21944
Uso_de_PF -> Não se aplica PF - uso apenas de formulários
Acao_de_risco_a_vida_criada -> Não
Frequencia_Inicial -> 105.1
Unidade_da_Frequencia_Inicial -> MHz
Frequencia_Final -> 750
Unidade_da_Frequencia_Final -> MHz
Agrupamento -> 
AppFiscaliza -> 0
596 -> 
598 -> 
id_ACAO -> 51803
nome_ACAO -> ACAO_GR01_2021_0456
descricao_ACAO -> Atendimento à Denúncia AC202010213075425 (6104512)
Users -> ['Alexandre Elias de Andrade Oliveira', 'Alexandre Freitas de Lima', 'Alexandre 
Inacio', 'Alexandre Junzo Hamada', 'Alfredo de Andrade Filho', 'Ananias Pereira', 'Antonio 
Carlos Cardoso de Mello', 'Aparecido Sebastiao da Silva', 'Arthur Pisaruk', 'Carlos Augusto 
de Carvalho', 'Carlos Eduardo Guimaraes Silveira', 'Carlos da Paixao Filho', 'Celio Yukio 
Takahashi', 'Celso Luiz Maximino', 'Diogo Caldeira', 'Ediceu Beraldi', 'Eduardo Narkevicius',
'Elcio Maehara', 'Eustaquio Lages Duarte', 'Fiscal UD', 'Gauber Albuquerque', 'Gilson Ponce 
Ayres Filho', 'Helio Lopes de Carvalho Filho', 'Higor da Paz Melo', 'Hugo Santana Lima', 
'Humberto Barbosa Vinagre', 'Jamilson Evangelista', 'Joao Yokoyama', 'Joaquim Miranda', 'José
Antônio S. Sanches', 'Julio Cesar de Assis Santos', 'Kiyotomo Kawamura', 'Laert Calil 
Junior', 'Lannei Vilela Moraes', 'Luis Lagomes', 'Luiz Vinicios Mielniczuk Seelig', 'Marcelo 
Augusto Scacabarozi', 'Marcelo Vaz Netto', 'Marcio Colazingari', 'Marcio Costa', 'Marcio 
Rodrigues Maciel', 'Marcos Antônio Rodrigues', 'Marcos Juliano Valim da Silva', 'Maria Teresa
Flosi Garrafa', 'Mario Augusto Volpini', 'Murilo Amaro', 'Osnir Lopes', 'Paulo Diogo Costa', 
'Pedro Arai', 'Renato Sadao Kushioyada', 'Ricardo Santos Marques', 'Ricardo da Silva e 
Souza', 'Roberto Carlos Soares Campos', 'Roberto Ferreira dos Santos', 'Roberto Takata', 
'Rodrigo Barbosa de Paula', 'Rogerio Zambotto', 'Ronaldo da Silva Alves Batista', 'Sergio 
Pereira', 'Thiago Silva', 'Thomaz Honma Ishida', 'Vinicius Paiva de Oliveira', 'Vitor 
Zelada', 'Wellington Devechi Piauilino', 'Wladimir Senise']

Validação de Dados e Formatação para submeter à API

A função anterior somente retorna as informações já constantes em dada Inspeção ( Issue ) do Fiscaliza. Para alterarmos ou atualizarmos dada inspeção, precisamos passar um dicionário de dados ou um caminho para um arquivo .json onde conste esse dicionário de dados serializado. O exemplo seguinte mostra um dicionário de dados com as informações básicas constantes de uma monitoração e a formatação que elas são validadas:

d = {}

d['Classe_da_Inspecao'] = 'Técnica' # str

d['Tipo_de_Inspecao'] = 'Uso do Espectro - Monitoração' #str

d['Descricao_da_Inspecao'] = '''Atendimento da Denúncia AC202010213075425 (6104512), 
verificação da Potência e Intensidade de Campo Elétrico da Frequência 105.1MHz e seus harmônicos, 
além da checagem de Intermodulação e Espúrios nas frequências 450.3MHz e 750MHz.''' #str

d['Fiscal_Responsavel'] = 'Ronaldo da Silva Alves Batista' #str

d['Fiscais'] = ['Ronaldo da Silva Alves Batista', 'Paulo Diogo Costa', 'Mario Augusto Volpini'] #string ou lista de strings

# Windows
d['Html'] = 'D:\\OneDrive - ANATEL\\Monitoramento\\Processos\\53504.0005432021-55\\Guarulhos.html' #str

#ou 

#Unix d['Html'] = '/d/OneDrive - ANATEL/Monitoramento/53504.0005432021-55/Guarulhos.html' #str

d['Gerar_Relatorio'] = 1 # int 0 ou 1

d['Frequencia_Inicial']  = 54 #int ou float

d['Unidade_da_Frequencia_Inicial'] = 'MHz' #string

d['Frequencia_Final'] = 700 #int ou float

d['Unidade_da_Frequencia_Final'] = 'MHz' #string

d['Data_de_Inicio'] = '2021-03-19' #YYYY-MM-DD #string nesse formato

d['Data_Limite'] = '2021-12-31'  #YYYY-MM-DD #string nesse formato

d['UF_Municipio'] = "SP/São Paulo" # string ou Lista de Strings: ["SP/São Paulo", "SP/Sorocaba"]

d['Servicos_da_Inspecao'] = ['230', '231', '800'] # String ou Lista de Strings

d['Qnt_de_emissoes_na_faixa'] = 12 # int

d['Emissoes_nao_autorizadas'] = 70 # int

d['Horas_de_Preparacao'] = 2 # int

d['Horas_de_Deslocamento'] = 0 # int

d['Horas_de_Execucao'] = 32 # int

d['Horas_de_Conclusao'] = 6 # int

d['Latitude'] = -22.94694 # float

d['Longitude'] = -43.21944 # float

d['Uso_de_PF'] = 'Não se aplica PF - uso apenas de formulários' # string

d['Acao_de_risco_a_vida_criada'] = 'Não' # string Sim | Não

d['Impossibilidade_acesso_online'] = '0' # string '0' | '1'

d['Reservar_Instrumentos'] = '0' #string '0' = Não | '1' = 'Sim'

d['Utilizou_algum_instrumento'] = '0'

#d['Reserva_de_Instrumentos'] = '' 

d['Notes'] = "Não foi constatada irregularidade no Período monitorado" # string

# No caso de uma tabela, string formatada como csv

d['Notes'] = """Faixa, Classe Especial, Classe A, Classe B, Classe C
                VHF-L,0,5,7,5
                VHF-H,0,12,1,0
                UHF,1,1,2,4
                FM,5,1,0,0
                RADCOM,0,0,0,0
                Outorgadas com indícios de irregularidades,1,2,3,4
            """

A API do Redmine possui formatos específicos de como esses campos devem ser submetidos, validar os formatos acima e fazer essa formatação exigida pela API do Redmine é o papel da função validar_dicionario.

show_doc(validar_dicionario)

validar_dicionario[source]

> validar_dicionario(**`data_dict`**:"Dicionário de Dados ou Caminho para o arquivo .json ou .pkl", **`inspecao`**:"Número da Inspeção a ser relatada", **`login`**:"Login Anatel do Usuário"=*`None`*, **`senha`**:"Senha Utilizada nos Sistemas Interativos da Anatel"=*`None`*, **`fiscaliza`**:"Objeto Redmine logado, opcional ao login e senha"=*`None`*, **`teste`**:"Caso verdadeiro o Fiscaliza de Teste ( Homologação ) é utilizado"=*`True`*)
inspecao = '57684'
dados = validar_dicionario(d, inspecao, login, senha)
for k,v in dados.items():
    if k == "Html":
        v = str(v)
        v = v[:100] + '\n...\n' + v[-100:]
    console.print(f'[blue]{k} [red]-> [green]{v}')
Classe_da_Inspecao -> {'id': 89, 'value': '{"valor":"Técnica","texto":"Técnica"}'}
Tipo_de_Inspecao -> {'id': 2, 'value': '{"valor":"Uso do Espectro - Monitoração","texto":"Uso
do Espectro - Monitoração"}'}
Descricao_da_Inspecao -> {'id': 22, 'value': 'Atendimento da Denúncia AC202010213075425 
(6104512), \nverificação da Potência e Intensidade de Campo Elétrico da Frequência 105.1MHz e
seus harmônicos, \nalém da checagem de Intermodulação e Espúrios nas frequências 450.3MHz e 
750MHz.'}
Fiscal_Responsavel -> {'id': 25, 'value': 'Ronaldo da Silva Alves Batista'}
Fiscais -> {'id': 26, 'value': ['Ronaldo da Silva Alves Batista', 'Paulo Diogo Costa', 'Mario
Augusto Volpini']}
Html -> {'id': 537, 'value': '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/
...
nte do exposto, conclui-se este relat&oacute;rio 
de\n\t\tatividades.\n\t</p>\n\n</body>\n\n</html>'}
Gerar_Relatorio -> {'id': 534, 'value': 1}
Frequencia_Inicial -> {'id': 156, 'value': 54}
Unidade_da_Frequencia_Inicial -> {'id': 157, 'value': 'MHz'}
Frequencia_Final -> {'id': 158, 'value': 700}
Unidade_da_Frequencia_Final -> {'id': 159, 'value': 'MHz'}
Data_de_Inicio -> 2021-03-19
Data_Limite -> 2021-12-31
UF_Municipio -> {'id': 31, 'value': ['{"valor":"SP/São Paulo","texto":"SP/São Paulo"}']}
Servicos_da_Inspecao -> {'id': 57, 'value': ['{"valor":"230 - COLETIVO - RADIODIFUSÃO SONORA 
EM FREQÜÊNCIA MODULADA","texto":"230 - COLETIVO - RADIODIFUSÃO SONORA EM FREQÜÊNCIA 
MODULADA"}', '{"valor":"231 - COLETIVO - RADIODIFUSÃO COMUNITÁRIA","texto":"231 - COLETIVO - 
RADIODIFUSÃO COMUNITÁRIA"}', '{"valor":"800 - COLETIVO - RETRANSMISSAO DE T.V.","texto":"800 
- COLETIVO - RETRANSMISSAO DE T.V."}']}
Qnt_de_emissoes_na_faixa -> {'id': 69, 'value': 12}
Emissoes_nao_autorizadas -> {'id': 70, 'value': 70}
Horas_de_Preparacao -> {'id': 91, 'value': 2}
Horas_de_Deslocamento -> {'id': 92, 'value': 0}
Horas_de_Execucao -> {'id': 93, 'value': 32}
Horas_de_Conclusao -> {'id': 94, 'value': 6}
Latitude (coordenadas) -> {'id': 170, 'value': -22.94694}
Longitude (coordenadas) -> {'id': 171, 'value': -43.21944}
Uso_de_PF -> {'id': 151, 'value': 'Não se aplica PF - uso apenas de formulários'}
Acao_de_risco_a_vida_criada -> {'id': 154, 'value': 'Não'}
Impossibilidade_acesso_online -> {'id': 450, 'value': '0'}
Reservar_Instrumentos -> {'id': 658, 'value': '0'}
Utilizou_algum_instrumento -> {'id': 660, 'value': '0'}
Notes -> |_.  Faixa                                      |_.   Classe Especial |_.   Classe A
|_.   Classe B |_.   Classe C |
|<. VHF-L                                       |>.                 0 |>.          5 |>.     
7 |>.          5 |
|<. VHF-H                                       |>.                 0 |>.         12 |>.     
1 |>.          0 |
|<. UHF                                         |>.                 1 |>.          1 |>.     
2 |>.          4 |
|<. FM                                          |>.                 5 |>.          1 |>.     
0 |>.          0 |
|<. RADCOM                                      |>.                 0 |>.          0 |>.     
0 |>.          0 |
|<. Outorgadas com indícios de irregularidades  |>.                 1 |>.          2 |>.     
3 |>.          4 |

Relatar Inspeção

A função a seguir é a mais importante do módulo porque ela de fato altera os dados na plataforma Fiscaliza.

show_doc(relatar_inspecao)

relatar_inspecao[source]

> relatar_inspecao(**`login`**:"Login Anatel do Usuário", **`senha`**:"Senha Utilizada nos Sistemas Interativos da Anatel", **`inspecao`**:"Número da Inspeção a ser relatada", **`dados`**:"Dicionário com os Dados a serem relatados", **`teste`**:"Indica se o relato será de teste"=*`True`*) Relata a inspeção `inspecao` com os dados constantes no dicionário `dados`
inspecao = '57684'
relatar_inspecao(login, senha, inspecao, dados=dados, teste=True)
Usuário Autenticado com Sucesso 👍
Inspeção 57684 vinculada à Ação {'id_ACAO': 52876, 'nome_ACAO': 'ACAO_GR01_2021_0491', 
'descricao_ACAO': 'Teste'}
Estado Atual: Aguardando Execução ❗

Sucesso ✨

Estado Atual: Em andamento ❗

Sucesso ✨


Assine o Relatorio_de_Monitoramento: {"numero"=>"0190565", "link_acesso"=>"https://seihm.anat
el.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1962455&id_document
o=1962827"} e chame a função novamente ❗

O dicionário de dados possui os dados completos obrigatórios para o relato, no entanto o relato é feito em algumas etapas, utilizando somente algumas das informações do dicionário:

  • Rascunho para Aguardando Execução
  • Aguardando Execução para Em Andamento
  • Em Andamento para Relatando
  • Relatando para Relatada

Na terceira etapa é gerado um relatório da monitoração no Sistema Eletrônico de Informações - SEI. Para executar a quarta etapa é preciso que esse relatório da terceira etapa esteja assinado. Por essa razão a função para na terceira etapa e informa da necessidade do relatório estar assinado.

Após o relatório ser assinado basta chamar a função com os mesmos argumentos para que a etapa final seja realizada.

estado = relatar_inspecao(login, senha, inspecao, dados=dados, teste=True)
Usuário Autenticado com Sucesso 👍
Inspeção 57684 vinculada à Ação {'id_ACAO': 52876, 'nome_ACAO': 'ACAO_GR01_2021_0491', 
'descricao_ACAO': 'Teste'}

Sucesso ✨

Estado Atual: Relatada ❗

Inspeção Relatada 😎
{
    'id': '57684',
    'subject': 'INSP_GR01_2021_0504',
    'status': 'Relatada',
    'priority': 'Normal',
    'start_date': '2021-03-19',
    'due_date': '2021-12-31',
    'Classe_da_Inspecao': 'Técnica',
    'Tipo_de_Inspecao': 'Uso do Espectro - Monitoração',
    'Ano': '2021',
    'Numero_Sei_do_Processo': '{"numero"=>"53504.000007/2021-50", "link_acesso"=>"https://sei
hm.anatel.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1962455"}',
    'Descricao_da_Inspecao': 'Atendimento da Denúncia AC202010213075425 (6104512), 
\nverificação da Potência e Intensidade de Campo Elétrico da Frequência 105.1MHz e seus 
harmônicos, \nalém da checagem de Intermodulação e Espúrios nas frequências 450.3MHz e 
750MHz.',
    'Fiscal_Responsavel': 'Ronaldo da Silva Alves Batista',
    'Fiscais': [
        'Ronaldo da Silva Alves Batista',
        'Paulo Diogo Costa',
        'Mario Augusto Volpini'
    ],
    'Entidade_da_Inspecao': [],
    'UF_Municipio': ['SP/São Paulo'],
    'Servicos_da_Inspecao': [
        '800 - COLETIVO - RETRANSMISSAO DE T.V.',
        '231 - COLETIVO - RADIODIFUSÃO COMUNITÁRIA',
        '230 - COLETIVO - RADIODIFUSÃO SONORA EM FREQÜÊNCIA MODULADA'
    ],
    'Qnt_de_emissoes_na_faixa': '12',
    'Emissoes_nao_autorizadas': '70',
    'Horas_de_Preparacao': '2',
    'Horas_de_Deslocamento': '0',
    'Horas_de_Execucao': '32',
    'Horas_de_Conclusao': '6',
    'SAV': '',
    'PCDP': '',
    'Procedimentos': [],
    'Latitude': '-22.94694',
    'Longitude': '-43.21944',
    'Uso_de_PF': 'Não se aplica PF - uso apenas de formulários',
    'Acao_de_risco_a_vida_criada': 'Não',
    'Frequencia_Inicial': '54',
    'Unidade_da_Frequencia_Inicial': 'MHz',
    'Frequencia_Final': '700',
    'Unidade_da_Frequencia_Final': 'MHz',
    'Agrupamento': '',
    'AppFiscaliza': '0',
    'Relatorio_de_Monitoramento': '{"numero"=>"0190565", "link_acesso"=>"https://seihm.anatel
.gov.br/sei/controlador.php?acao=procedimento_trabalhar&id_procedimento=1962455&id_documento=
1962827"}',
    'Reservar_Instrumentos': '0',
    'Utilizou_algum_instrumento': '0',
    'id_ACAO': 52876,
    'nome_ACAO': 'ACAO_GR01_2021_0491',
    'descricao_ACAO': 'Teste',
    'Users': [
        'Alexandre Elias de Andrade Oliveira',
        'Alexandre Freitas de Lima',
        'Alexandre Inacio',
        'Alexandre Junzo Hamada',
        'Alfredo de Andrade Filho',
        'Ananias Pereira',
        'Antonio Carlos Cardoso de Mello',
        'Aparecido Sebastiao da Silva',
        'Arthur Pisaruk',
        'Carlos Augusto de Carvalho',
        'Carlos Eduardo Guimaraes Silveira',
        'Carlos da Paixao Filho',
        'Celio Yukio Takahashi',
        'Celso Luiz Maximino',
        'Diogo Caldeira',
        'Ediceu Beraldi',
        'Eduardo Narkevicius',
        'Elcio Maehara',
        'Eustaquio Lages Duarte',
        'Fiscal UD',
        'Gauber Albuquerque',
        'Gilson Ponce Ayres Filho',
        'Helio Lopes de Carvalho Filho',
        'Higor Paz Melo',
        'Hugo Santana Lima',
        'Humberto Barbosa Vinagre',
        'Jamilson Evangelista',
        'Joao Yokoyama',
        'Joaquim Miranda',
        'José Antônio S. Sanches',
        'Julio Cesar de Assis Santos',
        'Kiyotomo Kawamura',
        'Laert Calil Junior',
        'Lannei Vilela Moraes',
        'Luis Lagomes',
        'Luiz Vinicios Mielniczuk Seelig',
        'Marcelo Augusto Scacabarozi',
        'Marcio Costa',
        'Marcio Rodrigues Maciel',
        'Marcos Antônio Rodrigues',
        'Marcos Juliano Valim da Silva',
        'Maria Teresa Flosi Garrafa',
        'Mario Augusto Volpini',
        'Murilo Amaro',
        'Osnir Lopes',
        'Paulo Diogo Costa',
        'Pedro Arai',
        'Renato Sadao Kushioyada',
        'Ricardo Santos Marques',
        'Ricardo da Silva e Souza',
        'Roberto Carlos Soares Campos',
        'Roberto Ferreira dos Santos',
        'Roberto Takata',
        'Rodrigo Barbosa de Paula',
        'Rogerio Zambotto',
        'Ronaldo da Silva Alves Batista',
        'Sergio Pereira',
        'Thiago Silva',
        'Thomaz Honma Ishida',
        'Vinicius Paiva de Oliveira',
        'Vitor Zelada',
        'Wellington Devechi Piauilino',
        'Wladimir Senise',
        'marcio colazingari'
    ]
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiscaliza-0.0.10.tar.gz (49.8 kB view hashes)

Uploaded Source

Built Distribution

fiscaliza-0.0.10-py3-none-any.whl (2.9 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page