fina autoamtiona adn billing and credits
This commit is contained in:
@@ -595,6 +595,7 @@ class KeywordViewSet(SiteSectorModelViewSet):
|
||||
def auto_cluster(self, request):
|
||||
"""Auto-cluster keywords using ClusteringService"""
|
||||
import logging
|
||||
from igny8_core.ai.validators.cluster_validators import validate_minimum_keywords
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -611,6 +612,32 @@ class KeywordViewSet(SiteSectorModelViewSet):
|
||||
request=request
|
||||
)
|
||||
|
||||
# NEW: Validate minimum keywords BEFORE queuing task
|
||||
if not keyword_ids:
|
||||
return error_response(
|
||||
error='No keyword IDs provided',
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
request=request
|
||||
)
|
||||
|
||||
validation = validate_minimum_keywords(
|
||||
keyword_ids=keyword_ids,
|
||||
account=account,
|
||||
min_required=5
|
||||
)
|
||||
|
||||
if not validation['valid']:
|
||||
return error_response(
|
||||
error=validation['error'],
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
request=request,
|
||||
extra_data={
|
||||
'count': validation.get('count'),
|
||||
'required': validation.get('required')
|
||||
}
|
||||
)
|
||||
|
||||
# Validation passed - proceed with clustering
|
||||
# Use service to cluster keywords
|
||||
service = ClusteringService()
|
||||
try:
|
||||
@@ -621,7 +648,7 @@ class KeywordViewSet(SiteSectorModelViewSet):
|
||||
# Async task queued
|
||||
return success_response(
|
||||
data={'task_id': result['task_id']},
|
||||
message=result.get('message', 'Clustering started'),
|
||||
message=f'Clustering started with {validation["count"]} keywords',
|
||||
request=request
|
||||
)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user