ProgressModalUpdates

This commit is contained in:
Desktop
2025-11-11 00:27:37 +05:00
parent 052332ef01
commit 60ec02595b
2 changed files with 125 additions and 4 deletions

View File

@@ -37,6 +37,29 @@ class AIEngine:
return f"{count} task{'s' if count != 1 else ''}"
return f"{count} item{'s' if count != 1 else ''}"
def _build_validation_message(self, function_name: str, payload: dict, count: int, input_description: str) -> str:
"""Build validation message with item names for better UX"""
if function_name == 'auto_cluster' and count > 0:
try:
from igny8_core.modules.planner.models import Keywords
ids = payload.get('ids', [])
keywords = Keywords.objects.filter(id__in=ids, account=self.account).values_list('keyword', flat=True)[:3]
keyword_list = list(keywords)
if len(keyword_list) > 0:
remaining = count - len(keyword_list)
if remaining > 0:
keywords_text = ', '.join(keyword_list)
return f"Validating {keywords_text} and {remaining} more keyword{'s' if remaining != 1 else ''}"
else:
keywords_text = ', '.join(keyword_list)
return f"Validating {keywords_text}"
except Exception as e:
logger.warning(f"Failed to load keyword names for validation message: {e}")
# Fallback to simple count message
return f"Validating {input_description}"
def _get_prep_message(self, function_name: str, count: int, data: Any) -> str:
"""Get user-friendly prep message"""
if function_name == 'auto_cluster':
@@ -73,6 +96,18 @@ class AIEngine:
return "Processing images"
return "Processing results"
def _get_parse_message_with_count(self, function_name: str, count: int) -> str:
"""Get user-friendly parse message with count"""
if function_name == 'auto_cluster':
return f"{count} cluster{'s' if count != 1 else ''} created"
elif function_name == 'generate_ideas':
return f"{count} idea{'s' if count != 1 else ''} created"
elif function_name == 'generate_content':
return f"{count} article{'s' if count != 1 else ''} created"
elif function_name == 'generate_images':
return f"{count} image{'s' if count != 1 else ''} created"
return f"{count} item{'s' if count != 1 else ''} processed"
def _get_save_message(self, function_name: str, count: int) -> str:
"""Get user-friendly save message"""
if function_name == 'auto_cluster':
@@ -117,7 +152,9 @@ class AIEngine:
self.console_tracker.error('ValidationError', validated['error'])
return self._handle_error(validated['error'], fn)
validation_message = f"Validating {input_description}"
# Build validation message with keyword names for auto_cluster
validation_message = self._build_validation_message(function_name, payload, input_count, input_description)
self.console_tracker.prep("Validation complete")
self.step_tracker.add_request_step("INIT", "success", validation_message)
self.tracker.update("INIT", 10, validation_message, meta=self.step_tracker.get_meta())
@@ -253,6 +290,9 @@ class AIEngine:
else:
parsed_count = 1
# Update parse message with count for better UX
parse_message = self._get_parse_message_with_count(function_name, parsed_count)
self.console_tracker.parse(f"Successfully parsed {parsed_count} items from response")
self.step_tracker.add_response_step("PARSE", "success", parse_message)
self.tracker.update("PARSE", 85, parse_message, meta=self.step_tracker.get_meta())