autmation final reaftocrs and setitgns dafautls

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-18 15:03:01 +00:00
parent 879ef6ff06
commit ebc4088ccb
14 changed files with 1367 additions and 90 deletions

View File

@@ -9,7 +9,7 @@ from django.utils import timezone
from igny8_core.auth.models import Account, Site
from igny8_core.business.integration.models import PublishingSettings
from igny8_core.business.automation.models import AutomationConfig
from igny8_core.business.automation.models import AutomationConfig, DefaultAutomationConfig
logger = logging.getLogger(__name__)
@@ -26,6 +26,7 @@ DEFAULT_PUBLISHING_SETTINGS = {
'publish_time_slots': ['09:00', '14:00', '18:00'],
}
# Fallback defaults if no DefaultAutomationConfig exists
DEFAULT_AUTOMATION_SETTINGS = {
'is_enabled': True,
'frequency': 'daily',
@@ -128,15 +129,66 @@ class DefaultsService:
site: Site,
overrides: Optional[Dict[str, Any]] = None
) -> AutomationConfig:
"""Create automation config with defaults, applying any overrides."""
config_data = {**DEFAULT_AUTOMATION_SETTINGS}
"""
Create automation config using DefaultAutomationConfig settings.
Each new site gets an auto-incremented scheduled hour.
"""
# Get default config (singleton) - creates if not exists
default_config = DefaultAutomationConfig.get_instance()
# Get the next scheduled hour and increment it for future sites
scheduled_hour = default_config.get_next_hour_and_increment()
scheduled_time = f"{scheduled_hour:02d}:00"
# Build config from defaults
config_data = {
'is_enabled': default_config.is_enabled,
'frequency': default_config.frequency,
# Stage enabled toggles
'stage_1_enabled': default_config.stage_1_enabled,
'stage_2_enabled': default_config.stage_2_enabled,
'stage_3_enabled': default_config.stage_3_enabled,
'stage_4_enabled': default_config.stage_4_enabled,
'stage_5_enabled': default_config.stage_5_enabled,
'stage_6_enabled': default_config.stage_6_enabled,
'stage_7_enabled': default_config.stage_7_enabled,
# Batch sizes
'stage_1_batch_size': default_config.stage_1_batch_size,
'stage_2_batch_size': default_config.stage_2_batch_size,
'stage_3_batch_size': default_config.stage_3_batch_size,
'stage_4_batch_size': default_config.stage_4_batch_size,
'stage_5_batch_size': default_config.stage_5_batch_size,
'stage_6_batch_size': default_config.stage_6_batch_size,
# Use testing model
'stage_1_use_testing': default_config.stage_1_use_testing,
'stage_2_use_testing': default_config.stage_2_use_testing,
'stage_4_use_testing': default_config.stage_4_use_testing,
'stage_5_use_testing': default_config.stage_5_use_testing,
'stage_6_use_testing': default_config.stage_6_use_testing,
# Budget percentages
'stage_1_budget_pct': default_config.stage_1_budget_pct,
'stage_2_budget_pct': default_config.stage_2_budget_pct,
'stage_4_budget_pct': default_config.stage_4_budget_pct,
'stage_5_budget_pct': default_config.stage_5_budget_pct,
'stage_6_budget_pct': default_config.stage_6_budget_pct,
# Delays
'within_stage_delay': default_config.within_stage_delay,
'between_stage_delay': default_config.between_stage_delay,
# Per-run limits
'max_keywords_per_run': default_config.max_keywords_per_run,
'max_clusters_per_run': default_config.max_clusters_per_run,
'max_ideas_per_run': default_config.max_ideas_per_run,
'max_tasks_per_run': default_config.max_tasks_per_run,
'max_content_per_run': default_config.max_content_per_run,
'max_images_per_run': default_config.max_images_per_run,
'max_approvals_per_run': default_config.max_approvals_per_run,
'max_credits_per_run': default_config.max_credits_per_run,
}
# Apply any overrides
if overrides:
config_data.update(overrides)
# Calculate next run time (tomorrow at scheduled time)
scheduled_time = config_data.pop('scheduled_time', '02:00')
automation_config = AutomationConfig.objects.create(
account=self.account,
site=site,