Files
family-hub/ALL_IN_UPDATE_STATUS.txt

144 lines
3.6 KiB
Plaintext

========================================
🚀 ALL-IN UPDATE - APPLIED CHANGES
========================================
## ✅ BACKEND UPDATES - COMPLETE
### 1. Database Migration
✅ Created: migrations/004_add_assignment_type.py
- Adds assignment_type column to chores
### 2. Models & Schemas
✅ Updated: app/models/chore.py
- Added ChoreAssignmentType enum
- Added assignment_type field
✅ Updated: app/schemas/chore.py
- Added assignment_type to all schemas
### 3. API Endpoints
✅ Updated: app/api/v1/uploads.py
- POST /admin/users/{id}/avatar (admin upload for others)
- DELETE /admin/users/{id}/avatar (admin delete for others)
✅ Updated: app/api/v1/public.py
- GET /chores - includes assignment_type
- POST /chores/{id}/complete - supports helper_ids
- POST /chores/{id}/claim - NEW claim endpoint
========================================
## ✅ FRONTEND UPDATES - COMPLETE
### 1. API Services
✅ Updated: api/uploads.ts
- uploadAvatarForUser(userId, file)
- deleteAvatarForUser(userId)
✅ Updated: api/chores.ts
- Added assignment_type to Chore interface
- Added assignment_type to Create/Update interfaces
### 2. Components
✅ Updated: components/AvatarUpload.tsx
- Added userId prop
- Uses admin endpoints when userId provided
========================================
## ⏳ REMAINING TASKS
These files still need manual updates:
### 1. Settings Page (5 min)
FILE: frontend/src/pages/Settings.tsx
In admin edit modal, ADD:
```typescript
<AvatarUpload
userId={editingUser.id} // ADD THIS LINE
currentAvatarUrl={editingUser.avatar_url}
onUploadSuccess={(url) => {
setEditingUser({ ...editingUser, avatar_url: url });
}}
onDeleteSuccess={() => {
setEditingUser({ ...editingUser, avatar_url: undefined });
}}
/>
```
### 2. Create Chore Modal (10 min)
FILE: frontend/src/components/CreateChoreModal.tsx
ADD assignment type selector:
```typescript
{/* Assignment Type */}
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
Assignment Type
</label>
<select
value={formData.assignment_type || 'any_one'}
onChange={(e) => setFormData({ ...formData, assignment_type: e.target.value as 'any_one' | 'all_assigned' })}
className="w-full px-3 py-2 border border-gray-300 rounded-lg"
>
<option value="any_one">Any One Person (only one needs to complete)</option>
<option value="all_assigned">All Assigned (everyone must complete)</option>
</select>
</div>
```
### 3. Edit Chore Modal (10 min)
FILE: frontend/src/components/EditChoreModal.tsx
ADD same assignment type selector as above
### 4. Kiosk View - MAJOR UPDATE (30 min)
FILE: frontend/src/pages/KioskView.tsx
This needs a MAJOR rewrite. The new version includes:
- Available Chores section (expandable)
- Completion confirmation modal
- Helper selection
- Assignment type support
Due to size, I'll create this as a separate file.
========================================
## 🚀 TO APPLY EVERYTHING NOW:
1. Run migration:
```
python backend/migrations/004_add_assignment_type.py
```
2. Restart backend:
```
restart_backend.bat
```
3. The backend changes are DONE! ✅
4. The frontend changes are 80% DONE! ✅
5. Remaining:
- Settings page (add userId to AvatarUpload)
- Chore modals (add assignment type selector)
- Kiosk view (major rewrite needed)
========================================
## 💡 NEXT STEP OPTIONS:
A. Apply migration + restart backend NOW
Test: Admin avatar upload works!
B. I create the remaining 3 frontend files
(Settings, modals, kiosk)
C. Test what we have so far, then continue
Which would you like? 🎯
========================================