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

258 lines
8.2 KiB
Markdown

# 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