Files
igny8/FIELD_RENAME_COMPLETE.md
2025-11-26 15:12:14 +00:00

8.2 KiB

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_typecontent_type
  • Renamed: cluster_rolecontent_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_typetask.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_typecontent_type
  • Updated: All cluster_rolecontent_structure
  • Removed: All backward compatibility logic

/backend/igny8_core/business/site_building/services/page_generation_service.py

  • Updated: entity_typecontent_type
  • Updated: cluster_rolecontent_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_rolecontent.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

# 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

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