feat: customer frontend, Sungrow collector fixes, real data (v1.2.0)

- Add frontend/ at root (no Three.js, no Charging, green #52c41a theme)
- Fix Sungrow collector: add curPage/size params, unit conversion
- Fix station-level dedup to prevent double-counting
- Add shared token cache for API rate limit protection
- Add .githooks/pre-commit, CLAUDE.md, .gitignore
- Update docker-compose.override.yml frontend -> ./frontend
- Pin bcrypt in requirements.txt
- Add BUYOFF_RESULTS_2026-04-05.md (39/43 pass)
- Data accuracy: 0.0% diff vs iSolarCloud

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Du Wenbo
2026-04-05 23:43:24 +08:00
parent ed30ac31e4
commit d3f47d664c
121 changed files with 21784 additions and 23 deletions

23
CLAUDE.md Normal file
View File

@@ -0,0 +1,23 @@
# ZPARK-EMS (中关村医疗器械园) Development Guidelines
## Overview
Customer project for Z-Park Medical Device Hub. Uses ems-core via git subtree in `core/`.
## CRITICAL: Do NOT modify core/ directly
The `core/` directory is a git subtree from ems-core. All core changes must be made in the ems-core repository first.
## Project Structure
- `core/` — git subtree from ems-core (READ-ONLY in this repo)
- `customers/zpark/` — Customer configuration (config.yaml, devices.json, pricing.json, hooks/)
- `scripts/` — Seeding and admin tools
- `docker-compose.override.yml` — Customer-specific Docker overrides
## Deployment
```bash
cp .env.example .env
docker compose -f core/docker-compose.yml -f docker-compose.override.yml up -d
docker compose -f core/docker-compose.yml -f docker-compose.override.yml exec backend python scripts/seed_zpark.py
```
## Default Login
- admin / admin123