chore: establish project baseline
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""Promote CFOP/FCP/ANP/NCM_UTRIB/RTC_BIOFUEL_INDEX/RTC_CCREDPRES from the
|
||||
official spreadsheets the operator placed in sources/raw/bootstrap_v1/ after
|
||||
the Portal NF-e/SPED downloads were session-blocked. No network fetch.
|
||||
"""
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
from central.app.datasets import bootstrap_v1_extra as parsers
|
||||
from central.app.datasets.service import DatasetService
|
||||
from central.app.db import SessionLocal
|
||||
|
||||
ROOT = Path("sources/raw/bootstrap_v1")
|
||||
|
||||
JOBS = [
|
||||
("CFOP", ROOT / "IT_2023_002_v2_10_Tabela_CFOP_Descrição.xlsx", parsers.parse_cfop, "import_cfop"),
|
||||
("FCP", ROOT / "Tabela_Alíquotas_FCP_por_UF_2025-02_07.xlsx", parsers.parse_fcp, "import_fcp"),
|
||||
("ANP", ROOT / "Tabela_Codigo_Produto_ANP-20241118.xlsx", parsers.parse_anp, "import_anp"),
|
||||
("NCM_UTRIB", ROOT / "IT2024.001v2.40 - Tabela NCM 2022 com Utrib_Comércio Exterior_vigência 01.10.26.xlsx", parsers.parse_ncm_utrib, "import_ncm_utrib"),
|
||||
("RTC_BIOFUEL_INDEX", ROOT / "IT 2025.004 v.1.20 - Tabela de Índice.xlsx", parsers.parse_rtc_biofuel_index, "import_rtc_biofuel_index"),
|
||||
("RTC_CCREDPRES", ROOT / "cCredPres_2026-06-22.xlsx", parsers.parse_rtc_cred_pres, "import_rtc_cred_pres"),
|
||||
("RTC_CCLASSTRIB", ROOT / "cClassTrib 2026-06-22.xlsx", parsers.parse_rtc_cclasstrib, "import_rtc_cclasstrib"),
|
||||
("RTC_CBS_RATES", ROOT / "IT 2026.002 v.1.00 - Aliquotas da CBS.xlsx", parsers.parse_rtc_cbs_rates, "import_rtc_cbs_rates"),
|
||||
]
|
||||
|
||||
|
||||
def main():
|
||||
results = {}
|
||||
with SessionLocal() as session:
|
||||
service = DatasetService(session)
|
||||
for domain, path, parse_fn, method_name in JOBS:
|
||||
try:
|
||||
if not path.exists():
|
||||
results[domain] = {"status": "MISSING_BOOTSTRAP_FILE", "path": str(path)}
|
||||
continue
|
||||
payload = parse_fn(path.read_bytes())
|
||||
dataset = getattr(service, method_name)(payload, f"file://{path.name}", datetime.now(timezone.utc))
|
||||
results[domain] = {"status": dataset.status, "dataset_id": dataset.id, "sha256": dataset.sha256, "record_count": dataset.record_count}
|
||||
except Exception as error: # noqa: BLE001 — isolate one domain's failure from the rest
|
||||
results[domain] = {"status": "FAILED", "reason": f"{type(error).__name__}: {error}"}
|
||||
|
||||
print(json.dumps(results, indent=2, ensure_ascii=False))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user