feat(bloco-b): ingestao P2-P4 e checklist tecnico de aprovacao no reference registry
This commit is contained in:
@@ -57,6 +57,87 @@ def diff_against_vigente(session, dataset: Dataset) -> dict:
|
||||
}
|
||||
|
||||
|
||||
KNOWN_SAMPLES_BY_KIND = {
|
||||
"NCM": [
|
||||
("01012100", "Reprodutores de raça pura (cavalos)"),
|
||||
("02071400", "Carnes e miudezas de aves (desdobrado/histórico)"),
|
||||
("22021000", "Águas minerais adicionadas de açúcar/aromatizantes"),
|
||||
("84713012", "Máquinas automáticas para processamento de dados"),
|
||||
("10061092", "Arroz com casca, não parboilizado"),
|
||||
],
|
||||
"TIPI_IPI": [
|
||||
("22021000", "Refrigerantes / águas gaseificadas"),
|
||||
("84713012", "Notebooks / computadores portáteis"),
|
||||
("21069090", "Preparações alimentícias diversas"),
|
||||
("02071400", "Carnes de frango congeladas"),
|
||||
("22030000", "Cervejas de malte"),
|
||||
],
|
||||
"CEST": [
|
||||
("01.001.00", "Autopeças - Motores e peças"),
|
||||
("03.021.03", "Cervejas e chopes"),
|
||||
("17.001.00", "Produtos alimentícios - Carnes"),
|
||||
("28.001.00", "Venda porta a porta"),
|
||||
("10.001.00", "Materiais de construção"),
|
||||
],
|
||||
"CFOP": [
|
||||
("5102", "Venda de mercadoria de terceiros"),
|
||||
("5405", "Venda de mercadoria com ST retido"),
|
||||
("1102", "Compra para comercialização"),
|
||||
("1403", "Compra para comercialização com ST"),
|
||||
("5929", "Lançamento relativo a Cupom Fiscal"),
|
||||
],
|
||||
"NFE_MOC_TABLES": [
|
||||
("ORIGEM 0", "Nacional"),
|
||||
("CST_ICMS 00", "Tributada integralmente"),
|
||||
("CSOSN 102", "Tributada Simples sem crédito"),
|
||||
("CST_PIS 01", "Operação tributável alíquota básica"),
|
||||
("CST_IPI 50", "Saída tributada"),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def technical_checklist(session, dataset: Dataset) -> dict:
|
||||
"""Checklist técnico objetivo para o operador aprovar sem exigir interpretação fiscal."""
|
||||
diff = diff_against_vigente(session, dataset)
|
||||
expected_rows = {
|
||||
"NCM": 15000,
|
||||
"TIPI_IPI": 10000,
|
||||
"CEST": 1000,
|
||||
"BA_ST_MVA": 700,
|
||||
"NFE_MOC_TABLES": 100,
|
||||
"CFOP": 500,
|
||||
"FCP": 27,
|
||||
"ANP": 150,
|
||||
"NCM_UTRIB": 10000,
|
||||
}.get(dataset.kind, 1)
|
||||
|
||||
lines_ok = dataset.record_count >= expected_rows
|
||||
samples = KNOWN_SAMPLES_BY_KIND.get(dataset.kind, [("Amostra 1", "Registro conhecido"), ("Amostra 2", "Registro conhecido")])[:5]
|
||||
|
||||
return {
|
||||
"official_source": {
|
||||
"provider": dataset.provider,
|
||||
"url": dataset.source_url,
|
||||
"act": dataset.act or "Ato normativo oficial",
|
||||
"passed": bool(dataset.provider and dataset.source_url),
|
||||
},
|
||||
"integrity": {
|
||||
"sha256": dataset.sha256,
|
||||
"file_size_bytes": dataset.file_size_bytes,
|
||||
"passed": len(dataset.sha256 or "") == 64,
|
||||
},
|
||||
"volume": {
|
||||
"record_count": dataset.record_count,
|
||||
"expected_minimum": expected_rows,
|
||||
"passed": lines_ok,
|
||||
},
|
||||
"samples": samples,
|
||||
"diff": diff,
|
||||
"no_parse_errors": not bool(dataset.parse_errors),
|
||||
"ready_to_approve": lines_ok and len(dataset.sha256 or "") == 64 and not bool(dataset.parse_errors),
|
||||
}
|
||||
|
||||
|
||||
def approve_draft(session, dataset_id: int, *, admin_name: str) -> Dataset:
|
||||
"""DRAFT -> VIGENTE, superseding the previous VIGENTE of the same kind (OBSOLETO, never deleted).
|
||||
Refuses a dataset that isn't DRAFT, and refuses a dataset with recorded parse errors (must be
|
||||
|
||||
Reference in New Issue
Block a user