# Debugging Guide - December 1, 2025

## Issues to Fix

### Issue 1: Status Not Changing from 'review' to 'published'
**Symptom:** Content stays in "review" status in IGNY8 app after clicking Publish button

**What to check:**
1. Go to https://app.igny8.com/settings/debug-status
2. Click "Publish" on a content item in Review page
3. Look for these log messages in IGNY8 backend logs:
   - `[publish_content_to_wordpress] 📦 Preparing content payload...`
   - `Content status: 'review'` or `'published'`
   - `💾 Content model updated: Status: 'X' → 'published'`

**Expected flow:**
1. User clicks Publish → Status immediately changes to 'published' in IGNY8
2. Celery task queues WordPress publish
3. WordPress responds with post_id and post_url
4. IGNY8 updates external_id and external_url

### Issue 2: No WP Status Column on Published Page
**Symptom:** Published page doesn't show WordPress post status

**What to check:**
- Call: `GET https://app.igny8.com/api/v1/writer/content/{id}/wordpress_status/`
- Expected response:
```json
{
  "success": true,
  "data": {
    "wordpress_status": "publish",
    "external_id": 123,
    "external_url": "https://site.com/post",
    "post_title": "...",
    "last_checked": "2025-12-01T..."
  }
}
```

**WordPress endpoint:**
- `GET https://yoursite.com/wp-json/igny8/v1/post-status/{post_id}/`

### Issue 3: Custom Taxonomy/Attribute Columns Still Showing
**Symptom:** WordPress admin shows "Taxonomy" and "Attribute" columns

**What to check:**
1. Go to WordPress admin → Posts → All Posts
2. Check column headers
3. Should ONLY see: Title, Author, Categories, Tags, Date
4. Should NOT see: Taxonomy, Attribute

**If still showing:** Clear WordPress object cache and refresh page

### Issue 4: Tags, Categories, Images Not Saving
**Symptom:** WordPress posts don't have tags, categories, or images after publishing

**What to check in logs:**

#### IGNY8 Backend Logs (Celery worker output):
```
[publish_content_to_wordpress] Found X taxonomy mappings
[publish_content_to_wordpress] 📁 Added category: 'Category Name'
[publish_content_to_wordpress] Found X images for content
[publish_content_to_wordpress] 🖼️ Featured image: https://...
[publish_content_to_wordpress] 🏷️ Primary keyword (tag): 'keyword'
[publish_content_to_wordpress] 📊 TOTAL: X categories, Y tags
[publish_content_to_wordpress] 📦 Payload summary:
  - Categories: [...]
  - Tags: [...]
  - Featured image: Yes
  - Gallery images: N
```

#### WordPress Logs (debug.log):
```
========== IGNY8 PUBLISH REQUEST ==========
Content ID: 123
Categories: ["Category1","Category2"]
Tags: ["tag1","tag2","tag3"]
Featured Image: https://...
Gallery Images: 2 images
===========================================

========== IGNY8 CREATE WP POST ==========
IGNY8: Processing 2 categories
IGNY8: ✅ Assigned 2 categories to post 456
IGNY8: Processing 3 tags
IGNY8: ✅ Assigned 3 tags to post 456
IGNY8: Setting featured image from featured_image_url field: https://...
IGNY8: Setting gallery with 2 images
IGNY8: Setting SEO meta title: ...
========== IGNY8 POST CREATION COMPLETE: Post ID 456 ==========
```

## How to Enable Logging

### IGNY8 Backend
1. Celery logs are automatically output to console
2. Run Celery worker with: `celery -A igny8_core worker -l info`
3. Or check Docker logs: `docker logs -f igny8_celery`

### WordPress
1. Enable debug mode in `wp-config.php`:
```php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
```

2. Check logs at: `wp-content/debug.log`

3. Tail logs in real-time:
```bash
tail -f wp-content/debug.log
```

## Test Procedure

### Test Case 1: Publish Content with Full Metadata
1. Create content in IGNY8 with:
   - Title: "Test Content Dec 1"
   - Content HTML: Full article body
   - ContentTaxonomyMap: Link to taxonomy term "Marketing"
   - Primary Keyword: "seo strategy"
   - Secondary Keywords: ["digital marketing", "content marketing"]
   - Images: 1 featured, 2 gallery

2. Click Publish button

3. Check IGNY8 logs for:
   - ✅ Categories extracted: Should see "Marketing"
   - ✅ Tags extracted: Should see "seo strategy", "digital marketing", "content marketing"
   - ✅ Images extracted: Should see featured + 2 gallery
   - ✅ Status changed to 'published'

4. Check WordPress logs for:
   - ✅ Received categories array with "Marketing"
   - ✅ Received tags array with 3 items
   - ✅ Received featured_image_url
   - ✅ Received gallery_images array with 2 items
   - ✅ Post created with ID
   - ✅ Categories assigned
   - ✅ Tags assigned
   - ✅ Images downloaded and attached

5. Check WordPress admin:
   - Go to Posts → All Posts
   - Find the post "Test Content Dec 1"
   - Open it for editing
   - Verify:
     - ✅ Categories: "Marketing" is checked
     - ✅ Tags: "seo strategy", "digital marketing", "content marketing" appear
     - ✅ Featured image is set
     - ✅ Gallery images are in media library

### Test Case 2: Check Status Sync
1. Publish content from IGNY8
2. Immediately check IGNY8 app → Published page
3. ✅ Content should appear with status "Published"
4. Call WordPress status endpoint
5. ✅ Should return wordpress_status: "publish"

## Common Issues

### Issue: No categories/tags being sent
**Diagnosis:**
- Check IGNY8 logs for: `Found 0 taxonomy mappings`
- Check IGNY8 logs for: `No primary keyword found`

**Solution:**
- Ensure Content has ContentTaxonomyMap entries
- Ensure Content has primary_keyword and secondary_keywords populated

### Issue: Images not appearing
**Diagnosis:**
- Check IGNY8 logs for: `Found 0 images for content`

**Solution:**
- Ensure Images model has records linked to content
- Ensure Images have image_url populated
- Ensure Images have correct image_type ('featured' or 'in_article')

### Issue: WordPress receives empty arrays
**Diagnosis:**
- WordPress logs show: `Categories: []`, `Tags: []`

**Solution:**
- This means IGNY8 backend is not extracting data from Content model
- Check that Content.id matches the one being published
- Check that ContentTaxonomyMap.content_id matches Content.id
- Check that Images.content_id matches Content.id

### Issue: Status not updating in IGNY8
**Diagnosis:**
- IGNY8 logs show status change but app still shows "review"

**Solution:**
- Check if frontend is polling/refreshing after publish
- Check if Content.status field is actually being saved
- Check database directly: `SELECT id, title, status FROM content_content WHERE id = X;`

## Database Queries for Debugging

### Check Content Status
```sql
SELECT 
    id, 
    title, 
    status, 
    external_id, 
    external_url,
    primary_keyword,
    secondary_keywords
FROM content_content 
WHERE id = YOUR_CONTENT_ID;
```

### Check Taxonomy Mappings
```sql
SELECT 
    ctm.id,
    ctm.content_id,
    t.name as taxonomy_name
FROM content_contenttaxonomymap ctm
JOIN content_taxonomy t ON ctm.taxonomy_id = t.id
WHERE ctm.content_id = YOUR_CONTENT_ID;
```

### Check Images
```sql
SELECT 
    id,
    content_id,
    image_type,
    image_url,
    position
FROM writer_images 
WHERE content_id = YOUR_CONTENT_ID
ORDER BY position;
```

### Check WordPress Post Meta
```sql
-- In WordPress database
SELECT 
    post_id,
    meta_key,
    meta_value
FROM wp_postmeta
WHERE post_id = YOUR_POST_ID
AND meta_key LIKE '_igny8_%';
```

### Check WordPress Post Terms
```sql
-- In WordPress database
SELECT 
    tr.object_id as post_id,
    tt.taxonomy,
    t.name as term_name
FROM wp_term_relationships tr
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_terms t ON tt.term_id = t.term_id
WHERE tr.object_id = YOUR_POST_ID;
```

## Next Steps

1. **Test with sample content** following Test Case 1 above
2. **Collect all log output** from both IGNY8 and WordPress
3. **Share logs** for analysis if issues persist
4. **Check database** using queries above to verify data exists

## Log Locations

### IGNY8 Backend
- Celery worker console output
- Docker logs: `docker logs igny8_celery`
- Django logs: `igny8/backend/logs/` (if configured)

### WordPress
- `wp-content/debug.log`
- Apache/Nginx error logs
- PHP error logs

## Expected Log Flow

When everything works correctly, you should see this sequence:

**1. IGNY8 Backend (when Publish clicked):**
```
[ContentViewSet.publish] Queued Celery task abc-123 for content 456, status set to 'published'
[publish_content_to_wordpress] 🎯 Celery task started: content_id=456
[publish_content_to_wordpress] 📄 Content loaded: title='Test Article'
[publish_content_to_wordpress] Found 2 taxonomy mappings
[publish_content_to_wordpress] 📁 Added category: 'Marketing'
[publish_content_to_wordpress] 📁 Added category: 'Technology'
[publish_content_to_wordpress] Found 3 images for content
[publish_content_to_wordpress] 🖼️ Featured image: https://...
[publish_content_to_wordpress] 🖼️ Gallery image #1: https://...
[publish_content_to_wordpress] 🖼️ Gallery image #2: https://...
[publish_content_to_wordpress] 🏷️ Primary keyword (tag): 'seo strategy'
[publish_content_to_wordpress] 🏷️ Added 2 secondary keywords as tags
[publish_content_to_wordpress] 📊 TOTAL: 2 categories, 3 tags
[publish_content_to_wordpress] 🚀 POSTing to WordPress: https://site.com/wp-json/...
[publish_content_to_wordpress] 📦 Payload summary:
  - Categories: ['Marketing', 'Technology']
  - Tags: ['seo strategy', 'digital marketing', 'content marketing']
  - Featured image: Yes
  - Gallery images: 2
[publish_content_to_wordpress] 📬 WordPress response: status=201
[publish_content_to_wordpress] ✅ WordPress post created successfully: post_id=789
[publish_content_to_wordpress] 💾 Content model updated:
  - Status: 'published' → 'published'
  - External ID: 789
  - External URL: https://site.com/test-article/
[publish_content_to_wordpress] 🎉 Successfully published content 456 to WordPress post 789
```

**2. WordPress (receiving publish request):**
```
========== IGNY8 PUBLISH REQUEST ==========
Content ID: 456
Task ID: 123
Title: Test Article
Content HTML: 5234 chars
Categories: ["Marketing","Technology"]
Tags: ["seo strategy","digital marketing","content marketing"]
Featured Image: https://...
Gallery Images: 2 images
SEO Title: YES
SEO Description: YES
Primary Keyword: seo strategy
===========================================

========== IGNY8 CREATE WP POST ==========
Content ID: 456
Task ID: 123
Title: Test Article
IGNY8: Processing 2 categories
IGNY8: ✅ Assigned 2 categories to post 789
IGNY8: Processing 3 tags
IGNY8: ✅ Assigned 3 tags to post 789
IGNY8: Setting featured image from featured_image_url field: https://...
IGNY8: Setting gallery with 2 images
IGNY8: Setting SEO meta title: Test Article - SEO Title
IGNY8: Setting SEO meta description
========== IGNY8 POST CREATION COMPLETE: Post ID 789 ==========
```

If you don't see these logs, something is broken in the flow.

---

**Created:** December 1, 2025  
**Purpose:** Diagnose why fixes didn't work and provide step-by-step debugging
