From c36b70f31f0915ca7b7616ab283021fee24657f0 Mon Sep 17 00:00:00 2001 From: "IGNY8 VPS (Salman)" Date: Wed, 3 Dec 2025 16:15:06 +0000 Subject: [PATCH] 21 --- .../automation/services/automation_service.py | 49 ++++++++++++++----- .../src/pages/Automation/AutomationPage.tsx | 26 ++++++++++ 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/backend/igny8_core/business/automation/services/automation_service.py b/backend/igny8_core/business/automation/services/automation_service.py index 5f0e038b..72ec7020 100644 --- a/backend/igny8_core/business/automation/services/automation_service.py +++ b/backend/igny8_core/business/automation/services/automation_service.py @@ -226,12 +226,16 @@ class AutomationService: stage_number, f"Validation: {keywords_processed} keywords processed, {clusters_created} clusters created" ) - # Save results + # Save results with timestamps + from django.utils import timezone self.run.stage_1_result = { 'keywords_processed': keywords_processed, 'clusters_created': clusters_created, 'batches_run': batches_run, - 'credits_used': credits_used + 'credits_used': credits_used, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 2 self.run.total_credits_used += credits_used @@ -353,11 +357,15 @@ class AutomationService: stage_number, clusters_processed, time_elapsed, credits_used ) - # Save results + # Save results with timestamps + from django.utils import timezone self.run.stage_2_result = { 'clusters_processed': clusters_processed, 'ideas_created': ideas_created, - 'credits_used': credits_used + 'credits_used': credits_used, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 3 self.run.total_credits_used += credits_used @@ -488,11 +496,15 @@ class AutomationService: stage_number, ideas_processed, time_elapsed, 0 # No credits for local operation ) - # Save results + # Save results with timestamps + from django.utils import timezone self.run.stage_3_result = { 'ideas_processed': ideas_processed, 'tasks_created': tasks_created, - 'batches_run': batches_run + 'batches_run': batches_run, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 4 self.run.save() @@ -637,12 +649,16 @@ class AutomationService: stage_number, "Post-stage validation passed: 0 tasks remaining" ) - # Save results + # Save results with timestamps + from django.utils import timezone self.run.stage_4_result = { 'tasks_processed': tasks_processed, 'content_created': content_created, 'total_words': total_words, - 'credits_used': credits_used + 'credits_used': credits_used, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 5 self.run.total_credits_used += credits_used @@ -775,11 +791,15 @@ class AutomationService: stage_number, content_processed, time_elapsed, credits_used ) - # Save results + # Save results with timestamps + from django.utils import timezone self.run.stage_5_result = { 'content_processed': content_processed, 'prompts_created': prompts_created, - 'credits_used': credits_used + 'credits_used': credits_used, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 6 self.run.total_credits_used += credits_used @@ -914,12 +934,17 @@ class AutomationService: stage_number, images_processed, time_elapsed, credits_used ) - # Save results + # Save results with timestamps + from django.utils import timezone + stage_6_start = start_time # Capture stage start time self.run.stage_6_result = { 'images_processed': images_processed, 'images_generated': images_generated, 'content_moved_to_review': content_moved_to_review, - 'credits_used': credits_used + 'credits_used': credits_used, + 'started_at': self.run.started_at.isoformat(), + 'completed_at': timezone.now().isoformat(), + 'time_elapsed': time_elapsed } self.run.current_stage = 7 self.run.total_credits_used += credits_used diff --git a/frontend/src/pages/Automation/AutomationPage.tsx b/frontend/src/pages/Automation/AutomationPage.tsx index 3e5b7461..23451c07 100644 --- a/frontend/src/pages/Automation/AutomationPage.tsx +++ b/frontend/src/pages/Automation/AutomationPage.tsx @@ -468,6 +468,19 @@ const AutomationPage: React.FC = () => { {stage.pending} + {/* Credits and Time - Section 6 Enhancement */} + {result && result.credits_used !== undefined && ( +
+ Credits Used: + {result.credits_used} +
+ )} + {result && result.time_elapsed && ( +
+ Duration: + {result.time_elapsed} +
+ )} {/* Progress Bar */} @@ -548,6 +561,19 @@ const AutomationPage: React.FC = () => { {stage.pending} + {/* Credits and Time - Section 6 Enhancement */} + {result && result.credits_used !== undefined && ( +
+ Credits Used: + {result.credits_used} +
+ )} + {result && result.time_elapsed && ( +
+ Duration: + {result.time_elapsed} +
+ )} {(isActive || isComplete || processed > 0) && (