# Implementation Priorities - Updated **Date**: 2025-11-26 **Status**: Active Development --- ## 🔴 PRIORITY 1: Power Management (BEFORE PI TESTING) **Why Critical**: System behavior must be defined for UPS-present and UPS-absent scenarios before deploying to hardware. ### Tasks #### 1.1 UPS Manager - Power Restrictions Method ⚠️ CRITICAL - **File**: `app/backend/managers/ups_manager.py` - **Action**: Add `get_power_restrictions()` method - **Estimated Time**: 30 minutes - **Blocks**: All hardware testing **Implementation**: ```python def get_power_restrictions(self) -> Dict[str, Any]: """Get current power restrictions based on hardware state.""" # See POWER_MANAGEMENT_POLICY.md for full implementation ``` #### 1.2 System API - Power Restrictions Endpoint - **File**: `app/backend/api/system.py` - **Action**: Add `GET /api/system/power/restrictions` endpoint - **Estimated Time**: 15 minutes - **Depends on**: 1.1 **Implementation**: ```python @router.get("/power/restrictions") async def get_power_restrictions(): """Get current power restrictions.""" # See POWER_MANAGEMENT_POLICY.md ``` #### 1.3 Header Widget - UPS Missing Warning - **File**: Multiple (plugin_manager, ups_manager) - **Action**: Register widget when UPS not detected - **Estimated Time**: 20 minutes - **Depends on**: Header widget system (can defer to Phase 2) #### 1.4 Documentation Update - **Files**: - `README.md` - Add power management section - `GETTING_STARTED.md` - Mention UPS optional - `PROJECT_STATUS.md` - Update status - **Estimated Time**: 15 minutes **Total Time**: ~1.5 hours for Phase 1 (core functionality) --- ## 🟡 PRIORITY 2: Header Widget System (OPTIONAL FOR TESTING) **Why Important**: Good UX, but not required for basic Pi testing ### Tasks #### 2.1 Backend Widget Infrastructure - Add `HeaderWidget` dataclass to plugin_manager - Add widget registry methods - Add dismissed widgets tracking - **Estimated Time**: 1 hour #### 2.2 API Endpoints - `GET /api/system/widgets` - `POST /api/system/widgets/{id}/dismiss` - **Estimated Time**: 30 minutes #### 2.3 Frontend Component - Create `HeaderWidgets.tsx` - Add CSS styles - Integrate into `root.tsx` - **Estimated Time**: 1.5 hours #### 2.4 UPS Integration - Register widget on missing hardware - Register widget on low battery - **Estimated Time**: 30 minutes **Total Time**: ~3.5 hours --- ## 🟢 PRIORITY 3: Pi-gen Build Testing (READY TO GO) **Status**: Scripts complete, ready for build ### Tasks #### 3.1 Test Build - Run `./build-image.sh quick` - Verify PM3 client builds - Verify Python bindings work - **Estimated Time**: 30 minutes (build time 5-10 min) #### 3.2 Fix Issues - Address any build failures - Update scripts as needed - **Estimated Time**: Variable #### 3.3 Full Build - Run `./build-image.sh full` - Create complete bootable image - **Estimated Time**: 1-2 hours (build time) **Total Time**: 2-3 hours --- ## 🔵 PRIORITY 4: Hardware Testing **Prerequisites**: Priorities 1 & 3 complete ### 4.1 Deploy to Pi Zero 2 W - Flash SD card with custom image - Boot and verify services start - Test web interface access ### 4.2 Test Without UPS - Verify power restrictions return "assumed AC" - Verify header widget shows warning - Verify no unexpected restrictions ### 4.3 Test With UPS (if available) - Connect UPS HAT - Verify battery monitoring works - Test power restrictions on battery - Test AC power detection ### 4.4 Test PM3 Operations - Connect PM3 device - Execute commands - Test multi-device (if available) **Total Time**: 2-4 hours --- ## 🟣 PRIORITY 5: Future Enhancements (POST-MVP) - Firmware flashing UI (Sprint 3) - Advanced header widgets - Plugin ecosystem - Multi-device hardware testing --- ## Recommended Order ### Session Today: Power Management 1. ✅ Plans A, B, C (cloud-init, PYTHONPATH, port conflict) - DONE 2. ✅ Header widget system design - DONE 3. ✅ Power management policy design - DONE 4. **⏭️ NEXT: Implement Priority 1 (Power Management)** ### Next Session: Build & Deploy 1. Test pi-gen build (Priority 3) 2. Deploy to Pi hardware (Priority 4) 3. Verify power management works 4. Test PM3 operations ### Future Session: Polish 1. Implement header widgets (Priority 2) 2. Add firmware flashing (Sprint 3) 3. Advanced features --- ## Quick Implementation Guide ### Step 1: Add Power Restrictions to UPS Manager ```bash # Edit UPS manager nano app/backend/managers/ups_manager.py # Add get_power_restrictions() method # See POWER_MANAGEMENT_POLICY.md lines 49-120 ``` ### Step 2: Add API Endpoint ```bash # Edit system API nano app/backend/api/system.py # Add /power/restrictions endpoint # See POWER_MANAGEMENT_POLICY.md lines 166-180 ``` ### Step 3: Test Locally ```bash # Start backend cd app/backend python -m uvicorn main:app --reload # Test endpoint curl http://localhost:8000/api/system/power/restrictions ``` ### Step 4: Update Docs ```bash # Update PROJECT_STATUS.md # Update README.md with power management info ``` --- ## Success Criteria ### Priority 1 Complete When: - [x] Power management policy documented - [ ] `get_power_restrictions()` method implemented - [ ] API endpoint `/api/system/power/restrictions` working - [ ] Returns correct response when UPS not detected - [ ] Returns correct response when UPS on AC - [ ] Returns correct response when UPS on battery - [ ] Documentation updated ### Ready for Pi Testing When: - [ ] Priority 1 complete - [ ] Priority 3 complete (build tested) - [ ] Services start correctly - [ ] Web interface accessible - [ ] No Python import errors --- **Current Status**: Priority 1 design complete, implementation needed (~1.5 hours) **Blocker**: Must implement before Pi deployment **Next Action**: Implement `get_power_restrictions()` method