ADD KEYWORDS PAGE:
- Sector selection banner: 'Select a Sector to Add Keywords' → 'Choose a Topic Area First'
- Description: Updated to be more conversational and helpful
- Changed: 'Please select a sector from the dropdown above to enable adding keywords to your workflow. Keywords must be added to a specific sector.'
- To: 'Pick a topic area first, then add keywords - You need to choose what you're writing about before adding search terms to target'
SITES MANAGEMENT PAGE:
- Filter labels made more conversational:
- 'All Types' → 'Show All Types'
- 'All Hosting' → 'Show All Hosting'
- 'All Status' → 'Show All Status'
These changes complete the detailed text improvements from Sections 2 and 3 of the UX plan.
PROGRESS SECTION:
- Site & Sectors: 'Industry & sectors configured' → 'Niches you're targeting - Industry & sectors set up'
- Keywords: 'Keywords added from opportunities' → 'Search terms to target - Keywords added from research'
- Clusters: 'Keywords grouped into clusters' → 'Topic groups - Keywords organized by theme'
- Ideas: 'Content ideas and outlines' → 'Article outlines ready - Ideas and outlines created'
- Content: 'Content pieces + images created' → 'Articles created - Written content + images ready'
- Published: 'Content published to site' → 'Live on your site - Articles published and active'
QUICK ACTIONS:
- 'Find Keywords' → 'Find Keywords to Rank For' with 'Search for topics your audience wants to read about'
- 'Organize Topics' → 'Organize Topics & Create Outlines' with 'Group keywords and create article plans'
- 'Create Articles' → 'Write Articles with AI' with 'Generate full articles ready to publish'
- 'Add Links' → 'Connect Your Articles' with 'Automatically link related articles for better SEO'
- 'Improve Content' → 'Make Articles Better' with 'Improve readability, keywords, and search rankings'
All descriptions now match the detailed UX improvement plan specifications.
- Setup: Changed 'Add Keywords' to 'Find Keywords'
- Account Settings: Updated description to be more user-friendly
- AI Settings: Updated description to explain AI models and preferences
- General Settings: Changed to 'App Preferences' with clearer description
- Help: Changed 'Help & Documentation' to 'Help Center' with friendlier description
- Sites: Changed 'Sites Management' to 'Your Websites'
- Sites: Changed 'Add Site' button to 'Add New Website'
- Automation: Changed 'AI Automation Pipeline' to 'Content Automation'
- Automation: Updated description to be more user-friendly
ARCHITECTURE FIX:
- aws-admin IntegrationSettings will NEVER exist (it's a legacy pattern)
- Only user's own account IntegrationSettings can exist (if they override defaults)
- Otherwise GlobalIntegrationSettings is used directly
- API keys are ALWAYS from GlobalIntegrationSettings (accounts cannot override API keys)
REMOVED:
- All aws-admin Account lookups
- All aws-admin IntegrationSettings fallback attempts
- Confusing nested try/except chains
CORRECT FLOW NOW:
1. Try account's IntegrationSettings for config overrides
2. Use GlobalIntegrationSettings for missing values and ALL API keys
3. No intermediate aws-admin lookups
ROOT CAUSES IDENTIFIED:
1. GlobalAIPrompt template had unescaped JSON braces that broke Python's .format()
- Python treats {...} as placeholders, causing KeyError when rendering
- Escaped JSON braces to {{...}} while preserving {title}, {content}, {max_images}
2. Image functions hardcoded aws-admin IntegrationSettings which didn't exist
- Functions failed when aws-admin account had no IntegrationSettings
- Added GlobalIntegrationSettings fallback for all missing values
CHANGES:
- Fixed GlobalAIPrompt.image_prompt_extraction template in database (escaped JSON)
- Updated generate_image_prompts._get_max_in_article_images() with fallback
- Updated generate_images.prepare_data() with fallback for all image settings
- Updated tasks.process_image_generation_queue() with fallback for config + API keys
TESTED: Template rendering now works, GlobalIntegrationSettings.max_in_article_images=4
- Added AIModelConfig model to manage AI model configurations in the database.
- Created serializers and views for AI model configurations, enabling read-only access via REST API.
- Implemented filtering capabilities for model type, provider, and default status in the API.
- Seeded initial data for text and image models, including pricing and capabilities.
- Updated Django Admin interface for managing AI models with enhanced features and bulk actions.
- Added validation methods for model and image size checks.
- Comprehensive migration created to establish the AIModelConfig model and seed initial data.
- Documented implementation and validation results in summary and report files.
- Introduced GlobalModuleSettings model for platform-wide module enable/disable settings.
- Added 'caption' field to Images model to store image captions.
- Updated GenerateImagePromptsFunction to handle new caption structure in prompts.
- Enhanced AIPromptViewSet to return global prompt types and validate active prompts.
- Modified serializers and views to accommodate new caption field and global settings.
- Updated frontend components to display captions and filter prompts based on active types.
- Created migrations for GlobalModuleSettings and added caption field to Images.
feat(admin): Add API monitoring, debug console, and system health templates for enhanced admin interface
docs: Add AI system cleanup summary and audit report detailing architecture, token management, and recommendations
docs: Introduce credits and tokens system guide outlining configuration, data flow, and monitoring strategies
- Updated AutomationService to include estimated_word_count.
- Increased stage_1_batch_size from 20 to 50 in AutomationViewSet.
- Changed Keywords model to replace 'intent' property with 'country'.
- Adjusted ClusteringService to allow a maximum of 50 keywords for clustering.
- Modified admin and management commands to remove 'intent' and use 'country' instead.
- Updated serializers to reflect the change from 'intent' to 'country'.
- Adjusted views and filters to use 'country' instead of 'intent'.
- Updated frontend forms, filters, and pages to replace 'intent' with 'country'.
- Added migration to remove 'intent' field and add 'country' field to SeedKeyword model.