autmation final reaftocrs and setitgns dafautls
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user