Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Predict EV charging problems early. Prioritize the response. Keep every charge moving.
AmpWise is an AI-assisted decision platform for EV charging network operators. It combines demand forecasting, charger telemetry, fault events, and driver feedback to identify emerging operational risks before they become expensive failures.
The platform does more than surface predictions. It turns them into a ranked, explainable action list: what is wrong, why it matters, what to do next, how urgently to act, and what operational impact the intervention could have.檢視完整 README ↗Predict EV charging problems early. Prioritize the response. Keep every charge moving.
Live application · Pitch deck · API documentation · API contract
| Service | Deployment | Status |
|---|---|---|
| Application | ampwise.vercel.app | Live on Vercel |
| Backend API | portpulse-ampwise-api.onrender.com | Live on Render |
| Interactive API docs | OpenAPI / Swagger UI | Available |
| Action and scenario storage | Firebase Firestore | Connected through the backend |
| Pitch deck | View PDF · PowerPoint source | Included in the repository |
AmpWise is an AI-assisted decision platform for EV charging network operators. It combines demand forecasting, charger telemetry, fault events, and driver feedback to identify emerging operational risks before they become expensive failures.
The platform does more than surface predictions. It turns them into a ranked, explainable action list: what is wrong, why it matters, what to do next, how urgently to act, and what operational impact the intervention could have.
EV charging operators receive fragmented signals from forecasts, station telemetry, fault logs, and user reports. A dashboard may show that something is abnormal, but operators still have to decide:
AmpWise closes that decision gap for an EV charging network operator.
| Stage | What AmpWise does | Operator outcome |
|---|---|---|
| Detect | Forecasts arrivals and waiting time; detects charger faults and repeated driver complaints | Problems become visible before the next demand peak |
| Categorize | Distinguishes safety faults, degraded chargers, connector faults, user-reported failures, congestion, chronic under-capacity, and underuse | The operator understands the type of intervention required |
| Prioritize | Places safety first, then ranks every other issue by estimated revenue at risk, with the number of driver reports as the tie-breaker; each action also carries an urgency and a deadline | Limited technician capacity is directed to the highest-impact work |
| Explain | Produces plain-language reasons, sensor evidence, event history, and concrete recommended actions | Non-specialists can act with confidence |
| Prove | Runs repair/capacity what-if simulations and replays historical weeks against a baseline strategy | Decisions can be evaluated before deployment |
flowchart LR
A[ACN sessions and station profiles] --> M[LightGBM demand forecast]
B[Charger telemetry and fault events] --> P[FastAPI decision engine]
C[Cleaned driver feedback] --> P
M --> P
P --> D[Detection and categorization]
D --> R[Priority and impact scoring]
R --> E[Plain-language explanations]
R --> W[What-if and backtest engine]
E --> API[REST API]
W --> API
API --> UI[React operator dashboard]
API --> F[(Firestore action and scenario state)]
The prediction and decision layers remain separate: the ML model forecasts demand, while deterministic backend services calculate queueing, classify issues, estimate impact, rank actions, and validate any optional LLM-generated advice.
The included prototype replays a historical ACN California (Caltech/JPL) evaluation window from 30 November 2019 to 29 February 2020. The converted demo data contains four forecasted stations, charger telemetry, fault labels, and cleaned driver feedback.
The demand model uses station, calendar, lag, rolling-demand, charger-capacity, and weather features to produce a 24-hour forecast. On the held-out evaluation data:
| Evaluation slice | AmpWise MAE | Same-slot-last-week MAE | Improvement |
|---|---|---|---|
| All 17,472 half-hour slots | 0.4151 | 0.5183 | 19.9% |
| Weekday daytime | 0.7566 | 0.9905 | 23.6% |
| Holiday and adjacent days | 0.3625 | 0.5345 | 32.2% |
| Busiest 10% of slots | 1.0896 | 1.5152 | 28.1% |
Metrics are stored in ml/output/model1_metrics.json. The dashboard's backtest also reports decision-level outcomes rather than treating forecast accuracy as the final result.
git clone https://github.com/Lynn662312/AmpWise.git
cd AmpWise
cd backend
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
uvicorn app.main:app --reload
The API is available at http://localhost:8000, with interactive documentation at http://localhost:8000/docs.
Open a second terminal from the repository root:
cd frontend
npm ci
Copy-Item .env.example .env
npm run dev
Open http://localhost:5173. The supplied environment example connects the frontend to the local API and uses the converted ML data.
Note: Firestore is optional for local development. Without Firebase Admin credentials, set
VITE_ACTION_STATUS_ENABLED=falseinfrontend/.env; forecasting, prioritization, explanations, simulations, and backtesting still work.
backend/.env| Variable | Purpose | Default behavior |
|---|---|---|
MOCK | Select fixed contract examples (1) or converted ML data (0) | 0 |
DATA_DIR | Directory containing backend-ready Parquet/JSON files | ./data |
CORS_ORIGINS | Comma-separated allowed frontend origins | Local and deployed frontend |
LLM_API_KEY / LLM_MODEL | Optional provider credentials for generated advice | Deterministic template advice |
FIREBASE_CREDENTIALS | Optional service-account path or JSON for action states, saved what-if runs, and demo reset | Persistence disabled |
frontend/.env| Variable | Purpose | Recommended local value |
|---|---|---|
VITE_API_BASE_URL | FastAPI base URL | http://localhost:8000/api |
VITE_DATA_MODE | Use the API or local sample JSON | api |
VITE_ACTION_STATUS_ENABLED | Show assign/complete controls, demo reset, and saved what-if runs | false without Firebase; otherwise true |
Never commit .env files or service-account credentials.
Run the backend test suite:
cd backend
.\.venv\Scripts\python.exe -m pytest -q
Validate and build the frontend:
cd frontend
npm run check:data
npm run build
Run the ML preprocessing test after installing ml/requirements.txt:
python -m pytest ml/tests -q
| Method | Endpoint | Purpose |
|---|---|---|
GET | /api/meta | Dataset range, assumptions, demo times, and backtest weeks |
GET | /api/overview | Network summary and energy trend |
GET | /api/stations | Station status, working chargers, and predicted wait |
GET | /api/stations/{id}/forecast | Half-hour demand and waiting-time forecast |
GET | /api/stations/{id}/chargers | The station's chargers and their current status |
GET | /api/chargers/{id}/health | Charger health history and evidence |
GET | /api/chargers/{id}/events | Fault messages and driver-report timeline |
GET | /api/actions | Ranked, explainable intervention list |
POST | /api/actions/{id}/advice | Template or optional LLM-assisted action guidance |
PATCH | /api/actions/{id}/status | Persist assignment/completion state; a charger marked done counts as working again |
POST | /api/demo/reset | Open every action again (and clear the saved what-if runs) so a demo starts clean |
POST | /api/whatif | Simulate repair or added capacity |
GET / POST | /api/scenarios | List / save what-if runs |
GET | /api/backtest | Compare AmpWise with the historical baseline |
GET | /api/reports/categories | Driver complaint categories for the feedback chart |
GET | /api/health | Service status |
See the complete bilingual docs/api_contract.md for request and response schemas.
AmpWise/
├── frontend/ React, TypeScript, Vite, Tailwind CSS, Recharts, Leaflet
├── backend/ FastAPI application, decision services, tests, and converted data
├── ml/ Forecast notebook, LightGBM model, preprocessing, outputs, and tests
├── firebase/ Firestore security rules
├── docs/ API contract, implementation notes, and project documentation
├── render.yaml Backend deployment configuration
└── firebase.json Firebase project configuration
AmpWise is a decision-support prototype, not a completed production deployment. Its financial figures are estimates based on forecast demand, charger occupancy (a session counts as unserved only when every charger is busy), and an assumed revenue per session; they are not observed customer losses. The bundled data is historical California data replayed through a simulated clock, not a live 2026 Malaysian charging network.
Queueing and repair outcomes depend on documented assumptions, and the current evaluation dataset includes relatively quiet stations where the measured business impact of some repairs is small. This is surfaced honestly in the application and API metadata. A real deployment would require locally representative data, streaming telemetry integration, operator validation, monitoring for model drift, and calibrated safety procedures.