Split inspection control fields

This commit is contained in:
Cesa-V
2026-06-15 15:55:30 -03:00
parent 1fd88b62fe
commit e62d7cd640
4 changed files with 195 additions and 20 deletions

View File

@@ -32,6 +32,38 @@ def normalize_interval(value):
return re.sub(r"\s+", " ", value.replace("VÔO", "VOO")).strip()
def parse_control_fields(tokens):
fields = {
"tso": "",
"letra": "",
"nivel": "",
"var_media": "",
"duracao": "",
"duracao_valor": "",
"duracao_unidade": "",
}
if len(tokens) >= 2 and tokens[-1] in {"D", "H"} and tokens[-2].isdigit():
duracao_valor = tokens[-2]
duracao_codigo = tokens[-1]
tokens = tokens[:-2]
fields["duracao"] = f"{duracao_valor} {duracao_codigo}"
fields["duracao_valor"] = int(duracao_valor)
fields["duracao_unidade"] = "dias" if duracao_codigo == "D" else "horas"
if len(tokens) == 1:
fields["letra"] = tokens[0]
elif len(tokens) >= 2:
fields["tso"] = tokens[0]
fields["letra"] = tokens[1]
if len(tokens) >= 3:
fields["nivel"] = tokens[2]
if len(tokens) >= 4:
fields["var_media"] = " ".join(tokens[3:])
return fields
def split_records(text):
records = []
current = []
@@ -91,7 +123,9 @@ def parse_record(record):
tokens = right_before_interval.split()
zera = tokens[0] if tokens else ""
controle = " ".join(tokens[1:])
controle_tokens = tokens[1:]
controle = " ".join(controle_tokens)
control_fields = parse_control_fields(controle_tokens)
especial_marker = " Especial (a contar dela mesma"
if especial_marker in left_body:
@@ -130,6 +164,13 @@ def parse_record(record):
"referencia": referencia,
"tipo_vencimento": "Término da Anterior",
"zera": zera,
"tso": control_fields["tso"],
"letra": control_fields["letra"],
"nivel": control_fields["nivel"],
"var_media": control_fields["var_media"],
"duracao": control_fields["duracao"],
"duracao_valor": control_fields["duracao_valor"],
"duracao_unidade": control_fields["duracao_unidade"],
"controle_original": controle,
"intervalo_horas_voo": intervalo_horas_voo,
"intervalo_meses_continuos": intervalo_meses_continuos,
@@ -158,6 +199,13 @@ def main():
"referencia",
"tipo_vencimento",
"zera",
"tso",
"letra",
"nivel",
"var_media",
"duracao",
"duracao_valor",
"duracao_unidade",
"controle_original",
"intervalo_horas_voo",
"intervalo_meses_continuos",