diff --git a/LOG.md b/LOG.md index 5002f74..43df596 100644 --- a/LOG.md +++ b/LOG.md @@ -16,3 +16,4 @@ Legenda de autores: | 2026-06-15 | 15:54 | VTO | Separou campos de controle e duração no pré-processamento | `pre_process/preprocess_pdf.py`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv` | Criadas colunas `tso`, `letra`, `nivel`, `var_media`, `duracao`, `duracao_valor` e `duracao_unidade`; `D` tratado como dias e `H` como horas. | | 2026-06-15 | 16:00 | VTO | Criou guia inicial do repositório | `README.md` | Explica o objetivo do projeto OAMRP, a estrutura de pastas, o uso básico do GitHub/Git e os cuidados de rastreabilidade. | | 2026-06-15 | 16:03 | VTO | Corrigiu interpretação da coluna `Zera TSO` | `pre_process/preprocess_pdf.py`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv` | `Zera TSO` passou a ser coluna única `zera_tso`; níveis `B`, `P` e `O` mapeados para Base, Parque e Orgânico; `controle_original` mantido para rastreabilidade. | +| 2026-06-15 | 16:08 | VTO | Separou valores numéricos dos intervalos de inspeção | `pre_process/preprocess_pdf.py`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json`; `pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv` | Criadas colunas discretas para horas de voo, meses contínuos e pousos, mantendo os campos textuais originais. | diff --git a/pre_process/preprocess_pdf.py b/pre_process/preprocess_pdf.py index 3196a7c..bf12f8d 100644 --- a/pre_process/preprocess_pdf.py +++ b/pre_process/preprocess_pdf.py @@ -32,6 +32,17 @@ def normalize_interval(value): return re.sub(r"\s+", " ", value.replace("VÔO", "VOO")).strip() +def interval_number(intervalo): + if not intervalo: + return "" + first_token = intervalo.split()[0] + if ":" in first_token: + return int(first_token.split(":", 1)[0]) + if first_token.isdigit(): + return int(first_token) + return "" + + def parse_control_fields(tokens): nivel_descricao = { "B": "Base", @@ -192,8 +203,11 @@ def parse_record(record): "duracao_unidade": control_fields["duracao_unidade"], "controle_original": controle, "intervalo_horas_voo": intervalo_horas_voo, + "intervalo_horas_voo_valor": interval_number(intervalo_horas_voo), "intervalo_meses_continuos": intervalo_meses_continuos, + "intervalo_meses_continuos_valor": interval_number(intervalo_meses_continuos), "intervalo_pousos": intervalo_pousos, + "intervalo_pousos_valor": interval_number(intervalo_pousos), "intervalos": intervalos, "linha_original": record, } @@ -227,8 +241,11 @@ def main(): "duracao_unidade", "controle_original", "intervalo_horas_voo", + "intervalo_horas_voo_valor", "intervalo_meses_continuos", + "intervalo_meses_continuos_valor", "intervalo_pousos", + "intervalo_pousos_valor", "intervalos", ] with CSV_PATH.open("w", newline="", encoding="utf-8-sig") as csv_file: diff --git a/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv b/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv index cfbc95a..78cf3f0 100644 --- a/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv +++ b/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv @@ -1,19 +1,19 @@ -seq;sigla_mnt;descricao_mnt;referencia;tipo_vencimento;zera_tso;letra;nivel;nivel_descricao;var_media;duracao;duracao_valor;duracao_unidade;controle_original;intervalo_horas_voo;intervalo_meses_continuos;intervalo_pousos;intervalos -2;INSP 1A;INSPEÇÃO CHECK 1A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;3;3 D;3;dias;N A B 3 3 D;300:00 HORAS DE VOO;8 MESES CONTÍNUOS;;300:00 HORAS DE VOO | 8 MESES CONTÍNUOS -3;INSP 2A;INSPEÇÃO CHECK 2A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;10;4 D;4;dias;N A B 10 4 D;600:00 HORAS DE VOO;16 MESES CONTÍNUOS;;600:00 HORAS DE VOO | 16 MESES CONTÍNUOS -4;INSP 3A;INSPEÇÃO CHECK 3A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;10;5 D;5;dias;N A B 10 5 D;900:00 HORAS DE VOO;24 MESES CONTÍNUOS;;900:00 HORAS DE VOO | 24 MESES CONTÍNUOS -5;INSP 2Y;INSPEÇÃO CALENDÁRICA DE 2 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;B;Base;5;5 D;5;dias;N B B 5 5 D;;24 MESES CONTÍNUOS;;24 MESES CONTÍNUOS -6;CHECK 300;CHECK OPERACIONAL DE 300FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;O;Orgânico;;6 H;6;horas;N A O 6 H;300:00 HORAS DE VOO;;;300:00 HORAS DE VOO -7;CHECK 400;CHECK OPERACIONAL DE 400FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;O;Orgânico;;6 H;6;horas;N A O 6 H;400:00 HORAS DE VOO;;;400:00 HORAS DE VOO -8;1-INSP AOL;INSPEÇÃO AOL 295-019;Última inspeção;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;3800 POUSOS;3800 POUSOS -9;2-INSP AOL;INSPEÇÃO AOL 295-019;Última Inspeção Específica 8 1-INSP AOL;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;2000 POUSOS;2000 POUSOS -10;3-INSP AOL;INSPEÇÃO AOL 295-019;Última Inspeção Específica 9 2-INSP AOL;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;2000 POUSOS;2000 POUSOS -14;INSP 8Y;INSPEÇÃO CALENDÁRICA DE 8 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;P;Parque;15;20 D;20;dias;N B P 15 20 D;;96 MESES CONTÍNUOS;;96 MESES CONTÍNUOS -15;INSP 1C;INSPEÇÃO CHECK 1C;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;C;P;Parque;10;65 D;65;dias;N C P 10 65 D;2400:00 HORAS DE VOO;48 MESES CONTÍNUOS;;2400:00 HORAS DE VOO | 48 MESES CONTÍNUOS -16;INSP 2C;INSPEÇÃO GERAL CHECK 2C;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;C;P;Parque;60;10 D;10;dias;N C P 60 10 D;4800:00 HORAS DE VOO;96 MESES CONTÍNUOS;;4800:00 HORAS DE VOO | 96 MESES CONTÍNUOS -17;INSP 4Y;INSPEÇÃO CALENDÁRICA DE 4 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;P;Parque;10;10 D;10;dias;N B P 10 10 D;;48 MESES CONTÍNUOS;;48 MESES CONTÍNUOS -18;INSP 100FH BR01;INSPEÇÃO DE 100 FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;O;Orgânico;;1 H;1;horas;N O 1 H;100:00 HORAS DE VOO;;;100:00 HORAS DE VOO -19;INSP 2400F BR01;INPEÇÃO 2400FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;O;Orgânico;;3 H;3;horas;N O 3 H;2400:00 HORAS DE VOO;;;2400:00 HORAS DE VOO -20;INSP 3000F BR01;INSPEÇÃO 3000FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;3000:00 HORAS DE VOO;;;3000:00 HORAS DE VOO -22;INSP 1000F;INPEÇÃO 1000FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;1000:00 HORAS DE VOO;;;1000:00 HORAS DE VOO -23;INSP 50FH;INSPEÇÃO 50 FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;50:00 HORAS DE VOO;;;50:00 HORAS DE VOO +seq;sigla_mnt;descricao_mnt;referencia;tipo_vencimento;zera_tso;letra;nivel;nivel_descricao;var_media;duracao;duracao_valor;duracao_unidade;controle_original;intervalo_horas_voo;intervalo_horas_voo_valor;intervalo_meses_continuos;intervalo_meses_continuos_valor;intervalo_pousos;intervalo_pousos_valor;intervalos +2;INSP 1A;INSPEÇÃO CHECK 1A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;3;3 D;3;dias;N A B 3 3 D;300:00 HORAS DE VOO;300;8 MESES CONTÍNUOS;8;;;300:00 HORAS DE VOO | 8 MESES CONTÍNUOS +3;INSP 2A;INSPEÇÃO CHECK 2A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;10;4 D;4;dias;N A B 10 4 D;600:00 HORAS DE VOO;600;16 MESES CONTÍNUOS;16;;;600:00 HORAS DE VOO | 16 MESES CONTÍNUOS +4;INSP 3A;INSPEÇÃO CHECK 3A;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;B;Base;10;5 D;5;dias;N A B 10 5 D;900:00 HORAS DE VOO;900;24 MESES CONTÍNUOS;24;;;900:00 HORAS DE VOO | 24 MESES CONTÍNUOS +5;INSP 2Y;INSPEÇÃO CALENDÁRICA DE 2 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;B;Base;5;5 D;5;dias;N B B 5 5 D;;;24 MESES CONTÍNUOS;24;;;24 MESES CONTÍNUOS +6;CHECK 300;CHECK OPERACIONAL DE 300FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;O;Orgânico;;6 H;6;horas;N A O 6 H;300:00 HORAS DE VOO;300;;;;;300:00 HORAS DE VOO +7;CHECK 400;CHECK OPERACIONAL DE 400FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;A;O;Orgânico;;6 H;6;horas;N A O 6 H;400:00 HORAS DE VOO;400;;;;;400:00 HORAS DE VOO +8;1-INSP AOL;INSPEÇÃO AOL 295-019;Última inspeção;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;;;3800 POUSOS;3800;3800 POUSOS +9;2-INSP AOL;INSPEÇÃO AOL 295-019;Última Inspeção Específica 8 1-INSP AOL;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;;;2000 POUSOS;2000;2000 POUSOS +10;3-INSP AOL;INSPEÇÃO AOL 295-019;Última Inspeção Específica 9 2-INSP AOL;Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;;;;;2000 POUSOS;2000;2000 POUSOS +14;INSP 8Y;INSPEÇÃO CALENDÁRICA DE 8 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;P;Parque;15;20 D;20;dias;N B P 15 20 D;;;96 MESES CONTÍNUOS;96;;;96 MESES CONTÍNUOS +15;INSP 1C;INSPEÇÃO CHECK 1C;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;C;P;Parque;10;65 D;65;dias;N C P 10 65 D;2400:00 HORAS DE VOO;2400;48 MESES CONTÍNUOS;48;;;2400:00 HORAS DE VOO | 48 MESES CONTÍNUOS +16;INSP 2C;INSPEÇÃO GERAL CHECK 2C;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;C;P;Parque;60;10 D;10;dias;N C P 60 10 D;4800:00 HORAS DE VOO;4800;96 MESES CONTÍNUOS;96;;;4800:00 HORAS DE VOO | 96 MESES CONTÍNUOS +17;INSP 4Y;INSPEÇÃO CALENDÁRICA DE 4 YEARS;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;B;P;Parque;10;10 D;10;dias;N B P 10 10 D;;;48 MESES CONTÍNUOS;48;;;48 MESES CONTÍNUOS +18;INSP 100FH BR01;INSPEÇÃO DE 100 FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;O;Orgânico;;1 H;1;horas;N O 1 H;100:00 HORAS DE VOO;100;;;;;100:00 HORAS DE VOO +19;INSP 2400F BR01;INPEÇÃO 2400FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;O;Orgânico;;3 H;3;horas;N O 3 H;2400:00 HORAS DE VOO;2400;;;;;2400:00 HORAS DE VOO +20;INSP 3000F BR01;INSPEÇÃO 3000FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;3000:00 HORAS DE VOO;3000;;;;;3000:00 HORAS DE VOO +22;INSP 1000F;INPEÇÃO 1000FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;1000:00 HORAS DE VOO;1000;;;;;1000:00 HORAS DE VOO +23;INSP 50FH;INSPEÇÃO 50 FH;Especial (a contar dela mesma - Tipo D);Término da Anterior;N;;B;Base;;1 D;1;dias;N B 1 D;50:00 HORAS DE VOO;50;;;;;50:00 HORAS DE VOO diff --git a/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json b/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json index 8ea5c50..b30b8be 100644 --- a/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json +++ b/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json @@ -28,8 +28,11 @@ "duracao_unidade": "dias", "controle_original": "N A B 3 3 D", "intervalo_horas_voo": "300:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 300, "intervalo_meses_continuos": "8 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 8, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "300:00 HORAS DE VOO", "8 MESES CONTÍNUOS" @@ -52,8 +55,11 @@ "duracao_unidade": "dias", "controle_original": "N A B 10 4 D", "intervalo_horas_voo": "600:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 600, "intervalo_meses_continuos": "16 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 16, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "600:00 HORAS DE VOO", "16 MESES CONTÍNUOS" @@ -76,8 +82,11 @@ "duracao_unidade": "dias", "controle_original": "N A B 10 5 D", "intervalo_horas_voo": "900:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 900, "intervalo_meses_continuos": "24 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 24, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "900:00 HORAS DE VOO", "24 MESES CONTÍNUOS" @@ -100,8 +109,11 @@ "duracao_unidade": "dias", "controle_original": "N B B 5 5 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "24 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 24, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "24 MESES CONTÍNUOS" ], @@ -123,8 +135,11 @@ "duracao_unidade": "horas", "controle_original": "N A O 6 H", "intervalo_horas_voo": "300:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 300, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "300:00 HORAS DE VOO" ], @@ -146,8 +161,11 @@ "duracao_unidade": "horas", "controle_original": "N A O 6 H", "intervalo_horas_voo": "400:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 400, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "400:00 HORAS DE VOO" ], @@ -169,8 +187,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "3800 POUSOS", + "intervalo_pousos_valor": 3800, "intervalos": [ "3800 POUSOS" ], @@ -192,8 +213,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "2000 POUSOS", + "intervalo_pousos_valor": 2000, "intervalos": [ "2000 POUSOS" ], @@ -215,8 +239,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "2000 POUSOS", + "intervalo_pousos_valor": 2000, "intervalos": [ "2000 POUSOS" ], @@ -238,8 +265,11 @@ "duracao_unidade": "dias", "controle_original": "N B P 15 20 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "96 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 96, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "96 MESES CONTÍNUOS" ], @@ -261,8 +291,11 @@ "duracao_unidade": "dias", "controle_original": "N C P 10 65 D", "intervalo_horas_voo": "2400:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 2400, "intervalo_meses_continuos": "48 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 48, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "2400:00 HORAS DE VOO", "48 MESES CONTÍNUOS" @@ -285,8 +318,11 @@ "duracao_unidade": "dias", "controle_original": "N C P 60 10 D", "intervalo_horas_voo": "4800:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 4800, "intervalo_meses_continuos": "96 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 96, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "4800:00 HORAS DE VOO", "96 MESES CONTÍNUOS" @@ -309,8 +345,11 @@ "duracao_unidade": "dias", "controle_original": "N B P 10 10 D", "intervalo_horas_voo": "", + "intervalo_horas_voo_valor": "", "intervalo_meses_continuos": "48 MESES CONTÍNUOS", + "intervalo_meses_continuos_valor": 48, "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "48 MESES CONTÍNUOS" ], @@ -332,8 +371,11 @@ "duracao_unidade": "horas", "controle_original": "N O 1 H", "intervalo_horas_voo": "100:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 100, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "100:00 HORAS DE VOO" ], @@ -355,8 +397,11 @@ "duracao_unidade": "horas", "controle_original": "N O 3 H", "intervalo_horas_voo": "2400:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 2400, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "2400:00 HORAS DE VOO" ], @@ -378,8 +423,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "3000:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 3000, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "3000:00 HORAS DE VOO" ], @@ -401,8 +449,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "1000:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 1000, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "1000:00 HORAS DE VOO" ], @@ -424,8 +475,11 @@ "duracao_unidade": "dias", "controle_original": "N B 1 D", "intervalo_horas_voo": "50:00 HORAS DE VOO", + "intervalo_horas_voo_valor": 50, "intervalo_meses_continuos": "", + "intervalo_meses_continuos_valor": "", "intervalo_pousos": "", + "intervalo_pousos_valor": "", "intervalos": [ "50:00 HORAS DE VOO" ],