Split inspection control fields
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user