Add SEO fields to Tasks model, improve content generation response handling, and enhance progress bar animation

- Added primary_keyword, secondary_keywords, tags, and categories fields to Tasks model
- Updated generate_content function to handle full JSON response with all SEO fields
- Improved progress bar animation: smooth 1% increments every 300ms
- Enhanced step detection for content generation vs clustering vs ideas
- Fixed progress modal to show correct messages for each function type
- Added comprehensive logging to Keywords and Tasks pages for AI functions
- Fixed error handling to show meaningful error messages instead of generic failures
This commit is contained in:
Gitea Deploy
2025-11-09 21:22:34 +00:00
parent 09d22ab0e2
commit 961362e088
17340 changed files with 10636 additions and 2248776 deletions

View File

@@ -0,0 +1,35 @@
# Generated migration for adding SEO fields to Tasks model
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('writer', '0003_alter_content_options_alter_images_options_and_more'),
('igny8_core_auth', '0008_passwordresettoken_alter_industry_options_and_more'),
]
operations = [
migrations.AddField(
model_name='tasks',
name='primary_keyword',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='tasks',
name='secondary_keywords',
field=models.JSONField(blank=True, default=list, help_text='List of secondary keywords'),
),
migrations.AddField(
model_name='tasks',
name='tags',
field=models.JSONField(blank=True, default=list, help_text='List of tags'),
),
migrations.AddField(
model_name='tasks',
name='categories',
field=models.JSONField(blank=True, default=list, help_text='List of categories'),
),
]

View File

@@ -65,6 +65,10 @@ class Tasks(SiteSectorBaseModel):
# SEO fields
meta_title = models.CharField(max_length=255, blank=True, null=True)
meta_description = models.TextField(blank=True, null=True)
primary_keyword = models.CharField(max_length=255, blank=True, null=True)
secondary_keywords = models.JSONField(default=list, blank=True, help_text="List of secondary keywords")
tags = models.JSONField(default=list, blank=True, help_text="List of tags")
categories = models.JSONField(default=list, blank=True, help_text="List of categories")
# WordPress integration
assigned_post_id = models.IntegerField(null=True, blank=True) # WordPress post ID if published

View File

@@ -8,6 +8,8 @@ from django.db import transaction
from igny8_core.modules.writer.models import Tasks, Images, Content
from igny8_core.utils.ai_processor import ai_processor
from igny8_core.modules.system.utils import get_prompt_value, get_default_prompt
from igny8_core.ai.functions.generate_content import generate_content_core
from igny8_core.ai.functions.generate_images import generate_images_core
logger = logging.getLogger(__name__)