This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
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))
|
||||
Reference in New Issue
Block a user