# ✅ 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
