Files
atc-agents/api/presentation_static.py
T
mo a11621b21f Add Command Center v2: DQ/RAG integration, S3 browser, Jupyter, GPU matrix.
Mirror mo/atc-GPU layout with config/, docs/, scripts/ for Gitea deploy.
2026-06-25 00:28:23 +00:00

204 lines
8.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Pre-built modern HTML presentation templates — English."""
from __future__ import annotations
from typing import Any
MODERN_DECKS: dict[str, dict[str, Any]] = {
"data-maturity": {
"id": "data-maturity",
"title": "Data Maturity Assessment",
"subtitle": "Dell ATC — Customer Data Onboarding Framework",
"slides": [
{
"id": "dm-1", "kind": "hero",
"title": "Data Maturity Assessment",
"subtitle": "From raw data to trusted decisions",
"bullets": [
"6 dimensions: Completeness, Consistency, Validity, Uniqueness, Timeliness, Accuracy",
"Automated analysis with Docling, Great Expectations & Soda Core",
"Full report with priorities and remediation roadmap",
],
},
{
"id": "dm-2", "kind": "narrative",
"title": "Why maturity?",
"subtitle": "Customers hand over data — we show where it stands",
"bullets": [
"73% of analytics projects fail due to data quality (Gartner)",
"Without a baseline there is no measurable improvement",
"DQ tools + document parsing = complete picture",
"Report ready for boardroom & audit",
],
},
{
"id": "dm-3", "kind": "zone",
"title": "Our toolchain",
"subtitle": "Integrated on the ATC platform",
"bullets": [
"Docling — PDF, PPTX, DOCX, XLSX → structured data",
"Great Expectations — Python expectations & data contracts",
"Soda Core — YAML checks, freshness, anomaly monitoring",
"DQ API — maturity score + HTML report",
],
},
{
"id": "dm-4", "kind": "cta",
"title": "Next step",
"subtitle": "Upload customer data in Data Quality tab",
"bullets": [
"Upload CSV, Excel, PDF or database export",
"Receive maturity score (0100) per dimension",
"Action list: what to fix first",
"Reports are stored — no need to re-upload",
],
},
],
},
"atc-platform": {
"id": "atc-platform",
"title": "ATC Data Platform",
"subtitle": "Modern lakehouse on Dell infrastructure",
"slides": [
{
"id": "atc-1", "kind": "hero",
"title": "ATC Data & AI Platform",
"subtitle": "CDC → Kafka → Spark → Iceberg → Trino",
"bullets": [
"Live pipeline: PostgreSQL, MySQL, MongoDB, Cassandra",
"ObjectScale S3 + 9-node Hadoop cluster",
"GPU Lab: Llama 3 70B for autonomous agents",
],
},
{
"id": "atc-2", "kind": "topology",
"title": "End-to-end flow",
"subtitle": "Sources → Ingestion → Compute → Storage → Consumers",
"bullets": [
"Airflow orchestrates daily data generation",
"Debezium CDC → Kafka → Spark → Iceberg",
"Trino federated queries + Superset BI",
"GenAI agents with full cluster context",
],
},
],
},
"stack-architecture": {
"id": "stack-architecture",
"title": "ATC Stack Architecture",
"subtitle": "How the Command Center, DQ, RAG & Lakehouse fit together",
"slides": [
{
"id": "arch-1", "kind": "hero",
"title": "ATC Intelligent Data Platform",
"subtitle": "One dashboard — ingest, assess, chat, present",
"bullets": [
"Command Center at http://10.0.21.33 — single entry point",
"Upload once → stored permanently in ChromaDB + file registry",
"Ask questions anytime via Knowledge Chat (RAG + LangChain)",
"Present architecture & maturity to customers live",
],
},
{
"id": "arch-2", "kind": "architecture", "animation": "full-stack",
"title": "Full Stack Overview",
"subtitle": "All services on VM304 (Command Center)",
"bullets": [
"Caddy routes /api, /dq, /rag to backend services",
"React UI — Data Platform, Presentation, Data Quality, Knowledge Chat",
"Docling on port 5001 for document parsing UI + API",
"Postgres + Redis for agents; ChromaDB for vectors",
],
},
{
"id": "arch-3", "kind": "architecture", "animation": "lakehouse",
"title": "Lakehouse Pipeline",
"subtitle": "Operational data → analytics-ready tables",
"bullets": [
"Sources on DB Vault (10.0.21.51): PG, MySQL, Mongo, Cassandra, Neo4j",
"Debezium captures changes → Kafka topics",
"Spark transforms → Iceberg tables on ObjectScale",
"Trino SQL + Superset dashboards for consumers",
],
},
{
"id": "arch-4", "kind": "architecture", "animation": "dq-flow",
"title": "Data Quality & Maturity",
"subtitle": "Prove data readiness before AI/ML projects",
"bullets": [
"Upload customer file → parsed by Docling if PDF/Office",
"6 maturity dimensions scored 0100 with findings",
"GE + Soda checks per column — expandable in UI",
"HTML report + image gallery — stored in /data/reports",
],
},
{
"id": "arch-5", "kind": "architecture", "animation": "rag-flow",
"title": "Knowledge Chat (RAG)",
"subtitle": "Upload once — query forever",
"bullets": [
"Document saved to disk + indexed in ChromaDB (persistent volume)",
"Duplicate uploads skipped automatically (SHA-256 hash)",
"LangChain retrieves top-k chunks → Llama 70B on GPU Lab",
"Answers include source filename + chunk preview",
],
},
{
"id": "arch-6", "kind": "narrative",
"title": "AI Agents Layer",
"subtitle": "Autonomous ops with full lab context",
"bullets": [
"Supervisor + field operators on Command Center",
"Each agent sees live workload, GPU, databases, topology",
"LLM: Llama 3 70B GPTQ via vLLM (10.0.20.106:8001)",
"Approval workflow for sensitive operations",
],
},
{
"id": "arch-7", "kind": "zone",
"title": "Infrastructure Map",
"subtitle": "Dell ATC cluster — key IPs",
"bullets": [
"Command Center VM304: 10.0.21.33 (this dashboard)",
"GPU Lab VM303: 10.0.20.106 — 7× V100, vLLM, model manager",
"DB Vault: 10.0.21.51 · Lakehouse: 10.0.21.50",
"Docling UI: http://10.0.21.33:5001/ui/",
],
},
{
"id": "arch-8", "kind": "cta",
"title": "Customer Demo Flow",
"subtitle": "Recommended narrative for presentations",
"bullets": [
"1. Show live Data Platform topology & agent fleet",
"2. Upload customer sample → Data Quality maturity report",
"3. Same file already in Knowledge Chat — ask questions live",
"4. Export this architecture deck as HTML for customer handout",
],
},
],
},
}
def list_static_decks() -> list[dict[str, Any]]:
return [
{"id": k, "title": v["title"], "subtitle": v["subtitle"], "slide_count": len(v["slides"]), "source": "builtin"}
for k, v in MODERN_DECKS.items()
]
def get_static_deck(deck_id: str) -> dict[str, Any] | None:
deck = MODERN_DECKS.get(deck_id)
if not deck:
return None
return {
"ts": None,
"title": deck["title"],
"subtitle": deck["subtitle"],
"slides": deck["slides"],
"slide_count": len(deck["slides"]),
"source": "builtin",
"id": deck_id,
}