skip stage configured and working

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-17 00:10:26 +00:00
parent cf755b23dc
commit 97f5ff8167
7 changed files with 253 additions and 38 deletions

View File

@@ -0,0 +1,48 @@
# Generated migration for automation stage enabled toggles
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('automation', '0006_automationrun_initial_snapshot'),
]
operations = [
migrations.AddField(
model_name='automationconfig',
name='stage_1_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 1: Keywords → Clusters'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_2_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 2: Clusters → Ideas'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_3_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 3: Ideas → Tasks'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_4_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 4: Tasks → Content'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_5_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 5: Content → Image Prompts'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_6_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 6: Image Prompts → Images'),
),
migrations.AddField(
model_name='automationconfig',
name='stage_7_enabled',
field=models.BooleanField(default=True, help_text='Process Stage 7: Review → Published'),
),
]

View File

@@ -23,6 +23,15 @@ class AutomationConfig(models.Model):
frequency = models.CharField(max_length=20, choices=FREQUENCY_CHOICES, default='daily')
scheduled_time = models.TimeField(default='02:00', help_text="Time to run (e.g., 02:00)")
# Stage processing toggles
stage_1_enabled = models.BooleanField(default=True, help_text="Process Stage 1: Keywords → Clusters")
stage_2_enabled = models.BooleanField(default=True, help_text="Process Stage 2: Clusters → Ideas")
stage_3_enabled = models.BooleanField(default=True, help_text="Process Stage 3: Ideas → Tasks")
stage_4_enabled = models.BooleanField(default=True, help_text="Process Stage 4: Tasks → Content")
stage_5_enabled = models.BooleanField(default=True, help_text="Process Stage 5: Content → Image Prompts")
stage_6_enabled = models.BooleanField(default=True, help_text="Process Stage 6: Image Prompts → Images")
stage_7_enabled = models.BooleanField(default=True, help_text="Process Stage 7: Review → Published")
# Batch sizes per stage
stage_1_batch_size = models.IntegerField(default=50, help_text="Keywords per batch")
stage_2_batch_size = models.IntegerField(default=1, help_text="Clusters at a time")

View File

@@ -81,42 +81,64 @@ def run_automation_task(self, run_id: str):
try:
service = AutomationService.from_run_id(run_id)
config = service.config
# Run all stages sequentially, checking for pause/cancel between stages
service.run_stage_1()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 1")
return
# Run all stages sequentially, checking for enabled status, pause/cancel between stages
if config.stage_1_enabled:
service.run_stage_1()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 1")
return
else:
logger.info(f"[AutomationTask] Stage 1 is disabled, skipping")
service.run_stage_2()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 2")
return
if config.stage_2_enabled:
service.run_stage_2()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 2")
return
else:
logger.info(f"[AutomationTask] Stage 2 is disabled, skipping")
service.run_stage_3()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 3")
return
if config.stage_3_enabled:
service.run_stage_3()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 3")
return
else:
logger.info(f"[AutomationTask] Stage 3 is disabled, skipping")
service.run_stage_4()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 4")
return
if config.stage_4_enabled:
service.run_stage_4()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 4")
return
else:
logger.info(f"[AutomationTask] Stage 4 is disabled, skipping")
service.run_stage_5()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 5")
return
if config.stage_5_enabled:
service.run_stage_5()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 5")
return
else:
logger.info(f"[AutomationTask] Stage 5 is disabled, skipping")
service.run_stage_6()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 6")
return
if config.stage_6_enabled:
service.run_stage_6()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 6")
return
else:
logger.info(f"[AutomationTask] Stage 6 is disabled, skipping")
service.run_stage_7()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 7")
return
if config.stage_7_enabled:
service.run_stage_7()
if service.run.status in ['paused', 'cancelled']:
logger.info(f"[AutomationTask] Automation {service.run.status} after stage 7")
return
else:
logger.info(f"[AutomationTask] Stage 7 is disabled, skipping")
logger.info(f"[AutomationTask] Completed automation run: {run_id}")
@@ -147,6 +169,7 @@ def resume_automation_task(self, run_id: str):
try:
service = AutomationService.from_run_id(run_id)
run = service.run
config = service.config
# Continue from current stage
stage_methods = [
@@ -159,9 +182,22 @@ def resume_automation_task(self, run_id: str):
service.run_stage_7,
]
# Run from current_stage to end
stage_enabled = [
config.stage_1_enabled,
config.stage_2_enabled,
config.stage_3_enabled,
config.stage_4_enabled,
config.stage_5_enabled,
config.stage_6_enabled,
config.stage_7_enabled,
]
# Run from current_stage to end, only if stage is enabled
for stage in range(run.current_stage - 1, 7):
stage_methods[stage]()
if stage_enabled[stage]:
stage_methods[stage]()
else:
logger.info(f"[AutomationTask] Stage {stage + 1} is disabled, skipping")
logger.info(f"[AutomationTask] Resumed automation run: {run_id}")

View File

@@ -58,6 +58,13 @@ class AutomationViewSet(viewsets.ViewSet):
'is_enabled': config.is_enabled,
'frequency': config.frequency,
'scheduled_time': str(config.scheduled_time),
'stage_1_enabled': config.stage_1_enabled,
'stage_2_enabled': config.stage_2_enabled,
'stage_3_enabled': config.stage_3_enabled,
'stage_4_enabled': config.stage_4_enabled,
'stage_5_enabled': config.stage_5_enabled,
'stage_6_enabled': config.stage_6_enabled,
'stage_7_enabled': config.stage_7_enabled,
'stage_1_batch_size': config.stage_1_batch_size,
'stage_2_batch_size': config.stage_2_batch_size,
'stage_3_batch_size': config.stage_3_batch_size,
@@ -102,6 +109,22 @@ class AutomationViewSet(viewsets.ViewSet):
config.frequency = request.data['frequency']
if 'scheduled_time' in request.data:
config.scheduled_time = request.data['scheduled_time']
# Stage enabled toggles
if 'stage_1_enabled' in request.data:
config.stage_1_enabled = request.data['stage_1_enabled']
if 'stage_2_enabled' in request.data:
config.stage_2_enabled = request.data['stage_2_enabled']
if 'stage_3_enabled' in request.data:
config.stage_3_enabled = request.data['stage_3_enabled']
if 'stage_4_enabled' in request.data:
config.stage_4_enabled = request.data['stage_4_enabled']
if 'stage_5_enabled' in request.data:
config.stage_5_enabled = request.data['stage_5_enabled']
if 'stage_6_enabled' in request.data:
config.stage_6_enabled = request.data['stage_6_enabled']
if 'stage_7_enabled' in request.data:
config.stage_7_enabled = request.data['stage_7_enabled']
# Batch sizes
if 'stage_1_batch_size' in request.data:
config.stage_1_batch_size = request.data['stage_1_batch_size']
if 'stage_2_batch_size' in request.data:
@@ -133,6 +156,13 @@ class AutomationViewSet(viewsets.ViewSet):
'is_enabled': config.is_enabled,
'frequency': config.frequency,
'scheduled_time': str(config.scheduled_time),
'stage_1_enabled': config.stage_1_enabled,
'stage_2_enabled': config.stage_2_enabled,
'stage_3_enabled': config.stage_3_enabled,
'stage_4_enabled': config.stage_4_enabled,
'stage_5_enabled': config.stage_5_enabled,
'stage_6_enabled': config.stage_6_enabled,
'stage_7_enabled': config.stage_7_enabled,
'stage_1_batch_size': config.stage_1_batch_size,
'stage_2_batch_size': config.stage_2_batch_size,
'stage_3_batch_size': config.stage_3_batch_size,