Skip to main content

Component Breakdown

Page Outline

Component Breakdown

The DIA service is organized into a modular structure that separates concerns and enables maintainability:

dia_service/
├─ app/
│ ├─ main.py # FastAPI application entry point, middleware setup, route registration
│ ├─ api/
│ │ ├─ endpoints.py # REST API endpoint handlers for /simulate, /analyze, /overview, /history
│ ├─ core/
│ │ ├─ reasoner.py # LLM-based explainers & summarizers for generating human-readable insights
│ │ ├─ analyzer.py # Statistical & causal analysis engine for pattern detection
│ │ ├─ simulator.py # Scenario engine with pluggable models for what-if analysis
│ │ ├─ history.py # Decision recorder & replay functionality for audit and learning
│ ├─ infra/
│ │ ├─ kafka_client.py # Async Kafka consumer/producer for event-driven communication
│ │ ├─ ga_client.py # Governance Agent client for policy validation and token management
│ │ ├─ db.py # Postgres connection pooling and S3 client helpers
│ │ ├─ vector_store.py # Chroma / Pinecone wrapper for embedding storage and similarity search
│ ├─ models/
│ │ ├─ schemas.py # Pydantic request/response models for API validation
│ └─ settings.py # Configuration management (environment variables, secrets)
├─ tests/ # Unit and integration tests
├─ Dockerfile # Container image definition
├─ helm-chart/ # Kubernetes deployment manifests
└─ README.md # Service documentation

Architecture Rationale:

  • Separation of Concerns: The core/ directory contains business logic, api/ handles HTTP concerns, and infra/ manages external dependencies. This separation makes the codebase easier to test and maintain.

  • Pluggable Design: The simulator uses a pluggable model architecture, allowing different simulation engines (Monte Carlo, deterministic, ML-based) to be swapped without changing the core logic.

  • Async-First: The entire service is built on async/await patterns to handle high concurrency and non-blocking I/O operations, essential for real-time decision-making.