more fixes

This commit is contained in:
IGNY8 VPS (Salman)
2025-12-03 10:29:13 +00:00
parent 291d8cc968
commit aa8b8a9756
14 changed files with 61 additions and 276 deletions

View File

@@ -10,7 +10,7 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('system', '__latest__'),
('igny8_core_auth', '__latest__'),
]
operations = [
@@ -35,11 +35,11 @@ class Migration(migrations.Migration):
('next_run_at', models.DateTimeField(blank=True, null=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.account')),
('site', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='automation_config', to='system.site')),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='igny8_core_auth.account')),
('site', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='automation_config', to='igny8_core_auth.site')),
],
options={
'db_table': 'automation_config',
'db_table': 'igny8_automation_configs',
},
),
migrations.CreateModel(
@@ -74,11 +74,11 @@ class Migration(migrations.Migration):
('error_message', models.TextField(blank=True, null=True)),
('started_at', models.DateTimeField(auto_now_add=True)),
('completed_at', models.DateTimeField(blank=True, null=True)),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.account')),
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='automation_runs', to='system.site')),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='igny8_core_auth.account')),
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='automation_runs', to='igny8_core_auth.site')),
],
options={
'db_table': 'automation_run',
'db_table': 'igny8_automation_runs',
'ordering': ['-started_at'],
'indexes': [
models.Index(fields=['site', 'status'], name='automation_site_status_idx'),

View File

@@ -760,14 +760,14 @@ class AutomationService:
def estimate_credits(self) -> int:
"""Estimate total credits needed for automation"""
# Count items
keywords_count = Keywords.objects.filter(site=self.site, status='new', cluster__isnull=True).count()
keywords_count = Keywords.objects.filter(site=self.site, status='new', cluster__isnull=True, disabled=False).count()
clusters_count = Clusters.objects.filter(site=self.site, status='new').exclude(ideas__isnull=False).count()
ideas_count = ContentIdeas.objects.filter(site=self.site, status='new').count()
tasks_count = Tasks.objects.filter(site=self.site, status='queued', content__isnull=True).count()
tasks_count = Tasks.objects.filter(site=self.site, status='queued').count()
content_count = Content.objects.filter(site=self.site, status='draft').annotate(images_count=Count('images')).filter(images_count=0).count()
# Estimate credits
clustering_credits = (keywords_count // 5) + 1 # 1 credit per 5 keywords
clustering_credits = (keywords_count // 5) + 1 if keywords_count > 0 else 0 # 1 credit per 5 keywords
ideas_credits = clusters_count * 2 # 2 credits per cluster
content_credits = tasks_count * 5 # Assume 2500 words avg = 5 credits
prompts_credits = content_count * 2 # Assume 4 prompts per content = 2 credits

View File

@@ -27,7 +27,7 @@ class AutomationViewSet(viewsets.ViewSet):
status=status.HTTP_400_BAD_REQUEST
)
site = get_object_or_404(Site, id=site_id, account__user=request.user)
site = get_object_or_404(Site, id=site_id, account=request.user.account)
return site, None
@action(detail=False, methods=['get'])
@@ -308,6 +308,6 @@ class AutomationViewSet(viewsets.ViewSet):
return Response({
'estimated_credits': estimated_credits,
'current_balance': site.account.credits_balance,
'sufficient': site.account.credits_balance >= (estimated_credits * 1.2)
'current_balance': site.account.credits,
'sufficient': site.account.credits >= (estimated_credits * 1.2)
})