Spaces:
Running
Running
| # Frontend Documentation | |
| ## Technology Stack | |
| | Technology | Version | Purpose | | |
| |-----------|---------|----------| | |
| | Vite | 7.x | Build tool & dev server | | |
| | React | 19.x | UI framework | | |
| | TypeScript | 5.9.x | Type safety | | |
| | Recharts | 3.7.x | Interactive 2D charts (BarChart, LineChart, AreaChart, RadarChart, ScatterChart, PieChart) | | |
| | lucide-react | 0.575.x | Icon system β **no emojis in UI** | | |
| | TailwindCSS | 4.x | Utility-first CSS | | |
| | Axios | 1.x | HTTP client | | |
| ## Project Structure | |
| ``` | |
| frontend/ | |
| βββ index.html | |
| βββ vite.config.ts # Vite + /api proxy | |
| βββ tsconfig.json | |
| βββ package.json | |
| βββ src/ | |
| βββ main.tsx | |
| βββ App.tsx # Root, tab navigation, v1/v2 selector | |
| βββ api.ts # All API calls + TypeScript types | |
| βββ index.css | |
| βββ components/ | |
| βββ Dashboard.tsx # Fleet overview heatmap + capacity charts | |
| βββ PredictionForm.tsx # Single-cycle SOH prediction + gauge | |
| βββ SimulationPanel.tsx # Multi-battery lifecycle simulation | |
| βββ MetricsPanel.tsx # Full model metrics dashboard | |
| βββ GraphPanel.tsx # Analytics β fleet, single battery, compare, temperature | |
| βββ RecommendationPanel.tsx # Operating condition optimizer with charts | |
| ``` | |
| ## Tab Order | |
| | Tab | Component | Description | | |
| |-----|-----------|-------------| | |
| | Simulation | `SimulationPanel` | ML-backed multi-battery lifecycle forecasting | | |
| | Predict | `PredictionForm` | Single-cycle SOH + RUL prediction | | |
| | Metrics | `MetricsPanel` | Full model evaluation dashboard | | |
| | Analytics | `GraphPanel` | Fleet & per-battery interactive analytics | | |
| | Recommendations | `RecommendationPanel` | Operating condition optimizer | | |
| | Research Paper | β | Embedded research PDF | | |
| ## Components | |
| ### MetricsPanel | |
| Full interactive model evaluation dashboard with 6 switchable sections: | |
| - **Overview** β KPI stat cards with lucide icons, RΒ² ranking bar chart, model family pie chart, normalized radar chart (top 5), RΒ² vs MAE scatter trade-off plot, Top-3 rankings podium | |
| - **Models** β Interactive sort (RΒ²/MAE/RMSE/MAPE, asc/desc), family filter dropdown, chart-type toggle (bar/radar/scatter), multi-select compare mode, colour-coded metric badges, full metrics table with per-row highlighting | |
| - **Validation** β Within-5% / within-10% grouped bar chart, full validation table with pass/fail badges | |
| - **Deep Learning** β LSTM/ensemble/VAE-LSTM/DG-iTransformer results with charts and metric tables | |
| - **Dataset** β Battery stats cards, engineered features list, temperature groups, degradation distribution bar chart, SOH range gauge | |
| - **Figures** β Searchable grid of all artifact figures with modal lightbox on click | |
| **Key features:** | |
| - All icons via `lucide-react` (no emojis) | |
| - `filteredModels` useMemo respects active sort/filter state | |
| - `MetricBadge` component colour-codes values green/yellow/red based on model quality thresholds | |
| - `SectionBadge` nav bar with icon + label | |
| ### GraphPanel (Analytics) | |
| Four-section analytics dashboard: | |
| - **Fleet Overview** β SOH bar chart sorted by health (colour-coded green/yellow/red), SOH vs cycles bubble scatter (bubble = temperature), fleet status KPI cards (healthy/degraded/near-EOL), filter controls (min SOH slider, temp range), clickable battery roster table | |
| - **Single Battery** β SOH trajectory + linear RUL projection overlay, capacity fade area chart, smoothed degradation rate area chart, show/hide EOL reference line toggle | |
| - **Compare** β Multi-select up to 5 batteries; SOH overlay line chart with distinct colours per battery, capacity fade overlay, summary comparison table (final SOH, cycles, min capacity) | |
| - **Temperature Analysis** β Temperature vs SOH scatter, temperature distribution histogram | |
| **Key features:** | |
| - Multi-battery data loaded in parallel using `Promise.all` | |
| - RUL projection via least-squares on last 20 cycles β extrapolated to 70% SOH | |
| - `SohBadge` component with dynamic colour + icon | |
| ### RecommendationPanel | |
| Interactive optimizer replacing the previous plain form + table: | |
| - **Input form** β Text input for battery ID, range sliders for SOH and ambient temperature, numeric inputs for cycle and top-k | |
| - **Summary cards** β Battery ID, best predicted RUL, best improvement, config count | |
| - **Visual Analysis tabs:** | |
| - *RUL Comparison* β bar chart comparing predicted RUL across all recommendations | |
| - *Parameters* β grouped bar chart showing temp/current/cutoff per rank | |
| - *Radar* β normalized multi-metric radar chart for top-3 configs | |
| - **Recommendations table** β rank icons (Trophy/Award/Medal from lucide), colour-coded improvement badges, expandable rows showing per-recommendation explanation and parameter details | |
| ### SimulationPanel | |
| - Configure up to N battery simulations with individual parameters (temp, voltage, current, EOL threshold) | |
| - Select ML model for lifecycle prediction (or pure physics fallback) | |
| - Animated SOH trajectory charts, final stats table, degradation state timeline | |
| ### Dashboard | |
| - Fleet battery grid with SOH colour coding | |
| - Capacity fade line chart per selected battery | |
| - Model metrics bar chart | |
| ### PredictionForm | |
| - 12-input form with all engineered cycle features | |
| - SOH gauge visualization (SVG ring) with degradation state colour | |
| - Confidence interval display | |
| - Model selector (v2 models / best_ensemble) | |
| ## API Integration (`api.ts`) | |
| All API calls return typed TypeScript response objects: | |
| | Function | Endpoint | Description | | |
| |----------|----------|--------------| | |
| | `fetchDashboard()` | `GET /api/dashboard` | Fleet overview + capacity fade data | | |
| | `fetchBatteries()` | `GET /api/batteries` | All battery metadata | | |
| | `fetchBatteryCapacity(id)` | `GET /api/battery/{id}/capacity` | Per-battery cycles, capacity, SOH arrays | | |
| | `predictSoh(req)` | `POST /api/v2/predict` | Single-cycle SOH + RUL prediction | | |
| | `fetchRecommendations(req)` | `POST /api/v2/recommend` | Operating condition optimization | | |
| | `simulateBatteries(req)` | `POST /api/v2/simulate` | Multi-battery lifecycle simulation | | |
| | `fetchMetrics()` | `GET /api/metrics` | Full model evaluation metrics | | |
| | `fetchModels()` | `GET /api/v2/models` | All loaded models with metadata | | |
| ## Development | |
| ```bash | |
| cd frontend | |
| npm install | |
| npm run dev # http://localhost:5173 | |
| ``` | |
| API requests proxy to `http://localhost:7860` in dev mode (see `vite.config.ts`). | |
| ## Build | |
| ```bash | |
| npm run build # outputs to dist/ | |
| ``` | |
| The built `dist/` folder is served as static files by FastAPI at the root path. | |
| | Vite | 6.x | Build tool & dev server | | |
| | React | 18.x | UI framework | | |
| | TypeScript | 5.x | Type safety | | |
| | Three.js | latest | 3D rendering | | |
| | @react-three/fiber | latest | React renderer for Three.js | | |
| | @react-three/drei | latest | Three.js helpers | | |
| | Recharts | latest | 2D charts | | |
| | TailwindCSS | 4.x | Utility-first CSS | | |
| | Axios | latest | HTTP client | | |
| ## Project Structure | |
| ``` | |
| frontend/ | |
| βββ index.html # Entry HTML | |
| βββ vite.config.ts # Vite + proxy config | |
| βββ tsconfig.json # TypeScript config | |
| βββ package.json | |
| βββ public/ | |
| β βββ vite.svg # Favicon | |
| βββ src/ | |
| βββ main.tsx # React entry point | |
| βββ App.tsx # Root component + tab navigation | |
| βββ api.ts # API client + types | |
| βββ index.css # TailwindCSS import | |
| βββ components/ | |
| βββ Dashboard.tsx # Fleet overview + charts | |
| βββ PredictionForm.tsx # SOH prediction form + gauge | |
| βββ BatteryViz3D.tsx # 3D battery pack heatmap | |
| βββ GraphPanel.tsx # Analytics / per-battery graphs | |
| βββ RecommendationPanel.tsx # Operating condition optimizer | |
| ``` | |
| ## Components | |
| ### Dashboard | |
| - Stat cards (battery count, models, best RΒ²) | |
| - Battery fleet grid with SOH color coding | |
| - SOH capacity fade line chart (Recharts) | |
| - Model RΒ² comparison bar chart | |
| ### PredictionForm | |
| - 12-input form with all cycle features | |
| - SOH gauge visualization (SVG ring) | |
| - Result display with degradation state coloring | |
| - Confidence interval display | |
| ### BatteryViz3D | |
| - 3D battery pack with cylindrical cells | |
| - SOH-based fill level and color mapping | |
| - Click-to-inspect with side panel details | |
| - Auto-rotation with orbit controls | |
| - Health legend and battery list sidebar | |
| ### GraphPanel | |
| - Battery selector dropdown | |
| - Per-battery SOH trajectory (line chart) | |
| - Per-battery capacity fade curve | |
| - Fleet scatter plot (SOH vs cycles, bubble size = temperature) | |
| ### RecommendationPanel | |
| - Input: battery ID, current cycle, SOH, temperature, top_k | |
| - Table of ranked recommendations | |
| - Shows temperature, current, cutoff voltage, predicted RUL, improvement % | |
| ## Development | |
| ```bash | |
| cd frontend | |
| npm install | |
| npm run dev # http://localhost:5173 | |
| ``` | |
| API requests are proxied to `http://localhost:7860` during development. | |
| ## Production Build | |
| ```bash | |
| npm run build # Outputs to dist/ | |
| ``` | |
| The built files are served by FastAPI as static assets. | |