# Field Rename Implementation Complete ## Summary Complete removal of old field names (`site_entity_type`, `cluster_role`, `entity_type`, `html_content`) with NO backward compatibility. All references updated to use new field names (`content_type`, `content_structure`, `content_html`) across entire codebase. ## Changes Completed ### Backend Models (3 files) ✅ `/backend/igny8_core/business/planning/models.py` - ContentIdeas - Renamed: `site_entity_type` → `content_type` - Renamed: `cluster_role` → `content_structure` - Removed: ALL `db_column` mappings - Added: Comprehensive CHOICES (4 types, 14 structures) - Updated: Defaults to `post` / `article` ✅ `/backend/igny8_core/business/content/models.py` - Tasks & Content - Tasks: Removed `db_column` mappings for `content_type` and `content_structure` - Content: Removed `db_column` mapping for `content_html` - Added: Comprehensive CHOICES to both models - Updated: All help text ### Backend Views & Services (5 files) ✅ `/backend/igny8_core/modules/planner/views.py` - Removed: `role_to_structure` mapping dict - Direct field copy now: `idea.content_type` → `task.content_type` ✅ `/backend/igny8_core/modules/planner/serializers.py` - Already using correct field names ✅ `/backend/igny8_core/ai/functions/generate_ideas.py` - Removed: `structure_to_role` mapping - Direct assignment of `content_type`/`content_structure` ✅ `/backend/igny8_core/business/publishing/services/adapters/sites_renderer_adapter.py` - Updated: All `entity_type` → `content_type` - Updated: All `cluster_role` → `content_structure` - Removed: All backward compatibility logic ✅ `/backend/igny8_core/business/site_building/services/page_generation_service.py` - Updated: `entity_type` → `content_type` - Updated: `cluster_role` → `content_structure` - Removed: Old field references ### Backend AI & Prompts (2 files) ✅ `/backend/igny8_core/ai/prompts.py` - Updated: Documentation for new values - Updated: Prompt templates to reference `content_structure` - Removed: Old hub/supporting/attribute references ### Frontend TypeScript Interfaces (1 file) ✅ `/frontend/src/services/api.ts` - Updated: `ContentIdea`, `ContentIdeaCreateData`, `ContentIdeasFilters` - All interfaces now use `content_type` / `content_structure` ### Frontend Pages (3 files) ✅ `/frontend/src/pages/Planner/Ideas.tsx` - Updated: All 6 field references - Updated: Form data, filters, handlers ✅ `/frontend/src/pages/Sites/PostEditor.tsx` - Updated: `content.cluster_role` → `content.content_structure` ✅ `/frontend/src/pages/Settings/DebugStatus.tsx` - Updated: Help text to reference new field names - Noted old names as removed ### Frontend Config Files (4 files) ✅ `/frontend/src/config/structureMapping.ts` - NEW - Created: Shared constants for all structure mappings - Exports: `CONTENT_TYPE_OPTIONS` (4 types) - Exports: `CONTENT_STRUCTURE_BY_TYPE` (14 structures) - Exports: `STRUCTURE_LABELS`, `TYPE_LABELS`, `getStructureOptions()` ✅ `/frontend/src/config/pages/ideas.config.tsx` - Updated: Interface, columns, filters, form fields - Comprehensive 14-structure options in filters and forms ✅ `/frontend/src/config/pages/tasks.config.tsx` - Updated: All references to use new field names - Comprehensive 14-structure options in filters and forms - Uses structureMapping constants ✅ `/frontend/src/config/pages/content.config.tsx` - Updated: All references to use new field names - Comprehensive 14-structure options in filters - Uses structureMapping constants ## New Value Schema ### Content Types (4) - `post` - Blog posts, articles - `page` - Static pages - `product` - Product pages - `taxonomy` - Category/tag/attribute archives ### Content Structures (14) **Post Structures (5):** - `article` - Standard blog post - `guide` - How-to guides - `comparison` - Comparison posts - `review` - Review posts - `listicle` - List-based articles **Page Structures (5):** - `landing_page` - Marketing landing pages - `business_page` - Business info pages - `service_page` - Service description pages - `general` - General static pages - `cluster_hub` - Topic cluster hub pages **Product Structures (1):** - `product_page` - Product detail pages **Taxonomy Structures (3):** - `category_archive` - Category listing pages - `tag_archive` - Tag listing pages - `attribute_archive` - Attribute filter pages ## Database Migration ### SQL Migration File ✅ `/backend/rename_fields_migration.sql` - Renames 5 tables' columns - Conditional checks (only rename if old column exists) - Index renames - Tables affected: 1. `igny8_content_ideas` (2 columns) 2. `igny8_tasks` (2 columns) 3. `igny8_content` (3 columns) 4. `igny8_content_taxonomy_map` (1 column) 5. `igny8_taxonomy_terms` (1 column) ### How to Execute ```bash # Option 1: Via psql (if available) psql -U username -d database_name -f /data/app/igny8/backend/rename_fields_migration.sql # Option 2: Via Django shell cd /data/app/igny8/backend source .venv/bin/activate python manage.py dbshell < rename_fields_migration.sql # Option 3: Via Django migration (recommended) python manage.py makemigrations python manage.py migrate ``` ## Testing & Validation ### Backend Testing Script ✅ `/backend/test_field_rename.py` - Tests model field access - Verifies database column names - Validates CHOICES definitions - Checks for old column names ### Run Test ```bash cd /data/app/igny8/backend source .venv/bin/activate python manage.py shell < test_field_rename.py ``` ### Manual API Testing Test these endpoints after migration: 1. **Ideas API:** - GET `/api/planner/ideas/` - List ideas - POST `/api/planner/ideas/` - Create idea with new fields - POST `/api/planner/ideas/{id}/bulk_queue_to_writer/` - Queue to writer 2. **Tasks API:** - GET `/api/writer/tasks/` - List tasks - GET `/api/writer/tasks/?content_type=post` - Filter by type - GET `/api/writer/tasks/?content_structure=article` - Filter by structure 3. **Content API:** - GET `/api/writer/content/` - List content - GET `/api/writer/content/?content_type=page` - Filter by type ### Frontend Testing 1. Navigate to Ideas page - verify: - Filters show all 14 structures - Create form has all types/structures - Table displays correctly - Bulk queue works 2. Navigate to Tasks page - verify: - Filters work with new values - Table columns show type/structure badges - No console errors 3. Navigate to Content page - verify: - Filters work - Table displays correctly - PostEditor shows content_structure ## Breaking Changes ⚠️ **NO BACKWARD COMPATIBILITY** - This is a breaking change: - Old API field names (`site_entity_type`, `cluster_role`) no longer work - Old database columns will be renamed (data preserved) - Any external integrations must update to new field names ## Rollback Plan If issues occur: 1. Reverse SQL migration (see `rename_fields_migration.sql` comments) 2. Revert all code changes via git 3. Original columns: `site_entity_type`, `cluster_role`, `entity_type`, `html_content` ## Files Modified **Backend (7 files):** - Models: 2 files - Views: 1 file - Serializers: 1 file (already correct) - Services: 2 files - AI: 2 files **Frontend (8 files):** - Interfaces: 1 file - Pages: 3 files - Configs: 4 files (1 new) **Database:** - SQL migration: 1 file (not yet executed) - Test script: 1 file **Total: 17 files modified/created** ## Next Steps 1. ✅ All code changes complete 2. ⏳ Execute SQL migration 3. ⏳ Run backend test script 4. ⏳ Test APIs manually 5. ⏳ Test frontend pages 6. ⏳ Verify no 500/403 errors 7. ⏳ Update any external documentation 8. ⏳ Deploy to production ## Verification Checklist - [ ] SQL migration executed successfully - [ ] Backend test script passes - [ ] Ideas API works (list, create, bulk queue) - [ ] Tasks API works (list, filter by type/structure) - [ ] Content API works (list, filter) - [ ] Ideas page loads without errors - [ ] Tasks page loads without errors - [ ] Content page loads without errors - [ ] PostEditor displays content_structure - [ ] All filters show 14 structure options - [ ] No 500 errors in backend logs - [ ] No console errors in frontend - [ ] WordPress sync still works (if applicable) --- **Implementation Date:** 2024 **Status:** CODE COMPLETE - AWAITING MIGRATION EXECUTION & TESTING