🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
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:
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/restrictionsendpoint - Estimated Time: 15 minutes
- Depends on: 1.1
Implementation:
@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 sectionGETTING_STARTED.md- Mention UPS optionalPROJECT_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
HeaderWidgetdataclass to plugin_manager - Add widget registry methods
- Add dismissed widgets tracking
- Estimated Time: 1 hour
2.2 API Endpoints
GET /api/system/widgetsPOST /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
- ✅ Plans A, B, C (cloud-init, PYTHONPATH, port conflict) - DONE
- ✅ Header widget system design - DONE
- ✅ Power management policy design - DONE
- ⏭️ NEXT: Implement Priority 1 (Power Management)
Next Session: Build & Deploy
- Test pi-gen build (Priority 3)
- Deploy to Pi hardware (Priority 4)
- Verify power management works
- Test PM3 operations
Future Session: Polish
- Implement header widgets (Priority 2)
- Add firmware flashing (Sprint 3)
- Advanced features
Quick Implementation Guide
Step 1: Add Power Restrictions to UPS Manager
# 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
# 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
# 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
# Update PROJECT_STATUS.md
# Update README.md with power management info
Success Criteria
Priority 1 Complete When:
- Power management policy documented
get_power_restrictions()method implemented- API endpoint
/api/system/power/restrictionsworking - 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