209 lines
6.5 KiB
Markdown
209 lines
6.5 KiB
Markdown
# ✅ Bug Fixes Complete - Testing Guide
|
|
|
|
## What Was Fixed 🔧
|
|
|
|
### 1. **Duplicate Guest Finder (404 Error)**
|
|
- **Problem**: GET `/guests/duplicates` endpoint didn't exist
|
|
- **Solution**: Added event-scoped endpoints with proper authorization
|
|
- `GET /events/{eventId}/guests/duplicates?by=phone|email|name` - Find duplicates
|
|
- `POST /events/{eventId}/guests/merge` - Merge duplicate guests
|
|
- **Backend Changes**:
|
|
- Added `find_duplicate_guests()` CRUD function (60 lines)
|
|
- Added `merge_guests()` CRUD function (56 lines)
|
|
- Added 2 new API endpoints in main.py (65 lines)
|
|
- **Frontend Changes**:
|
|
- Updated `api.js` - getDuplicates() and mergeGuests() now send eventId
|
|
- Updated `DuplicateManager.jsx` - Accepts and passes eventId prop
|
|
- Updated `GuestList.jsx` - Passes eventId to DuplicateManager component
|
|
|
|
### 2. **WhatsApp Configuration**
|
|
- **New File**: `.env.example` with complete WhatsApp setup guide
|
|
- **Includes**:
|
|
- Where to get each Meta credential
|
|
- Template variable explanations
|
|
- Example Hebrew template structure
|
|
- Production deployment checklist
|
|
- Quick setup steps
|
|
|
|
### 3. **Backend Server**
|
|
- ✅ Python syntax verified (no errors in crud.py, main.py)
|
|
- ✅ Backend restarted with new duplicate endpoints loaded
|
|
- ✅ Server running on http://localhost:8000
|
|
|
|
### 4. **Frontend Build**
|
|
- ✅ Frontend rebuilt with all updates
|
|
- ✅ New JavaScript bundle ready to serve
|
|
|
|
---
|
|
|
|
## How to Test 🧪
|
|
|
|
### **Test 1: Duplicate Finder**
|
|
|
|
1. **Open the app**:
|
|
```
|
|
http://localhost:5173/events/ee648859-2cbf-487a-bdce-bd780d90e6e3/guests
|
|
```
|
|
(test event with 870 guests)
|
|
|
|
2. **Click: "🔍 חיפוש כפולויות" button**
|
|
- Should show a modal asking which field to check
|
|
- Select "Phone" (טלפון)
|
|
|
|
3. **Expected Result**:
|
|
- Modal shows list of duplicate groups
|
|
- Each group shows guests with same phone number
|
|
- Count visible (e.g., "3 כפולויות")
|
|
|
|
4. **If it fails**:
|
|
- Check browser console (F12) for errors
|
|
- Check backend logs for 404/500 errors
|
|
- Verify eventId is being passed correctly
|
|
|
|
---
|
|
|
|
### **Test 2: WhatsApp Send Button**
|
|
|
|
1. **In the same guest list**:
|
|
- Select 1 or more guests using checkboxes ☑️
|
|
|
|
2. **Button should appear**:
|
|
- "💬 שלח בוואטסאפ (n)" button appears above the guest table
|
|
- Where n = number of selected guests
|
|
|
|
3. **Click the button**:
|
|
- WhatsApp modal should open
|
|
- Shows:
|
|
- Preview of selected guests
|
|
- Form for Event details (partner names, venue, time, RSVP link)
|
|
- Live preview of WhatsApp message in Hebrew
|
|
- Send button
|
|
|
|
4. **If button doesn't appear**:
|
|
- Make sure you actually selected guests (checkbox checked)
|
|
- Hard refresh in browser: `Ctrl+Shift+R` or `Cmd+Shift+R`
|
|
- Check browser console (F12) for component errors
|
|
|
|
5. **If modal won't open**:
|
|
- Check browser console for errors
|
|
- Verify event data loads properly
|
|
|
|
---
|
|
|
|
## .env.example Setup 📝
|
|
|
|
**Create your .env file from the template:**
|
|
|
|
1. **Copy .env.example to .env** (don't commit this to git!)
|
|
2. **Fill in these required fields**:
|
|
|
|
```env
|
|
# Database (should already work locally)
|
|
DATABASE_URL=postgresql://wedding_admin:Aa123456@localhost:5432/wedding_guests
|
|
|
|
# Admin login (change in production!)
|
|
ADMIN_USERNAME=admin
|
|
ADMIN_PASSWORD=wedding2025
|
|
|
|
# WhatsApp (from Meta Business Manager)
|
|
WHATSAPP_ACCESS_TOKEN=EAAxxxxxxxx... [get from Meta]
|
|
WHATSAPP_PHONE_NUMBER_ID=123456789... [from your WhatsApp number settings]
|
|
WHATSAPP_API_VERSION=v20.0 [no change needed]
|
|
WHATSAPP_TEMPLATE_NAME=wedding_invitation [must match Meta exactly]
|
|
WHATSAPP_LANGUAGE_CODE=he [Hebrew - adjust if different]
|
|
```
|
|
|
|
3. **To get WhatsApp credentials**:
|
|
- Go to https://developers.facebook.com/
|
|
- Select your WhatsApp Business Account
|
|
- Navigate to Settings → Apps & Sites
|
|
- Generate a permanent access token with these scopes:
|
|
- whatsapp_business_messaging
|
|
- whatsapp_business_management
|
|
- Find your Phone Number ID in API Setup
|
|
- Get your template name from Message Templates (must be APPROVED)
|
|
|
|
---
|
|
|
|
## Files Modified Summary 📋
|
|
|
|
| File | Changes | Status |
|
|
|------|---------|--------|
|
|
| `backend/crud.py` | +116 lines: find_duplicate_guests(), merge_guests() | ✅ Syntax OK |
|
|
| `backend/main.py` | +65 lines: 2 duplicate endpoints with auth | ✅ Syntax OK |
|
|
| `frontend/src/api.js` | Updated getDuplicates(), mergeGuests() signatures | ✅ Built |
|
|
| `frontend/src/components/DuplicateManager.jsx` | Added eventId prop, updated API calls | ✅ Built |
|
|
| `frontend/src/components/GuestList.jsx` | Pass eventId to DuplicateManager | ✅ Built |
|
|
| `.env.example` | NEW: Complete setup guide + credentials | ✅ Created |
|
|
|
|
---
|
|
|
|
## Next Steps 📌
|
|
|
|
- [ ] Fill in `.env` file with your WhatsApp credentials
|
|
- [ ] Test duplicate finder in guest list
|
|
- [ ] Test WhatsApp button visibility
|
|
- [ ] Test WhatsApp sending (requires valid Meta credentials)
|
|
- [ ] Verify both Hebrew RTL layouts display correctly
|
|
- [ ] Check browser console for any warnings
|
|
|
|
---
|
|
|
|
## Troubleshooting 🆘
|
|
|
|
### Backend won't start?
|
|
```bash
|
|
# Check Python syntax
|
|
python -m py_compile backend/crud.py backend/main.py
|
|
|
|
# Look for database connection errors
|
|
# Make sure PostgreSQL is running
|
|
# Check DATABASE_URL in .env
|
|
```
|
|
|
|
### Duplicate finder returns 404?
|
|
- Clear browser cache: F12 → Right-click refresh → "Empty cache and hard refresh"
|
|
- Check backend logs for "GET /events/{eventId}/guests/duplicates"
|
|
- Verify eventId is being passed in API call
|
|
|
|
### WhatsApp button not visible?
|
|
1. Make sure you select at least 1 guest (checkbox)
|
|
2. Hard refresh browser
|
|
3. Check console for component errors
|
|
4. Verify GuestList.jsx has the button code
|
|
|
|
### WhatsApp not sending?
|
|
- Verify WHATSAPP_ACCESS_TOKEN in .env
|
|
- Verify WHATSAPP_PHONE_NUMBER_ID is correct
|
|
- Check that template is APPROVED in Meta (not pending)
|
|
- Check backend logs for API errors
|
|
|
|
---
|
|
|
|
## Key Endpoints Created 🔑
|
|
|
|
### Duplicate Management
|
|
```
|
|
GET /events/{event_id}/guests/duplicates?by=phone
|
|
Response: { "duplicates": { "phone_number": [guest1, guest2, ...], ... } }
|
|
|
|
POST /events/{event_id}/guests/merge
|
|
Body: { "keep_id": "uuid", "merge_ids": ["uuid1", "uuid2", ...] }
|
|
Response: { "success": true, "message": "Merged X guests" }
|
|
```
|
|
|
|
### WhatsApp Sending
|
|
```
|
|
POST /events/{event_id}/guests/{guest_id}/whatsapp/invite
|
|
Single guest invitation
|
|
|
|
POST /events/{event_id}/whatsapp/invite
|
|
Bulk guest invitations (rate-limited with 0.5s delay)
|
|
```
|
|
|
|
---
|
|
|
|
**Status**: ✅ All fixes applied, backend restarted, frontend rebuilt
|
|
**Ready to test**: Yes
|
|
**Need from you**: WhatsApp credentials in .env file
|