- Updated README.md to reflect new features and usage instructions. - Removed deprecated Dashboard.html component and integrated dashboard functionality directly into the main application. - Revised architecture documentation for clarity and added module map and request flow diagrams. - Enhanced maintenance model to include equipment association and cost tracking. - Updated requirements.txt to include new dependencies (httpx, pandas, numpy). - Improved consumption, maintenance, production, and reporting routes with better validation and response handling. - Added unit tests for maintenance and production routes, ensuring proper CRUD operations and validation. - Enhanced reporting service to calculate and return detailed summary statistics. - Redesigned Dashboard.html for improved user experience and integrated Chart.js for visualizing simulation results.
2.0 KiB
2.0 KiB
Architecture Overview
This overview complements docs/architecture.md with a high-level map of CalMiner's module layout and request flow.
Module Map
main.py: FastAPI entry point bootstrapping routers and middleware.models/: SQLAlchemy declarative models for all database tables. Key modules:scenario.py: central scenario entity with relationships to cost, consumption, production, equipment, maintenance, and simulation results.capex.py,opex.py: financial expenditures tied to scenarios.consumption.py,production_output.py: operational data tables.equipment.py,maintenance.py: asset management models.
routes/: REST endpoints grouped by domain (scenarios, parameters, costs, consumption, production, equipment, maintenance, reporting, simulations, UI).services/: business logic abstractions.reporting.pysupplies summary statistics;simulation.pyhosts the Monte Carlo extension point.middleware/validation.py: request JSON validation prior to hitting routers.templates/: Jinja2 templates for UI (scenario form, parameter input, dashboard).
Request Flow
graph TD
A[Browser / API Client] -->|HTTP| B[FastAPI Router]
B --> C[Dependency Injection]
C --> D[SQLAlchemy Session]
B --> E[Service Layer]
E --> D
E --> F[Reporting / Simulation Logic]
D --> G[PostgreSQL]
F --> H[Summary Response]
G --> H
H --> A
Dashboard Interaction
- User loads
/dashboard, served bytemplates/Dashboard.html. - Template fetches
/api/reporting/summarywith sample or user-provided simulation outputs. - Response metrics populate the summary grid and Chart.js visualization.
Simulation Roadmap
- Implement stochastic sampling in
services/simulation.py(e.g., NumPy random draws based on parameter distributions). - Store iterations in
models/simulation_result.pyvia/api/simulations/run. - Feed persisted results into reporting for downstream analytics and historical comparisons.