======================================== 🚀 MAJOR FEATURE UPDATE - IMPLEMENTATION PLAN ======================================== ## FEATURES TO IMPLEMENT: 1. ✅ Admin can upload avatars for other users 2. ✅ Chore assignment type (any_one vs all_assigned) 3. ✅ Kiosk: Show unallocated chores (expandable) 4. ✅ Kiosk: Completion confirmation modal (completed/with help/cancel) ======================================== IMPLEMENTATION STEPS: ======================================== ## PHASE 1: DATABASE & MODELS ### Step 1A: Run Migration ``` python backend/migrations/004_add_assignment_type.py ``` Adds: chores.assignment_type column ### Step 1B: Update Models - backend/app/models/chore.py - Add assignment_type field - backend/app/schemas/chore.py - Add assignment_type to schemas ### Step 1C: Add Admin Avatar Upload Endpoint - backend/app/api/v1/uploads.py - Add admin_upload_avatar(user_id, file) ======================================== ## PHASE 2: BACKEND API UPDATES ### Step 2A: Chore Assignment Type Files to update: - ✅ backend/app/models/chore.py - ✅ backend/app/schemas/chore.py - ✅ backend/app/api/v1/chores.py (create/update endpoints) ### Step 2B: Admin Avatar Upload Files to update: - ✅ backend/app/api/v1/uploads.py - POST /api/v1/uploads/users/{user_id}/avatar (admin only) - DELETE /api/v1/uploads/users/{user_id}/avatar (admin only) ### Step 2C: Public Chores Endpoint Update Files to update: - ✅ backend/app/api/v1/public.py - GET /api/v1/public/chores (add assignment_type to response) - POST /api/v1/public/chores/{id}/complete (handle assignment_type logic) - POST /api/v1/public/chores/{id}/claim (new - claim unassigned chore) ======================================== ## PHASE 3: FRONTEND UPDATES ### Step 3A: Upload Service Files to update: - ✅ frontend/src/api/uploads.ts - Add uploadAvatarForUser(userId, file) - Add deleteAvatarForUser(userId) ### Step 3B: Avatar Upload Component Files to update: - ✅ frontend/src/components/AvatarUpload.tsx - Add userId prop (optional) - Use admin endpoint if userId provided ### Step 3C: Settings Page Files to update: - ✅ frontend/src/pages/Settings.tsx - Pass userId to AvatarUpload in admin edit modal ### Step 3D: Chore Forms Files to update: - ✅ frontend/src/components/CreateChoreModal.tsx (add assignment_type select) - ✅ frontend/src/components/EditChoreModal.tsx (add assignment_type select) - ✅ frontend/src/api/chores.ts (add assignment_type to interface) ### Step 3E: Kiosk View - Major Update Files to update: - ✅ frontend/src/pages/KioskView.tsx - Add "Available Chores" expandable section - Add CompletionModal component (completed/with help/cancel) - Handle claiming unassigned chores - Show assignment_type indicators ======================================== ## IMPLEMENTATION ORDER: 1. Run migration (004_add_assignment_type.py) 2. Update backend models/schemas 3. Update backend API endpoints 4. Update frontend services/components 5. Test each feature individually 6. Test integration ======================================== ## FILES TO CREATE/UPDATE: ### Backend (7 files): ✅ migrations/004_add_assignment_type.py (NEW) ✅ app/models/chore.py (UPDATE) ✅ app/schemas/chore.py (UPDATE) ✅ app/api/v1/chores.py (UPDATE) ✅ app/api/v1/uploads.py (UPDATE) ✅ app/api/v1/public.py (UPDATE) ### Frontend (8 files): ✅ api/uploads.ts (UPDATE) ✅ api/chores.ts (UPDATE) ✅ components/AvatarUpload.tsx (UPDATE) ✅ components/CreateChoreModal.tsx (UPDATE) ✅ components/EditChoreModal.tsx (UPDATE) ✅ pages/Settings.tsx (UPDATE) ✅ pages/KioskView.tsx (MAJOR UPDATE) ======================================== ## TESTING CHECKLIST: ### Assignment Type: - [ ] Create chore with "any_one" - only one person needs to complete - [ ] Create chore with "all_assigned" - all must complete - [ ] Kiosk shows correct completion state ### Admin Avatar Upload: - [ ] Admin can upload avatar for other user - [ ] Admin can delete avatar for other user - [ ] Regular user can't access admin endpoints ### Kiosk - Available Chores: - [ ] Section expands/collapses - [ ] Shows chores not assigned to user - [ ] User can claim and complete - [ ] Claimed chore moves to "My Chores" ### Kiosk - Completion Modal: - [ ] "Completed" - marks as done - [ ] "Completed with Help" - shows user selector - [ ] Selected helpers are recorded - [ ] "Cancel" closes modal ======================================== Ready to implement? Let's go! ========================================