# Deployment Buyoff Checklist **Customer:** 天普大兴园区 (Tianpu Daxing Zero-Carbon Park) **Project:** tp-ems **Date:** _______________ **Performed by:** _______________ **Environment:** [ ] Staging [ ] Production --- ## Phase 1: Infrastructure - [ ] PostgreSQL running and accessible - [ ] Redis running and accessible - [ ] All database migrations applied successfully - [ ] Seed data loaded (device types, default config) - [ ] Admin user created and can log in - [ ] `.env` file configured with correct values - [ ] All required ports open and not conflicting ## Phase 2: Backend API - [ ] `GET /health` returns OK - [ ] Auth endpoints working (login, token refresh, logout) - [ ] Device stats endpoints return data - [ ] Dashboard summary endpoint returns data - [ ] Collectors are registered and configured - [ ] Branding endpoint returns Tianpu config - [ ] Swagger docs accessible at `/docs` - [ ] Version endpoint returns correct version - [ ] Solar KPI endpoints return data (PR, equivalent hours, revenue) ## Phase 3: Data Collection - [ ] Collectors connected to data source (iSolarCloud API) - [ ] Data being collected on schedule - [ ] All expected devices showing online - [ ] Energy data (kWh) being recorded - [ ] No collector errors in logs - [ ] Rate limits respected (no 429 errors) ## Phase 3.5: Data Pipeline & Accuracy - [ ] PV power values match iSolarCloud source within 5% - [ ] PV energy values match iSolarCloud source within 5% - [ ] Heat pump power/energy values match source within 5% - [ ] No double-counting between station-level and device-level data - [ ] Daily summary aggregation correct - [ ] Unit conversions correct (W/kW/MW, Wh/kWh/MWh) - [ ] `scripts/validate_data.py` passes with no errors ### Data Accuracy Cross-Reference Table | Metric | Source Value | EMS Value | Difference | Within 5%? | |--------|-------------|-----------|------------|------------| | PV Daily Energy (kWh) | | | | [ ] | | PV Current Power (kW) | | | | [ ] | | Heat Pump Daily Energy (kWh) | | | | [ ] | | Heat Pump Current Power (kW) | | | | [ ] | | Total Grid Import (kWh) | | | | [ ] | | Total Grid Export (kWh) | | | | [ ] | | Self-Consumption Rate (%) | | | | [ ] | | PV Performance Ratio (%) | | | | [ ] | **Source API checked:** _______________ **Timestamp of comparison:** _______________ ## Phase 4: Frontend Pages - [ ] Login page loads and authentication works - [ ] Dashboard / Overview page - [ ] Monitoring page (real-time) - [ ] Device list page - [ ] Analysis page - [ ] Alarm management page - [ ] Carbon tracking page - [ ] Reports page - [ ] Quota management page - [ ] Maintenance / work orders page - [ ] Data query page - [ ] Prediction page - [ ] System management page (users, roles) - [ ] Energy strategy page - [ ] AI operations page - [ ] Big screen display page ## Phase 5: Feature Flags - [ ] Disabled features are hidden from navigation - [ ] Disabled feature routes return 404 or redirect - [ ] All enabled features are functional - [ ] Feature flag config matches customer requirements ## Phase 6: Dashboard Charts & Widgets - [ ] PV power curve (real-time) - [ ] Heat pump power/status - [ ] Carbon reduction metrics - [ ] Active alarms count - [ ] Load curve chart - [ ] Device status pie chart (online/offline/alarm) - [ ] Energy flow diagram (Sankey or animated) - [ ] Energy overview bar chart - [ ] PV generation trend - [ ] Installed capacity display - [ ] Recent alarms list - [ ] Performance Ratio (PR) gauge - [ ] Equivalent full-load hours - [ ] Estimated revenue - [ ] Self-consumption ratio **All charts showing real data (not zeros or placeholders):** [ ] Yes [ ] No ## Phase 7: UI Interactions - [ ] Dark mode toggle works - [ ] Language switch (zh-CN / en-US) works - [ ] Sidebar navigation collapses/expands - [ ] Alarm bell shows notification count - [ ] User dropdown menu works - [ ] Logout clears session - [ ] Pagination works on list pages - [ ] CRUD operations work (create, read, update, delete) ## Phase 8: Performance & Errors - [ ] No JavaScript errors in browser console - [ ] No failed API requests (check Network tab) - [ ] No unhandled backend exceptions in logs - [ ] Page load time < 3 seconds - [ ] WebSocket connections stable (if applicable) ## Phase 9: Customer-Specific (Tianpu) - [ ] Customer name displays as "天普大兴园区" - [ ] Theme/branding matches Tianpu requirements - [ ] All Tianpu devices present in device list - [ ] Device models match physical installation - [ ] Electricity pricing config correct - [ ] Alarm rules configured for Tianpu thresholds - [ ] Carbon emission factor set correctly - [ ] Data source: iSolarCloud API configured with correct `ps_id` - [ ] Version displayed in UI matches deployed version - [ ] Feature flags match Tianpu scope - [ ] `ps_id` values correct for all Tianpu stations - [ ] Customer config volume/mount verified --- ## Sign-Off | Role | Name | Signature | Date | |------|------|-----------|------| | Developer | | | | | QA / Tester | | | | | Project Lead | | | | | Customer Rep | | | | ### Notes _Use this space for any observations, deviations, or follow-up items:_ 1. 2. 3. --- *Generated from EMS Deployment Buyoff Checklist template. All items must be checked before deployment is considered complete.*