Aarya2004
Deploy: sync hosted Space to local app (chat, document capture, Modal backends, pages, mobile/QR)
47b2a99
Raw
History Blame Contribute Delete
2.97 kB
"""Read-models for the secondary pages (ADR-0010): Dashboard, Active Jobs, Inventory.
Dashboard + Active Jobs aggregate the SAME on-device memory store the agent already
writes to — so every number on those pages is real, derived from past Runs (no
invented revenue/technicians/CRM fields). Inventory is a read-only view over a
seeded JSON joined with the real catalog price; low-stock flags are computed, not
hardcoded. Live decrement is an explicit stretch and is NOT implemented here.
"""
import json
from quillwright.catalog import Catalog
from quillwright.memory import Memory
MEMORY_PATH = "/tmp/quillwright_memory.json"
INVENTORY_PATH = "data/sample_inventory.json"
CATALOG_PATH = "data/sample_catalog.json"
def _memory() -> Memory:
# A fresh handle each call so the page always reflects the latest recorded runs.
return Memory(MEMORY_PATH)
def _items_summary(line_items: list[str], limit: int = 3) -> str:
shown = line_items[:limit]
extra = len(line_items) - len(shown)
text = ", ".join(shown)
return f"{text} +{extra} more" if extra > 0 else text
def dashboard_data() -> dict:
"""KPI cards + recent activity, aggregated over real past Runs."""
mem = _memory()
prof = mem.profile()
recent = mem.recent(limit=6)
return {
"job_count": prof["job_count"],
"revenue_total": prof["revenue_total"],
"top_items": prof["common_items"][:5],
"recent": [
{
"id": r["id"],
"transcript": r["transcript"],
"items": _items_summary(r["line_items"]),
"total": r["total"],
}
for r in recent
],
}
def jobs_data() -> dict:
"""Every past Run as a table row, newest first."""
mem = _memory()
return {
"jobs": [
{
"id": r["id"],
"transcript": r["transcript"],
"items": _items_summary(r["line_items"], limit=4),
"total": r["total"],
}
for r in mem.recent()
]
}
def inventory_data() -> dict:
"""Read-only stock view: seeded levels joined with the real catalog price."""
with open(INVENTORY_PATH) as f:
seeded = json.load(f)["parts"]
catalog = Catalog.from_file(CATALOG_PATH)
parts = []
for p in seeded:
cat = catalog.lookup(p["key"])
rate = cat["rate"] if cat else None
low = p["reorder_at"] > 0 and p["stock"] <= p["reorder_at"]
parts.append(
{
"description": p["description"],
"category": p["category"],
"unit": p["unit"],
"stock": p["stock"],
"reorder_at": p["reorder_at"],
"rate": rate,
"low": low,
}
)
return {
"parts": parts,
"total_skus": len(parts),
"low_stock_count": sum(1 for p in parts if p["low"]),
}