Spaces:
Sleeping
Sleeping
Download backend/app/import_defaults.py from gui-sparim/teste_docs: direct link, hf CLI and curl.
- Browser
- Download file 4.04 kB
-
https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/backend/app/import_defaults.py
- Command line
-
hf download hf://spaces/gui-sparim/teste_docs/backend/app/import_defaults.py
-
curl -L -o import_defaults.py https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/backend/app/import_defaults.py
4.04 kB
| """Sugestões documentais a partir das condições registradas nas avaliações.""" | |
| from functools import lru_cache | |
| import json | |
| from pathlib import Path | |
| from config.constants import METODO_COMPARATIVO, METODO_EVOLUTIVO | |
| def record(value): | |
| return value if isinstance(value, dict) else {} | |
| def catalogo_mesa(): | |
| path = Path(__file__).resolve().parents[2] / "config/mesa_redutores.json" | |
| return json.loads(path.read_text(encoding="utf-8"))["catalogo"] | |
| def positivo(value): | |
| try: | |
| return float(value) > 0 | |
| except (TypeError, ValueError): | |
| return False | |
| def motivos_da_avaliacao(item, evaluation, catalog=None): | |
| catalog = record(catalog) or catalogo_mesa() | |
| ajuste = record(record(evaluation).get("ajuste_territorial")) | |
| config = record(ajuste.get("configuracao")) or ajuste | |
| redutores = record(ajuste.get("redutores")) | |
| reasons = {} | |
| def add(description, alleged=False, confirmed=True): | |
| description = str(description or "").strip() | |
| if not description: | |
| return | |
| key = description.casefold() | |
| previous = reasons.get(key, {}) | |
| reasons[key] = {"descricao": description, | |
| "alegado": bool(alleged or previous.get("alegado")), | |
| "confirmado": bool(confirmed or previous.get("confirmado"))} | |
| for reason in item.get("motivos_desvalorizantes", []) if isinstance(item.get("motivos_desvalorizantes"), list) else []: | |
| if isinstance(reason, dict): | |
| add(reason.get("descricao"), reason.get("alegado", False), reason.get("confirmado", False)) | |
| def selected(group, codes, subkey="condicoes"): | |
| if not isinstance(codes, (list, tuple, set)): | |
| return | |
| for condition in record(catalog.get(group)).get(subkey, []): | |
| if condition.get("codigo") in codes: | |
| add(condition.get("rotulo")) | |
| conditions = record(record(config.get("art_88_i")).get("condicoes")) | |
| details = record(record(redutores.get("art_88")).get("condicoes_inciso_i")) | |
| for condition in record(catalog.get("art_88_i")).get("condicoes", []): | |
| code = condition["codigo"] | |
| values = record(conditions.get(code)) | |
| detail = record(details.get(code)) | |
| if any(positivo(value) for value in [values.get("percentual_area"), | |
| values.get("percentual_area_considerada"), values.get("percentual_area_bruta"), | |
| detail.get("percentual_area_informado")]): | |
| add(condition.get("rotulo")) | |
| selected("art_88_ii", record(config.get("art_88_ii")).get("selecionados", | |
| record(redutores.get("art_88")).get("selecionados_inciso_ii_informados", []))) | |
| selected("art_60_61", record(config.get("art_60_61")).get("selecionados", | |
| record(redutores.get("art_60_61")).get("selecionados", []))) | |
| topography = record(config.get("topografia")) or record(redutores.get("topografia")) | |
| for key in ("relevo", "nivel_rua"): | |
| selected("topografia", [topography.get(key)], key) | |
| water = record(config.get("agua")) or record(redutores.get("agua")) | |
| selected("agua", [water.get("situacao")]) | |
| apan = record(config.get("apan")) or record(redutores.get("apan")) | |
| if positivo(apan.get("percentual_area")): | |
| add("APAN") | |
| return list(reasons.values()) | |
| def sugestoes_documentais(rows, kind): | |
| reasons = {} | |
| for row in rows: | |
| for reason in row.get("motivos_desvalorizantes", []): | |
| key = reason["descricao"].casefold() | |
| previous = reasons.get(key, {}) | |
| reasons[key] = {**reason, "alegado": reason["alegado"] or previous.get("alegado", False), | |
| "confirmado": reason["confirmado"] or previous.get("confirmado", False)} | |
| return { | |
| "motivos_desvalorizantes": list(reasons.values()), | |
| "metodo_avaliacao": METODO_EVOLUTIVO if kind == "evolutivo" else METODO_COMPARATIVO, | |
| "modelo_avaliacao": ", ".join(dict.fromkeys(row["modelo"] for row in rows if row["modelo"])), | |
| } | |