chore: establish project baseline

This commit is contained in:
OpenCode
2026-09-21 15:51:47 -03:00
commit 9dcc263217
459 changed files with 447890 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
"""Read-only audit of fiscal-field semantics in C000025 (types, value distributions, comments)."""
import json, os, sys
from collections import Counter
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "agent" / "src"))
from gti_fiscal_agent.firebird_reader import _connect # noqa: E402
FIELDS = ["CLASSIFICACAO_FISCAL","NCM","IPI","EX_TIPI","CEST","CFOP_ENTRADA","CFOP","CST_ENTRADA","CST","ALIQUOTA","CSOSN",
"COD_ENTRADA_PIS","COD_SAIDA_PIS","ALIQ_PIS","COD_ENTRADA_COFINS","COD_SAIDA_COFINS","ALIQ_COFINS","CST_IPI","ORIGEM","IAT","INCIDENCIA_PISCOFINS","IPPT"]
def load_env():
for line in (ROOT/".env").read_text(encoding="utf-8").splitlines():
if "=" in line and not line.startswith("#"):
k, _, v = line.partition("="); os.environ.setdefault(k.strip(), v.strip())
def main():
load_env()
conn = _connect(os.environ); cur = conn.cursor()
cur.execute("""SELECT rf.RDB$FIELD_NAME, f.RDB$FIELD_TYPE, f.RDB$FIELD_LENGTH, f.RDB$FIELD_PRECISION, f.RDB$FIELD_SCALE, f.RDB$CHARACTER_LENGTH, rf.RDB$DESCRIPTION, rf.RDB$DEFAULT_SOURCE
FROM RDB$RELATION_FIELDS rf JOIN RDB$FIELDS f ON rf.RDB$FIELD_SOURCE=f.RDB$FIELD_NAME WHERE rf.RDB$RELATION_NAME='C000025'""")
meta = {}
for r in cur.fetchall():
name = r[0].strip()
if name in FIELDS:
meta[name] = {"type_code": r[1], "len": r[5] or r[2], "precision": r[3], "scale": r[4], "comment": str(r[6]) if r[6] else None, "default": str(r[7]) if r[7] else None}
out = {}
for f in FIELDS:
if f not in meta:
out[f] = {"exists": False}; continue
cur.execute(f"SELECT {f}, COUNT(*) FROM C000025 GROUP BY {f}")
rows = sorted(((str(v).strip() if v is not None else None, c) for v, c in cur.fetchall()), key=lambda x: -x[1])
out[f] = {"exists": True, **meta[f], "distinct": len(rows), "top": rows[:12]}
# relations that may hold context (company/tax config), names only
cur.execute("SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG=0 AND (RDB$RELATION_NAME LIKE '%EMPRESA%' OR RDB$RELATION_NAME LIKE '%CFOP%' OR RDB$RELATION_NAME LIKE '%TRIB%' OR RDB$RELATION_NAME LIKE '%ICMS%' OR RDB$RELATION_NAME LIKE '%CST%' OR RDB$RELATION_NAME LIKE '%NATUREZA%')")
out["_related_tables"] = [r[0].strip() for r in cur.fetchall()]
conn.close()
print(json.dumps(out, ensure_ascii=False, indent=1, default=str))
main()