Files
fa-agent/scripts/reconcile_reference.py
T
2026-09-26 01:12:10 +08:00

54 lines
1.8 KiB
Python

import json
import os
from decimal import Decimal
from time import perf_counter
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
import django
django.setup()
from django.contrib.auth.models import User
from django.db import connection
from finance.analysis import analyze, default_preferences
from finance.models import Dataset
if connection.vendor != "postgresql":
raise SystemExit("Reconciliation requires PostgreSQL exact NUMERIC aggregation")
ds = Dataset.objects.get(sha256="98ef41e898c24f0929a9da6ec185b7331f69f0478b52056cbc7834e1ef5877ec")
member = User.objects.get(username="admin").membership
start = perf_counter()
result = analyze(
ds,
member,
{
"start": "2026-08",
"end": "2026-08",
"comparison": "yoy",
"group": "department",
"metric": "revenue",
"filters": {},
},
default_preferences(ds),
)
assert ds.row_count == 332830
assert result["summary"]["revenue"]["current"] == Decimal("152419115.348455502666069")
assert result["summary"]["revenue"]["baseline"] == Decimal("225550255.4187610638720")
assert result["summary"]["gross"]["current"] == Decimal("17868580.85186759073400145")
assert result["summary"]["gross"]["baseline"] == Decimal("24790335.405853982758000")
assert result["summary"]["customers"]["current"] == 38361
assert result["summary"]["customers"]["baseline"] == 33147
assert result["summary"]["roi"]["current"] is None
assert sum(r["values"]["revenue"]["delta"] for r in result["rows"]) == result["summary"]["revenue"]["delta"]
report = {
"status": "passed",
"source": ds.name,
"sha256": ds.sha256,
"rows": ds.row_count,
"query_seconds": round(perf_counter() - start, 3),
"summary": result["summary"],
"quality": ds.quality,
"groups": len(result["rows"]),
}
print(json.dumps(report, ensure_ascii=False, default=str, indent=2))