144 lines
3.6 KiB
Plaintext
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? 🎯
|
|
|
|
========================================
|