# 06 — Runtime View Status: skeleton Describe runtime aspects: request flows, lifecycle of key interactions, and runtime components. ## Reporting Pipeline and UI Integration 1. **Data Sources** - Scenario-linked calculations (costs, consumption, production) produce raw figures stored in dedicated tables (`capex`, `opex`, `consumption`, `production_output`). - Monte Carlo simulations (currently transient) generate arrays of `{ "result": float }` tuples that the dashboard or downstream tooling passes directly to reporting endpoints. 2. **API Contract** - `POST /api/reporting/summary` accepts a JSON array of result objects and validates shape through `_validate_payload` in `routes/reporting.py`. - On success it returns a structured payload (`ReportSummary`) containing count, mean, median, min/max, standard deviation, and percentile values, all as floats. 3. **Service Layer** - `services/reporting.generate_report` converts the sanitized payload into descriptive statistics using Python’s standard library (`statistics` module) to avoid external dependencies. - The service remains stateless; no database read/write occurs, which keeps summary calculations deterministic and idempotent. - Extended KPIs (surfaced in the API and dashboard): - `variance`: population variance computed as the square of the population standard deviation. - `percentile_5` and `percentile_95`: lower and upper tail interpolated percentiles for sensitivity bounds. - `value_at_risk_95`: 5th percentile threshold representing the minimum outcome within a 95% confidence band. - `expected_shortfall_95`: mean of all outcomes at or below the `value_at_risk_95`, highlighting tail exposure. 4. **UI Consumption** - `templates/Dashboard.html` posts the user-provided dataset to the summary endpoint, renders metric cards for each field, and charts the distribution using Chart.js. - `SUMMARY_FIELDS` now includes variance, 5th/10th/90th/95th percentiles, and tail-risk metrics (VaR/Expected Shortfall at 95%); tooltip annotations surface the tail metrics alongside the percentile line chart. - Error handling surfaces HTTP failures inline so users can address malformed JSON or backend availability issues without leaving the page.