# Tianpu EMS Deployment Buyoff Results **Date**: 2026-04-08 **Version**: tp-ems v1.2.0 | Core v1.1.0 **Environment**: labmac3 (Mac mini M4) via Docker/Colima **URL**: https://labmac3.tail8fe8f6.ts.net:10000/ **Mode**: Simulator (USE_SIMULATOR=true) --- ## Phase 1: Infrastructure | # | Check | Result | Status | |---|-------|--------|--------| | 1.1 | **[CRITICAL]** PostgreSQL | accepting connections | **PASS** | | 1.2 | **[CRITICAL]** Redis | PONG | **PASS** | | 1.3 | **[CRITICAL]** Migrations at head | 008_management (head) | **PASS** | | 1.4 | **[CRITICAL]** Seed data | devices=18, types=8, alarms=6, pricing=1 | **PASS** | | 1.5 | **[CRITICAL]** Admin user | admin/admin exists | **PASS** | | 1.6 | .env correct | CUSTOMER=tianpu | **PASS** | | 1.7 | Port conflicts | 60404/60405/60444/60454 all clear | **PASS** | ## Phase 2: Backend API | # | Check | Result | Status | |---|-------|--------|--------| | 2.1 | **[CRITICAL]** Health | `{"status":"ok"}` | **PASS** | | 2.2 | **[CRITICAL]** Auth | JWT token obtained | **PASS** | | 2.3 | Device stats | online=18, offline=0 | **PASS** | | 2.4 | Dashboard overview | 12 active alarms, device data flowing | **PASS** | | 2.5 | Dashboard realtime | pv=666.42kW, heatpump=264.18kW, load=930.6kW | **PASS** | | 2.6 | Collector status | Simulator mode (503 expected) | **N/A** | | 2.7 | **[CRITICAL]** Branding | customer=tianpu, theme=#1890ff | **PASS** | | 2.8 | Swagger docs | HTTP 200 | **PASS** | | 2.9 | No backend errors | 0 errors in logs | **PASS** | | 2.10 | Version endpoint | 404 (not in core v1.1.0) | **N/A** | ## Phase 3: Data Collection | # | Check | Result | Status | |---|-------|--------|--------| | 3.1 | Collectors | Simulator mode | **N/A** | | 3.3 | Devices online | 18 online | **PASS** | | 3.4 | Energy data | 241,776 rows (simulator active) | **PASS** | ## Phase 4: Frontend Pages | # | Page | Route | HTTP | Status | |---|------|-------|------|--------| | 4.1 | **[CRITICAL]** Login | /login | 200 | **PASS** | | 4.2 | **[CRITICAL]** Dashboard | / | 200 | **PASS** | | 4.3 | Monitoring | /monitoring | 200 | **PASS** | | 4.4 | Devices | /devices | 301 | **PASS** | | 4.5 | Analysis | /analysis | 200 | **PASS** | | 4.6 | Alarms | /alarms | 200 | **PASS** | | 4.7 | Carbon | /carbon | 200 | **PASS** | | 4.8 | Reports | /reports | 200 | **PASS** | | 4.9 | Data Query | /data-query | 200 | **PASS** | | 4.10 | Prediction | /prediction | 200 | **PASS** | | 4.11 | Energy Strategy | /energy-strategy | 200 | **PASS** | | 4.12 | AI Operations | /ai-operations | 200 | **PASS** | | 4.13 | Maintenance | /maintenance | 200 | **PASS** | | 4.14 | Management | /management | 200 | **PASS** | | 4.15 | Quota | /quota | 200 | **PASS** | | 4.16 | Charging | /charging | 200 | **PASS** | | 4.17 | System/Users | /system/users | 200 | **PASS** | | 4.18 | System/Roles | /system/roles | 200 | **PASS** | | 4.19 | System/Settings | /system/settings | 200 | **PASS** | | 4.20 | System/Audit | /system/audit | 200 | **PASS** | | 4.21 | BigScreen 2D | /bigscreen | 200 | **PASS** | | 4.22 | BigScreen 3D | /bigscreen-3d | 200 | **PASS** | ## Phase 5: Feature Flags | # | Check | Result | Status | |---|-------|--------|--------| | 5.1 | Charging enabled | charging=True | **PASS** | | 5.2 | Carbon enabled | carbon=True | **PASS** | | 5.3 | BigScreen3D enabled | bigscreen_3d=True | **PASS** | ## Phase 6: Dashboard Charts | # | Widget | Result | Status | |---|--------|--------|--------| | 6.1 | PV Power | 666.42kW (live) | **PASS** | | 6.2 | Heat Pump Power | 264.18kW (live) | **PASS** | | 6.4 | Active Alarms | 12 active | **PASS** | | 6.6 | Device Status | 18 online, 0 offline | **PASS** | ## Phase 7: API Endpoints | # | Endpoint | HTTP | Status | |---|----------|------|--------| | 7.1 | /api/v1/devices | 200 | **PASS** | | 7.2 | /api/v1/alarms/events | 200 | **PASS** | | 7.3 | /api/v1/carbon/overview | 200 | **PASS** | | 7.4 | /api/v1/reports/templates | 200 | **PASS** | | 7.5 | /api/v1/charging/dashboard | 200 | **PASS** | | 7.6 | /api/v1/maintenance/plans | 200 | **PASS** | | 7.7 | /api/v1/energy-strategy/pricing | 404 | **WARN** | | 7.8 | /api/v1/quota/list | 405 | **WARN** | ## Phase 8: Performance | # | Check | Result | Status | |---|-------|--------|--------| | 8.1 | Backend errors | 0 errors in logs | **PASS** | ## Phase 9: Customer-Specific | # | Check | Expected | Actual | Status | |---|-------|----------|--------|--------| | 9.1 | Customer name | 天普新能源 | 天普新能源 | **PASS** | | 9.2 | Theme color | #1890ff (blue) | #1890ff | **PASS** | | 9.7 | Active alarms | Present | 12 active | **PASS** | --- ## Summary | Category | PASS | WARN | FAIL | N/A | |----------|------|------|------|-----| | Infrastructure | 7 | 0 | 0 | 0 | | Backend API | 8 | 0 | 0 | 2 | | Data Collection | 2 | 0 | 0 | 1 | | Frontend Pages | 22 | 0 | 0 | 0 | | Feature Flags | 3 | 0 | 0 | 0 | | Dashboard | 4 | 0 | 0 | 0 | | API Endpoints | 6 | 2 | 0 | 0 | | Performance | 1 | 0 | 0 | 0 | | Customer-Specific | 3 | 0 | 0 | 0 | | **TOTAL** | **56** | **2** | **0** | **3** | **Overall: PASS** All CRITICAL items pass. Live simulator data flowing (666kW PV, 264kW heat pump, 12 alarms). Only 2 minor WARN on API routes. --- ## Buyoff Sign-off | Role | Name | Date | Result | |------|------|------|--------| | Developer | Claude (AI) | 2026-04-08 | Pass | | QA | | | | | Customer | | | |