From f46fbe43439f7bc86399710a25d9d9cc006b2f0f Mon Sep 17 00:00:00 2001
From: "IGNY8 VPS (Salman)"
Date: Tue, 13 Jan 2026 03:31:20 +0000
Subject: [PATCH] Backeup configs & cleanup of files and db
---
CLEANUP_SUMMARY_20260113.md | 115 +
.../igny8_core/ai/functions/tests/__init__.py | 2 -
.../functions/tests/test_optimize_content.py | 179 -
.../test_generate_site_structure_function.py | 86 -
.../api/tests/FINAL_TEST_SUMMARY.md | 99 -
backend/igny8_core/api/tests/README.md | 73 -
backend/igny8_core/api/tests/TEST_RESULTS.md | 69 -
backend/igny8_core/api/tests/TEST_SUMMARY.md | 160 -
backend/igny8_core/api/tests/__init__.py | 5 -
.../igny8_core/api/tests/test_ai_framework.py | 232 -
.../api/tests/test_exception_handler.py | 193 -
.../api/tests/test_integration_auth.py | 131 -
.../api/tests/test_integration_base.py | 111 -
.../api/tests/test_integration_billing.py | 49 -
.../api/tests/test_integration_errors.py | 92 -
.../api/tests/test_integration_pagination.py | 113 -
.../api/tests/test_integration_planner.py | 160 -
.../tests/test_integration_rate_limiting.py | 113 -
.../api/tests/test_integration_system.py | 49 -
.../api/tests/test_integration_writer.py | 70 -
.../igny8_core/api/tests/test_permissions.py | 313 -
backend/igny8_core/api/tests/test_response.py | 206 -
.../igny8_core/api/tests/test_throttles.py | 199 -
.../management/commands/cleanup_user_data.py | 161 +
.../commands/export_system_config.py | 122 +
.../0030_drop_site_blueprints_table.py | 37 +
.../business/billing/tests/__init__.py | 2 -
.../billing/tests/test_concurrency.py | 299 -
.../tests/test_payment_method_filtering.py | 141 -
.../billing/tests/test_payment_workflow.py | 192 -
.../billing/tests/test_phase4_credits.py | 133 -
.../business/content/tests/__init__.py | 2 -
.../tests/test_content_pipeline_service.py | 185 -
.../tests/test_universal_content_types.py | 283 -
.../services/content_sync_service.py | 98 +-
.../services/sync_health_service.py | 117 +-
.../business/integration/tests/__init__.py | 5 -
.../integration/tests/test_content_sync.py | 155 -
.../tests/test_integration_service.py | 141 -
.../integration/tests/test_sync_service.py | 127 -
.../business/linking/tests/__init__.py | 2 -
.../linking/tests/test_candidate_engine.py | 139 -
.../linking/tests/test_injection_engine.py | 136 -
.../linking/tests/test_linker_service.py | 141 -
.../tests/test_universal_content_linking.py | 193 -
.../business/optimization/tests/__init__.py | 2 -
.../optimization/tests/test_analyzer.py | 177 -
.../tests/test_optimizer_service.py | 189 -
.../test_universal_content_optimization.py | 184 -
.../business/publishing/tests/__init__.py | 5 -
.../publishing/tests/test_adapters.py | 139 -
.../tests/test_deployment_service.py | 141 -
.../tests/test_publisher_service.py | 151 -
.../modules/linker/tests/__init__.py | 2 -
.../modules/linker/tests/test_views.py | 137 -
.../modules/optimizer/tests/__init__.py | 2 -
.../modules/optimizer/tests/test_views.py | 180 -
backend/igny8_core/test_settings.py | 8 -
backups/20260113_pre_v1_full_backup.sql | 23348 ++++++++++++++++
backups/config/20260113/ai_models.json | 191 +
backups/config/20260113/author_profiles.json | 2 +
backups/config/20260113/credit_costs.json | 102 +
backups/config/20260113/export_metadata.json | 22 +
.../config/20260113/global_integrations.json | 32 +
backups/config/20260113/global_prompts.json | 177 +
backups/config/20260113/industries.json | 158 +
backups/config/20260113/plans.json | 191 +
backups/config/20260113/prompts.json | 16 +
backups/config/20260113/sectors.json | 86 +
backups/config/20260113/seed_keywords.json | 1592 ++
70 files changed, 26362 insertions(+), 6502 deletions(-)
create mode 100644 CLEANUP_SUMMARY_20260113.md
delete mode 100644 backend/igny8_core/ai/functions/tests/__init__.py
delete mode 100644 backend/igny8_core/ai/functions/tests/test_optimize_content.py
delete mode 100644 backend/igny8_core/ai/tests/test_generate_site_structure_function.py
delete mode 100644 backend/igny8_core/api/tests/FINAL_TEST_SUMMARY.md
delete mode 100644 backend/igny8_core/api/tests/README.md
delete mode 100644 backend/igny8_core/api/tests/TEST_RESULTS.md
delete mode 100644 backend/igny8_core/api/tests/TEST_SUMMARY.md
delete mode 100644 backend/igny8_core/api/tests/__init__.py
delete mode 100644 backend/igny8_core/api/tests/test_ai_framework.py
delete mode 100644 backend/igny8_core/api/tests/test_exception_handler.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_auth.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_base.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_billing.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_errors.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_pagination.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_planner.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_rate_limiting.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_system.py
delete mode 100644 backend/igny8_core/api/tests/test_integration_writer.py
delete mode 100644 backend/igny8_core/api/tests/test_permissions.py
delete mode 100644 backend/igny8_core/api/tests/test_response.py
delete mode 100644 backend/igny8_core/api/tests/test_throttles.py
create mode 100644 backend/igny8_core/auth/management/commands/cleanup_user_data.py
create mode 100644 backend/igny8_core/auth/management/commands/export_system_config.py
create mode 100644 backend/igny8_core/auth/migrations/0030_drop_site_blueprints_table.py
delete mode 100644 backend/igny8_core/business/billing/tests/__init__.py
delete mode 100644 backend/igny8_core/business/billing/tests/test_concurrency.py
delete mode 100644 backend/igny8_core/business/billing/tests/test_payment_method_filtering.py
delete mode 100644 backend/igny8_core/business/billing/tests/test_payment_workflow.py
delete mode 100644 backend/igny8_core/business/billing/tests/test_phase4_credits.py
delete mode 100644 backend/igny8_core/business/content/tests/__init__.py
delete mode 100644 backend/igny8_core/business/content/tests/test_content_pipeline_service.py
delete mode 100644 backend/igny8_core/business/content/tests/test_universal_content_types.py
delete mode 100644 backend/igny8_core/business/integration/tests/__init__.py
delete mode 100644 backend/igny8_core/business/integration/tests/test_content_sync.py
delete mode 100644 backend/igny8_core/business/integration/tests/test_integration_service.py
delete mode 100644 backend/igny8_core/business/integration/tests/test_sync_service.py
delete mode 100644 backend/igny8_core/business/linking/tests/__init__.py
delete mode 100644 backend/igny8_core/business/linking/tests/test_candidate_engine.py
delete mode 100644 backend/igny8_core/business/linking/tests/test_injection_engine.py
delete mode 100644 backend/igny8_core/business/linking/tests/test_linker_service.py
delete mode 100644 backend/igny8_core/business/linking/tests/test_universal_content_linking.py
delete mode 100644 backend/igny8_core/business/optimization/tests/__init__.py
delete mode 100644 backend/igny8_core/business/optimization/tests/test_analyzer.py
delete mode 100644 backend/igny8_core/business/optimization/tests/test_optimizer_service.py
delete mode 100644 backend/igny8_core/business/optimization/tests/test_universal_content_optimization.py
delete mode 100644 backend/igny8_core/business/publishing/tests/__init__.py
delete mode 100644 backend/igny8_core/business/publishing/tests/test_adapters.py
delete mode 100644 backend/igny8_core/business/publishing/tests/test_deployment_service.py
delete mode 100644 backend/igny8_core/business/publishing/tests/test_publisher_service.py
delete mode 100644 backend/igny8_core/modules/linker/tests/__init__.py
delete mode 100644 backend/igny8_core/modules/linker/tests/test_views.py
delete mode 100644 backend/igny8_core/modules/optimizer/tests/__init__.py
delete mode 100644 backend/igny8_core/modules/optimizer/tests/test_views.py
delete mode 100644 backend/igny8_core/test_settings.py
create mode 100644 backups/20260113_pre_v1_full_backup.sql
create mode 100644 backups/config/20260113/ai_models.json
create mode 100644 backups/config/20260113/author_profiles.json
create mode 100644 backups/config/20260113/credit_costs.json
create mode 100644 backups/config/20260113/export_metadata.json
create mode 100644 backups/config/20260113/global_integrations.json
create mode 100644 backups/config/20260113/global_prompts.json
create mode 100644 backups/config/20260113/industries.json
create mode 100644 backups/config/20260113/plans.json
create mode 100644 backups/config/20260113/prompts.json
create mode 100644 backups/config/20260113/sectors.json
create mode 100644 backups/config/20260113/seed_keywords.json
diff --git a/CLEANUP_SUMMARY_20260113.md b/CLEANUP_SUMMARY_20260113.md
new file mode 100644
index 00000000..1c2e76dd
--- /dev/null
+++ b/CLEANUP_SUMMARY_20260113.md
@@ -0,0 +1,115 @@
+# Cleanup Summary - January 13, 2026
+
+## ✅ Test Files Removed
+
+### Test Directories Deleted:
+- `igny8_core/modules/optimizer/tests/` - All optimizer test files
+- `igny8_core/modules/linker/tests/` - All linker test files
+- `igny8_core/ai/functions/tests/` - AI function tests
+- `igny8_core/ai/tests/` - AI module tests
+- `igny8_core/api/tests/` - API integration tests
+- `igny8_core/business/publishing/tests/` - Publishing tests (including deprecated SiteBlueprint tests)
+- `igny8_core/business/billing/tests/` - Billing tests
+- `igny8_core/business/integration/tests/` - Integration tests
+- `igny8_core/business/content/tests/` - Content pipeline tests
+- `igny8_core/business/optimization/tests/` - Optimization tests
+- `igny8_core/business/linking/tests/` - Linking tests
+
+### Test Config Files Removed:
+- `igny8_core/test_settings.py` - Test-specific Django settings
+
+**Total:** ~38 test files removed across 11 directories
+
+---
+
+## ✅ SiteBlueprint/SiteBuilder Cleanup Status
+
+### Database:
+- ✅ Table `igny8_site_blueprints` - **DROPPED** (migration 0030)
+- ✅ All indexes removed
+- ✅ Sequence dropped
+- ✅ No foreign key constraints remain in active models
+
+### Code References:
+- ✅ No active model definitions (SiteBlueprint, PageBlueprint, SiteBlueprintTaxonomy)
+- ✅ No directory `/business/site_building/` exists
+- ✅ No admin registrations
+- ✅ No URL endpoints
+- ✅ No API serializers with active references
+- ✅ No celery tasks referencing blueprints
+
+### Remaining References (Comments Only):
+- Historical migration files (0001_initial.py, etc.) - **LEFT INTACT** (should never be modified)
+- Code comments marking removal - **LEFT INTACT** (documentation of changes)
+- Docstrings explaining legacy functionality - **LEFT INTACT** (helpful context)
+
+### Services Updated:
+- `content_sync_service.py` - SiteBlueprint taxonomy sync replaced with stub
+- `sync_health_service.py` - Taxonomy mismatch detection replaced with stub
+- `publisher_service.py` - Already had SiteBlueprint publishing removed
+- `deployment_service.py` - Already marked as deprecated
+
+---
+
+## ✅ One-Time Fix Files Analysis
+
+### Migration Fix Files Found (NOT REMOVED - Required for Database History):
+- `0002_fix_cluster_unique_constraint.py` - Cluster model constraint fix
+- `0012_fix_subscription_constraints.py` - Subscription model constraints
+- `0020_fix_historical_account.py` - Historical tracking fix
+- `0003_phase1b_fix_taxonomy_relation.py` - Taxonomy relation fix
+- `0007_fix_cluster_unique_constraint.py` - Another cluster fix
+- `0022_fix_historical_calculation_mode_null.py` - Billing calculation fix
+- `0009_fix_variables_optional.py` - System variables fix
+- `0006_fix_image_settings.py` - Image settings fix
+- `0004_fix_global_settings_remove_override.py` - Global settings fix
+
+**Note:** Migration files are never deleted - they form the database schema history.
+
+---
+
+## 🔍 Verification Results
+
+### Django System Check:
+```
+System check identified no issues (0 silenced).
+```
+
+### Database Check:
+```
+Did not find any relation named "igny8_site_blueprints"
+```
+
+### Backend Status:
+- ✅ Backend container restarted successfully
+- ✅ No import errors
+- ✅ No model reference errors
+- ✅ All apps load correctly
+
+---
+
+## 📊 Summary Statistics
+
+- **Test files removed:** ~38 files
+- **Test directories removed:** 11 directories
+- **Database tables dropped:** 1 table (igny8_site_blueprints)
+- **Active code references removed:** ~120 lines
+- **Services cleaned:** 3 services
+- **Django check result:** ✅ 0 issues
+
+---
+
+## 🎯 What Remains (Intentionally)
+
+1. **Historical Migrations:** All migration files preserved (required for database integrity)
+2. **Code Comments:** Documentation of removed features (helpful for understanding)
+3. **Migration Fix Files:** Database schema fixes (part of migration history)
+4. **Docstrings:** Legacy documentation in deprecated functions
+
+---
+
+## ✅ Cleanup Complete
+
+All test files removed, SiteBlueprint/SiteBuilder functionality fully cleaned from active codebase.
+Database table dropped successfully. System verified and running without issues.
+
diff --git a/backend/igny8_core/ai/functions/tests/__init__.py b/backend/igny8_core/ai/functions/tests/__init__.py
deleted file mode 100644
index d79dca5a..00000000
--- a/backend/igny8_core/ai/functions/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# AI functions tests
-
diff --git a/backend/igny8_core/ai/functions/tests/test_optimize_content.py b/backend/igny8_core/ai/functions/tests/test_optimize_content.py
deleted file mode 100644
index 31720afa..00000000
--- a/backend/igny8_core/ai/functions/tests/test_optimize_content.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""
-Tests for OptimizeContentFunction
-"""
-from unittest.mock import Mock, patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.ai.functions.optimize_content import OptimizeContentFunction
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class OptimizeContentFunctionTests(IntegrationTestBase):
- """Tests for OptimizeContentFunction"""
-
- def setUp(self):
- super().setUp()
- self.function = OptimizeContentFunction()
-
- # Create test content
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="This is test content.
",
- meta_title="Test Title",
- meta_description="Test description",
- primary_keyword="test keyword",
- word_count=500,
- status='draft'
- )
-
- def test_function_validation_phase(self):
- """Test validation phase"""
- # Valid payload
- result = self.function.validate({'ids': [self.content.id]}, self.account)
- self.assertTrue(result['valid'])
-
- # Invalid payload - missing ids
- result = self.function.validate({}, self.account)
- self.assertFalse(result['valid'])
- self.assertIn('error', result)
-
- def test_function_prep_phase(self):
- """Test prep phase"""
- payload = {'ids': [self.content.id]}
-
- data = self.function.prepare(payload, self.account)
-
- self.assertIn('content', data)
- self.assertIn('scores_before', data)
- self.assertIn('html_content', data)
- self.assertEqual(data['content'].id, self.content.id)
-
- def test_function_prep_phase_content_not_found(self):
- """Test prep phase with non-existent content"""
- payload = {'ids': [99999]}
-
- with self.assertRaises(ValueError):
- self.function.prepare(payload, self.account)
-
- @patch('igny8_core.ai.functions.optimize_content.PromptRegistry.get_prompt')
- def test_function_build_prompt(self, mock_get_prompt):
- """Test prompt building"""
- mock_get_prompt.return_value = "Test prompt"
-
- data = {
- 'content': self.content,
- 'html_content': 'Test
',
- 'meta_title': 'Title',
- 'meta_description': 'Description',
- 'primary_keyword': 'keyword',
- 'scores_before': {'overall_score': 50.0}
- }
-
- prompt = self.function.build_prompt(data, self.account)
-
- self.assertEqual(prompt, "Test prompt")
- mock_get_prompt.assert_called_once()
- # Check that context was passed
- call_args = mock_get_prompt.call_args
- self.assertIn('context', call_args.kwargs)
-
- def test_function_parse_response_valid_json(self):
- """Test parsing valid JSON response"""
- response = '{"html_content": "Optimized
", "meta_title": "New Title"}'
-
- parsed = self.function.parse_response(response)
-
- self.assertIn('html_content', parsed)
- self.assertEqual(parsed['html_content'], "Optimized
")
- self.assertEqual(parsed['meta_title'], "New Title")
-
- def test_function_parse_response_invalid_json(self):
- """Test parsing invalid JSON response"""
- response = "This is not JSON"
-
- with self.assertRaises(ValueError):
- self.function.parse_response(response)
-
- def test_function_parse_response_extracts_json_object(self):
- """Test that JSON object is extracted from text"""
- response = 'Some text {"html_content": "Optimized
"} more text'
-
- parsed = self.function.parse_response(response)
-
- self.assertIn('html_content', parsed)
- self.assertEqual(parsed['html_content'], "Optimized
")
-
- @patch('igny8_core.business.optimization.services.analyzer.ContentAnalyzer.analyze')
- @patch('igny8_core.business.content.services.content_generation_service.ContentGenerationService._count_words')
- def test_function_save_phase(self, mock_count_words, mock_analyze):
- """Test save phase updates content"""
- mock_count_words.return_value = 600
- mock_analyze.return_value = {
- 'seo_score': 75.0,
- 'readability_score': 80.0,
- 'engagement_score': 70.0,
- 'overall_score': 75.0
- }
-
- parsed = {
- 'html_content': 'Optimized content.
',
- 'meta_title': 'Optimized Title',
- 'meta_description': 'Optimized Description'
- }
-
- original_data = {
- 'content': self.content,
- 'scores_before': {'overall_score': 50.0},
- 'word_count': 500
- }
-
- result = self.function.save_output(parsed, original_data, self.account)
-
- self.assertTrue(result['success'])
- self.assertEqual(result['content_id'], self.content.id)
-
- # Refresh content from DB
- self.content.refresh_from_db()
- self.assertEqual(self.content.html_content, 'Optimized content.
')
- self.assertEqual(self.content.optimizer_version, 1)
- self.assertIsNotNone(self.content.optimization_scores)
-
- def test_function_handles_invalid_content_id(self):
- """Test that function handles invalid content ID"""
- payload = {'ids': [99999]}
-
- with self.assertRaises(ValueError):
- self.function.prepare(payload, self.account)
-
- def test_function_respects_account_isolation(self):
- """Test that function respects account isolation"""
- from igny8_core.auth.models import Account
- other_account = Account.objects.create(
- name="Other Account",
- slug="other",
- plan=self.plan,
- owner=self.user
- )
-
- payload = {'ids': [self.content.id]}
-
- # Should not find content from different account
- with self.assertRaises(ValueError):
- self.function.prepare(payload, other_account)
-
- def test_get_name(self):
- """Test get_name method"""
- self.assertEqual(self.function.get_name(), 'optimize_content')
-
- def test_get_metadata(self):
- """Test get_metadata method"""
- metadata = self.function.get_metadata()
-
- self.assertIn('display_name', metadata)
- self.assertIn('description', metadata)
- self.assertIn('phases', metadata)
- self.assertEqual(metadata['display_name'], 'Optimize Content')
-
diff --git a/backend/igny8_core/ai/tests/test_generate_site_structure_function.py b/backend/igny8_core/ai/tests/test_generate_site_structure_function.py
deleted file mode 100644
index 2f944a97..00000000
--- a/backend/igny8_core/ai/tests/test_generate_site_structure_function.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from __future__ import annotations
-
-from igny8_core.ai.functions.generate_site_structure import GenerateSiteStructureFunction
-from igny8_core.business.site_building.models import PageBlueprint
-from igny8_core.business.site_building.tests.base import SiteBuilderTestBase
-
-
-class GenerateSiteStructureFunctionTests(SiteBuilderTestBase):
- """Covers parsing + persistence logic for the Site Builder AI function."""
-
- def setUp(self):
- super().setUp()
- self.function = GenerateSiteStructureFunction()
-
- def test_parse_response_extracts_json_object(self):
- noisy_response = """
- Thoughts about the request…
- {
- "site": {"name": "Acme Robotics"},
- "pages": [{"slug": "home", "title": "Home"}]
- }
- Extra commentary that should be ignored.
- """
- parsed = self.function.parse_response(noisy_response)
- self.assertEqual(parsed['site']['name'], 'Acme Robotics')
- self.assertEqual(parsed['pages'][0]['slug'], 'home')
-
- def test_save_output_updates_structure_and_syncs_pages(self):
- # Existing page to prove update/delete flows.
- legacy_page = PageBlueprint.objects.create(
- site_blueprint=self.blueprint,
- slug='legacy',
- title='Legacy Page',
- type='custom',
- blocks_json=[],
- order=5,
- )
-
- parsed = {
- 'site': {'name': 'Future Robotics'},
- 'pages': [
- {
- 'slug': 'home',
- 'title': 'Homepage',
- 'type': 'home',
- 'status': 'ready',
- 'blocks': [{'type': 'hero', 'heading': 'Build faster'}],
- },
- {
- 'slug': 'about',
- 'title': 'About Us',
- 'type': 'about',
- 'blocks': [],
- },
- ],
- }
-
- result = self.function.save_output(parsed, {'blueprint': self.blueprint})
-
- self.blueprint.refresh_from_db()
- self.assertEqual(self.blueprint.status, 'ready')
- self.assertEqual(self.blueprint.structure_json['site']['name'], 'Future Robotics')
- self.assertEqual(result['pages_created'], 1)
- self.assertEqual(result['pages_updated'], 1)
- self.assertEqual(result['pages_deleted'], 1)
-
- slugs = set(self.blueprint.pages.values_list('slug', flat=True))
- self.assertIn('home', slugs)
- self.assertIn('about', slugs)
- self.assertNotIn(legacy_page.slug, slugs)
-
- def test_build_prompt_includes_existing_pages(self):
- # Convert structure to JSON to ensure template rendering stays stable.
- data = self.function.prepare(
- payload={'ids': [self.blueprint.id]},
- account=self.account,
- )
- prompt = self.function.build_prompt(data, account=self.account)
- self.assertIn(self.blueprint.name, prompt)
- self.assertIn('Home', prompt)
- # The prompt should mention hosting type and objectives in JSON context.
- self.assertIn(self.blueprint.hosting_type, prompt)
- for objective in self.blueprint.config_json.get('objectives', []):
- self.assertIn(objective, prompt)
-
-
diff --git a/backend/igny8_core/api/tests/FINAL_TEST_SUMMARY.md b/backend/igny8_core/api/tests/FINAL_TEST_SUMMARY.md
deleted file mode 100644
index a9ce436f..00000000
--- a/backend/igny8_core/api/tests/FINAL_TEST_SUMMARY.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# API Tests - Final Implementation Summary
-
-## ✅ Section 1: Testing - COMPLETE
-
-**Date Completed**: 2025-11-16
-**Status**: All Unit Tests Passing ✅
-
-## Test Execution Results
-
-### Unit Tests - ALL PASSING ✅
-
-1. **test_response.py** - ✅ 16/16 tests passing
- - Tests all response helper functions
- - Verifies unified response format
- - Tests request ID generation
-
-2. **test_permissions.py** - ✅ 20/20 tests passing
- - Tests all permission classes
- - Verifies role-based access control
- - Tests tenant isolation and bypass logic
-
-3. **test_throttles.py** - ✅ 11/11 tests passing
- - Tests rate limiting logic
- - Verifies bypass mechanisms
- - Tests rate parsing
-
-4. **test_exception_handler.py** - ✅ Ready (imports fixed)
- - Tests custom exception handler
- - Verifies unified error format
- - Tests all exception types
-
-**Total Unit Tests**: 61 tests - ALL PASSING ✅
-
-## Integration Tests Status
-
-Integration tests have been created and are functional. Some tests may show failures due to:
-- Rate limiting (429 responses) - Tests updated to handle this
-- Endpoint availability in test environment
-- Test data requirements
-
-**Note**: Integration tests verify unified API format regardless of endpoint status.
-
-## Fixes Applied
-
-1. ✅ Fixed `RequestFactory` import (from `django.test` not `rest_framework.test`)
-2. ✅ Fixed Account creation to require `owner` field
-3. ✅ Fixed migration issues (0009_fix_admin_log_user_fk, 0006_alter_systemstatus)
-4. ✅ Updated integration tests to handle rate limiting (429 responses)
-5. ✅ Fixed system account creation in permission tests
-
-## Test Coverage
-
-- ✅ Response Helpers: 100%
-- ✅ Exception Handler: 100%
-- ✅ Permissions: 100%
-- ✅ Rate Limiting: 100%
-- ✅ Integration Tests: Created for all modules
-
-## Files Created
-
-1. `test_response.py` - Response helper tests
-2. `test_exception_handler.py` - Exception handler tests
-3. `test_permissions.py` - Permission class tests
-4. `test_throttles.py` - Rate limiting tests
-5. `test_integration_base.py` - Base class for integration tests
-6. `test_integration_planner.py` - Planner module tests
-7. `test_integration_writer.py` - Writer module tests
-8. `test_integration_system.py` - System module tests
-9. `test_integration_billing.py` - Billing module tests
-10. `test_integration_auth.py` - Auth module tests
-11. `test_integration_errors.py` - Error scenario tests
-12. `test_integration_pagination.py` - Pagination tests
-13. `test_integration_rate_limiting.py` - Rate limiting integration tests
-14. `README.md` - Test documentation
-15. `TEST_SUMMARY.md` - Test statistics
-16. `run_tests.py` - Test runner script
-
-## Verification
-
-All unit tests have been executed and verified:
-```bash
-python manage.py test igny8_core.api.tests.test_response igny8_core.api.tests.test_permissions igny8_core.api.tests.test_throttles
-```
-
-**Result**: ✅ ALL PASSING
-
-## Next Steps
-
-1. ✅ Unit tests ready for CI/CD
-2. ⚠️ Integration tests may need environment-specific configuration
-3. ✅ Changelog updated with testing section
-4. ✅ All test files documented
-
-## Conclusion
-
-**Section 1: Testing is COMPLETE** ✅
-
-All unit tests are passing and verify the Unified API Standard v1.0 implementation. Integration tests are created and functional, with appropriate handling for real-world API conditions (rate limiting, endpoint availability).
-
diff --git a/backend/igny8_core/api/tests/README.md b/backend/igny8_core/api/tests/README.md
deleted file mode 100644
index 10663810..00000000
--- a/backend/igny8_core/api/tests/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# API Tests
-
-This directory contains comprehensive unit and integration tests for the Unified API Standard v1.0.
-
-## Test Structure
-
-### Unit Tests
-- `test_response.py` - Tests for response helper functions (success_response, error_response, paginated_response)
-- `test_exception_handler.py` - Tests for custom exception handler
-- `test_permissions.py` - Tests for permission classes
-- `test_throttles.py` - Tests for rate limiting
-
-### Integration Tests
-- `test_integration_base.py` - Base class with common fixtures
-- `test_integration_planner.py` - Planner module endpoint tests
-- `test_integration_writer.py` - Writer module endpoint tests
-- `test_integration_system.py` - System module endpoint tests
-- `test_integration_billing.py` - Billing module endpoint tests
-- `test_integration_auth.py` - Auth module endpoint tests
-- `test_integration_errors.py` - Error scenario tests (400, 401, 403, 404, 429, 500)
-- `test_integration_pagination.py` - Pagination tests across all modules
-- `test_integration_rate_limiting.py` - Rate limiting integration tests
-
-## Running Tests
-
-### Run All Tests
-```bash
-python manage.py test igny8_core.api.tests --verbosity=2
-```
-
-### Run Specific Test File
-```bash
-python manage.py test igny8_core.api.tests.test_response
-python manage.py test igny8_core.api.tests.test_integration_planner
-```
-
-### Run Specific Test Class
-```bash
-python manage.py test igny8_core.api.tests.test_response.ResponseHelpersTestCase
-```
-
-### Run Specific Test Method
-```bash
-python manage.py test igny8_core.api.tests.test_response.ResponseHelpersTestCase.test_success_response_with_data
-```
-
-## Test Coverage
-
-### Unit Tests Coverage
-- ✅ Response helpers (100%)
-- ✅ Exception handler (100%)
-- ✅ Permissions (100%)
-- ✅ Rate limiting (100%)
-
-### Integration Tests Coverage
-- ✅ Planner module CRUD + AI actions
-- ✅ Writer module CRUD + AI actions
-- ✅ System module endpoints
-- ✅ Billing module endpoints
-- ✅ Auth module endpoints
-- ✅ Error scenarios (400, 401, 403, 404, 429, 500)
-- ✅ Pagination across all modules
-- ✅ Rate limiting headers and bypass logic
-
-## Test Requirements
-
-All tests verify:
-1. **Unified Response Format**: All endpoints return `{success, data/results, message, errors, request_id}`
-2. **Proper Status Codes**: Correct HTTP status codes (200, 201, 400, 401, 403, 404, 429, 500)
-3. **Error Format**: Error responses include `error`, `errors`, and `request_id`
-4. **Pagination Format**: Paginated responses include `success`, `count`, `next`, `previous`, `results`
-5. **Request ID**: All responses include `request_id` for tracking
-
diff --git a/backend/igny8_core/api/tests/TEST_RESULTS.md b/backend/igny8_core/api/tests/TEST_RESULTS.md
deleted file mode 100644
index e080d3c4..00000000
--- a/backend/igny8_core/api/tests/TEST_RESULTS.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# API Tests - Execution Results
-
-## Test Execution Summary
-
-**Date**: 2025-11-16
-**Environment**: Docker Container (igny8_backend)
-**Database**: test_igny8_db
-
-## Unit Tests Status
-
-### ✅ test_response.py
-- **Status**: ✅ ALL PASSING (16/16)
-- **Coverage**: Response helpers (success_response, error_response, paginated_response, get_request_id)
-- **Result**: All tests verify unified response format correctly
-
-### ✅ test_throttles.py
-- **Status**: ✅ ALL PASSING (11/11)
-- **Coverage**: Rate limiting logic, bypass mechanisms, rate parsing
-- **Result**: All throttle tests pass
-
-### ⚠️ test_permissions.py
-- **Status**: ⚠️ 1 ERROR (18/19 passing)
-- **Issue**: System account creation in test_has_tenant_access_system_account
-- **Fix Applied**: Updated to create owner before account
-- **Note**: Needs re-run to verify fix
-
-### ⚠️ test_exception_handler.py
-- **Status**: ⚠️ NEEDS VERIFICATION
-- **Issue**: Import error fixed (RequestFactory from django.test)
-- **Note**: Tests need to be run to verify all pass
-
-## Integration Tests Status
-
-### ⚠️ Integration Tests
-- **Status**: ⚠️ PARTIAL (Many failures due to rate limiting and endpoint availability)
-- **Issues**:
- 1. Rate limiting (429 errors) - Tests updated to accept 429 as valid unified format
- 2. Some endpoints may not exist or return different status codes
- 3. Tests need to be more resilient to handle real API conditions
-
-### Fixes Applied
-1. ✅ Updated integration tests to accept 429 (rate limited) as valid response
-2. ✅ Fixed Account creation to require owner
-3. ✅ Fixed RequestFactory import
-4. ✅ Fixed migration issues (0009, 0006)
-
-## Test Statistics
-
-- **Total Test Files**: 13
-- **Total Test Methods**: ~115
-- **Unit Tests Passing**: 45/46 (98%)
-- **Integration Tests**: Needs refinement for production environment
-
-## Next Steps
-
-1. ✅ Unit tests are production-ready (response, throttles)
-2. ⚠️ Fix remaining permission test error
-3. ⚠️ Make integration tests more resilient:
- - Accept 404/429 as valid responses (still test unified format)
- - Skip tests if endpoints don't exist
- - Add retry logic for rate-limited requests
-
-## Recommendations
-
-1. **Unit Tests**: Ready for CI/CD integration
-2. **Integration Tests**: Should be run in staging environment with proper test data
-3. **Rate Limiting**: Consider disabling for test environment or using higher limits
-4. **Test Data**: Ensure test database has proper fixtures for integration tests
-
diff --git a/backend/igny8_core/api/tests/TEST_SUMMARY.md b/backend/igny8_core/api/tests/TEST_SUMMARY.md
deleted file mode 100644
index f4833eae..00000000
--- a/backend/igny8_core/api/tests/TEST_SUMMARY.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# API Tests - Implementation Summary
-
-## Overview
-Comprehensive test suite for Unified API Standard v1.0 implementation covering all unit and integration tests.
-
-## Test Files Created
-
-### Unit Tests (4 files)
-1. **test_response.py** (153 lines)
- - Tests for `success_response()`, `error_response()`, `paginated_response()`
- - Tests for `get_request_id()`
- - 18 test methods covering all response scenarios
-
-2. **test_exception_handler.py** (177 lines)
- - Tests for `custom_exception_handler()`
- - Tests all exception types (ValidationError, AuthenticationFailed, PermissionDenied, NotFound, Throttled, etc.)
- - Tests debug mode behavior
- - 12 test methods
-
-3. **test_permissions.py** (245 lines)
- - Tests for `IsAuthenticatedAndActive`, `HasTenantAccess`, `IsViewerOrAbove`, `IsEditorOrAbove`, `IsAdminOrOwner`
- - Tests role-based access control
- - Tests tenant isolation
- - Tests admin/system account bypass
- - 20 test methods
-
-4. **test_throttles.py** (145 lines)
- - Tests for `DebugScopedRateThrottle`
- - Tests bypass logic (DEBUG mode, env flag, admin/system accounts)
- - Tests rate parsing
- - 11 test methods
-
-### Integration Tests (9 files)
-1. **test_integration_base.py** (107 lines)
- - Base test class with common fixtures
- - Helper methods: `assert_unified_response_format()`, `assert_paginated_response()`
- - Sets up: User, Account, Plan, Site, Sector, Industry, SeedKeyword
-
-2. **test_integration_planner.py** (120 lines)
- - Tests Planner module endpoints (keywords, clusters, ideas)
- - Tests CRUD operations
- - Tests AI actions (auto_cluster)
- - Tests error scenarios
- - 12 test methods
-
-3. **test_integration_writer.py** (65 lines)
- - Tests Writer module endpoints (tasks, content, images)
- - Tests CRUD operations
- - Tests error scenarios
- - 6 test methods
-
-4. **test_integration_system.py** (50 lines)
- - Tests System module endpoints (status, prompts, settings, integrations)
- - 5 test methods
-
-5. **test_integration_billing.py** (50 lines)
- - Tests Billing module endpoints (credits, usage, transactions)
- - 5 test methods
-
-6. **test_integration_auth.py** (100 lines)
- - Tests Auth module endpoints (login, register, users, accounts, sites)
- - Tests authentication flows
- - Tests error scenarios
- - 8 test methods
-
-7. **test_integration_errors.py** (95 lines)
- - Tests error scenarios (400, 401, 403, 404, 429, 500)
- - Tests unified error format
- - 6 test methods
-
-8. **test_integration_pagination.py** (100 lines)
- - Tests pagination across all modules
- - Tests page size, page parameter, max page size
- - Tests empty results
- - 10 test methods
-
-9. **test_integration_rate_limiting.py** (120 lines)
- - Tests rate limiting headers
- - Tests bypass logic (admin, system account, DEBUG mode)
- - Tests different throttle scopes
- - 7 test methods
-
-## Test Statistics
-
-- **Total Test Files**: 13
-- **Total Test Methods**: ~115
-- **Total Lines of Code**: ~1,500
-- **Coverage**: 100% of API Standard components
-
-## Test Categories
-
-### Unit Tests
-- ✅ Response Helpers (100%)
-- ✅ Exception Handler (100%)
-- ✅ Permissions (100%)
-- ✅ Rate Limiting (100%)
-
-### Integration Tests
-- ✅ Planner Module (100%)
-- ✅ Writer Module (100%)
-- ✅ System Module (100%)
-- ✅ Billing Module (100%)
-- ✅ Auth Module (100%)
-- ✅ Error Scenarios (100%)
-- ✅ Pagination (100%)
-- ✅ Rate Limiting (100%)
-
-## What Tests Verify
-
-1. **Unified Response Format**
- - All responses include `success` field
- - Success responses include `data` or `results`
- - Error responses include `error` and `errors`
- - All responses include `request_id`
-
-2. **Status Codes**
- - Correct HTTP status codes (200, 201, 400, 401, 403, 404, 429, 500)
- - Proper error messages for each status code
-
-3. **Pagination**
- - Paginated responses include `count`, `next`, `previous`, `results`
- - Page size limits enforced
- - Empty results handled correctly
-
-4. **Error Handling**
- - All exceptions wrapped in unified format
- - Field-specific errors included
- - Debug info in DEBUG mode
-
-5. **Permissions**
- - Role-based access control
- - Tenant isolation
- - Admin/system account bypass
-
-6. **Rate Limiting**
- - Throttle headers present
- - Bypass logic for admin/system accounts
- - Bypass in DEBUG mode
-
-## Running Tests
-
-```bash
-# Run all tests
-python manage.py test igny8_core.api.tests --verbosity=2
-
-# Run specific test file
-python manage.py test igny8_core.api.tests.test_response
-
-# Run specific test class
-python manage.py test igny8_core.api.tests.test_response.ResponseHelpersTestCase
-```
-
-## Next Steps
-
-1. Run tests in Docker environment
-2. Verify all tests pass
-3. Add to CI/CD pipeline
-4. Monitor test coverage
-5. Add performance tests if needed
-
diff --git a/backend/igny8_core/api/tests/__init__.py b/backend/igny8_core/api/tests/__init__.py
deleted file mode 100644
index 3be4cbf7..00000000
--- a/backend/igny8_core/api/tests/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""
-API Tests Package
-Unit and integration tests for unified API standard
-"""
-
diff --git a/backend/igny8_core/api/tests/test_ai_framework.py b/backend/igny8_core/api/tests/test_ai_framework.py
deleted file mode 100644
index fbe53fb1..00000000
--- a/backend/igny8_core/api/tests/test_ai_framework.py
+++ /dev/null
@@ -1,232 +0,0 @@
-"""
-Unit tests for AI framework
-Tests get_model_config() and AICore.run_ai_request() functions
-"""
-from django.test import TestCase
-from igny8_core.auth.models import Account, User, Plan
-from igny8_core.modules.system.models import IntegrationSettings
-from igny8_core.ai.settings import get_model_config
-from igny8_core.ai.ai_core import AICore
-
-
-class GetModelConfigTestCase(TestCase):
- """Test cases for get_model_config() function"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name='Test Account',
- slug='test-account',
- plan=self.plan,
- owner=self.user,
- status='active'
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- def test_get_model_config_with_valid_settings(self):
- """Test get_model_config() with valid IntegrationSettings"""
- IntegrationSettings.objects.create(
- integration_type='openai',
- account=self.account,
- is_active=True,
- config={
- 'model': 'gpt-4o',
- 'max_tokens': 4000,
- 'temperature': 0.7,
- 'apiKey': 'test-key'
- }
- )
-
- config = get_model_config('auto_cluster', self.account)
-
- self.assertEqual(config['model'], 'gpt-4o')
- self.assertEqual(config['max_tokens'], 4000)
- self.assertEqual(config['temperature'], 0.7)
- self.assertIn('response_format', config)
-
- def test_get_model_config_without_account(self):
- """Test get_model_config() without account - should raise ValueError"""
- with self.assertRaises(ValueError) as context:
- get_model_config('auto_cluster', None)
-
- self.assertIn('Account is required', str(context.exception))
-
- def test_get_model_config_without_integration_settings(self):
- """Test get_model_config() without IntegrationSettings - should raise ValueError"""
- with self.assertRaises(ValueError) as context:
- get_model_config('auto_cluster', self.account)
-
- self.assertIn('OpenAI IntegrationSettings not configured', str(context.exception))
- self.assertIn(str(self.account.id), str(context.exception))
-
- def test_get_model_config_without_model_in_config(self):
- """Test get_model_config() without model in config - should raise ValueError"""
- IntegrationSettings.objects.create(
- integration_type='openai',
- account=self.account,
- is_active=True,
- config={
- 'max_tokens': 4000,
- 'temperature': 0.7,
- 'apiKey': 'test-key'
- # No 'model' key
- }
- )
-
- with self.assertRaises(ValueError) as context:
- get_model_config('auto_cluster', self.account)
-
- self.assertIn('Model not configured in IntegrationSettings', str(context.exception))
- self.assertIn(str(self.account.id), str(context.exception))
-
- def test_get_model_config_with_inactive_settings(self):
- """Test get_model_config() with inactive IntegrationSettings - should raise ValueError"""
- IntegrationSettings.objects.create(
- integration_type='openai',
- account=self.account,
- is_active=False,
- config={
- 'model': 'gpt-4o',
- 'max_tokens': 4000,
- 'temperature': 0.7
- }
- )
-
- with self.assertRaises(ValueError) as context:
- get_model_config('auto_cluster', self.account)
-
- self.assertIn('OpenAI IntegrationSettings not configured', str(context.exception))
-
- def test_get_model_config_with_function_alias(self):
- """Test get_model_config() with function alias"""
- IntegrationSettings.objects.create(
- integration_type='openai',
- account=self.account,
- is_active=True,
- config={
- 'model': 'gpt-4o-mini',
- 'max_tokens': 2000,
- 'temperature': 0.5
- }
- )
-
- # Test with alias
- config1 = get_model_config('cluster_keywords', self.account)
- config2 = get_model_config('auto_cluster', self.account)
-
- # Both should return the same config
- self.assertEqual(config1['model'], config2['model'])
- self.assertEqual(config1['model'], 'gpt-4o-mini')
-
- def test_get_model_config_json_mode_models(self):
- """Test get_model_config() sets response_format for JSON mode models"""
- json_models = ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo-preview', 'gpt-5.1', 'gpt-5.2']
-
- for model in json_models:
- IntegrationSettings.objects.filter(account=self.account).delete()
- IntegrationSettings.objects.create(
- integration_type='openai',
- account=self.account,
- is_active=True,
- config={
- 'model': model,
- 'max_tokens': 4000,
- 'temperature': 0.7
- }
- )
-
- config = get_model_config('auto_cluster', self.account)
- self.assertIn('response_format', config)
- self.assertEqual(config['response_format'], {'type': 'json_object'})
-
-
-class AICoreTestCase(TestCase):
- """Test cases for AICore.run_ai_request() function"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name='Test Account',
- slug='test-account',
- plan=self.plan,
- owner=self.user,
- status='active'
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- self.ai_core = AICore(account=self.account)
-
- def test_run_ai_request_without_model(self):
- """Test run_ai_request() without model - should return error dict"""
- result = self.ai_core.run_ai_request(
- prompt="Test prompt",
- model=None,
- function_name='test_function'
- )
-
- self.assertIn('error', result)
- self.assertIn('Model is required', result['error'])
- self.assertEqual(result['content'], None)
- self.assertEqual(result['total_tokens'], 0)
-
- def test_run_ai_request_with_empty_model(self):
- """Test run_ai_request() with empty model string - should return error dict"""
- result = self.ai_core.run_ai_request(
- prompt="Test prompt",
- model="",
- function_name='test_function'
- )
-
- self.assertIn('error', result)
- self.assertIn('Model is required', result['error'])
- self.assertEqual(result['content'], None)
- self.assertEqual(result['total_tokens'], 0)
-
- def test_get_model_deprecated(self):
- """Test get_model() method is deprecated and raises ValueError"""
- with self.assertRaises(ValueError) as context:
- self.ai_core.get_model('openai')
-
- self.assertIn('deprecated', str(context.exception).lower())
- self.assertIn('run_ai_request', str(context.exception))
-
diff --git a/backend/igny8_core/api/tests/test_exception_handler.py b/backend/igny8_core/api/tests/test_exception_handler.py
deleted file mode 100644
index 6e3def68..00000000
--- a/backend/igny8_core/api/tests/test_exception_handler.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""
-Unit tests for custom exception handler
-Tests all exception types and status code mappings
-"""
-from django.test import TestCase, RequestFactory
-from django.http import HttpRequest
-from rest_framework import status
-from rest_framework.exceptions import (
- ValidationError, AuthenticationFailed, PermissionDenied, NotFound,
- MethodNotAllowed, NotAcceptable, Throttled
-)
-from rest_framework.views import APIView
-from igny8_core.api.exception_handlers import custom_exception_handler
-
-
-class ExceptionHandlerTestCase(TestCase):
- """Test cases for custom exception handler"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.factory = RequestFactory()
- self.view = APIView()
-
- def test_validation_error_400(self):
- """Test ValidationError returns 400 with unified format"""
- request = self.factory.post('/test/', {})
- exc = ValidationError({"field": ["This field is required"]})
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertFalse(response.data['success'])
- self.assertIn('error', response.data)
- self.assertIn('errors', response.data)
- self.assertIn('request_id', response.data)
-
- def test_authentication_failed_401(self):
- """Test AuthenticationFailed returns 401 with unified format"""
- request = self.factory.get('/test/')
- exc = AuthenticationFailed("Authentication required")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], 'Authentication required')
- self.assertIn('request_id', response.data)
-
- def test_permission_denied_403(self):
- """Test PermissionDenied returns 403 with unified format"""
- request = self.factory.get('/test/')
- exc = PermissionDenied("Permission denied")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], 'Permission denied')
- self.assertIn('request_id', response.data)
-
- def test_not_found_404(self):
- """Test NotFound returns 404 with unified format"""
- request = self.factory.get('/test/')
- exc = NotFound("Resource not found")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], 'Resource not found')
- self.assertIn('request_id', response.data)
-
- def test_throttled_429(self):
- """Test Throttled returns 429 with unified format"""
- request = self.factory.get('/test/')
- exc = Throttled()
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_429_TOO_MANY_REQUESTS)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], 'Rate limit exceeded')
- self.assertIn('request_id', response.data)
-
- def test_method_not_allowed_405(self):
- """Test MethodNotAllowed returns 405 with unified format"""
- request = self.factory.post('/test/')
- exc = MethodNotAllowed("POST")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
- self.assertFalse(response.data['success'])
- self.assertIn('error', response.data)
- self.assertIn('request_id', response.data)
-
- def test_unhandled_exception_500(self):
- """Test unhandled exception returns 500 with unified format"""
- request = self.factory.get('/test/')
- exc = ValueError("Unexpected error")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], 'Internal server error')
- self.assertIn('request_id', response.data)
-
- def test_exception_handler_includes_request_id(self):
- """Test exception handler includes request_id in response"""
- request = self.factory.get('/test/')
- request.request_id = 'test-request-id-exception'
- exc = ValidationError("Test error")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertIn('request_id', response.data)
- self.assertEqual(response.data['request_id'], 'test-request-id-exception')
-
- def test_exception_handler_debug_mode(self):
- """Test exception handler includes debug info in DEBUG mode"""
- from django.conf import settings
- original_debug = settings.DEBUG
-
- try:
- settings.DEBUG = True
- request = self.factory.get('/test/')
- exc = ValueError("Test error")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertIn('debug', response.data)
- self.assertIn('exception_type', response.data['debug'])
- self.assertIn('exception_message', response.data['debug'])
- self.assertIn('view', response.data['debug'])
- self.assertIn('path', response.data['debug'])
- self.assertIn('method', response.data['debug'])
- finally:
- settings.DEBUG = original_debug
-
- def test_exception_handler_no_debug_mode(self):
- """Test exception handler excludes debug info when DEBUG=False"""
- from django.conf import settings
- original_debug = settings.DEBUG
-
- try:
- settings.DEBUG = False
- request = self.factory.get('/test/')
- exc = ValueError("Test error")
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertNotIn('debug', response.data)
- finally:
- settings.DEBUG = original_debug
-
- def test_field_specific_validation_errors(self):
- """Test field-specific validation errors are included"""
- request = self.factory.post('/test/', {})
- exc = ValidationError({
- "email": ["Invalid email format"],
- "password": ["Password too short", "Password must contain numbers"]
- })
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertIn('errors', response.data)
- self.assertIn('email', response.data['errors'])
- self.assertIn('password', response.data['errors'])
- self.assertEqual(len(response.data['errors']['password']), 2)
-
- def test_non_field_validation_errors(self):
- """Test non-field validation errors are handled"""
- request = self.factory.post('/test/', {})
- exc = ValidationError({"non_field_errors": ["General validation error"]})
- context = {'request': request, 'view': self.view}
-
- response = custom_exception_handler(exc, context)
-
- self.assertIn('errors', response.data)
- self.assertIn('non_field_errors', response.data['errors'])
-
diff --git a/backend/igny8_core/api/tests/test_integration_auth.py b/backend/igny8_core/api/tests/test_integration_auth.py
deleted file mode 100644
index c7a64a06..00000000
--- a/backend/igny8_core/api/tests/test_integration_auth.py
+++ /dev/null
@@ -1,131 +0,0 @@
-"""
-Integration tests for Auth module endpoints
-Tests login, register, user management return unified format
-"""
-from rest_framework import status
-from django.test import TestCase
-from rest_framework.test import APIClient
-from igny8_core.auth.models import User, Account, Plan
-
-
-class AuthIntegrationTestCase(TestCase):
- """Integration tests for Auth module"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.client = APIClient()
-
- # Create test plan and account
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create test user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create test account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- def assert_unified_response_format(self, response, expected_success=True):
- """Assert response follows unified format"""
- self.assertIn('success', response.data)
- self.assertEqual(response.data['success'], expected_success)
-
- if expected_success:
- self.assertTrue('data' in response.data or 'results' in response.data)
- else:
- self.assertIn('error', response.data)
-
- def test_login_returns_unified_format(self):
- """Test POST /api/v1/auth/login/ returns unified format"""
- data = {
- 'email': 'test@test.com',
- 'password': 'testpass123'
- }
- response = self.client.post('/api/v1/auth/login/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
- self.assertIn('user', response.data['data'])
- self.assertIn('access', response.data['data'])
-
- def test_login_invalid_credentials_returns_unified_format(self):
- """Test login with invalid credentials returns unified format"""
- data = {
- 'email': 'test@test.com',
- 'password': 'wrongpassword'
- }
- response = self.client.post('/api/v1/auth/login/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('request_id', response.data)
-
- def test_register_returns_unified_format(self):
- """Test POST /api/v1/auth/register/ returns unified format"""
- data = {
- 'email': 'newuser@test.com',
- 'username': 'newuser',
- 'password': 'testpass123',
- 'first_name': 'New',
- 'last_name': 'User'
- }
- response = self.client.post('/api/v1/auth/register/', data, format='json')
-
- # May return 400 if validation fails, but should still be unified format
- self.assertIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_400_BAD_REQUEST])
- self.assert_unified_response_format(response)
-
- def test_list_users_returns_unified_format(self):
- """Test GET /api/v1/auth/users/ returns unified format"""
- self.client.force_authenticate(user=self.user)
- response = self.client.get('/api/v1/auth/users/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_list_accounts_returns_unified_format(self):
- """Test GET /api/v1/auth/accounts/ returns unified format"""
- self.client.force_authenticate(user=self.user)
- response = self.client.get('/api/v1/auth/accounts/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_list_sites_returns_unified_format(self):
- """Test GET /api/v1/auth/sites/ returns unified format"""
- self.client.force_authenticate(user=self.user)
- response = self.client.get('/api/v1/auth/sites/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_unauthorized_returns_unified_format(self):
- """Test 401 errors return unified format"""
- # Don't authenticate
- response = self.client.get('/api/v1/auth/users/')
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('request_id', response.data)
-
diff --git a/backend/igny8_core/api/tests/test_integration_base.py b/backend/igny8_core/api/tests/test_integration_base.py
deleted file mode 100644
index a86df97c..00000000
--- a/backend/igny8_core/api/tests/test_integration_base.py
+++ /dev/null
@@ -1,111 +0,0 @@
-"""
-Base test class for integration tests
-Provides common fixtures and utilities
-"""
-from django.test import TestCase
-from rest_framework.test import APIClient
-from rest_framework import status
-from igny8_core.auth.models import User, Account, Plan, Site, Sector, Industry, IndustrySector, SeedKeyword
-
-
-class IntegrationTestBase(TestCase):
- """Base class for integration tests with common fixtures"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.client = APIClient()
-
- # Create test plan
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create test user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create test account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- # Create site
- self.site = Site.objects.create(
- name="Test Site",
- slug="test-site",
- account=self.account,
- industry=self.industry
- )
-
- # Create sector (Sector needs industry_sector reference)
- self.sector = Sector.objects.create(
- name="Test Sector",
- slug="test-sector",
- site=self.site,
- account=self.account,
- industry_sector=self.industry_sector
- )
-
- # Create seed keyword
- self.seed_keyword = SeedKeyword.objects.create(
- keyword="test keyword",
- industry=self.industry,
- sector=self.industry_sector,
- volume=1000,
- difficulty=50,
- country="US"
- )
-
- # Authenticate client
- self.client.force_authenticate(user=self.user)
-
- # Set account on request (simulating middleware)
- self.client.force_authenticate(user=self.user)
-
- def assert_unified_response_format(self, response, expected_success=True):
- """Assert response follows unified format"""
- self.assertIn('success', response.data)
- self.assertEqual(response.data['success'], expected_success)
-
- if expected_success:
- # Success responses should have data or results
- self.assertTrue('data' in response.data or 'results' in response.data)
- else:
- # Error responses should have error
- self.assertIn('error', response.data)
-
- def assert_paginated_response(self, response):
- """Assert response is a paginated response"""
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('success', response.data)
- self.assertIn('count', response.data)
- self.assertIn('results', response.data)
- self.assertIn('next', response.data)
- self.assertIn('previous', response.data)
-
diff --git a/backend/igny8_core/api/tests/test_integration_billing.py b/backend/igny8_core/api/tests/test_integration_billing.py
deleted file mode 100644
index 3c5bc49f..00000000
--- a/backend/igny8_core/api/tests/test_integration_billing.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
-Integration tests for Billing module endpoints
-Tests credit balance, usage, transactions return unified format
-"""
-from rest_framework import status
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class BillingIntegrationTestCase(IntegrationTestBase):
- """Integration tests for Billing module"""
-
- def test_credit_balance_returns_unified_format(self):
- """Test GET /api/v1/billing/credits/balance/balance/ returns unified format"""
- response = self.client.get('/api/v1/billing/credits/balance/balance/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_credit_usage_returns_unified_format(self):
- """Test GET /api/v1/billing/credits/usage/ returns unified format"""
- response = self.client.get('/api/v1/billing/credits/usage/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_usage_summary_returns_unified_format(self):
- """Test GET /api/v1/billing/credits/usage/summary/ returns unified format"""
- response = self.client.get('/api/v1/billing/credits/usage/summary/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_usage_limits_returns_unified_format(self):
- """Test GET /api/v1/billing/credits/usage/limits/ returns unified format"""
- response = self.client.get('/api/v1/billing/credits/usage/limits/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_transactions_returns_unified_format(self):
- """Test GET /api/v1/billing/credits/transactions/ returns unified format"""
- response = self.client.get('/api/v1/billing/credits/transactions/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
diff --git a/backend/igny8_core/api/tests/test_integration_errors.py b/backend/igny8_core/api/tests/test_integration_errors.py
deleted file mode 100644
index 7489ed1f..00000000
--- a/backend/igny8_core/api/tests/test_integration_errors.py
+++ /dev/null
@@ -1,92 +0,0 @@
-"""
-Integration tests for error scenarios
-Tests 400, 401, 403, 404, 429, 500 responses return unified format
-"""
-from rest_framework import status
-from django.test import TestCase
-from rest_framework.test import APIClient
-from igny8_core.auth.models import User, Account, Plan
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class ErrorScenariosTestCase(IntegrationTestBase):
- """Integration tests for error scenarios"""
-
- def test_400_bad_request_returns_unified_format(self):
- """Test 400 Bad Request returns unified format"""
- # Invalid data
- data = {'invalid': 'data'}
- response = self.client.post('/api/v1/planner/keywords/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('errors', response.data)
- self.assertIn('request_id', response.data)
-
- def test_401_unauthorized_returns_unified_format(self):
- """Test 401 Unauthorized returns unified format"""
- # Create unauthenticated client
- unauthenticated_client = APIClient()
- response = unauthenticated_client.get('/api/v1/planner/keywords/')
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertEqual(response.data['error'], 'Authentication required')
- self.assertIn('request_id', response.data)
-
- def test_403_forbidden_returns_unified_format(self):
- """Test 403 Forbidden returns unified format"""
- # Create viewer user (limited permissions)
- viewer_user = User.objects.create_user(
- username='viewer',
- email='viewer@test.com',
- password='testpass123',
- role='viewer',
- account=self.account
- )
-
- viewer_client = APIClient()
- viewer_client.force_authenticate(user=viewer_user)
-
- # Try to access admin-only endpoint (if exists)
- # For now, test with a protected endpoint that requires editor+
- response = viewer_client.post('/api/v1/planner/keywords/auto_cluster/', {}, format='json')
-
- # May return 400 (validation) or 403 (permission), both should be unified
- self.assertIn(response.status_code, [status.HTTP_400_BAD_REQUEST, status.HTTP_403_FORBIDDEN])
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('request_id', response.data)
-
- def test_404_not_found_returns_unified_format(self):
- """Test 404 Not Found returns unified format"""
- response = self.client.get('/api/v1/planner/keywords/99999/')
-
- self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertEqual(response.data['error'], 'Resource not found')
- self.assertIn('request_id', response.data)
-
- def test_404_invalid_endpoint_returns_unified_format(self):
- """Test 404 for invalid endpoint returns unified format"""
- response = self.client.get('/api/v1/nonexistent/endpoint/')
-
- self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
- # DRF may return different format for URL not found, but our handler should catch it
- if 'success' in response.data:
- self.assert_unified_response_format(response, expected_success=False)
-
- def test_validation_error_returns_unified_format(self):
- """Test validation errors return unified format with field-specific errors"""
- # Missing required fields
- response = self.client.post('/api/v1/planner/keywords/', {}, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('errors', response.data)
- # Should have field-specific errors
- self.assertIsInstance(response.data['errors'], dict)
-
diff --git a/backend/igny8_core/api/tests/test_integration_pagination.py b/backend/igny8_core/api/tests/test_integration_pagination.py
deleted file mode 100644
index daefe34c..00000000
--- a/backend/igny8_core/api/tests/test_integration_pagination.py
+++ /dev/null
@@ -1,113 +0,0 @@
-"""
-Integration tests for pagination
-Tests paginated responses across all modules return unified format
-"""
-from rest_framework import status
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-from igny8_core.modules.planner.models import Keywords
-from igny8_core.auth.models import SeedKeyword, Industry, IndustrySector
-
-
-class PaginationIntegrationTestCase(IntegrationTestBase):
- """Integration tests for pagination"""
-
- def setUp(self):
- """Set up test fixtures with multiple records"""
- super().setUp()
-
- # Create multiple keywords for pagination testing
- for i in range(15):
- Keywords.objects.create(
- seed_keyword=self.seed_keyword,
- site=self.site,
- sector=self.sector,
- account=self.account,
- status='active'
- )
-
- def test_pagination_default_page_size(self):
- """Test pagination with default page size"""
- response = self.client.get('/api/v1/planner/keywords/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
- self.assertEqual(response.data['count'], 15)
- self.assertLessEqual(len(response.data['results']), 10) # Default page size
- self.assertIsNotNone(response.data['next']) # Should have next page
-
- def test_pagination_custom_page_size(self):
- """Test pagination with custom page size"""
- response = self.client.get('/api/v1/planner/keywords/?page_size=5')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
- self.assertEqual(response.data['count'], 15)
- self.assertEqual(len(response.data['results']), 5)
- self.assertIsNotNone(response.data['next'])
-
- def test_pagination_page_parameter(self):
- """Test pagination with page parameter"""
- response = self.client.get('/api/v1/planner/keywords/?page=2&page_size=5')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
- self.assertEqual(response.data['count'], 15)
- self.assertEqual(len(response.data['results']), 5)
- self.assertIsNotNone(response.data['previous'])
-
- def test_pagination_max_page_size(self):
- """Test pagination respects max page size"""
- response = self.client.get('/api/v1/planner/keywords/?page_size=200') # Exceeds max of 100
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
- self.assertLessEqual(len(response.data['results']), 100) # Should be capped at 100
-
- def test_pagination_empty_results(self):
- """Test pagination with empty results"""
- # Use a filter that returns no results
- response = self.client.get('/api/v1/planner/keywords/?status=nonexistent')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
- self.assertEqual(response.data['count'], 0)
- self.assertEqual(len(response.data['results']), 0)
- self.assertIsNone(response.data['next'])
- self.assertIsNone(response.data['previous'])
-
- def test_pagination_includes_success_field(self):
- """Test paginated responses include success field"""
- response = self.client.get('/api/v1/planner/keywords/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertIn('success', response.data)
- self.assertTrue(response.data['success'])
-
- def test_pagination_clusters(self):
- """Test pagination works for clusters endpoint"""
- response = self.client.get('/api/v1/planner/clusters/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_pagination_ideas(self):
- """Test pagination works for ideas endpoint"""
- response = self.client.get('/api/v1/planner/ideas/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_pagination_tasks(self):
- """Test pagination works for tasks endpoint"""
- response = self.client.get('/api/v1/writer/tasks/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_pagination_content(self):
- """Test pagination works for content endpoint"""
- response = self.client.get('/api/v1/writer/content/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
diff --git a/backend/igny8_core/api/tests/test_integration_planner.py b/backend/igny8_core/api/tests/test_integration_planner.py
deleted file mode 100644
index 75138f2b..00000000
--- a/backend/igny8_core/api/tests/test_integration_planner.py
+++ /dev/null
@@ -1,160 +0,0 @@
-"""
-Integration tests for Planner module endpoints
-Tests CRUD operations and AI actions return unified format
-"""
-from rest_framework import status
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-from igny8_core.modules.planner.models import Keywords, Clusters, ContentIdeas
-
-
-class PlannerIntegrationTestCase(IntegrationTestBase):
- """Integration tests for Planner module"""
-
- def test_list_keywords_returns_unified_format(self):
- """Test GET /api/v1/planner/keywords/ returns unified format"""
- response = self.client.get('/api/v1/planner/keywords/')
-
- # May get 429 if rate limited - both should have unified format
- if response.status_code == status.HTTP_429_TOO_MANY_REQUESTS:
- self.assert_unified_response_format(response, expected_success=False)
- else:
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_create_keyword_returns_unified_format(self):
- """Test POST /api/v1/planner/keywords/ returns unified format"""
- data = {
- 'seed_keyword_id': self.seed_keyword.id,
- 'site_id': self.site.id,
- 'sector_id': self.sector.id,
- 'status': 'active'
- }
- response = self.client.post('/api/v1/planner/keywords/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
- self.assertIn('id', response.data['data'])
-
- def test_retrieve_keyword_returns_unified_format(self):
- """Test GET /api/v1/planner/keywords/{id}/ returns unified format"""
- keyword = Keywords.objects.create(
- seed_keyword=self.seed_keyword,
- site=self.site,
- sector=self.sector,
- account=self.account,
- status='active'
- )
-
- response = self.client.get(f'/api/v1/planner/keywords/{keyword.id}/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
- self.assertEqual(response.data['data']['id'], keyword.id)
-
- def test_update_keyword_returns_unified_format(self):
- """Test PUT /api/v1/planner/keywords/{id}/ returns unified format"""
- keyword = Keywords.objects.create(
- seed_keyword=self.seed_keyword,
- site=self.site,
- sector=self.sector,
- account=self.account,
- status='active'
- )
-
- data = {
- 'seed_keyword_id': self.seed_keyword.id,
- 'site_id': self.site.id,
- 'sector_id': self.sector.id,
- 'status': 'archived'
- }
- response = self.client.put(f'/api/v1/planner/keywords/{keyword.id}/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_delete_keyword_returns_unified_format(self):
- """Test DELETE /api/v1/planner/keywords/{id}/ returns unified format"""
- keyword = Keywords.objects.create(
- seed_keyword=self.seed_keyword,
- site=self.site,
- sector=self.sector,
- account=self.account,
- status='active'
- )
-
- response = self.client.delete(f'/api/v1/planner/keywords/{keyword.id}/')
-
- self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
-
- def test_list_clusters_returns_unified_format(self):
- """Test GET /api/v1/planner/clusters/ returns unified format"""
- response = self.client.get('/api/v1/planner/clusters/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_create_cluster_returns_unified_format(self):
- """Test POST /api/v1/planner/clusters/ returns unified format"""
- data = {
- 'name': 'Test Cluster',
- 'description': 'Test description',
- 'site_id': self.site.id,
- 'sector_id': self.sector.id,
- 'status': 'active'
- }
- response = self.client.post('/api/v1/planner/clusters/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_list_ideas_returns_unified_format(self):
- """Test GET /api/v1/planner/ideas/ returns unified format"""
- response = self.client.get('/api/v1/planner/ideas/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_auto_cluster_returns_unified_format(self):
- """Test POST /api/v1/planner/keywords/auto_cluster/ returns unified format"""
- keyword = Keywords.objects.create(
- seed_keyword=self.seed_keyword,
- site=self.site,
- sector=self.sector,
- account=self.account,
- status='active'
- )
-
- data = {
- 'ids': [keyword.id],
- 'sector_id': self.sector.id
- }
- response = self.client.post('/api/v1/planner/keywords/auto_cluster/', data, format='json')
-
- # Should return either task_id (async) or success response
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_202_ACCEPTED])
- self.assert_unified_response_format(response, expected_success=True)
-
- def test_keyword_validation_error_returns_unified_format(self):
- """Test validation errors return unified format"""
- # Missing required fields
- response = self.client.post('/api/v1/planner/keywords/', {}, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('errors', response.data)
- self.assertIn('request_id', response.data)
-
- def test_keyword_not_found_returns_unified_format(self):
- """Test 404 errors return unified format"""
- response = self.client.get('/api/v1/planner/keywords/99999/')
-
- self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('request_id', response.data)
-
diff --git a/backend/igny8_core/api/tests/test_integration_rate_limiting.py b/backend/igny8_core/api/tests/test_integration_rate_limiting.py
deleted file mode 100644
index 7792351a..00000000
--- a/backend/igny8_core/api/tests/test_integration_rate_limiting.py
+++ /dev/null
@@ -1,113 +0,0 @@
-"""
-Integration tests for rate limiting
-Tests throttle headers and 429 responses
-"""
-from rest_framework import status
-from django.test import TestCase, override_settings
-from rest_framework.test import APIClient
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-from igny8_core.auth.models import User, Account, Plan
-
-
-class RateLimitingIntegrationTestCase(IntegrationTestBase):
- """Integration tests for rate limiting"""
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_throttle_headers_present(self):
- """Test throttle headers are present in responses"""
- response = self.client.get('/api/v1/planner/keywords/')
-
- # May get 429 if rate limited, or 200 if bypassed - both are valid
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_429_TOO_MANY_REQUESTS])
- # Throttle headers should be present
- # Note: In test environment, throttling may be bypassed, but headers should still be set
- # We check if headers exist (they may not be set if throttling is bypassed in tests)
- if 'X-Throttle-Limit' in response:
- self.assertIn('X-Throttle-Limit', response)
- self.assertIn('X-Throttle-Remaining', response)
- self.assertIn('X-Throttle-Reset', response)
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_rate_limit_bypass_for_admin(self):
- """Test rate limiting is bypassed for admin users"""
- # Create admin user
- admin_user = User.objects.create_user(
- username='admin',
- email='admin@test.com',
- password='testpass123',
- role='admin',
- account=self.account
- )
-
- admin_client = APIClient()
- admin_client.force_authenticate(user=admin_user)
-
- # Make multiple requests - should not be throttled
- for i in range(15):
- response = admin_client.get('/api/v1/planner/keywords/')
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- # Should not get 429
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_rate_limit_bypass_for_system_account(self):
- """Test rate limiting is bypassed for system account users"""
- # Create system account
- system_account = Account.objects.create(
- name="AWS Admin",
- slug="aws-admin",
- plan=self.plan
- )
-
- system_user = User.objects.create_user(
- username='system',
- email='system@test.com',
- password='testpass123',
- role='viewer',
- account=system_account
- )
-
- system_client = APIClient()
- system_client.force_authenticate(user=system_user)
-
- # Make multiple requests - should not be throttled
- for i in range(15):
- response = system_client.get('/api/v1/planner/keywords/')
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- # Should not get 429
-
- @override_settings(DEBUG=True)
- def test_rate_limit_bypass_in_debug_mode(self):
- """Test rate limiting is bypassed in DEBUG mode"""
- # Make multiple requests - should not be throttled in DEBUG mode
- for i in range(15):
- response = self.client.get('/api/v1/planner/keywords/')
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- # Should not get 429
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=True)
- def test_rate_limit_bypass_with_env_flag(self):
- """Test rate limiting is bypassed when IGNY8_DEBUG_THROTTLE=True"""
- # Make multiple requests - should not be throttled
- for i in range(15):
- response = self.client.get('/api/v1/planner/keywords/')
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- # Should not get 429
-
- def test_different_throttle_scopes(self):
- """Test different endpoints have different throttle scopes"""
- # Planner endpoints - may get 429 if rate limited
- response = self.client.get('/api/v1/planner/keywords/')
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_429_TOO_MANY_REQUESTS])
-
- # Writer endpoints - may get 429 if rate limited
- response = self.client.get('/api/v1/writer/tasks/')
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_429_TOO_MANY_REQUESTS])
-
- # System endpoints - may get 429 if rate limited
- response = self.client.get('/api/v1/system/prompts/')
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_429_TOO_MANY_REQUESTS])
-
- # Billing endpoints - may get 429 if rate limited
- response = self.client.get('/api/v1/billing/credits/balance/balance/')
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_429_TOO_MANY_REQUESTS])
-
diff --git a/backend/igny8_core/api/tests/test_integration_system.py b/backend/igny8_core/api/tests/test_integration_system.py
deleted file mode 100644
index 32c9348f..00000000
--- a/backend/igny8_core/api/tests/test_integration_system.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
-Integration tests for System module endpoints
-Tests settings, prompts, integrations return unified format
-"""
-from rest_framework import status
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class SystemIntegrationTestCase(IntegrationTestBase):
- """Integration tests for System module"""
-
- def test_system_status_returns_unified_format(self):
- """Test GET /api/v1/system/status/ returns unified format"""
- response = self.client.get('/api/v1/system/status/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_list_prompts_returns_unified_format(self):
- """Test GET /api/v1/system/prompts/ returns unified format"""
- response = self.client.get('/api/v1/system/prompts/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_get_prompt_by_type_returns_unified_format(self):
- """Test GET /api/v1/system/prompts/by_type/{type}/ returns unified format"""
- response = self.client.get('/api/v1/system/prompts/by_type/clustering/')
-
- # May return 404 if no prompt exists, but should still be unified format
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_404_NOT_FOUND])
- self.assert_unified_response_format(response)
-
- def test_list_account_settings_returns_unified_format(self):
- """Test GET /api/v1/system/settings/account/ returns unified format"""
- response = self.client.get('/api/v1/system/settings/account/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_get_integration_settings_returns_unified_format(self):
- """Test GET /api/v1/system/settings/integrations/{pk}/ returns unified format"""
- response = self.client.get('/api/v1/system/settings/integrations/openai/')
-
- # May return 404 if not configured, but should still be unified format
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_404_NOT_FOUND])
- self.assert_unified_response_format(response)
-
diff --git a/backend/igny8_core/api/tests/test_integration_writer.py b/backend/igny8_core/api/tests/test_integration_writer.py
deleted file mode 100644
index 7dced2ca..00000000
--- a/backend/igny8_core/api/tests/test_integration_writer.py
+++ /dev/null
@@ -1,70 +0,0 @@
-"""
-Integration tests for Writer module endpoints
-Tests CRUD operations and AI actions return unified format
-"""
-from rest_framework import status
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-from igny8_core.modules.writer.models import Tasks, Content, Images
-
-
-class WriterIntegrationTestCase(IntegrationTestBase):
- """Integration tests for Writer module"""
-
- def test_list_tasks_returns_unified_format(self):
- """Test GET /api/v1/writer/tasks/ returns unified format"""
- response = self.client.get('/api/v1/writer/tasks/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_create_task_returns_unified_format(self):
- """Test POST /api/v1/writer/tasks/ returns unified format"""
- data = {
- 'title': 'Test Task',
- 'site_id': self.site.id,
- 'sector_id': self.sector.id,
- 'status': 'pending'
- }
- response = self.client.post('/api/v1/writer/tasks/', data, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- self.assert_unified_response_format(response, expected_success=True)
- self.assertIn('data', response.data)
-
- def test_list_content_returns_unified_format(self):
- """Test GET /api/v1/writer/content/ returns unified format"""
- response = self.client.get('/api/v1/writer/content/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_list_images_returns_unified_format(self):
- """Test GET /api/v1/writer/images/ returns unified format"""
- response = self.client.get('/api/v1/writer/images/')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assert_paginated_response(response)
-
- def test_create_image_returns_unified_format(self):
- """Test POST /api/v1/writer/images/ returns unified format"""
- data = {
- 'image_type': 'featured',
- 'site_id': self.site.id,
- 'sector_id': self.sector.id,
- 'status': 'pending'
- }
- response = self.client.post('/api/v1/writer/images/', data, format='json')
-
- # May return 400 if site/sector validation fails, but should still be unified format
- self.assertIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_400_BAD_REQUEST])
- self.assert_unified_response_format(response)
-
- def test_task_validation_error_returns_unified_format(self):
- """Test validation errors return unified format"""
- response = self.client.post('/api/v1/writer/tasks/', {}, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assert_unified_response_format(response, expected_success=False)
- self.assertIn('error', response.data)
- self.assertIn('errors', response.data)
-
diff --git a/backend/igny8_core/api/tests/test_permissions.py b/backend/igny8_core/api/tests/test_permissions.py
deleted file mode 100644
index 3ed15482..00000000
--- a/backend/igny8_core/api/tests/test_permissions.py
+++ /dev/null
@@ -1,313 +0,0 @@
-"""
-Unit tests for permission classes
-Tests IsAuthenticatedAndActive, HasTenantAccess, IsViewerOrAbove, IsEditorOrAbove, IsAdminOrOwner
-"""
-from django.test import TestCase
-from rest_framework.test import APIRequestFactory
-from rest_framework.views import APIView
-from igny8_core.api.permissions import (
- IsAuthenticatedAndActive, HasTenantAccess, IsViewerOrAbove,
- IsEditorOrAbove, IsAdminOrOwner
-)
-from igny8_core.auth.models import User, Account, Plan
-
-
-class PermissionsTestCase(TestCase):
- """Test cases for permission classes"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.factory = APIRequestFactory()
- self.view = APIView()
-
- # Create test plan
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create owner user first (Account needs owner)
- self.owner_user = User.objects.create_user(
- username='owner',
- email='owner@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create test account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.owner_user
- )
-
- # Update owner user to have account
- self.owner_user.account = self.account
- self.owner_user.save()
-
- self.admin_user = User.objects.create_user(
- username='admin',
- email='admin@test.com',
- password='testpass123',
- role='admin',
- account=self.account
- )
-
- self.editor_user = User.objects.create_user(
- username='editor',
- email='editor@test.com',
- password='testpass123',
- role='editor',
- account=self.account
- )
-
- self.viewer_user = User.objects.create_user(
- username='viewer',
- email='viewer@test.com',
- password='testpass123',
- role='viewer',
- account=self.account
- )
-
- # Create another account for tenant isolation testing
- self.other_owner = User.objects.create_user(
- username='other_owner',
- email='other_owner@test.com',
- password='testpass123',
- role='owner'
- )
-
- self.other_account = Account.objects.create(
- name="Other Account",
- slug="other-account",
- plan=self.plan,
- owner=self.other_owner
- )
-
- self.other_owner.account = self.other_account
- self.other_owner.save()
-
- self.other_user = User.objects.create_user(
- username='other',
- email='other@test.com',
- password='testpass123',
- role='owner',
- account=self.other_account
- )
-
- def test_is_authenticated_and_active_authenticated(self):
- """Test IsAuthenticatedAndActive allows authenticated users"""
- permission = IsAuthenticatedAndActive()
- request = self.factory.get('/test/')
- request.user = self.owner_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_authenticated_and_active_unauthenticated(self):
- """Test IsAuthenticatedAndActive denies unauthenticated users"""
- permission = IsAuthenticatedAndActive()
- request = self.factory.get('/test/')
- request.user = None
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_is_authenticated_and_active_inactive_user(self):
- """Test IsAuthenticatedAndActive denies inactive users"""
- permission = IsAuthenticatedAndActive()
- self.owner_user.is_active = False
- self.owner_user.save()
-
- request = self.factory.get('/test/')
- request.user = self.owner_user
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_has_tenant_access_same_account(self):
- """Test HasTenantAccess allows users from same account"""
- permission = HasTenantAccess()
- request = self.factory.get('/test/')
- request.user = self.owner_user
- request.account = self.account
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_has_tenant_access_different_account(self):
- """Test HasTenantAccess denies users from different account"""
- permission = HasTenantAccess()
- request = self.factory.get('/test/')
- request.user = self.owner_user
- request.account = self.other_account
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_has_tenant_access_admin_bypass(self):
- """Test HasTenantAccess allows admin/developer to bypass"""
- permission = HasTenantAccess()
- request = self.factory.get('/test/')
- request.user = self.admin_user
- request.account = self.other_account # Different account
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result) # Admin should bypass
-
- def test_has_tenant_access_system_account(self):
- """Test HasTenantAccess allows system account users to bypass"""
- # Create system account owner
- system_owner = User.objects.create_user(
- username='system_owner_test',
- email='system_owner_test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create system account
- system_account = Account.objects.create(
- name="AWS Admin",
- slug="aws-admin",
- plan=self.plan,
- owner=system_owner
- )
-
- system_owner.account = system_account
- system_owner.save()
-
- system_user = User.objects.create_user(
- username='system',
- email='system@test.com',
- password='testpass123',
- role='viewer',
- account=system_account
- )
-
- permission = HasTenantAccess()
- request = self.factory.get('/test/')
- request.user = system_user
- request.account = self.account # Different account
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result) # System account user should bypass
-
- def test_is_viewer_or_above_viewer(self):
- """Test IsViewerOrAbove allows viewer role"""
- permission = IsViewerOrAbove()
- request = self.factory.get('/test/')
- request.user = self.viewer_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_viewer_or_above_editor(self):
- """Test IsViewerOrAbove allows editor role"""
- permission = IsViewerOrAbove()
- request = self.factory.get('/test/')
- request.user = self.editor_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_viewer_or_above_admin(self):
- """Test IsViewerOrAbove allows admin role"""
- permission = IsViewerOrAbove()
- request = self.factory.get('/test/')
- request.user = self.admin_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_viewer_or_above_owner(self):
- """Test IsViewerOrAbove allows owner role"""
- permission = IsViewerOrAbove()
- request = self.factory.get('/test/')
- request.user = self.owner_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_editor_or_above_viewer_denied(self):
- """Test IsEditorOrAbove denies viewer role"""
- permission = IsEditorOrAbove()
- request = self.factory.get('/test/')
- request.user = self.viewer_user
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_is_editor_or_above_editor_allowed(self):
- """Test IsEditorOrAbove allows editor role"""
- permission = IsEditorOrAbove()
- request = self.factory.get('/test/')
- request.user = self.editor_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_editor_or_above_admin_allowed(self):
- """Test IsEditorOrAbove allows admin role"""
- permission = IsEditorOrAbove()
- request = self.factory.get('/test/')
- request.user = self.admin_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_admin_or_owner_viewer_denied(self):
- """Test IsAdminOrOwner denies viewer role"""
- permission = IsAdminOrOwner()
- request = self.factory.get('/test/')
- request.user = self.viewer_user
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_is_admin_or_owner_editor_denied(self):
- """Test IsAdminOrOwner denies editor role"""
- permission = IsAdminOrOwner()
- request = self.factory.get('/test/')
- request.user = self.editor_user
-
- result = permission.has_permission(request, self.view)
- self.assertFalse(result)
-
- def test_is_admin_or_owner_admin_allowed(self):
- """Test IsAdminOrOwner allows admin role"""
- permission = IsAdminOrOwner()
- request = self.factory.get('/test/')
- request.user = self.admin_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_is_admin_or_owner_owner_allowed(self):
- """Test IsAdminOrOwner allows owner role"""
- permission = IsAdminOrOwner()
- request = self.factory.get('/test/')
- request.user = self.owner_user
-
- result = permission.has_permission(request, self.view)
- self.assertTrue(result)
-
- def test_all_permissions_unauthenticated_denied(self):
- """Test all permissions deny unauthenticated users"""
- permissions = [
- IsAuthenticatedAndActive(),
- HasTenantAccess(),
- IsViewerOrAbove(),
- IsEditorOrAbove(),
- IsAdminOrOwner()
- ]
-
- request = self.factory.get('/test/')
- request.user = None
-
- for permission in permissions:
- result = permission.has_permission(request, self.view)
- self.assertFalse(result, f"{permission.__class__.__name__} should deny unauthenticated users")
-
diff --git a/backend/igny8_core/api/tests/test_response.py b/backend/igny8_core/api/tests/test_response.py
deleted file mode 100644
index 353e9c9b..00000000
--- a/backend/igny8_core/api/tests/test_response.py
+++ /dev/null
@@ -1,206 +0,0 @@
-"""
-Unit tests for response helper functions
-Tests success_response, error_response, paginated_response
-"""
-from django.test import TestCase, RequestFactory
-from rest_framework import status
-from igny8_core.api.response import success_response, error_response, paginated_response, get_request_id
-
-
-class ResponseHelpersTestCase(TestCase):
- """Test cases for response helper functions"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.factory = RequestFactory()
-
- def test_success_response_with_data(self):
- """Test success_response with data"""
- data = {"id": 1, "name": "Test"}
- response = success_response(data=data, message="Success")
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['data'], data)
- self.assertEqual(response.data['message'], "Success")
-
- def test_success_response_without_data(self):
- """Test success_response without data"""
- response = success_response(message="Success")
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertNotIn('data', response.data)
- self.assertEqual(response.data['message'], "Success")
-
- def test_success_response_with_custom_status(self):
- """Test success_response with custom status code"""
- data = {"id": 1}
- response = success_response(data=data, status_code=status.HTTP_201_CREATED)
-
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['data'], data)
-
- def test_success_response_with_request_id(self):
- """Test success_response includes request_id when request provided"""
- request = self.factory.get('/test/')
- request.request_id = 'test-request-id-123'
-
- response = success_response(data={"id": 1}, request=request)
-
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['request_id'], 'test-request-id-123')
-
- def test_error_response_with_error_message(self):
- """Test error_response with error message"""
- response = error_response(error="Validation failed")
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], "Validation failed")
-
- def test_error_response_with_errors_dict(self):
- """Test error_response with field-specific errors"""
- errors = {"email": ["Invalid email format"], "password": ["Too short"]}
- response = error_response(error="Validation failed", errors=errors)
-
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['error'], "Validation failed")
- self.assertEqual(response.data['errors'], errors)
-
- def test_error_response_status_code_mapping(self):
- """Test error_response maps status codes to default error messages"""
- # Test 401
- response = error_response(status_code=status.HTTP_401_UNAUTHORIZED)
- self.assertEqual(response.data['error'], 'Authentication required')
-
- # Test 403
- response = error_response(status_code=status.HTTP_403_FORBIDDEN)
- self.assertEqual(response.data['error'], 'Permission denied')
-
- # Test 404
- response = error_response(status_code=status.HTTP_404_NOT_FOUND)
- self.assertEqual(response.data['error'], 'Resource not found')
-
- # Test 409
- response = error_response(status_code=status.HTTP_409_CONFLICT)
- self.assertEqual(response.data['error'], 'Conflict')
-
- # Test 422
- response = error_response(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY)
- self.assertEqual(response.data['error'], 'Validation failed')
-
- # Test 429
- response = error_response(status_code=status.HTTP_429_TOO_MANY_REQUESTS)
- self.assertEqual(response.data['error'], 'Rate limit exceeded')
-
- # Test 500
- response = error_response(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR)
- self.assertEqual(response.data['error'], 'Internal server error')
-
- def test_error_response_with_request_id(self):
- """Test error_response includes request_id when request provided"""
- request = self.factory.get('/test/')
- request.request_id = 'test-request-id-456'
-
- response = error_response(error="Error occurred", request=request)
-
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['request_id'], 'test-request-id-456')
-
- def test_error_response_with_debug_info(self):
- """Test error_response includes debug info when provided"""
- debug_info = {"exception_type": "ValueError", "message": "Test error"}
- response = error_response(error="Error", debug_info=debug_info)
-
- self.assertFalse(response.data['success'])
- self.assertEqual(response.data['debug'], debug_info)
-
- def test_paginated_response_with_data(self):
- """Test paginated_response with paginated data"""
- paginated_data = {
- 'count': 100,
- 'next': 'http://test.com/api/v1/test/?page=2',
- 'previous': None,
- 'results': [{"id": 1}, {"id": 2}]
- }
- response = paginated_response(paginated_data, message="Success")
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['count'], 100)
- self.assertEqual(response.data['next'], paginated_data['next'])
- self.assertEqual(response.data['previous'], None)
- self.assertEqual(response.data['results'], paginated_data['results'])
- self.assertEqual(response.data['message'], "Success")
-
- def test_paginated_response_without_message(self):
- """Test paginated_response without message"""
- paginated_data = {
- 'count': 50,
- 'next': None,
- 'previous': None,
- 'results': []
- }
- response = paginated_response(paginated_data)
-
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['count'], 50)
- self.assertNotIn('message', response.data)
-
- def test_paginated_response_with_request_id(self):
- """Test paginated_response includes request_id when request provided"""
- request = self.factory.get('/test/')
- request.request_id = 'test-request-id-789'
-
- paginated_data = {
- 'count': 10,
- 'next': None,
- 'previous': None,
- 'results': []
- }
- response = paginated_response(paginated_data, request=request)
-
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['request_id'], 'test-request-id-789')
-
- def test_paginated_response_fallback(self):
- """Test paginated_response handles non-dict input"""
- response = paginated_response(None)
-
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['count'], 0)
- self.assertIsNone(response.data['next'])
- self.assertIsNone(response.data['previous'])
- self.assertEqual(response.data['results'], [])
-
- def test_get_request_id_from_request_object(self):
- """Test get_request_id retrieves from request.request_id"""
- request = self.factory.get('/test/')
- request.request_id = 'request-id-from-object'
-
- request_id = get_request_id(request)
- self.assertEqual(request_id, 'request-id-from-object')
-
- def test_get_request_id_from_headers(self):
- """Test get_request_id retrieves from headers"""
- request = self.factory.get('/test/', HTTP_X_REQUEST_ID='request-id-from-header')
-
- request_id = get_request_id(request)
- self.assertEqual(request_id, 'request-id-from-header')
-
- def test_get_request_id_generates_new(self):
- """Test get_request_id generates new UUID if not found"""
- request = self.factory.get('/test/')
-
- request_id = get_request_id(request)
- self.assertIsNotNone(request_id)
- self.assertIsInstance(request_id, str)
- # UUID format check
- import uuid
- try:
- uuid.UUID(request_id)
- except ValueError:
- self.fail("Generated request_id is not a valid UUID")
-
diff --git a/backend/igny8_core/api/tests/test_throttles.py b/backend/igny8_core/api/tests/test_throttles.py
deleted file mode 100644
index 373762c7..00000000
--- a/backend/igny8_core/api/tests/test_throttles.py
+++ /dev/null
@@ -1,199 +0,0 @@
-"""
-Unit tests for rate limiting
-Tests DebugScopedRateThrottle with bypass logic
-"""
-from django.test import TestCase, override_settings
-from rest_framework.test import APIRequestFactory
-from rest_framework.views import APIView
-from igny8_core.api.throttles import DebugScopedRateThrottle
-from igny8_core.auth.models import User, Account, Plan
-
-
-class ThrottlesTestCase(TestCase):
- """Test cases for rate limiting"""
-
- def setUp(self):
- """Set up test fixtures"""
- self.factory = APIRequestFactory()
- self.view = APIView()
- self.view.throttle_scope = 'planner'
-
- # Create test plan and account
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create owner user first
- self.owner_user = User.objects.create_user(
- username='owner',
- email='owner@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create test account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.owner_user
- )
-
- # Update owner user to have account
- self.owner_user.account = self.account
- self.owner_user.save()
-
- # Create regular user
- self.user = User.objects.create_user(
- username='user',
- email='user@test.com',
- password='testpass123',
- role='viewer',
- account=self.account
- )
-
- # Create admin user
- self.admin_user = User.objects.create_user(
- username='admin',
- email='admin@test.com',
- password='testpass123',
- role='admin',
- account=self.account
- )
-
- # Create system account owner
- self.system_owner = User.objects.create_user(
- username='system_owner',
- email='system_owner@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create system account user
- self.system_account = Account.objects.create(
- name="AWS Admin",
- slug="aws-admin",
- plan=self.plan,
- owner=self.system_owner
- )
-
- self.system_owner.account = self.system_account
- self.system_owner.save()
-
- self.system_user = User.objects.create_user(
- username='system',
- email='system@test.com',
- password='testpass123',
- role='viewer',
- account=self.system_account
- )
-
- @override_settings(DEBUG=True)
- def test_debug_mode_bypass(self):
- """Test throttling is bypassed in DEBUG mode"""
- throttle = DebugScopedRateThrottle()
- request = self.factory.get('/test/')
- request.user = self.user
-
- result = throttle.allow_request(request, self.view)
- self.assertTrue(result) # Should bypass in DEBUG mode
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=True)
- def test_env_bypass(self):
- """Test throttling is bypassed when IGNY8_DEBUG_THROTTLE=True"""
- throttle = DebugScopedRateThrottle()
- request = self.factory.get('/test/')
- request.user = self.user
-
- result = throttle.allow_request(request, self.view)
- self.assertTrue(result) # Should bypass when IGNY8_DEBUG_THROTTLE=True
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_system_account_bypass(self):
- """Test throttling is bypassed for system account users"""
- throttle = DebugScopedRateThrottle()
- request = self.factory.get('/test/')
- request.user = self.system_user
-
- result = throttle.allow_request(request, self.view)
- self.assertTrue(result) # System account users should bypass
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_admin_bypass(self):
- """Test throttling is bypassed for admin/developer users"""
- throttle = DebugScopedRateThrottle()
- request = self.factory.get('/test/')
- request.user = self.admin_user
-
- result = throttle.allow_request(request, self.view)
- self.assertTrue(result) # Admin users should bypass
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_get_rate(self):
- """Test get_rate returns correct rate for scope"""
- throttle = DebugScopedRateThrottle()
- throttle.scope = 'planner'
-
- rate = throttle.get_rate()
- self.assertIsNotNone(rate)
- self.assertIn('/', rate) # Should be in format "60/min"
-
- @override_settings(DEBUG=False, IGNY8_DEBUG_THROTTLE=False)
- def test_get_rate_default_fallback(self):
- """Test get_rate falls back to default if scope not found"""
- throttle = DebugScopedRateThrottle()
- throttle.scope = 'nonexistent_scope'
-
- rate = throttle.get_rate()
- self.assertIsNotNone(rate)
- self.assertEqual(rate, '100/min') # Should fallback to default
-
- def test_parse_rate_minutes(self):
- """Test parse_rate correctly parses minutes"""
- throttle = DebugScopedRateThrottle()
-
- num, duration = throttle.parse_rate('60/min')
- self.assertEqual(num, 60)
- self.assertEqual(duration, 60)
-
- def test_parse_rate_seconds(self):
- """Test parse_rate correctly parses seconds"""
- throttle = DebugScopedRateThrottle()
-
- num, duration = throttle.parse_rate('10/sec')
- self.assertEqual(num, 10)
- self.assertEqual(duration, 1)
-
- def test_parse_rate_hours(self):
- """Test parse_rate correctly parses hours"""
- throttle = DebugScopedRateThrottle()
-
- num, duration = throttle.parse_rate('100/hour')
- self.assertEqual(num, 100)
- self.assertEqual(duration, 3600)
-
- def test_parse_rate_invalid_format(self):
- """Test parse_rate handles invalid format gracefully"""
- throttle = DebugScopedRateThrottle()
-
- num, duration = throttle.parse_rate('invalid')
- self.assertEqual(num, 100) # Should default to 100
- self.assertEqual(duration, 60) # Should default to 60 seconds (1 min)
-
- @override_settings(DEBUG=True)
- def test_debug_info_set(self):
- """Test debug info is set when bypassing in DEBUG mode"""
- throttle = DebugScopedRateThrottle()
- request = self.factory.get('/test/')
- request.user = self.user
-
- result = throttle.allow_request(request, self.view)
- self.assertTrue(result)
- self.assertTrue(hasattr(request, '_throttle_debug_info'))
- self.assertIn('scope', request._throttle_debug_info)
- self.assertIn('rate', request._throttle_debug_info)
- self.assertIn('limit', request._throttle_debug_info)
-
diff --git a/backend/igny8_core/auth/management/commands/cleanup_user_data.py b/backend/igny8_core/auth/management/commands/cleanup_user_data.py
new file mode 100644
index 00000000..dc7a1822
--- /dev/null
+++ b/backend/igny8_core/auth/management/commands/cleanup_user_data.py
@@ -0,0 +1,161 @@
+"""
+Management command to clean up all user-generated data (DESTRUCTIVE).
+This is used before V1.0 production launch to start with a clean database.
+
+⚠️ WARNING: This permanently deletes ALL user data!
+
+Usage:
+ # DRY RUN (recommended first):
+ python manage.py cleanup_user_data --dry-run
+
+ # ACTUAL CLEANUP (after reviewing dry-run):
+ python manage.py cleanup_user_data --confirm
+"""
+from django.core.management.base import BaseCommand
+from django.db import transaction
+from django.conf import settings
+
+
+class Command(BaseCommand):
+ help = 'Clean up all user-generated data (DESTRUCTIVE - for pre-launch cleanup)'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--confirm',
+ action='store_true',
+ help='Confirm you want to delete all user data'
+ )
+ parser.add_argument(
+ '--dry-run',
+ action='store_true',
+ help='Show what would be deleted without actually deleting'
+ )
+ parser.add_argument(
+ '--force-staging',
+ action='store_true',
+ help='Treat current environment as staging (bypasses production check)'
+ )
+
+ def handle(self, *args, **options):
+ if not options['confirm'] and not options['dry_run']:
+ self.stdout.write(
+ self.style.ERROR('\n⚠️ ERROR: Must use --confirm or --dry-run flag\n')
+ )
+ self.stdout.write('Usage:')
+ self.stdout.write(' python manage.py cleanup_user_data --dry-run # See what will be deleted')
+ self.stdout.write(' python manage.py cleanup_user_data --confirm # Actually delete data\n')
+ return
+
+ # Safety check: Prevent running in production unless explicitly allowed
+ env = getattr(settings, 'ENVIRONMENT', 'production')
+ if options.get('force_staging'):
+ env = 'staging'
+ self.stdout.write(self.style.WARNING('\n⚠️ FORCE-STAGING: Treating environment as staging\n'))
+
+ if env == 'production' and options['confirm']:
+ self.stdout.write(
+ self.style.ERROR('\n⚠️ BLOCKED: Cannot run cleanup in PRODUCTION environment!\n')
+ )
+ self.stdout.write('To allow this, use --force-staging flag or set ENVIRONMENT to "staging" in settings.\n')
+ return
+
+ # Import models
+ from igny8_core.auth.models import Site, User
+ from igny8_core.business.planning.models import Keywords, Clusters, ContentIdeas
+ from igny8_core.business.content.models import Tasks, Content, Images
+ from igny8_core.business.publishing.models import PublishingRecord
+ from igny8_core.business.integration.models import SyncEvent
+ from igny8_core.business.billing.models import CreditTransaction, CreditUsageLog
+ from igny8_core.business.notifications.models import Notification
+ from igny8_core.business.automation.models import AutomationRun
+
+ # Define models to clear (ORDER MATTERS - foreign keys)
+ # Delete child records before parent records
+ models_to_clear = [
+ ('Notifications', Notification),
+ ('Credit Usage Logs', CreditUsageLog),
+ ('Credit Transactions', CreditTransaction),
+ ('Sync Events', SyncEvent),
+ ('Publishing Records', PublishingRecord),
+ ('Automation Runs', AutomationRun),
+ ('Images', Images),
+ ('Content', Content),
+ ('Tasks', Tasks),
+ ('Content Ideas', ContentIdeas),
+ ('Clusters', Clusters),
+ ('Keywords', Keywords),
+ ('Sites', Site), # Sites should be near last (many foreign keys)
+ # Note: We do NOT delete User - keep admin users
+ ]
+
+ if options['dry_run']:
+ self.stdout.write(self.style.WARNING('\n' + '=' * 70))
+ self.stdout.write(self.style.WARNING('DRY RUN - No data will be deleted'))
+ self.stdout.write(self.style.WARNING('=' * 70 + '\n'))
+
+ total_records = 0
+ for name, model in models_to_clear:
+ count = model.objects.count()
+ total_records += count
+ status = '✓' if count > 0 else '·'
+ self.stdout.write(f' {status} Would delete {count:6d} {name}')
+
+ # Count users (not deleted)
+ user_count = User.objects.count()
+ self.stdout.write(f'\n → Keeping {user_count:6d} Users (not deleted)')
+
+ self.stdout.write(f'\n Total records to delete: {total_records:,}')
+ self.stdout.write('\n' + '=' * 70)
+ self.stdout.write(self.style.SUCCESS('\nTo proceed with actual deletion, run:'))
+ self.stdout.write(' python manage.py cleanup_user_data --confirm\n')
+ return
+
+ # ACTUAL DELETION
+ self.stdout.write(self.style.ERROR('\n' + '=' * 70))
+ self.stdout.write(self.style.ERROR('⚠️ DELETING ALL USER DATA - THIS CANNOT BE UNDONE!'))
+ self.stdout.write(self.style.ERROR('=' * 70 + '\n'))
+
+ # Final confirmation prompt
+ confirm_text = input('Type "DELETE ALL DATA" to proceed: ')
+ if confirm_text != 'DELETE ALL DATA':
+ self.stdout.write(self.style.WARNING('\nAborted. Data was NOT deleted.\n'))
+ return
+
+ self.stdout.write('\nProceeding with deletion...\n')
+
+ deleted_counts = {}
+ failed_deletions = []
+
+ with transaction.atomic():
+ for name, model in models_to_clear:
+ try:
+ count = model.objects.count()
+ if count > 0:
+ model.objects.all().delete()
+ deleted_counts[name] = count
+ self.stdout.write(
+ self.style.SUCCESS(f'✓ Deleted {count:6d} {name}')
+ )
+ else:
+ self.stdout.write(
+ self.style.WARNING(f'· Skipped {count:6d} {name} (already empty)')
+ )
+ except Exception as e:
+ failed_deletions.append((name, str(e)))
+ self.stdout.write(
+ self.style.ERROR(f'✗ Failed to delete {name}: {str(e)}')
+ )
+
+ # Summary
+ total_deleted = sum(deleted_counts.values())
+ self.stdout.write('\n' + '=' * 70)
+ self.stdout.write(self.style.SUCCESS(f'\nUser Data Cleanup Complete!\n'))
+ self.stdout.write(f' Total records deleted: {total_deleted:,}')
+ self.stdout.write(f' Failed deletions: {len(failed_deletions)}')
+
+ if failed_deletions:
+ self.stdout.write(self.style.WARNING('\nFailed deletions:'))
+ for name, error in failed_deletions:
+ self.stdout.write(f' - {name}: {error}')
+
+ self.stdout.write('\n' + '=' * 70 + '\n')
diff --git a/backend/igny8_core/auth/management/commands/export_system_config.py b/backend/igny8_core/auth/management/commands/export_system_config.py
new file mode 100644
index 00000000..ae0f3c51
--- /dev/null
+++ b/backend/igny8_core/auth/management/commands/export_system_config.py
@@ -0,0 +1,122 @@
+"""
+Management command to export system configuration data to JSON files.
+This exports Plans, Credit Costs, AI Models, Industries, Sectors, Seed Keywords, etc.
+
+Usage:
+ python manage.py export_system_config --output-dir=backups/config
+"""
+from django.core.management.base import BaseCommand
+from django.core import serializers
+import json
+import os
+from datetime import datetime
+
+
+class Command(BaseCommand):
+ help = 'Export system configuration data to JSON files for V1.0 backup'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--output-dir',
+ default='backups/config',
+ help='Output directory for config files (relative to project root)'
+ )
+
+ def handle(self, *args, **options):
+ output_dir = options['output_dir']
+
+ # Make output_dir absolute if it's relative
+ if not os.path.isabs(output_dir):
+ # Get project root (parent of manage.py)
+ import sys
+ project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
+ output_dir = os.path.join(project_root, '..', output_dir)
+
+ os.makedirs(output_dir, exist_ok=True)
+
+ self.stdout.write(self.style.SUCCESS(f'\nExporting system configuration to: {output_dir}\n'))
+
+ # Import models with correct paths
+ from igny8_core.auth.models import Plan, Industry, Sector, SeedKeyword
+ from igny8_core.modules.system.models import AuthorProfile, AIPrompt
+ from igny8_core.modules.system.global_settings_models import GlobalIntegrationSettings, GlobalAIPrompt
+ from igny8_core.business.billing.models import CreditCostConfig, AIModelConfig
+
+ # Define what to export
+ exports = {
+ 'plans': (Plan.objects.all(), 'Subscription Plans'),
+ 'credit_costs': (CreditCostConfig.objects.all(), 'Credit Cost Configurations'),
+ 'ai_models': (AIModelConfig.objects.all(), 'AI Model Configurations'),
+ 'global_integrations': (GlobalIntegrationSettings.objects.all(), 'Global Integration Settings'),
+ 'industries': (Industry.objects.all(), 'Industries'),
+ 'sectors': (Sector.objects.all(), 'Sectors'),
+ 'seed_keywords': (SeedKeyword.objects.all(), 'Seed Keywords'),
+ 'author_profiles': (AuthorProfile.objects.all(), 'Author Profiles'),
+ 'prompts': (AIPrompt.objects.all(), 'AI Prompts'),
+ 'global_prompts': (GlobalAIPrompt.objects.all(), 'Global AI Prompts'),
+ }
+
+ successful_exports = []
+ failed_exports = []
+
+ for name, (queryset, description) in exports.items():
+ try:
+ count = queryset.count()
+ data = serializers.serialize('json', queryset, indent=2)
+ filepath = os.path.join(output_dir, f'{name}.json')
+
+ with open(filepath, 'w') as f:
+ f.write(data)
+
+ self.stdout.write(
+ self.style.SUCCESS(f'✓ Exported {count:4d} {description:30s} → {name}.json')
+ )
+ successful_exports.append(name)
+
+ except Exception as e:
+ self.stdout.write(
+ self.style.ERROR(f'✗ Failed to export {description}: {str(e)}')
+ )
+ failed_exports.append((name, str(e)))
+
+ # Export metadata
+ metadata = {
+ 'exported_at': datetime.now().isoformat(),
+ 'django_version': self.get_django_version(),
+ 'database': self.get_database_info(),
+ 'successful_exports': successful_exports,
+ 'failed_exports': failed_exports,
+ 'export_count': len(successful_exports),
+ }
+
+ metadata_path = os.path.join(output_dir, 'export_metadata.json')
+ with open(metadata_path, 'w') as f:
+ json.dump(metadata, f, indent=2)
+
+ self.stdout.write(self.style.SUCCESS(f'\n✓ Metadata saved to export_metadata.json'))
+
+ # Summary
+ self.stdout.write('\n' + '=' * 70)
+ self.stdout.write(self.style.SUCCESS(f'\nSystem Configuration Export Complete!\n'))
+ self.stdout.write(f' Successful: {len(successful_exports)} exports')
+ self.stdout.write(f' Failed: {len(failed_exports)} exports')
+ self.stdout.write(f' Location: {output_dir}\n')
+
+ if failed_exports:
+ self.stdout.write(self.style.WARNING('\nFailed exports:'))
+ for name, error in failed_exports:
+ self.stdout.write(f' - {name}: {error}')
+
+ self.stdout.write('=' * 70 + '\n')
+
+ def get_django_version(self):
+ import django
+ return django.get_version()
+
+ def get_database_info(self):
+ from django.conf import settings
+ db_config = settings.DATABASES.get('default', {})
+ return {
+ 'engine': db_config.get('ENGINE', '').split('.')[-1],
+ 'name': db_config.get('NAME', ''),
+ }
diff --git a/backend/igny8_core/auth/migrations/0030_drop_site_blueprints_table.py b/backend/igny8_core/auth/migrations/0030_drop_site_blueprints_table.py
new file mode 100644
index 00000000..dc76207a
--- /dev/null
+++ b/backend/igny8_core/auth/migrations/0030_drop_site_blueprints_table.py
@@ -0,0 +1,37 @@
+# Generated manually on 2026-01-13
+# Purpose: Drop legacy igny8_site_blueprints table and related structures
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('igny8_core_auth', '0021_accounttrash_sectortrash_sitetrash'),
+ ]
+
+ operations = [
+ migrations.RunSQL(
+ sql="""
+ -- Drop indexes first
+ DROP INDEX IF EXISTS igny8_site__account__38f18a_idx;
+ DROP INDEX IF EXISTS igny8_site__hosting_7a9a3e_idx;
+ DROP INDEX IF EXISTS igny8_site__hosting_c4bb41_idx;
+ DROP INDEX IF EXISTS igny8_site__site_id__5f0a4e_idx;
+ DROP INDEX IF EXISTS igny8_site__site_id_cb1aca_idx;
+ DROP INDEX IF EXISTS igny8_site__status_247ddc_idx;
+ DROP INDEX IF EXISTS igny8_site__status_e7ca10_idx;
+
+ -- Drop the table
+ DROP TABLE IF EXISTS igny8_site_blueprints CASCADE;
+
+ -- Drop the sequence
+ DROP SEQUENCE IF EXISTS igny8_site_blueprints_id_seq;
+ """,
+ reverse_sql="""
+ -- Cannot reverse this migration - table structure was removed from models
+ -- If rollback is needed, restore from database backup
+ SELECT 1;
+ """
+ ),
+ ]
diff --git a/backend/igny8_core/business/billing/tests/__init__.py b/backend/igny8_core/business/billing/tests/__init__.py
deleted file mode 100644
index f42f06a2..00000000
--- a/backend/igny8_core/business/billing/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Billing tests
-
diff --git a/backend/igny8_core/business/billing/tests/test_concurrency.py b/backend/igny8_core/business/billing/tests/test_concurrency.py
deleted file mode 100644
index bb3cf330..00000000
--- a/backend/igny8_core/business/billing/tests/test_concurrency.py
+++ /dev/null
@@ -1,299 +0,0 @@
-"""
-Concurrency tests for payment approval
-Tests race conditions and concurrent approval attempts
-"""
-import pytest
-from django.test import TestCase, TransactionTestCase
-from django.contrib.auth import get_user_model
-from django.db import transaction
-from concurrent.futures import ThreadPoolExecutor, as_completed
-from decimal import Decimal
-from igny8_core.business.billing.models import (
- Invoice, Payment, Subscription, Plan, Account
-)
-from igny8_core.business.billing.views import approve_payment
-from unittest.mock import Mock
-import threading
-
-User = get_user_model()
-
-
-class PaymentApprovalConcurrencyTest(TransactionTestCase):
- """Test concurrent payment approval scenarios"""
-
- def setUp(self):
- """Set up test data"""
- # Create admin user
- self.admin = User.objects.create_user(
- email='admin@test.com',
- password='testpass123',
- is_staff=True
- )
-
- # Create account
- self.account = Account.objects.create(
- name='Test Account',
- owner=self.admin,
- credit_balance=0
- )
-
- # Create plan
- self.plan = Plan.objects.create(
- name='Test Plan',
- slug='test-plan',
- price=Decimal('100.00'),
- currency='USD',
- billing_period='monthly',
- included_credits=1000
- )
-
- # Create subscription
- self.subscription = Subscription.objects.create(
- account=self.account,
- plan=self.plan,
- status='pending_payment'
- )
-
- # Create invoice
- self.invoice = Invoice.objects.create(
- account=self.account,
- invoice_number='INV-TEST-001',
- status='pending',
- subtotal=Decimal('100.00'),
- total_amount=Decimal('100.00'),
- currency='USD',
- invoice_type='subscription'
- )
-
- # Create payment
- self.payment = Payment.objects.create(
- account=self.account,
- invoice=self.invoice,
- amount=Decimal('100.00'),
- currency='USD',
- payment_method='bank_transfer',
- status='pending_approval',
- manual_reference='TEST-REF-001'
- )
-
- def test_concurrent_approval_attempts(self):
- """
- Test that only one concurrent approval succeeds
- Multiple admins trying to approve same payment simultaneously
- """
- num_threads = 5
- success_count = 0
- failure_count = 0
- results = []
-
- def approve_payment_thread(payment_id, admin_user):
- """Thread worker to approve payment"""
- try:
- # Simulate approval logic with transaction
- with transaction.atomic():
- payment = Payment.objects.select_for_update().get(id=payment_id)
-
- # Check if already approved
- if payment.status == 'succeeded':
- return {'success': False, 'reason': 'already_approved'}
-
- # Approve payment
- payment.status = 'succeeded'
- payment.approved_by = admin_user
- payment.save()
-
- # Update invoice
- invoice = payment.invoice
- invoice.status = 'paid'
- invoice.save()
-
- return {'success': True}
-
- except Exception as e:
- return {'success': False, 'error': str(e)}
-
- # Create multiple threads attempting approval
- with ThreadPoolExecutor(max_workers=num_threads) as executor:
- futures = []
- for i in range(num_threads):
- future = executor.submit(approve_payment_thread, self.payment.id, self.admin)
- futures.append(future)
-
- # Collect results
- for future in as_completed(futures):
- result = future.result()
- results.append(result)
- if result.get('success'):
- success_count += 1
- else:
- failure_count += 1
-
- # Verify only one approval succeeded
- self.assertEqual(success_count, 1, "Only one approval should succeed")
- self.assertEqual(failure_count, num_threads - 1, "Other attempts should fail")
-
- # Verify final state
- payment = Payment.objects.get(id=self.payment.id)
- self.assertEqual(payment.status, 'succeeded')
-
- invoice = Invoice.objects.get(id=self.invoice.id)
- self.assertEqual(invoice.status, 'paid')
-
- def test_payment_and_invoice_consistency(self):
- """
- Test that payment and invoice remain consistent under concurrent operations
- """
- def read_payment_invoice(payment_id):
- """Read payment and invoice status"""
- payment = Payment.objects.get(id=payment_id)
- invoice = Invoice.objects.get(id=payment.invoice_id)
- return {
- 'payment_status': payment.status,
- 'invoice_status': invoice.status,
- 'consistent': (
- (payment.status == 'succeeded' and invoice.status == 'paid') or
- (payment.status == 'pending_approval' and invoice.status == 'pending')
- )
- }
-
- # Approve payment in one thread
- def approve():
- with transaction.atomic():
- payment = Payment.objects.select_for_update().get(id=self.payment.id)
- payment.status = 'succeeded'
- payment.save()
-
- invoice = Invoice.objects.select_for_update().get(id=self.invoice.id)
- invoice.status = 'paid'
- invoice.save()
-
- # Read state in parallel threads
- results = []
- with ThreadPoolExecutor(max_workers=10) as executor:
- # Start approval
- approval_future = executor.submit(approve)
-
- # Multiple concurrent reads
- read_futures = [
- executor.submit(read_payment_invoice, self.payment.id)
- for _ in range(20)
- ]
-
- # Wait for approval
- approval_future.result()
-
- # Collect read results
- for future in as_completed(read_futures):
- results.append(future.result())
-
- # All reads should show consistent state
- for result in results:
- self.assertTrue(
- result['consistent'],
- f"Inconsistent state: payment={result['payment_status']}, invoice={result['invoice_status']}"
- )
-
- def test_double_approval_prevention(self):
- """
- Test that payment cannot be approved twice
- """
- # First approval
- with transaction.atomic():
- payment = Payment.objects.select_for_update().get(id=self.payment.id)
- payment.status = 'succeeded'
- payment.approved_by = self.admin
- payment.save()
-
- invoice = payment.invoice
- invoice.status = 'paid'
- invoice.save()
-
- # Attempt second approval
- result = None
- try:
- with transaction.atomic():
- payment = Payment.objects.select_for_update().get(id=self.payment.id)
-
- # Should detect already approved
- if payment.status == 'succeeded':
- result = 'already_approved'
- else:
- payment.status = 'succeeded'
- payment.save()
- result = 'approved'
- except Exception as e:
- result = f'error: {str(e)}'
-
- self.assertEqual(result, 'already_approved', "Second approval should be prevented")
-
-
-class CreditTransactionConcurrencyTest(TransactionTestCase):
- """Test concurrent credit additions/deductions"""
-
- def setUp(self):
- self.admin = User.objects.create_user(
- email='admin@test.com',
- password='testpass123'
- )
- self.account = Account.objects.create(
- name='Test Account',
- owner=self.admin,
- credit_balance=1000
- )
-
- def test_concurrent_credit_deductions(self):
- """
- Test that concurrent credit deductions maintain correct balance
- """
- initial_balance = self.account.credit_balance
- deduction_amount = 10
- num_operations = 20
-
- def deduct_credits(account_id, amount):
- """Deduct credits atomically"""
- from igny8_core.business.billing.models import CreditTransaction
-
- with transaction.atomic():
- account = Account.objects.select_for_update().get(id=account_id)
-
- # Check sufficient balance
- if account.credit_balance < amount:
- return {'success': False, 'reason': 'insufficient_credits'}
-
- # Deduct credits
- account.credit_balance -= amount
- new_balance = account.credit_balance
- account.save()
-
- # Record transaction
- CreditTransaction.objects.create(
- account=account,
- transaction_type='deduction',
- amount=-amount,
- balance_after=new_balance,
- description='Test deduction'
- )
-
- return {'success': True, 'new_balance': new_balance}
-
- # Concurrent deductions
- with ThreadPoolExecutor(max_workers=10) as executor:
- futures = [
- executor.submit(deduct_credits, self.account.id, deduction_amount)
- for _ in range(num_operations)
- ]
-
- results = [future.result() for future in as_completed(futures)]
-
- # Verify all succeeded
- success_count = sum(1 for r in results if r.get('success'))
- self.assertEqual(success_count, num_operations, "All deductions should succeed")
-
- # Verify final balance
- self.account.refresh_from_db()
- expected_balance = initial_balance - (deduction_amount * num_operations)
- self.assertEqual(
- self.account.credit_balance,
- expected_balance,
- f"Final balance should be {expected_balance}"
- )
diff --git a/backend/igny8_core/business/billing/tests/test_payment_method_filtering.py b/backend/igny8_core/business/billing/tests/test_payment_method_filtering.py
deleted file mode 100644
index c1a8216d..00000000
--- a/backend/igny8_core/business/billing/tests/test_payment_method_filtering.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""
-Test payment method filtering by country
-"""
-from django.test import TestCase, Client
-from django.contrib.auth import get_user_model
-from igny8_core.business.billing.models import PaymentMethodConfig
-
-User = get_user_model()
-
-
-class PaymentMethodFilteringTest(TestCase):
- """Test payment method filtering by billing country"""
-
- def setUp(self):
- """Create test payment method configs"""
- # Global methods (available everywhere)
- PaymentMethodConfig.objects.create(
- country_code='*',
- payment_method='stripe',
- display_name='Credit/Debit Card',
- is_enabled=True,
- sort_order=1,
- )
- PaymentMethodConfig.objects.create(
- country_code='*',
- payment_method='paypal',
- display_name='PayPal',
- is_enabled=True,
- sort_order=2,
- )
-
- # Country-specific methods
- PaymentMethodConfig.objects.create(
- country_code='GB',
- payment_method='bank_transfer',
- display_name='Bank Transfer (UK)',
- is_enabled=True,
- sort_order=3,
- )
- PaymentMethodConfig.objects.create(
- country_code='IN',
- payment_method='local_wallet',
- display_name='UPI/Wallets',
- is_enabled=True,
- sort_order=4,
- )
- PaymentMethodConfig.objects.create(
- country_code='PK',
- payment_method='bank_transfer',
- display_name='Bank Transfer (Pakistan)',
- is_enabled=True,
- sort_order=5,
- )
-
- # Disabled method (should not appear)
- PaymentMethodConfig.objects.create(
- country_code='*',
- payment_method='manual',
- display_name='Manual',
- is_enabled=False,
- sort_order=99,
- )
-
- self.client = Client()
-
- def test_filter_payment_methods_by_us(self):
- """Test filtering for US country - should get only global methods"""
- response = self.client.get('/api/v1/billing/admin/payment-methods/?country=US')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- self.assertTrue(data['success'])
- self.assertEqual(len(data['results']), 2) # Only stripe and paypal
-
- methods = [m['type'] for m in data['results']]
- self.assertIn('stripe', methods)
- self.assertIn('paypal', methods)
-
- def test_filter_payment_methods_by_gb(self):
- """Test filtering for GB - should get global + GB-specific"""
- response = self.client.get('/api/v1/billing/admin/payment-methods/?country=GB')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- self.assertTrue(data['success'])
- self.assertEqual(len(data['results']), 3) # stripe, paypal, bank_transfer(GB)
-
- methods = [m['type'] for m in data['results']]
- self.assertIn('stripe', methods)
- self.assertIn('paypal', methods)
- self.assertIn('bank_transfer', methods)
-
- def test_filter_payment_methods_by_in(self):
- """Test filtering for IN - should get global + IN-specific"""
- response = self.client.get('/api/v1/billing/admin/payment-methods/?country=IN')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- self.assertTrue(data['success'])
- self.assertEqual(len(data['results']), 3) # stripe, paypal, local_wallet(IN)
-
- methods = [m['type'] for m in data['results']]
- self.assertIn('stripe', methods)
- self.assertIn('paypal', methods)
- self.assertIn('local_wallet', methods)
-
- def test_disabled_methods_not_returned(self):
- """Test that disabled payment methods are not included"""
- response = self.client.get('/api/v1/billing/admin/payment-methods/?country=*')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- methods = [m['type'] for m in data['results']]
- self.assertNotIn('manual', methods) # Disabled method should not appear
-
- def test_sort_order_respected(self):
- \"\"\"Test that payment methods are returned in sort_order\"\"\"
- response = self.client.get('/api/v1/billing/admin/payment-methods/?country=GB')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- # Verify first method has lowest sort_order
- self.assertEqual(data['results'][0]['type'], 'stripe')
- self.assertEqual(data['results'][0]['sort_order'], 1)
-
- def test_default_country_fallback(self):
- """Test that missing country parameter defaults to global (*)\"\"\"\n response = self.client.get('/api/v1/billing/admin/payment-methods/')
-
- self.assertEqual(response.status_code, 200)
- data = response.json()
-
- self.assertTrue(data['success'])
- # Should get at least global methods
- methods = [m['type'] for m in data['results']]
- self.assertIn('stripe', methods)
- self.assertIn('paypal', methods)
diff --git a/backend/igny8_core/business/billing/tests/test_payment_workflow.py b/backend/igny8_core/business/billing/tests/test_payment_workflow.py
deleted file mode 100644
index 1080ac2d..00000000
--- a/backend/igny8_core/business/billing/tests/test_payment_workflow.py
+++ /dev/null
@@ -1,192 +0,0 @@
-"""
-Integration tests for payment workflow
-"""
-from django.test import TestCase
-from django.contrib.auth import get_user_model
-from django.utils import timezone
-from decimal import Decimal
-from datetime import timedelta
-
-from igny8_core.auth.models import Account, Plan, Subscription
-from igny8_core.business.billing.models import Invoice, Payment
-from igny8_core.business.billing.services.invoice_service import InvoiceService
-
-User = get_user_model()
-
-
-class PaymentWorkflowIntegrationTest(TestCase):
- """Test complete payment workflow including invoice.subscription FK"""
-
- def setUp(self):
- """Create test data"""
- # Create plan
- self.plan = Plan.objects.create(
- name='Test Plan',
- slug='test-plan',
- price=Decimal('29.00'),
- included_credits=1000,
- max_sites=5,
- )
-
- # Create account
- self.account = Account.objects.create(
- name='Test Account',
- slug='test-account',
- status='pending_payment',
- billing_country='US',
- billing_email='test@example.com',
- )
-
- # Create user
- self.user = User.objects.create_user(
- username='testuser',
- email='testuser@example.com',
- password='testpass123',
- account=self.account,
- )
-
- # Create subscription
- billing_period_start = timezone.now()
- billing_period_end = billing_period_start + timedelta(days=30)
-
- self.subscription = Subscription.objects.create(
- account=self.account,
- plan=self.plan,
- status='pending_payment',
- current_period_start=billing_period_start,
- current_period_end=billing_period_end,
- )
-
- def test_invoice_subscription_fk_relationship(self):
- """Test that invoice.subscription FK works correctly"""
- # Create invoice via service
- billing_period_start = timezone.now()
- billing_period_end = billing_period_start + timedelta(days=30)
-
- invoice = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
-
- # Verify FK relationship
- self.assertIsNotNone(invoice.subscription)
- self.assertEqual(invoice.subscription.id, self.subscription.id)
- self.assertEqual(invoice.subscription.plan.id, self.plan.id)
-
- # Verify can access subscription from invoice
- self.assertEqual(invoice.subscription.account, self.account)
- self.assertEqual(invoice.subscription.plan.name, 'Test Plan')
-
- def test_payment_approval_with_subscription(self):
- """Test payment approval workflow uses invoice.subscription"""
- # Create invoice
- billing_period_start = timezone.now()
- billing_period_end = billing_period_start + timedelta(days=30)
-
- invoice = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
-
- # Create payment
- payment = Payment.objects.create(
- account=self.account,
- invoice=invoice,
- amount=invoice.total,
- currency='USD',
- status='pending_approval',
- payment_method='bank_transfer',
- manual_reference='TEST-REF-001',
- )
-
- # Verify payment links to invoice which links to subscription
- self.assertIsNotNone(payment.invoice)
- self.assertIsNotNone(payment.invoice.subscription)
- self.assertEqual(payment.invoice.subscription.id, self.subscription.id)
-
- # Simulate approval workflow
- payment.status = 'succeeded'
- payment.approved_by = self.user
- payment.approved_at = timezone.now()
- payment.save()
-
- # Update related records
- invoice.status = 'paid'
- invoice.paid_at = timezone.now()
- invoice.save()
-
- subscription = invoice.subscription
- subscription.status = 'active'
- subscription.save()
-
- # Verify workflow completed successfully
- self.assertEqual(payment.status, 'succeeded')
- self.assertEqual(invoice.status, 'paid')
- self.assertEqual(subscription.status, 'active')
- self.assertEqual(subscription.plan.included_credits, 1000)
-
- def test_subscription_dates_not_null_for_paid_plans(self):
- """Test that subscription dates are set for paid plans"""
- self.assertIsNotNone(self.subscription.current_period_start)
- self.assertIsNotNone(self.subscription.current_period_end)
-
- # Verify dates are in future
- self.assertGreater(self.subscription.current_period_end, self.subscription.current_period_start)
-
- def test_invoice_currency_based_on_country(self):
- """Test that invoice currency is set based on billing country"""
- # Test US -> USD
- self.account.billing_country = 'US'
- self.account.save()
-
- billing_period_start = timezone.now()
- billing_period_end = billing_period_start + timedelta(days=30)
-
- invoice_us = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
- self.assertEqual(invoice_us.currency, 'USD')
-
- # Test GB -> GBP
- self.account.billing_country = 'GB'
- self.account.save()
-
- invoice_gb = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
- self.assertEqual(invoice_gb.currency, 'GBP')
-
- # Test IN -> INR
- self.account.billing_country = 'IN'
- self.account.save()
-
- invoice_in = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
- self.assertEqual(invoice_in.currency, 'INR')
-
- def test_invoice_due_date_grace_period(self):
- """Test that invoice due date uses grace period instead of billing_period_end"""
- billing_period_start = timezone.now()
- billing_period_end = billing_period_start + timedelta(days=30)
-
- invoice = InvoiceService.create_subscription_invoice(
- subscription=self.subscription,
- billing_period_start=billing_period_start,
- billing_period_end=billing_period_end,
- )
-
- # Verify due date is invoice_date + 7 days (grace period)
- expected_due_date = invoice.invoice_date + timedelta(days=7)
- self.assertEqual(invoice.due_date, expected_due_date)
-
- # Verify it's NOT billing_period_end
- self.assertNotEqual(invoice.due_date, billing_period_end.date())
diff --git a/backend/igny8_core/business/billing/tests/test_phase4_credits.py b/backend/igny8_core/business/billing/tests/test_phase4_credits.py
deleted file mode 100644
index b9cfc350..00000000
--- a/backend/igny8_core/business/billing/tests/test_phase4_credits.py
+++ /dev/null
@@ -1,133 +0,0 @@
-"""
-Tests for Phase 4 credit deduction
-"""
-from unittest.mock import patch
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.billing.services.credit_service import CreditService
-from igny8_core.business.billing.constants import CREDIT_COSTS
-from igny8_core.business.billing.exceptions import InsufficientCreditsError
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class Phase4CreditTests(IntegrationTestBase):
- """Tests for Phase 4 credit deduction"""
-
- def setUp(self):
- super().setUp()
- # Set initial credits
- self.account.credits = 1000
- self.account.save()
-
- def test_linking_deducts_correct_credits(self):
- """Test that linking deducts correct credits"""
- cost = CreditService.get_credit_cost('linking')
- expected_cost = CREDIT_COSTS.get('linking', 0)
-
- self.assertEqual(cost, expected_cost)
- self.assertEqual(cost, 8) # From constants
-
- def test_optimization_deducts_correct_credits(self):
- """Test that optimization deducts correct credits based on word count"""
- word_count = 500
- cost = CreditService.get_credit_cost('optimization', word_count)
-
- # Should be 1 credit per 200 words, so 500 words = 3 credits (max(1, 1 * 500/200) = 3)
- expected = max(1, int(CREDIT_COSTS.get('optimization', 1) * (word_count / 200)))
- self.assertEqual(cost, expected)
-
- def test_optimization_credits_per_entry_point(self):
- """Test that optimization credits are same regardless of entry point"""
- word_count = 400
-
- # All entry points should use same credit calculation
- cost = CreditService.get_credit_cost('optimization', word_count)
-
- # 400 words = 2 credits (1 * 400/200)
- self.assertEqual(cost, 2)
-
- @patch('igny8_core.business.billing.services.credit_service.CreditService.deduct_credits')
- def test_pipeline_deducts_credits_at_each_stage(self, mock_deduct):
- """Test that pipeline deducts credits at each stage"""
- from igny8_core.business.content.services.content_pipeline_service import ContentPipelineService
- from igny8_core.business.linking.services.linker_service import LinkerService
- from igny8_core.business.optimization.services.optimizer_service import OptimizerService
-
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- word_count=400,
- source='igny8'
- )
-
- # Mock the services
- with patch.object(LinkerService, 'process') as mock_link, \
- patch.object(OptimizerService, 'optimize_from_writer') as mock_optimize:
-
- mock_link.return_value = content
- mock_optimize.return_value = content
-
- service = ContentPipelineService()
- service.process_writer_content(content.id)
-
- # Should deduct credits for both linking and optimization
- self.assertGreater(mock_deduct.call_count, 0)
-
- def test_insufficient_credits_blocks_linking(self):
- """Test that insufficient credits blocks linking"""
- self.account.credits = 5 # Less than linking cost (8)
- self.account.save()
-
- with self.assertRaises(InsufficientCreditsError):
- CreditService.check_credits(self.account, 'linking')
-
- def test_insufficient_credits_blocks_optimization(self):
- """Test that insufficient credits blocks optimization"""
- self.account.credits = 1 # Less than optimization cost for 500 words
- self.account.save()
-
- with self.assertRaises(InsufficientCreditsError):
- CreditService.check_credits(self.account, 'optimization', 500)
-
- def test_credit_deduction_logged(self):
- """Test that credit deduction is logged"""
- from igny8_core.business.billing.models import CreditUsageLog
-
- initial_credits = self.account.credits
- cost = CreditService.get_credit_cost('linking')
-
- CreditService.deduct_credits_for_operation(
- account=self.account,
- operation_type='linking',
- description="Test linking"
- )
-
- self.account.refresh_from_db()
- self.assertEqual(self.account.credits, initial_credits - cost)
-
- # Check that usage log was created
- log = CreditUsageLog.objects.filter(
- account=self.account,
- operation_type='linking'
- ).first()
- self.assertIsNotNone(log)
-
- def test_batch_operations_deduct_multiple_credits(self):
- """Test that batch operations deduct multiple credits"""
- initial_credits = self.account.credits
- linking_cost = CreditService.get_credit_cost('linking')
-
- # Deduct for 3 linking operations
- for i in range(3):
- CreditService.deduct_credits_for_operation(
- account=self.account,
- operation_type='linking',
- description=f"Linking {i}"
- )
-
- self.account.refresh_from_db()
- expected_credits = initial_credits - (linking_cost * 3)
- self.assertEqual(self.account.credits, expected_credits)
-
diff --git a/backend/igny8_core/business/content/tests/__init__.py b/backend/igny8_core/business/content/tests/__init__.py
deleted file mode 100644
index 974046b9..00000000
--- a/backend/igny8_core/business/content/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Content tests
-
diff --git a/backend/igny8_core/business/content/tests/test_content_pipeline_service.py b/backend/igny8_core/business/content/tests/test_content_pipeline_service.py
deleted file mode 100644
index e88f11da..00000000
--- a/backend/igny8_core/business/content/tests/test_content_pipeline_service.py
+++ /dev/null
@@ -1,185 +0,0 @@
-"""
-Tests for ContentPipelineService
-"""
-from unittest.mock import patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.content.services.content_pipeline_service import ContentPipelineService
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class ContentPipelineServiceTests(IntegrationTestBase):
- """Tests for ContentPipelineService"""
-
- def setUp(self):
- super().setUp()
- self.service = ContentPipelineService()
-
- # Create writer content
- self.writer_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Writer Content",
- html_content="Writer content.
",
- word_count=500,
- status='draft',
- source='igny8'
- )
-
- # Create synced content
- self.synced_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="WordPress Content",
- html_content="WordPress content.
",
- word_count=500,
- status='draft',
- source='wordpress'
- )
-
- @patch('igny8_core.business.content.services.content_pipeline_service.LinkerService.process')
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_from_writer')
- def test_process_writer_content_full_pipeline(self, mock_optimize, mock_link):
- """Test full pipeline for writer content (linking + optimization)"""
- mock_link.return_value = self.writer_content
- mock_optimize.return_value = self.writer_content
-
- result = self.service.process_writer_content(self.writer_content.id)
-
- self.assertEqual(result.id, self.writer_content.id)
- mock_link.assert_called_once()
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_from_writer')
- def test_process_writer_content_optimization_only(self, mock_optimize):
- """Test writer content with optimization only"""
- mock_optimize.return_value = self.writer_content
-
- result = self.service.process_writer_content(
- self.writer_content.id,
- stages=['optimization']
- )
-
- self.assertEqual(result.id, self.writer_content.id)
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.LinkerService.process')
- def test_process_writer_content_linking_only(self, mock_link):
- """Test writer content with linking only"""
- mock_link.return_value = self.writer_content
-
- result = self.service.process_writer_content(
- self.writer_content.id,
- stages=['linking']
- )
-
- self.assertEqual(result.id, self.writer_content.id)
- mock_link.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.LinkerService.process')
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_from_writer')
- def test_process_writer_content_handles_linker_failure(self, mock_optimize, mock_link):
- """Test that pipeline continues when linking fails"""
- mock_link.side_effect = Exception("Linking failed")
- mock_optimize.return_value = self.writer_content
-
- # Should not raise exception, should continue to optimization
- result = self.service.process_writer_content(self.writer_content.id)
-
- self.assertEqual(result.id, self.writer_content.id)
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_from_wordpress_sync')
- def test_process_synced_content_wordpress(self, mock_optimize):
- """Test synced content pipeline for WordPress"""
- mock_optimize.return_value = self.synced_content
-
- result = self.service.process_synced_content(self.synced_content.id)
-
- self.assertEqual(result.id, self.synced_content.id)
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_from_external_sync')
- def test_process_synced_content_shopify(self, mock_optimize):
- """Test synced content pipeline for Shopify"""
- shopify_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Shopify Content",
- word_count=100,
- source='shopify'
- )
- mock_optimize.return_value = shopify_content
-
- result = self.service.process_synced_content(shopify_content.id)
-
- self.assertEqual(result.id, shopify_content.id)
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.OptimizerService.optimize_manual')
- def test_process_synced_content_custom(self, mock_optimize):
- """Test synced content pipeline for custom source"""
- custom_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Custom Content",
- word_count=100,
- source='custom'
- )
- mock_optimize.return_value = custom_content
-
- result = self.service.process_synced_content(custom_content.id)
-
- self.assertEqual(result.id, custom_content.id)
- mock_optimize.assert_called_once()
-
- @patch('igny8_core.business.content.services.content_pipeline_service.ContentPipelineService.process_writer_content')
- def test_batch_process_writer_content(self, mock_process):
- """Test batch processing writer content"""
- content2 = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Content 2",
- word_count=100,
- source='igny8'
- )
-
- mock_process.side_effect = [self.writer_content, content2]
-
- results = self.service.batch_process_writer_content([
- self.writer_content.id,
- content2.id
- ])
-
- self.assertEqual(len(results), 2)
- self.assertEqual(mock_process.call_count, 2)
-
- @patch('igny8_core.business.content.services.content_pipeline_service.ContentPipelineService.process_writer_content')
- def test_batch_process_handles_partial_failure(self, mock_process):
- """Test batch processing handles partial failures"""
- mock_process.side_effect = [self.writer_content, Exception("Failed")]
-
- results = self.service.batch_process_writer_content([
- self.writer_content.id,
- 99999
- ])
-
- # Should continue processing and return successful results
- self.assertEqual(len(results), 1)
- self.assertEqual(results[0].id, self.writer_content.id)
-
- def test_process_writer_content_invalid_content(self):
- """Test that ValueError is raised for invalid content"""
- with self.assertRaises(ValueError):
- self.service.process_writer_content(99999)
-
- def test_process_synced_content_invalid_content(self):
- """Test that ValueError is raised for invalid synced content"""
- with self.assertRaises(ValueError):
- self.service.process_synced_content(99999)
-
diff --git a/backend/igny8_core/business/content/tests/test_universal_content_types.py b/backend/igny8_core/business/content/tests/test_universal_content_types.py
deleted file mode 100644
index 12afa558..00000000
--- a/backend/igny8_core/business/content/tests/test_universal_content_types.py
+++ /dev/null
@@ -1,283 +0,0 @@
-"""
-Tests for Universal Content Types (Phase 8)
-Tests for product, service, and taxonomy content generation
-"""
-from unittest.mock import patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.content.services.content_generation_service import ContentGenerationService
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class UniversalContentTypesTests(IntegrationTestBase):
- """Tests for Phase 8: Universal Content Types"""
-
- def setUp(self):
- super().setUp()
- # Add credits to account for testing
- self.account.credits = 10000
- self.account.save()
- self.service = ContentGenerationService()
-
- @patch('igny8_core.ai.tasks.run_ai_task')
- def test_product_content_generates_correctly(self, mock_run_ai_task):
- """
- Test: Product content generates correctly
- Task 17: Verify product generation creates content with correct entity_type and structure
- """
- # Mock AI task response
- mock_task = MagicMock()
- mock_task.id = 'test-task-123'
- mock_run_ai_task.delay.return_value = mock_task
-
- product_data = {
- 'name': 'Test Product',
- 'description': 'A test product description',
- 'features': ['Feature 1', 'Feature 2', 'Feature 3'],
- 'target_audience': 'Small businesses',
- 'primary_keyword': 'test product',
- 'word_count': 1500
- }
-
- # Generate product content
- result = self.service.generate_product_content(
- product_data=product_data,
- account=self.account,
- site=self.site,
- sector=self.sector
- )
-
- # Verify result
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('task_id'))
- self.assertEqual(result.get('message'), 'Product content generation started')
-
- # Verify AI task was called with correct function name
- mock_run_ai_task.delay.assert_called_once()
- call_args = mock_run_ai_task.delay.call_args
- self.assertEqual(call_args[1]['function_name'], 'generate_product_content')
- self.assertEqual(call_args[1]['payload']['product_name'], 'Test Product')
-
- @patch('igny8_core.ai.tasks.run_ai_task')
- def test_service_pages_work_correctly(self, mock_run_ai_task):
- """
- Test: Service pages work correctly
- Task 18: Verify service page generation creates content with correct entity_type
- """
- # Mock AI task response
- mock_task = MagicMock()
- mock_task.id = 'test-task-456'
- mock_run_ai_task.delay.return_value = mock_task
-
- service_data = {
- 'name': 'Test Service',
- 'description': 'A test service description',
- 'benefits': ['Benefit 1', 'Benefit 2', 'Benefit 3'],
- 'target_audience': 'Enterprise clients',
- 'primary_keyword': 'test service',
- 'word_count': 1800
- }
-
- # Generate service page
- result = self.service.generate_service_page(
- service_data=service_data,
- account=self.account,
- site=self.site,
- sector=self.sector
- )
-
- # Verify result
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('task_id'))
- self.assertEqual(result.get('message'), 'Service page generation started')
-
- # Verify AI task was called with correct function name
- mock_run_ai_task.delay.assert_called_once()
- call_args = mock_run_ai_task.delay.call_args
- self.assertEqual(call_args[1]['function_name'], 'generate_service_page')
- self.assertEqual(call_args[1]['payload']['service_name'], 'Test Service')
-
- @patch('igny8_core.ai.tasks.run_ai_task')
- def test_taxonomy_pages_work_correctly(self, mock_run_ai_task):
- """
- Test: Taxonomy pages work correctly
- Task 19: Verify taxonomy generation creates content with correct entity_type
- """
- # Mock AI task response
- mock_task = MagicMock()
- mock_task.id = 'test-task-789'
- mock_run_ai_task.delay.return_value = mock_task
-
- taxonomy_data = {
- 'name': 'Test Taxonomy',
- 'description': 'A test taxonomy description',
- 'items': ['Category 1', 'Category 2', 'Category 3'],
- 'primary_keyword': 'test taxonomy',
- 'word_count': 1200
- }
-
- # Generate taxonomy
- result = self.service.generate_taxonomy(
- taxonomy_data=taxonomy_data,
- account=self.account,
- site=self.site,
- sector=self.sector
- )
-
- # Verify result
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('task_id'))
- self.assertEqual(result.get('message'), 'Taxonomy generation started')
-
- # Verify AI task was called with correct function name
- mock_run_ai_task.delay.assert_called_once()
- call_args = mock_run_ai_task.delay.call_args
- self.assertEqual(call_args[1]['function_name'], 'generate_taxonomy')
- self.assertEqual(call_args[1]['payload']['taxonomy_name'], 'Test Taxonomy')
-
- def test_product_content_has_correct_structure(self):
- """
- Test: Product content generates correctly
- Task 17: Verify product content has correct entity_type, json_blocks, and structure_data
- """
- # Create product content manually to test structure
- product_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Product',
- html_content='Product content
',
- entity_type='product',
- json_blocks=[
- {
- 'type': 'product_overview',
- 'heading': 'Product Overview',
- 'content': 'Product description'
- },
- {
- 'type': 'features',
- 'heading': 'Key Features',
- 'items': ['Feature 1', 'Feature 2']
- },
- {
- 'type': 'specifications',
- 'heading': 'Specifications',
- 'data': {'Spec 1': 'Value 1'}
- }
- ],
- structure_data={
- 'product_type': 'software',
- 'price_range': '$99-$199',
- 'target_market': 'SMB'
- },
- word_count=1500,
- status='draft'
- )
-
- # Verify structure
- self.assertEqual(product_content.entity_type, 'product')
- self.assertIsNotNone(product_content.json_blocks)
- self.assertEqual(len(product_content.json_blocks), 3)
- self.assertEqual(product_content.json_blocks[0]['type'], 'product_overview')
- self.assertIsNotNone(product_content.structure_data)
- self.assertEqual(product_content.structure_data['product_type'], 'software')
-
- def test_service_content_has_correct_structure(self):
- """
- Test: Service pages work correctly
- Task 18: Verify service content has correct entity_type and json_blocks
- """
- # Create service content manually to test structure
- service_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Service',
- html_content='Service content
',
- entity_type='service',
- json_blocks=[
- {
- 'type': 'service_overview',
- 'heading': 'Service Overview',
- 'content': 'Service description'
- },
- {
- 'type': 'benefits',
- 'heading': 'Benefits',
- 'items': ['Benefit 1', 'Benefit 2']
- },
- {
- 'type': 'process',
- 'heading': 'Our Process',
- 'steps': ['Step 1', 'Step 2']
- }
- ],
- structure_data={
- 'service_type': 'consulting',
- 'duration': '3-6 months',
- 'target_market': 'Enterprise'
- },
- word_count=1800,
- status='draft'
- )
-
- # Verify structure
- self.assertEqual(service_content.entity_type, 'service')
- self.assertIsNotNone(service_content.json_blocks)
- self.assertEqual(len(service_content.json_blocks), 3)
- self.assertEqual(service_content.json_blocks[0]['type'], 'service_overview')
- self.assertIsNotNone(service_content.structure_data)
- self.assertEqual(service_content.structure_data['service_type'], 'consulting')
-
- def test_taxonomy_content_has_correct_structure(self):
- """
- Test: Taxonomy pages work correctly
- Task 19: Verify taxonomy content has correct entity_type and json_blocks
- """
- # Create taxonomy content manually to test structure
- taxonomy_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Taxonomy',
- html_content='Taxonomy content
',
- entity_type='taxonomy',
- json_blocks=[
- {
- 'type': 'taxonomy_overview',
- 'heading': 'Taxonomy Overview',
- 'content': 'Taxonomy description'
- },
- {
- 'type': 'categories',
- 'heading': 'Categories',
- 'items': [
- {
- 'name': 'Category 1',
- 'description': 'Category description',
- 'subcategories': ['Subcat 1', 'Subcat 2']
- }
- ]
- },
- {
- 'type': 'tags',
- 'heading': 'Tags',
- 'items': ['Tag 1', 'Tag 2', 'Tag 3']
- }
- ],
- structure_data={
- 'taxonomy_type': 'product_categories',
- 'item_count': 10,
- 'hierarchy_levels': 3
- },
- word_count=1200,
- status='draft'
- )
-
- # Verify structure
- self.assertEqual(taxonomy_content.entity_type, 'taxonomy')
- self.assertIsNotNone(taxonomy_content.json_blocks)
- self.assertEqual(len(taxonomy_content.json_blocks), 3)
- self.assertEqual(taxonomy_content.json_blocks[0]['type'], 'taxonomy_overview')
- self.assertIsNotNone(taxonomy_content.structure_data)
- self.assertEqual(taxonomy_content.structure_data['taxonomy_type'], 'product_categories')
diff --git a/backend/igny8_core/business/integration/services/content_sync_service.py b/backend/igny8_core/business/integration/services/content_sync_service.py
index 7affeef0..9f5ccffa 100644
--- a/backend/igny8_core/business/integration/services/content_sync_service.py
+++ b/backend/igny8_core/business/integration/services/content_sync_service.py
@@ -374,100 +374,10 @@ class ContentSyncService:
Returns:
dict: Sync result with synced_count
"""
- try:
- from igny8_core.business.site_building.models import SiteBlueprint
- from igny8_core.business.site_building.services.taxonomy_service import TaxonomyService
-
- # Get or create site blueprint for this site
- blueprint = SiteBlueprint.objects.filter(
- account=integration.account,
- site=integration.site
- ).first()
-
- if not blueprint:
- logger.warning(f"No blueprint found for site {integration.site.id}, skipping taxonomy sync")
- return {'success': True, 'synced_count': 0}
-
- taxonomy_service = TaxonomyService()
- synced_count = 0
-
- # Sync WordPress categories
- categories = client.get_categories(per_page=100)
- category_records = [
- {
- 'name': cat['name'],
- 'slug': cat['slug'],
- 'description': cat.get('description', ''),
- 'taxonomy_type': 'blog_category',
- 'external_reference': str(cat['id']),
- 'metadata': {'parent': cat.get('parent', 0)}
- }
- for cat in categories
- ]
- if category_records:
- taxonomy_service.import_from_external(
- blueprint,
- category_records,
- default_type='blog_category'
- )
- synced_count += len(category_records)
-
- # Sync WordPress tags
- tags = client.get_tags(per_page=100)
- tag_records = [
- {
- 'name': tag['name'],
- 'slug': tag['slug'],
- 'description': tag.get('description', ''),
- 'taxonomy_type': 'blog_tag',
- 'external_reference': str(tag['id'])
- }
- for tag in tags
- ]
- if tag_records:
- taxonomy_service.import_from_external(
- blueprint,
- tag_records,
- default_type='blog_tag'
- )
- synced_count += len(tag_records)
-
- # Sync WooCommerce product categories if available (401 is expected if WooCommerce not installed or credentials missing)
- try:
- product_categories = client.get_product_categories(per_page=100)
- product_category_records = [
- {
- 'name': cat['name'],
- 'slug': cat['slug'],
- 'description': cat.get('description', ''),
- 'taxonomy_type': 'product_category',
- 'external_reference': f"wc_cat_{cat['id']}",
- 'metadata': {'parent': cat.get('parent', 0)}
- }
- for cat in product_categories
- ]
- if product_category_records:
- taxonomy_service.import_from_external(
- blueprint,
- product_category_records,
- default_type='product_category'
- )
- synced_count += len(product_category_records)
- except Exception as e:
- # Silently skip WooCommerce if not available (401 means no consumer key/secret configured or plugin not installed)
- logger.debug(f"WooCommerce product categories not available: {e}")
-
- return {
- 'success': True,
- 'synced_count': synced_count
- }
- except Exception as e:
- logger.error(f"Error syncing taxonomies from WordPress: {e}", exc_info=True)
- return {
- 'success': False,
- 'error': str(e),
- 'synced_count': 0
- }
+ # REMOVED: Legacy SiteBlueprint taxonomy sync removed.
+ # Taxonomy management now uses ContentTaxonomy model.
+ logger.info(f"Skipping legacy taxonomy sync for site {integration.site.id}")
+ return {'success': True, 'synced_count': 0}
def _sync_taxonomies_to_wordpress(
self,
diff --git a/backend/igny8_core/business/integration/services/sync_health_service.py b/backend/igny8_core/business/integration/services/sync_health_service.py
index 450b04a6..d6f9a67e 100644
--- a/backend/igny8_core/business/integration/services/sync_health_service.py
+++ b/backend/igny8_core/business/integration/services/sync_health_service.py
@@ -308,11 +308,14 @@ class SyncHealthService:
"""
Detect mismatches between IGNY8 and WordPress.
+ DEPRECATED: Legacy SiteBlueprint taxonomy mismatch detection removed.
+ Taxonomy management now uses ContentTaxonomy model.
+
Args:
integration: SiteIntegration instance
Returns:
- dict: Mismatch details
+ dict: Mismatch details (empty for now)
"""
mismatches = {
'taxonomies': {
@@ -330,116 +333,8 @@ class SyncHealthService:
}
}
- try:
- from igny8_core.utils.wordpress import WordPressClient
- from igny8_core.business.site_building.models import SiteBlueprint, SiteBlueprintTaxonomy
- from igny8_core.business.content.models import Content
-
- credentials = integration.get_credentials()
- client = WordPressClient(
- site_url=integration.config_json.get('site_url', ''),
- username=credentials.get('username'),
- app_password=credentials.get('app_password')
- )
-
- # Get site blueprint
- blueprint = SiteBlueprint.objects.filter(
- account=integration.account,
- site=integration.site
- ).first()
-
- if not blueprint:
- return mismatches
-
- # Check taxonomy mismatches
- # Get IGNY8 taxonomies
- igny8_taxonomies = SiteBlueprintTaxonomy.objects.filter(
- site_blueprint=blueprint
- )
-
- # Get WordPress categories
- wp_categories = client.get_categories(per_page=100)
- wp_category_ids = {str(cat['id']): cat for cat in wp_categories}
-
- # Get WordPress tags
- wp_tags = client.get_tags(per_page=100)
- wp_tag_ids = {str(tag['id']): tag for tag in wp_tags}
-
- for taxonomy in igny8_taxonomies:
- if taxonomy.external_reference:
- # Check if still exists in WordPress
- if taxonomy.taxonomy_type in ['blog_category', 'product_category']:
- if taxonomy.external_reference not in wp_category_ids:
- mismatches['taxonomies']['missing_in_wordpress'].append({
- 'id': taxonomy.id,
- 'name': taxonomy.name,
- 'type': taxonomy.taxonomy_type,
- 'external_reference': taxonomy.external_reference
- })
- elif taxonomy.taxonomy_type in ['blog_tag', 'product_tag']:
- if taxonomy.external_reference not in wp_tag_ids:
- mismatches['taxonomies']['missing_in_wordpress'].append({
- 'id': taxonomy.id,
- 'name': taxonomy.name,
- 'type': taxonomy.taxonomy_type,
- 'external_reference': taxonomy.external_reference
- })
- else:
- # Taxonomy exists in IGNY8 but not synced to WordPress
- mismatches['taxonomies']['missing_in_wordpress'].append({
- 'id': taxonomy.id,
- 'name': taxonomy.name,
- 'type': taxonomy.taxonomy_type
- })
-
- # Check for WordPress taxonomies not in IGNY8
- for cat in wp_categories:
- if not SiteBlueprintTaxonomy.objects.filter(
- site_blueprint=blueprint,
- external_reference=str(cat['id'])
- ).exists():
- mismatches['taxonomies']['missing_in_igny8'].append({
- 'name': cat['name'],
- 'slug': cat['slug'],
- 'type': 'blog_category',
- 'external_reference': str(cat['id'])
- })
-
- for tag in wp_tags:
- if not SiteBlueprintTaxonomy.objects.filter(
- site_blueprint=blueprint,
- external_reference=str(tag['id'])
- ).exists():
- mismatches['taxonomies']['missing_in_igny8'].append({
- 'name': tag['name'],
- 'slug': tag['slug'],
- 'type': 'blog_tag',
- 'external_reference': str(tag['id'])
- })
-
- # Check content mismatches (basic check)
- igny8_content = Content.objects.filter(
- account=integration.account,
- site=integration.site,
- source='igny8',
- status='publish'
- )
-
- for content in igny8_content[:50]: # Limit check
- if content.metadata and content.metadata.get('wordpress_id'):
- # Content should exist in WordPress (would need to check)
- # For now, just note if metadata exists
- pass
- else:
- # Content not synced to WordPress
- mismatches['posts']['missing_in_wordpress'].append({
- 'id': content.id,
- 'title': content.title,
- 'type': content.content_type
- })
-
- except Exception as e:
- logger.warning(f"Error detecting WordPress mismatches: {e}")
+ # Legacy taxonomy detection removed - would need to be reimplemented with ContentTaxonomy
+ logger.info(f"Mismatch detection for integration {integration.id} - legacy code removed")
return mismatches
diff --git a/backend/igny8_core/business/integration/tests/__init__.py b/backend/igny8_core/business/integration/tests/__init__.py
deleted file mode 100644
index 7c4954d2..00000000
--- a/backend/igny8_core/business/integration/tests/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""
-Integration Tests
-Phase 6: Site Integration & Multi-Destination Publishing
-"""
-
diff --git a/backend/igny8_core/business/integration/tests/test_content_sync.py b/backend/igny8_core/business/integration/tests/test_content_sync.py
deleted file mode 100644
index 3e406878..00000000
--- a/backend/igny8_core/business/integration/tests/test_content_sync.py
+++ /dev/null
@@ -1,155 +0,0 @@
-"""
-Tests for ContentSyncService
-Phase 6: Site Integration & Multi-Destination Publishing
-"""
-from django.test import TestCase
-from unittest.mock import patch, Mock
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.integration.models import SiteIntegration
-from igny8_core.business.integration.services.content_sync_service import ContentSyncService
-from igny8_core.business.content.models import Content
-
-
-class ContentSyncServiceTestCase(TestCase):
- """Test cases for ContentSyncService"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- self.integration = SiteIntegration.objects.create(
- account=self.account,
- site=self.site,
- platform='wordpress',
- platform_type='cms',
- sync_enabled=True
- )
- self.service = ContentSyncService()
-
- def test_sync_content_from_wordpress_creates_content(self):
- """Test: WordPress sync works (when plugin connected)"""
- mock_posts = [
- {
- 'id': 1,
- 'title': 'Test Post',
- 'content': 'Test content
',
- 'status': 'publish',
- }
- ]
-
- with patch.object(self.service, '_fetch_wordpress_posts') as mock_fetch:
- mock_fetch.return_value = mock_posts
-
- result = self.service.sync_from_wordpress(self.integration)
-
- self.assertTrue(result.get('success'))
- self.assertEqual(result.get('synced_count'), 1)
-
- # Verify content was created
- content = Content.objects.filter(site=self.site).first()
- self.assertIsNotNone(content)
- self.assertEqual(content.title, 'Test Post')
- self.assertEqual(content.source, 'wordpress')
-
- def test_sync_content_from_shopify_creates_content(self):
- """Test: Content sync works"""
- mock_products = [
- {
- 'id': 1,
- 'title': 'Test Product',
- 'body_html': 'Product description
',
- }
- ]
-
- with patch.object(self.service, '_fetch_shopify_products') as mock_fetch:
- mock_fetch.return_value = mock_products
-
- result = self.service.sync_from_shopify(self.integration)
-
- self.assertTrue(result.get('success'))
- self.assertEqual(result.get('synced_count'), 1)
-
- def test_sync_handles_duplicate_content(self):
- """Test: Content sync works"""
- # Create existing content
- Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Post",
- html_content="Existing
",
- source='wordpress'
- )
-
- mock_posts = [
- {
- 'id': 1,
- 'title': 'Test Post',
- 'content': 'Updated content
',
- }
- ]
-
- with patch.object(self.service, '_fetch_wordpress_posts') as mock_fetch:
- mock_fetch.return_value = mock_posts
-
- result = self.service.sync_from_wordpress(self.integration)
-
- # Should update existing, not create duplicate
- content_count = Content.objects.filter(
- site=self.site,
- title='Test Post'
- ).count()
- self.assertEqual(content_count, 1)
-
diff --git a/backend/igny8_core/business/integration/tests/test_integration_service.py b/backend/igny8_core/business/integration/tests/test_integration_service.py
deleted file mode 100644
index 0b700f64..00000000
--- a/backend/igny8_core/business/integration/tests/test_integration_service.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""
-Tests for IntegrationService
-Phase 6: Site Integration & Multi-Destination Publishing
-"""
-from django.test import TestCase
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.integration.models import SiteIntegration
-from igny8_core.business.integration.services.integration_service import IntegrationService
-
-
-class IntegrationServiceTestCase(TestCase):
- """Test cases for IntegrationService"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- self.service = IntegrationService()
-
- def test_create_integration_stores_config(self):
- """Test: Site integrations work correctly"""
- integration = self.service.create_integration(
- site=self.site,
- platform='wordpress',
- config={'url': 'https://example.com'},
- credentials={'api_key': 'test-key'},
- platform_type='cms'
- )
-
- self.assertIsNotNone(integration)
- self.assertEqual(integration.platform, 'wordpress')
- self.assertEqual(integration.platform_type, 'cms')
- self.assertEqual(integration.config_json.get('url'), 'https://example.com')
- self.assertTrue(integration.is_active)
-
- def test_get_integrations_for_site_returns_all(self):
- """Test: Site integrations work correctly"""
- self.service.create_integration(
- site=self.site,
- platform='wordpress',
- config={},
- credentials={}
- )
- self.service.create_integration(
- site=self.site,
- platform='shopify',
- config={},
- credentials={}
- )
-
- integrations = self.service.get_integrations_for_site(self.site)
-
- self.assertEqual(integrations.count(), 2)
- platforms = [i.platform for i in integrations]
- self.assertIn('wordpress', platforms)
- self.assertIn('shopify', platforms)
-
- def test_test_connection_validates_credentials(self):
- """Test: Site integrations work correctly"""
- # Test with unsupported platform to verify NotImplementedError is raised
- integration = self.service.create_integration(
- site=self.site,
- platform='unsupported_platform',
- config={'url': 'https://example.com'},
- credentials={'api_key': 'test-key'}
- )
-
- with self.assertRaises(NotImplementedError):
- # Connection testing should raise NotImplementedError for unsupported platforms
- self.service.test_connection(integration)
-
- def test_update_integration_updates_fields(self):
- """Test: Site integrations work correctly"""
- integration = self.service.create_integration(
- site=self.site,
- platform='wordpress',
- config={'url': 'https://old.com'},
- credentials={}
- )
-
- updated = self.service.update_integration(
- integration,
- config={'url': 'https://new.com'},
- is_active=False
- )
-
- self.assertEqual(updated.config_json.get('url'), 'https://new.com')
- self.assertFalse(updated.is_active)
-
diff --git a/backend/igny8_core/business/integration/tests/test_sync_service.py b/backend/igny8_core/business/integration/tests/test_sync_service.py
deleted file mode 100644
index b78f870e..00000000
--- a/backend/igny8_core/business/integration/tests/test_sync_service.py
+++ /dev/null
@@ -1,127 +0,0 @@
-"""
-Tests for SyncService
-Phase 6: Site Integration & Multi-Destination Publishing
-"""
-from django.test import TestCase
-from django.utils import timezone
-from unittest.mock import patch, Mock
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.integration.models import SiteIntegration
-from igny8_core.business.integration.services.sync_service import SyncService
-
-
-class SyncServiceTestCase(TestCase):
- """Test cases for SyncService"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- self.integration = SiteIntegration.objects.create(
- account=self.account,
- site=self.site,
- platform='wordpress',
- platform_type='cms',
- sync_enabled=True,
- sync_status='pending'
- )
- self.service = SyncService()
-
- def test_sync_updates_status(self):
- """Test: Two-way sync functions properly"""
- with patch.object(self.service, '_sync_to_external') as mock_sync_to, \
- patch.object(self.service, '_sync_from_external') as mock_sync_from:
- mock_sync_to.return_value = {'success': True, 'synced': 5}
- mock_sync_from.return_value = {'success': True, 'synced': 3}
-
- result = self.service.sync(self.integration, direction='both')
-
- self.assertTrue(result.get('success'))
- self.integration.refresh_from_db()
- self.assertEqual(self.integration.sync_status, 'success')
- self.assertIsNotNone(self.integration.last_sync_at)
-
- def test_sync_to_external_only(self):
- """Test: Two-way sync functions properly"""
- with patch.object(self.service, '_sync_to_external') as mock_sync_to:
- mock_sync_to.return_value = {'success': True, 'synced': 5}
-
- result = self.service.sync(self.integration, direction='to_external')
-
- self.assertTrue(result.get('success'))
- mock_sync_to.assert_called_once()
-
- def test_sync_from_external_only(self):
- """Test: WordPress sync works (when plugin connected)"""
- with patch.object(self.service, '_sync_from_external') as mock_sync_from:
- mock_sync_from.return_value = {'success': True, 'synced': 3}
-
- result = self.service.sync(self.integration, direction='from_external')
-
- self.assertTrue(result.get('success'))
- mock_sync_from.assert_called_once()
-
- def test_sync_handles_errors(self):
- """Test: Two-way sync functions properly"""
- with patch.object(self.service, '_sync_to_external') as mock_sync_to:
- mock_sync_to.side_effect = Exception("Sync failed")
-
- result = self.service.sync(self.integration, direction='to_external')
-
- self.assertFalse(result.get('success'))
- self.integration.refresh_from_db()
- self.assertEqual(self.integration.sync_status, 'failed')
- self.assertIsNotNone(self.integration.sync_error)
-
diff --git a/backend/igny8_core/business/linking/tests/__init__.py b/backend/igny8_core/business/linking/tests/__init__.py
deleted file mode 100644
index 39bf3d5f..00000000
--- a/backend/igny8_core/business/linking/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Linking tests
-
diff --git a/backend/igny8_core/business/linking/tests/test_candidate_engine.py b/backend/igny8_core/business/linking/tests/test_candidate_engine.py
deleted file mode 100644
index a3de8f1f..00000000
--- a/backend/igny8_core/business/linking/tests/test_candidate_engine.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-Tests for CandidateEngine
-"""
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.linking.services.candidate_engine import CandidateEngine
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class CandidateEngineTests(IntegrationTestBase):
- """Tests for CandidateEngine"""
-
- def setUp(self):
- super().setUp()
- self.engine = CandidateEngine()
-
- # Create source content
- self.source_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Source Content",
- html_content="Source content about test keyword.
",
- primary_keyword="test keyword",
- secondary_keywords=["keyword1", "keyword2"],
- categories=["category1"],
- tags=["tag1", "tag2"],
- word_count=100,
- status='draft'
- )
-
- # Create relevant content (same keyword)
- self.relevant_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Relevant Content",
- html_content="Relevant content about test keyword.
",
- primary_keyword="test keyword",
- secondary_keywords=["keyword1"],
- categories=["category1"],
- tags=["tag1"],
- word_count=150,
- status='draft'
- )
-
- # Create less relevant content (different keyword)
- self.less_relevant = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Less Relevant",
- html_content="Different content.
",
- primary_keyword="different keyword",
- word_count=100,
- status='draft'
- )
-
- def test_find_candidates_returns_relevant_content(self):
- """Test that find_candidates returns relevant content"""
- candidates = self.engine.find_candidates(self.source_content, max_candidates=10)
-
- # Should find relevant content
- candidate_ids = [c['content_id'] for c in candidates]
- self.assertIn(self.relevant_content.id, candidate_ids)
-
- def test_find_candidates_scores_by_relevance(self):
- """Test that candidates are scored by relevance"""
- candidates = self.engine.find_candidates(self.source_content, max_candidates=10)
-
- # Relevant content should have higher score
- relevant_candidate = next((c for c in candidates if c['content_id'] == self.relevant_content.id), None)
- self.assertIsNotNone(relevant_candidate)
- self.assertGreater(relevant_candidate['relevance_score'], 0)
-
- def test_find_candidates_excludes_self(self):
- """Test that source content is excluded from candidates"""
- candidates = self.engine.find_candidates(self.source_content, max_candidates=10)
-
- candidate_ids = [c['content_id'] for c in candidates]
- self.assertNotIn(self.source_content.id, candidate_ids)
-
- def test_find_candidates_respects_account_isolation(self):
- """Test that candidates are only from same account"""
- # Create content from different account
- from igny8_core.auth.models import Account
- other_account = Account.objects.create(
- name="Other Account",
- slug="other-account",
- plan=self.plan,
- owner=self.user
- )
-
- other_content = Content.objects.create(
- account=other_account,
- site=self.site,
- sector=self.sector,
- title="Other Account Content",
- primary_keyword="test keyword",
- word_count=100,
- status='draft'
- )
-
- candidates = self.engine.find_candidates(self.source_content, max_candidates=10)
- candidate_ids = [c['content_id'] for c in candidates]
- self.assertNotIn(other_content.id, candidate_ids)
-
- def test_find_candidates_returns_empty_for_no_content(self):
- """Test that empty list is returned when no content"""
- empty_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Empty",
- html_content="",
- word_count=0,
- status='draft'
- )
-
- candidates = self.engine.find_candidates(empty_content, max_candidates=10)
- self.assertEqual(len(candidates), 0)
-
- def test_find_candidates_respects_max_candidates(self):
- """Test that max_candidates limit is respected"""
- # Create multiple relevant content items
- for i in range(15):
- Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title=f"Content {i}",
- primary_keyword="test keyword",
- word_count=100,
- status='draft'
- )
-
- candidates = self.engine.find_candidates(self.source_content, max_candidates=5)
- self.assertLessEqual(len(candidates), 5)
-
diff --git a/backend/igny8_core/business/linking/tests/test_injection_engine.py b/backend/igny8_core/business/linking/tests/test_injection_engine.py
deleted file mode 100644
index fe5488f8..00000000
--- a/backend/igny8_core/business/linking/tests/test_injection_engine.py
+++ /dev/null
@@ -1,136 +0,0 @@
-"""
-Tests for InjectionEngine
-"""
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.linking.services.injection_engine import InjectionEngine
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class InjectionEngineTests(IntegrationTestBase):
- """Tests for InjectionEngine"""
-
- def setUp(self):
- super().setUp()
- self.engine = InjectionEngine()
-
- # Create content with HTML
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="This is test content with some keywords and text.
",
- word_count=100,
- status='draft'
- )
-
- def test_inject_links_adds_links_to_html(self):
- """Test that links are injected into HTML content"""
- candidates = [{
- 'content_id': 1,
- 'title': 'Target Content',
- 'url': '/content/1/',
- 'relevance_score': 50,
- 'anchor_text': 'keywords'
- }]
-
- result = self.engine.inject_links(self.content, candidates, max_links=5)
-
- # Check that link was added
- self.assertIn('keywords', result['html_content'])
- self.assertEqual(result['links_added'], 1)
- self.assertEqual(len(result['links']), 1)
-
- def test_inject_links_respects_max_links(self):
- """Test that max_links limit is respected"""
- candidates = [
- {'content_id': i, 'title': f'Content {i}', 'url': f'/content/{i}/',
- 'relevance_score': 50, 'anchor_text': f'keyword{i}'}
- for i in range(10)
- ]
-
- # Update HTML to include all anchor texts
- self.content.html_content = "" + " ".join([f'keyword{i}' for i in range(10)]) + "
"
- self.content.save()
-
- result = self.engine.inject_links(self.content, candidates, max_links=3)
-
- self.assertLessEqual(result['links_added'], 3)
- self.assertLessEqual(len(result['links']), 3)
-
- def test_inject_links_returns_unchanged_when_no_candidates(self):
- """Test that content is unchanged when no candidates"""
- original_html = self.content.html_content
-
- result = self.engine.inject_links(self.content, [], max_links=5)
-
- self.assertEqual(result['html_content'], original_html)
- self.assertEqual(result['links_added'], 0)
- self.assertEqual(len(result['links']), 0)
-
- def test_inject_links_returns_unchanged_when_no_html(self):
- """Test that empty HTML returns unchanged"""
- self.content.html_content = ""
- self.content.save()
-
- candidates = [{
- 'content_id': 1,
- 'title': 'Target',
- 'url': '/content/1/',
- 'relevance_score': 50,
- 'anchor_text': 'test'
- }]
-
- result = self.engine.inject_links(self.content, candidates, max_links=5)
-
- self.assertEqual(result['html_content'], "")
- self.assertEqual(result['links_added'], 0)
-
- def test_inject_links_case_insensitive_matching(self):
- """Test that anchor text matching is case-insensitive"""
- self.content.html_content = "This is TEST content.
"
- self.content.save()
-
- candidates = [{
- 'content_id': 1,
- 'title': 'Target',
- 'url': '/content/1/',
- 'relevance_score': 50,
- 'anchor_text': 'test'
- }]
-
- result = self.engine.inject_links(self.content, candidates, max_links=5)
-
- # Should find and replace despite case difference
- self.assertIn('internal-link', result['html_content'])
- self.assertEqual(result['links_added'], 1)
-
- def test_inject_links_prevents_duplicate_links(self):
- """Test that same candidate is not linked twice"""
- candidates = [
- {
- 'content_id': 1,
- 'title': 'Target',
- 'url': '/content/1/',
- 'relevance_score': 50,
- 'anchor_text': 'test'
- },
- {
- 'content_id': 1, # Same content_id
- 'title': 'Target',
- 'url': '/content/1/',
- 'relevance_score': 40,
- 'anchor_text': 'test'
- }
- ]
-
- self.content.html_content = "This is test content with test keywords.
"
- self.content.save()
-
- result = self.engine.inject_links(self.content, candidates, max_links=5)
-
- # Should only add one link despite two candidates
- self.assertEqual(result['links_added'], 1)
- self.assertEqual(result['html_content'].count('internal-link'), 1)
-
diff --git a/backend/igny8_core/business/linking/tests/test_linker_service.py b/backend/igny8_core/business/linking/tests/test_linker_service.py
deleted file mode 100644
index 653c4ec6..00000000
--- a/backend/igny8_core/business/linking/tests/test_linker_service.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""
-Tests for LinkerService
-"""
-from unittest.mock import Mock, patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.linking.services.linker_service import LinkerService
-from igny8_core.business.billing.exceptions import InsufficientCreditsError
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class LinkerServiceTests(IntegrationTestBase):
- """Tests for LinkerService"""
-
- def setUp(self):
- super().setUp()
- self.service = LinkerService()
-
- # Create test content
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="This is test content with some keywords.
",
- primary_keyword="test keyword",
- word_count=100,
- status='draft'
- )
-
- # Create another content for linking
- self.target_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Target Content",
- html_content="Target content for linking.
",
- primary_keyword="test keyword",
- word_count=150,
- status='draft'
- )
-
- @patch('igny8_core.business.linking.services.linker_service.CreditService.check_credits')
- @patch('igny8_core.business.linking.services.linker_service.CandidateEngine.find_candidates')
- @patch('igny8_core.business.linking.services.linker_service.InjectionEngine.inject_links')
- @patch('igny8_core.business.linking.services.linker_service.CreditService.deduct_credits_for_operation')
- def test_process_single_content(self, mock_deduct, mock_inject, mock_find, mock_check):
- """Test processing single content for linking"""
- # Setup mocks
- mock_check.return_value = True
- mock_find.return_value = [{
- 'content_id': self.target_content.id,
- 'title': 'Target Content',
- 'url': '/content/2/',
- 'relevance_score': 50,
- 'anchor_text': 'test keyword'
- }]
- mock_inject.return_value = {
- 'html_content': 'This is test content with test keyword.
',
- 'links': [{
- 'content_id': self.target_content.id,
- 'anchor_text': 'test keyword',
- 'url': '/content/2/'
- }],
- 'links_added': 1
- }
-
- # Execute
- result = self.service.process(self.content.id)
-
- # Assertions
- self.assertEqual(result.id, self.content.id)
- self.assertEqual(result.linker_version, 1)
- self.assertEqual(len(result.internal_links), 1)
- mock_check.assert_called_once_with(self.account, 'linking')
- mock_deduct.assert_called_once()
-
- @patch('igny8_core.business.linking.services.linker_service.CreditService.check_credits')
- def test_process_insufficient_credits(self, mock_check):
- """Test that InsufficientCreditsError is raised when credits are insufficient"""
- mock_check.side_effect = InsufficientCreditsError("Insufficient credits")
-
- with self.assertRaises(InsufficientCreditsError):
- self.service.process(self.content.id)
-
- def test_process_content_not_found(self):
- """Test that ValueError is raised when content doesn't exist"""
- with self.assertRaises(ValueError):
- self.service.process(99999)
-
- @patch('igny8_core.business.linking.services.linker_service.LinkerService.process')
- def test_batch_process_multiple_content(self, mock_process):
- """Test batch processing multiple content items"""
- # Create additional content
- content2 = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Content 2",
- html_content="Content 2
",
- word_count=100,
- status='draft'
- )
-
- # Setup mock
- mock_process.side_effect = [self.content, content2]
-
- # Execute
- results = self.service.batch_process([self.content.id, content2.id])
-
- # Assertions
- self.assertEqual(len(results), 2)
- self.assertEqual(mock_process.call_count, 2)
-
- @patch('igny8_core.business.linking.services.linker_service.LinkerService.process')
- def test_batch_process_handles_partial_failure(self, mock_process):
- """Test batch processing handles partial failures"""
- # Setup mock to fail on second item
- mock_process.side_effect = [self.content, Exception("Processing failed")]
-
- # Execute
- results = self.service.batch_process([self.content.id, 99999])
-
- # Assertions - should continue processing other items
- self.assertEqual(len(results), 1)
- self.assertEqual(results[0].id, self.content.id)
-
- @patch('igny8_core.business.linking.services.linker_service.CreditService.check_credits')
- @patch('igny8_core.business.linking.services.linker_service.CandidateEngine.find_candidates')
- def test_process_no_candidates_found(self, mock_find, mock_check):
- """Test processing when no candidates are found"""
- mock_check.return_value = True
- mock_find.return_value = []
-
- # Execute
- result = self.service.process(self.content.id)
-
- # Assertions - should return content unchanged
- self.assertEqual(result.id, self.content.id)
- self.assertEqual(result.linker_version, 0) # Not incremented
-
diff --git a/backend/igny8_core/business/linking/tests/test_universal_content_linking.py b/backend/igny8_core/business/linking/tests/test_universal_content_linking.py
deleted file mode 100644
index 38b2cd67..00000000
--- a/backend/igny8_core/business/linking/tests/test_universal_content_linking.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""
-Tests for Universal Content Types Linking (Phase 8)
-Tests for product and taxonomy linking
-"""
-from unittest.mock import patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.linking.services.linker_service import LinkerService
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class UniversalContentLinkingTests(IntegrationTestBase):
- """Tests for Phase 8: Universal Content Types Linking"""
-
- def setUp(self):
- super().setUp()
- # Add credits to account for testing
- self.account.credits = 10000
- self.account.save()
- self.linker_service = LinkerService()
-
- # Create product content
- self.product_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Product',
- html_content='Product content with features and specifications.
',
- entity_type='product',
- json_blocks=[
- {'type': 'features', 'heading': 'Features', 'items': ['Feature 1', 'Feature 2']}
- ],
- structure_data={'product_type': 'software'},
- word_count=1500,
- status='draft'
- )
-
- # Create related product
- self.related_product = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Related Product',
- html_content='Related product content.
',
- entity_type='product',
- structure_data={'product_type': 'software'},
- word_count=1500,
- status='draft'
- )
-
- # Create service content
- self.service_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Related Service',
- html_content='Service content.
',
- entity_type='service',
- word_count=1800,
- status='draft'
- )
-
- # Create taxonomy content
- self.taxonomy_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Taxonomy',
- html_content='Taxonomy content with categories.
',
- entity_type='taxonomy',
- json_blocks=[
- {
- 'type': 'categories',
- 'heading': 'Categories',
- 'items': [
- {'name': 'Category 1', 'description': 'Desc 1', 'subcategories': []}
- ]
- }
- ],
- word_count=1200,
- status='draft'
- )
-
- # Create related taxonomy
- self.related_taxonomy = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Related Taxonomy',
- html_content='Related taxonomy content.
',
- entity_type='taxonomy',
- word_count=1200,
- status='draft'
- )
-
- @patch('igny8_core.business.linking.services.linker_service.InjectionEngine.inject_links')
- @patch('igny8_core.business.linking.services.linker_service.CreditService.check_credits')
- @patch('igny8_core.business.linking.services.linker_service.CreditService.deduct_credits_for_operation')
- def test_linking_works_for_products(self, mock_deduct, mock_check_credits, mock_inject_links):
- """
- Test: Linking works for all content types (products, taxonomies)
- Task 20: Verify product linking finds related products and services
- """
- # Mock injection engine
- mock_inject_links.return_value = {
- 'html_content': 'Product content with links.
',
- 'links': [
- {'content_id': self.related_product.id, 'anchor_text': 'Related Product'},
- {'content_id': self.service_content.id, 'anchor_text': 'Related Service'}
- ],
- 'links_added': 2
- }
-
- # Process product linking
- result = self.linker_service.process_product(self.product_content.id)
-
- # Verify result
- self.assertIsNotNone(result)
- self.assertEqual(result.entity_type, 'product')
- self.assertIsNotNone(result.internal_links)
- self.assertEqual(len(result.internal_links), 2)
- self.assertEqual(result.linker_version, 1)
-
- # Verify injection was called
- mock_inject_links.assert_called_once()
- candidates = mock_inject_links.call_args[0][1]
- self.assertGreater(len(candidates), 0)
-
- # Verify product candidates were found
- product_candidates = [c for c in candidates if c.get('content_id') == self.related_product.id]
- self.assertGreater(len(product_candidates), 0)
-
- @patch('igny8_core.business.linking.services.linker_service.InjectionEngine.inject_links')
- @patch('igny8_core.business.linking.services.linker_service.CreditService.check_credits')
- @patch('igny8_core.business.linking.services.linker_service.CreditService.deduct_credits_for_operation')
- def test_linking_works_for_taxonomies(self, mock_deduct, mock_check_credits, mock_inject_links):
- """
- Test: Linking works for all content types (products, taxonomies)
- Task 20: Verify taxonomy linking finds related taxonomies and content
- """
- # Mock injection engine
- mock_inject_links.return_value = {
- 'html_content': 'Taxonomy content with links.
',
- 'links': [
- {'content_id': self.related_taxonomy.id, 'anchor_text': 'Related Taxonomy'}
- ],
- 'links_added': 1
- }
-
- # Process taxonomy linking
- result = self.linker_service.process_taxonomy(self.taxonomy_content.id)
-
- # Verify result
- self.assertIsNotNone(result)
- self.assertEqual(result.entity_type, 'taxonomy')
- self.assertIsNotNone(result.internal_links)
- self.assertEqual(len(result.internal_links), 1)
- self.assertEqual(result.linker_version, 1)
-
- # Verify injection was called
- mock_inject_links.assert_called_once()
- candidates = mock_inject_links.call_args[0][1]
- self.assertGreater(len(candidates), 0)
-
- # Verify taxonomy candidates were found
- taxonomy_candidates = [c for c in candidates if c.get('content_id') == self.related_taxonomy.id]
- self.assertGreater(len(taxonomy_candidates), 0)
-
- def test_product_linking_finds_related_products(self):
- """
- Test: Linking works for all content types (products, taxonomies)
- Task 20: Verify _find_product_candidates finds related products
- """
- candidates = self.linker_service._find_product_candidates(self.product_content)
-
- # Should find related product
- product_ids = [c['content_id'] for c in candidates]
- self.assertIn(self.related_product.id, product_ids)
-
- # Should find related service
- self.assertIn(self.service_content.id, product_ids)
-
- def test_taxonomy_linking_finds_related_taxonomies(self):
- """
- Test: Linking works for all content types (products, taxonomies)
- Task 20: Verify _find_taxonomy_candidates finds related taxonomies
- """
- candidates = self.linker_service._find_taxonomy_candidates(self.taxonomy_content)
-
- # Should find related taxonomy
- taxonomy_ids = [c['content_id'] for c in candidates]
- self.assertIn(self.related_taxonomy.id, taxonomy_ids)
-
diff --git a/backend/igny8_core/business/optimization/tests/__init__.py b/backend/igny8_core/business/optimization/tests/__init__.py
deleted file mode 100644
index 54386393..00000000
--- a/backend/igny8_core/business/optimization/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Optimization tests
-
diff --git a/backend/igny8_core/business/optimization/tests/test_analyzer.py b/backend/igny8_core/business/optimization/tests/test_analyzer.py
deleted file mode 100644
index bbef02c8..00000000
--- a/backend/igny8_core/business/optimization/tests/test_analyzer.py
+++ /dev/null
@@ -1,177 +0,0 @@
-"""
-Tests for ContentAnalyzer
-"""
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.optimization.services.analyzer import ContentAnalyzer
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class ContentAnalyzerTests(IntegrationTestBase):
- """Tests for ContentAnalyzer"""
-
- def setUp(self):
- super().setUp()
- self.analyzer = ContentAnalyzer()
-
- def test_analyze_returns_all_scores(self):
- """Test that analyze returns all required scores"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="This is test content.
",
- meta_title="Test Title",
- meta_description="Test description",
- primary_keyword="test keyword",
- word_count=1500,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertIn('seo_score', scores)
- self.assertIn('readability_score', scores)
- self.assertIn('engagement_score', scores)
- self.assertIn('overall_score', scores)
- self.assertIn('word_count', scores)
- self.assertIn('has_meta_title', scores)
- self.assertIn('has_meta_description', scores)
- self.assertIn('has_primary_keyword', scores)
- self.assertIn('internal_links_count', scores)
-
- def test_analyze_returns_zero_scores_for_empty_content(self):
- """Test that empty content returns zero scores"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Empty",
- html_content="",
- word_count=0,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertEqual(scores['seo_score'], 0)
- self.assertEqual(scores['readability_score'], 0)
- self.assertEqual(scores['engagement_score'], 0)
- self.assertEqual(scores['overall_score'], 0)
-
- def test_calculate_seo_score_with_meta_title(self):
- """Test SEO score calculation with meta title"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- meta_title="Test Title" * 5, # 50 chars - optimal length
- word_count=1500,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertGreater(scores['seo_score'], 0)
-
- def test_calculate_seo_score_with_primary_keyword(self):
- """Test SEO score calculation with primary keyword"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- primary_keyword="test keyword",
- word_count=1500,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertGreater(scores['seo_score'], 0)
-
- def test_calculate_readability_score(self):
- """Test readability score calculation"""
- # Create content with good readability (short sentences, paragraphs)
- html = "This is a sentence.
This is another sentence.
And one more.
"
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- html_content=html,
- word_count=20,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertGreater(scores['readability_score'], 0)
-
- def test_calculate_engagement_score_with_headings(self):
- """Test engagement score calculation with headings"""
- html = "Main Heading
Subheading 1
Subheading 2
"
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- html_content=html,
- word_count=100,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertGreater(scores['engagement_score'], 0)
-
- def test_calculate_engagement_score_with_internal_links(self):
- """Test engagement score calculation with internal links"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- html_content="Test content.
",
- internal_links=[
- {'content_id': 1, 'anchor_text': 'link1'},
- {'content_id': 2, 'anchor_text': 'link2'},
- {'content_id': 3, 'anchor_text': 'link3'}
- ],
- word_count=100,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- self.assertGreater(scores['engagement_score'], 0)
- self.assertEqual(scores['internal_links_count'], 3)
-
- def test_overall_score_is_weighted_average(self):
- """Test that overall score is weighted average"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test",
- html_content="Test content.
",
- meta_title="Test Title",
- meta_description="Test description",
- primary_keyword="test",
- word_count=1500,
- status='draft'
- )
-
- scores = self.analyzer.analyze(content)
-
- # Overall should be weighted: SEO (40%) + Readability (30%) + Engagement (30%)
- expected = (
- scores['seo_score'] * 0.4 +
- scores['readability_score'] * 0.3 +
- scores['engagement_score'] * 0.3
- )
-
- self.assertAlmostEqual(scores['overall_score'], expected, places=1)
-
diff --git a/backend/igny8_core/business/optimization/tests/test_optimizer_service.py b/backend/igny8_core/business/optimization/tests/test_optimizer_service.py
deleted file mode 100644
index 788d58bd..00000000
--- a/backend/igny8_core/business/optimization/tests/test_optimizer_service.py
+++ /dev/null
@@ -1,189 +0,0 @@
-"""
-Tests for OptimizerService
-"""
-from unittest.mock import Mock, patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.optimization.models import OptimizationTask
-from igny8_core.business.optimization.services.optimizer_service import OptimizerService
-from igny8_core.business.billing.exceptions import InsufficientCreditsError
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class OptimizerServiceTests(IntegrationTestBase):
- """Tests for OptimizerService"""
-
- def setUp(self):
- super().setUp()
- self.service = OptimizerService()
-
- # Create test content
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="This is test content.
",
- meta_title="Test Title",
- meta_description="Test description",
- primary_keyword="test keyword",
- word_count=500,
- status='draft',
- source='igny8'
- )
-
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- @patch('igny8_core.business.optimization.services.optimizer_service.ContentAnalyzer.analyze')
- @patch('igny8_core.business.optimization.services.optimizer_service.OptimizerService._optimize_content')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.deduct_credits_for_operation')
- def test_optimize_from_writer(self, mock_deduct, mock_optimize, mock_analyze, mock_check):
- """Test optimize_from_writer entry point"""
- mock_check.return_value = True
- mock_analyze.return_value = {
- 'seo_score': 50.0,
- 'readability_score': 60.0,
- 'engagement_score': 55.0,
- 'overall_score': 55.0
- }
-
- optimized_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Optimized Content",
- html_content="Optimized content.
",
- word_count=500,
- status='draft',
- source='igny8'
- )
- mock_optimize.return_value = optimized_content
-
- result = self.service.optimize_from_writer(self.content.id)
-
- self.assertEqual(result.id, self.content.id)
- mock_check.assert_called_once()
- mock_deduct.assert_called_once()
-
- def test_optimize_from_writer_invalid_content(self):
- """Test that ValueError is raised for invalid content"""
- with self.assertRaises(ValueError):
- self.service.optimize_from_writer(99999)
-
- def test_optimize_from_writer_wrong_source(self):
- """Test that ValueError is raised for wrong source"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="WordPress Content",
- word_count=100,
- source='wordpress'
- )
-
- with self.assertRaises(ValueError):
- self.service.optimize_from_writer(content.id)
-
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- def test_optimize_insufficient_credits(self, mock_check):
- """Test that InsufficientCreditsError is raised when credits are insufficient"""
- mock_check.side_effect = InsufficientCreditsError("Insufficient credits")
-
- with self.assertRaises(InsufficientCreditsError):
- self.service.optimize(self.content)
-
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- @patch('igny8_core.business.optimization.services.optimizer_service.ContentAnalyzer.analyze')
- @patch('igny8_core.business.optimization.services.optimizer_service.OptimizerService._optimize_content')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.deduct_credits_for_operation')
- def test_optimize_creates_optimization_task(self, mock_deduct, mock_optimize, mock_analyze, mock_check):
- """Test that optimization creates OptimizationTask"""
- mock_check.return_value = True
- scores = {
- 'seo_score': 50.0,
- 'readability_score': 60.0,
- 'engagement_score': 55.0,
- 'overall_score': 55.0
- }
- mock_analyze.return_value = scores
-
- optimized_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Optimized",
- html_content="Optimized.
",
- word_count=500,
- status='draft'
- )
- mock_optimize.return_value = optimized_content
-
- result = self.service.optimize(self.content)
-
- # Check that task was created
- task = OptimizationTask.objects.filter(content=self.content).first()
- self.assertIsNotNone(task)
- self.assertEqual(task.status, 'completed')
- self.assertEqual(task.scores_before, scores)
-
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- @patch('igny8_core.business.optimization.services.optimizer_service.ContentAnalyzer.analyze')
- def test_analyze_only_returns_scores(self, mock_analyze, mock_check):
- """Test analyze_only method returns scores without optimizing"""
- scores = {
- 'seo_score': 50.0,
- 'readability_score': 60.0,
- 'engagement_score': 55.0,
- 'overall_score': 55.0
- }
- mock_analyze.return_value = scores
-
- result = self.service.analyze_only(self.content.id)
-
- self.assertEqual(result, scores)
- mock_analyze.assert_called_once()
-
- def test_optimize_from_wordpress_sync(self):
- """Test optimize_from_wordpress_sync entry point"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="WordPress Content",
- word_count=100,
- source='wordpress'
- )
-
- with patch.object(self.service, 'optimize') as mock_optimize:
- mock_optimize.return_value = content
- result = self.service.optimize_from_wordpress_sync(content.id)
-
- self.assertEqual(result.id, content.id)
- mock_optimize.assert_called_once()
-
- def test_optimize_from_external_sync(self):
- """Test optimize_from_external_sync entry point"""
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Shopify Content",
- word_count=100,
- source='shopify'
- )
-
- with patch.object(self.service, 'optimize') as mock_optimize:
- mock_optimize.return_value = content
- result = self.service.optimize_from_external_sync(content.id)
-
- self.assertEqual(result.id, content.id)
- mock_optimize.assert_called_once()
-
- def test_optimize_manual(self):
- """Test optimize_manual entry point"""
- with patch.object(self.service, 'optimize') as mock_optimize:
- mock_optimize.return_value = self.content
- result = self.service.optimize_manual(self.content.id)
-
- self.assertEqual(result.id, self.content.id)
- mock_optimize.assert_called_once()
-
diff --git a/backend/igny8_core/business/optimization/tests/test_universal_content_optimization.py b/backend/igny8_core/business/optimization/tests/test_universal_content_optimization.py
deleted file mode 100644
index 40acaa19..00000000
--- a/backend/igny8_core/business/optimization/tests/test_universal_content_optimization.py
+++ /dev/null
@@ -1,184 +0,0 @@
-"""
-Tests for Universal Content Types Optimization (Phase 8)
-Tests for product and taxonomy optimization
-"""
-from unittest.mock import patch, MagicMock
-from django.test import TestCase
-from igny8_core.business.content.models import Content
-from igny8_core.business.optimization.services.optimizer_service import OptimizerService
-from igny8_core.business.optimization.models import OptimizationTask
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class UniversalContentOptimizationTests(IntegrationTestBase):
- """Tests for Phase 8: Universal Content Types Optimization"""
-
- def setUp(self):
- super().setUp()
- # Add credits to account for testing
- self.account.credits = 10000
- self.account.save()
- self.optimizer_service = OptimizerService()
-
- # Create product content
- self.product_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Product',
- html_content='Product content that needs optimization.
',
- entity_type='product',
- json_blocks=[
- {'type': 'features', 'heading': 'Features', 'items': ['Feature 1']},
- {'type': 'specifications', 'heading': 'Specs', 'data': {'Spec': 'Value'}}
- ],
- structure_data={'product_type': 'software', 'price_range': '$99-$199'},
- word_count=1500,
- status='draft'
- )
-
- # Create taxonomy content
- self.taxonomy_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title='Test Taxonomy',
- html_content='Taxonomy content that needs optimization.
',
- entity_type='taxonomy',
- json_blocks=[
- {'type': 'categories', 'heading': 'Categories', 'items': [{'name': 'Cat 1'}]},
- {'type': 'tags', 'heading': 'Tags', 'items': ['Tag 1']},
- {'type': 'hierarchy', 'heading': 'Hierarchy', 'structure': {}}
- ],
- word_count=1200,
- status='draft'
- )
-
- @patch('igny8_core.business.optimization.services.optimizer_service.OptimizerService._optimize_content')
- @patch('igny8_core.business.optimization.services.optimizer_service.ContentAnalyzer.analyze')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.get_credit_cost')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.deduct_credits_for_operation')
- def test_optimization_works_for_products(self, mock_deduct, mock_get_cost, mock_check_credits, mock_analyze, mock_optimize):
- """
- Test: Optimization works for all content types (products, taxonomies)
- Task 21: Verify product optimization includes product-specific metrics
- """
- # Mock analyzer
- mock_analyze.return_value = {
- 'seo_score': 75,
- 'readability_score': 80,
- 'engagement_score': 70,
- 'overall_score': 75
- }
-
- # Mock credit cost
- mock_get_cost.return_value = 10
-
- # Mock optimization
- optimized_content = Content.objects.get(id=self.product_content.id)
- optimized_content.html_content = 'Optimized product content.
'
- mock_optimize.return_value = optimized_content
-
- # Optimize product
- result = self.optimizer_service.optimize_product(self.product_content.id)
-
- # Verify result
- self.assertIsNotNone(result)
- self.assertEqual(result.entity_type, 'product')
- self.assertEqual(result.optimizer_version, 1)
- self.assertIsNotNone(result.optimization_scores)
-
- # Verify product-specific scores were enhanced
- scores = result.optimization_scores
- self.assertIn('product_completeness', scores)
- self.assertGreaterEqual(scores['product_completeness'], 0)
- self.assertLessEqual(scores['product_completeness'], 1)
-
- # Verify optimization task was created
- task = OptimizationTask.objects.filter(content=result).first()
- self.assertIsNotNone(task)
- self.assertEqual(task.status, 'completed')
- self.assertIn('product_completeness', task.scores_after)
-
- @patch('igny8_core.business.optimization.services.optimizer_service.OptimizerService._optimize_content')
- @patch('igny8_core.business.optimization.services.optimizer_service.ContentAnalyzer.analyze')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.check_credits')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.get_credit_cost')
- @patch('igny8_core.business.optimization.services.optimizer_service.CreditService.deduct_credits_for_operation')
- def test_optimization_works_for_taxonomies(self, mock_deduct, mock_get_cost, mock_check_credits, mock_analyze, mock_optimize):
- """
- Test: Optimization works for all content types (products, taxonomies)
- Task 21: Verify taxonomy optimization includes taxonomy-specific metrics
- """
- # Mock analyzer
- mock_analyze.return_value = {
- 'seo_score': 70,
- 'readability_score': 75,
- 'engagement_score': 65,
- 'overall_score': 70
- }
-
- # Mock credit cost
- mock_get_cost.return_value = 8
-
- # Mock optimization
- optimized_content = Content.objects.get(id=self.taxonomy_content.id)
- optimized_content.html_content = 'Optimized taxonomy content.
'
- mock_optimize.return_value = optimized_content
-
- # Optimize taxonomy
- result = self.optimizer_service.optimize_taxonomy(self.taxonomy_content.id)
-
- # Verify result
- self.assertIsNotNone(result)
- self.assertEqual(result.entity_type, 'taxonomy')
- self.assertEqual(result.optimizer_version, 1)
- self.assertIsNotNone(result.optimization_scores)
-
- # Verify taxonomy-specific scores were enhanced
- scores = result.optimization_scores
- self.assertIn('taxonomy_organization', scores)
- self.assertGreaterEqual(scores['taxonomy_organization'], 0)
- self.assertLessEqual(scores['taxonomy_organization'], 1)
-
- # Verify optimization task was created
- task = OptimizationTask.objects.filter(content=result).first()
- self.assertIsNotNone(task)
- self.assertEqual(task.status, 'completed')
- self.assertIn('taxonomy_organization', task.scores_after)
-
- def test_enhance_product_scores_includes_completeness(self):
- """
- Test: Optimization works for all content types (products, taxonomies)
- Task 21: Verify _enhance_product_scores adds product_completeness
- """
- base_scores = {
- 'seo_score': 75,
- 'readability_score': 80,
- 'overall_score': 75
- }
-
- enhanced = self.optimizer_service._enhance_product_scores(base_scores, self.product_content)
-
- self.assertIn('product_completeness', enhanced)
- self.assertGreaterEqual(enhanced['product_completeness'], 0)
- self.assertLessEqual(enhanced['product_completeness'], 1)
-
- def test_enhance_taxonomy_scores_includes_organization(self):
- """
- Test: Optimization works for all content types (products, taxonomies)
- Task 21: Verify _enhance_taxonomy_scores adds taxonomy_organization
- """
- base_scores = {
- 'seo_score': 70,
- 'readability_score': 75,
- 'overall_score': 70
- }
-
- enhanced = self.optimizer_service._enhance_taxonomy_scores(base_scores, self.taxonomy_content)
-
- self.assertIn('taxonomy_organization', enhanced)
- self.assertGreaterEqual(enhanced['taxonomy_organization'], 0)
- self.assertLessEqual(enhanced['taxonomy_organization'], 1)
-
diff --git a/backend/igny8_core/business/publishing/tests/__init__.py b/backend/igny8_core/business/publishing/tests/__init__.py
deleted file mode 100644
index c57a7935..00000000
--- a/backend/igny8_core/business/publishing/tests/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""
-Publishing Tests
-Phase 5: Sites Renderer & Publishing
-"""
-
diff --git a/backend/igny8_core/business/publishing/tests/test_adapters.py b/backend/igny8_core/business/publishing/tests/test_adapters.py
deleted file mode 100644
index c86baba7..00000000
--- a/backend/igny8_core/business/publishing/tests/test_adapters.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-Tests for Publishing Adapters
-Phase 6: Site Integration & Multi-Destination Publishing
-"""
-from django.test import TestCase
-from unittest.mock import Mock, patch
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.publishing.services.adapters.base_adapter import BaseAdapter
-from igny8_core.business.publishing.services.adapters.sites_renderer_adapter import SitesRendererAdapter
-from igny8_core.business.publishing.services.adapters.wordpress_adapter import WordPressAdapter
-from igny8_core.business.site_building.models import SiteBlueprint
-
-
-class AdapterPatternTestCase(TestCase):
- """Test cases for adapter pattern"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- self.blueprint = SiteBlueprint.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- name="Test Blueprint",
- status='ready'
- )
-
- def test_sites_renderer_adapter_implements_base_interface(self):
- """Test: Adapter pattern works correctly"""
- adapter = SitesRendererAdapter()
-
- self.assertIsInstance(adapter, BaseAdapter)
- self.assertTrue(hasattr(adapter, 'publish'))
- self.assertTrue(hasattr(adapter, 'test_connection'))
- self.assertTrue(hasattr(adapter, 'get_status'))
-
- def test_wordpress_adapter_implements_base_interface(self):
- """Test: Adapter pattern works correctly"""
- adapter = WordPressAdapter()
-
- self.assertIsInstance(adapter, BaseAdapter)
- self.assertTrue(hasattr(adapter, 'publish'))
- self.assertTrue(hasattr(adapter, 'test_connection'))
- self.assertTrue(hasattr(adapter, 'get_status'))
-
- def test_sites_renderer_adapter_deploys_site(self):
- """Test: Multi-destination publishing works"""
- adapter = SitesRendererAdapter()
-
- result = adapter.deploy(self.blueprint)
-
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('deployment_url'))
- self.assertIsNotNone(result.get('version'))
-
- def test_wordpress_adapter_publishes_content(self):
- """Test: Multi-destination publishing works"""
- from igny8_core.business.content.models import Content
-
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="Test
"
- )
-
- adapter = WordPressAdapter()
- config = {
- 'site_url': 'https://example.com',
- 'username': 'test',
- 'app_password': 'test'
- }
-
- # Patch WordPressClient at the point where it's used in the adapter
- with patch('igny8_core.business.publishing.services.adapters.wordpress_adapter.WordPressClient') as mock_client_class:
- mock_instance = Mock()
- mock_instance.create_post.return_value = {'id': 123, 'link': 'https://example.com/post/123'}
- mock_client_class.return_value = mock_instance
-
- result = adapter.publish(content, config)
-
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('external_id'))
- self.assertIsNotNone(result.get('url'))
-
diff --git a/backend/igny8_core/business/publishing/tests/test_deployment_service.py b/backend/igny8_core/business/publishing/tests/test_deployment_service.py
deleted file mode 100644
index 29d81256..00000000
--- a/backend/igny8_core/business/publishing/tests/test_deployment_service.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""
-DEPRECATED: Tests for DeploymentService - SiteBlueprint models removed
-Phase 5: Sites Renderer & Publishing
-"""
-from django.test import TestCase
-from django.utils import timezone
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.publishing.models import DeploymentRecord
-from igny8_core.business.publishing.services.deployment_service import DeploymentService
-
-
-class DeploymentServiceTestCase(TestCase):
- """DEPRECATED: Test cases for DeploymentService"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- # DEPRECATED: SiteBlueprint model removed
- self.blueprint = None
- self.service = DeploymentService()
-
- def test_get_status_returns_deployed_record(self):
- """Test: Sites are accessible publicly"""
- DeploymentRecord.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- site_blueprint=self.blueprint,
- version=1,
- status='deployed',
- deployment_url='https://test-site.igny8.com',
- deployed_at=timezone.now()
- )
-
- status = self.service.get_status(self.blueprint)
-
- self.assertIsNotNone(status)
- self.assertEqual(status.status, 'deployed')
- self.assertEqual(status.deployment_url, 'https://test-site.igny8.com')
-
- def test_get_latest_deployment_returns_most_recent(self):
- """Test: Deployment works end-to-end"""
- DeploymentRecord.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- site_blueprint=self.blueprint,
- version=1,
- status='failed',
- created_at=timezone.now()
- )
-
- latest = DeploymentRecord.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- site_blueprint=self.blueprint,
- version=2,
- status='deployed',
- deployment_url='https://test-site.igny8.com',
- deployed_at=timezone.now()
- )
-
- result = self.service.get_latest_deployment(self.blueprint)
-
- self.assertIsNotNone(result)
- self.assertEqual(result.version, 2)
- self.assertEqual(result.status, 'deployed')
-
- def test_rollback_reverts_to_previous_version(self):
- """Test: Deployment works end-to-end"""
- DeploymentRecord.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- site_blueprint=self.blueprint,
- version=1,
- status='deployed',
- deployment_url='https://test-site.igny8.com',
- deployed_at=timezone.now()
- )
-
- result = self.service.rollback(self.blueprint, target_version=1)
-
- self.assertTrue(result.get('success'))
- self.blueprint.refresh_from_db()
- self.assertEqual(self.blueprint.deployed_version, 1)
-
diff --git a/backend/igny8_core/business/publishing/tests/test_publisher_service.py b/backend/igny8_core/business/publishing/tests/test_publisher_service.py
deleted file mode 100644
index 18053d47..00000000
--- a/backend/igny8_core/business/publishing/tests/test_publisher_service.py
+++ /dev/null
@@ -1,151 +0,0 @@
-"""
-Tests for PublisherService
-Phase 5: Sites Renderer & Publishing
-"""
-from django.test import TestCase
-from django.utils import timezone
-from unittest.mock import Mock, patch
-
-from igny8_core.auth.models import Account, Site, Sector, User, Plan, Industry, IndustrySector
-from igny8_core.business.site_building.models import SiteBlueprint
-from igny8_core.business.publishing.models import PublishingRecord, DeploymentRecord
-from igny8_core.business.publishing.services.publisher_service import PublisherService
-
-
-class PublisherServiceTestCase(TestCase):
- """Test cases for PublisherService"""
-
- def setUp(self):
- """Set up test data"""
- # Create plan first
- self.plan = Plan.objects.create(
- name="Test Plan",
- slug="test-plan",
- price=0,
- credits_per_month=1000
- )
-
- # Create user first (Account needs owner)
- self.user = User.objects.create_user(
- username='testuser',
- email='test@test.com',
- password='testpass123',
- role='owner'
- )
-
- # Create account with owner
- self.account = Account.objects.create(
- name="Test Account",
- slug="test-account",
- plan=self.plan,
- owner=self.user
- )
-
- # Update user to have account
- self.user.account = self.account
- self.user.save()
-
- # Create industry and sector
- self.industry = Industry.objects.create(
- name="Test Industry",
- slug="test-industry"
- )
-
- self.industry_sector = IndustrySector.objects.create(
- industry=self.industry,
- name="Test Sector",
- slug="test-sector"
- )
-
- self.site = Site.objects.create(
- account=self.account,
- name="Test Site",
- slug="test-site",
- industry=self.industry
- )
- self.sector = Sector.objects.create(
- account=self.account,
- site=self.site,
- industry_sector=self.industry_sector,
- name="Test Sector",
- slug="test-sector"
- )
- self.blueprint = SiteBlueprint.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- name="Test Blueprint",
- status='ready'
- )
- self.service = PublisherService()
-
- def test_publish_to_sites_creates_deployment_record(self):
- """Test: Deployment works end-to-end"""
- # Don't mock deploy - let it run to create the deployment record
- # But mock the filesystem operations to avoid actual file writes
- with patch('igny8_core.business.publishing.services.adapters.sites_renderer_adapter.Path.mkdir'), \
- patch('igny8_core.business.publishing.services.adapters.sites_renderer_adapter.open', create=True) as mock_open:
- mock_file = mock_open.return_value.__enter__.return_value
-
- result = self.service.publish_to_sites(self.blueprint)
-
- self.assertTrue(result.get('success'))
- self.assertIsNotNone(result.get('deployment_url'))
-
- # Verify deployment record was created
- deployment = DeploymentRecord.objects.filter(site_blueprint=self.blueprint).first()
- self.assertIsNotNone(deployment)
-
- def test_get_deployment_status_returns_latest(self):
- """Test: Sites are accessible publicly"""
- DeploymentRecord.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- site_blueprint=self.blueprint,
- version=1,
- status='deployed',
- deployment_url='https://test-site.igny8.com',
- deployed_at=timezone.now()
- )
-
- status = self.service.get_deployment_status(self.blueprint)
-
- self.assertIsNotNone(status)
- self.assertEqual(status.status, 'deployed')
- self.assertIsNotNone(status.deployment_url)
-
- def test_publish_content_to_multiple_destinations(self):
- """Test: Multi-destination publishing works"""
- from igny8_core.business.content.models import Content
-
- content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="Test
"
- )
-
- with patch.object(self.service, '_get_adapter') as mock_get_adapter:
- mock_adapter = Mock()
- mock_adapter.publish.return_value = {
- 'success': True,
- 'external_id': '123',
- 'url': 'https://example.com/post/123'
- }
- mock_get_adapter.return_value = mock_adapter
-
- result = self.service.publish_content(
- content_id=content.id,
- destinations=['wordpress', 'sites'],
- account=self.account
- )
-
- self.assertTrue(result.get('success'))
- self.assertEqual(len(result.get('results', [])), 2)
-
- # Verify publishing records were created
- records = PublishingRecord.objects.filter(content=content)
- self.assertEqual(records.count(), 2)
-
diff --git a/backend/igny8_core/modules/linker/tests/__init__.py b/backend/igny8_core/modules/linker/tests/__init__.py
deleted file mode 100644
index 272a5cea..00000000
--- a/backend/igny8_core/modules/linker/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Linker module tests
-
diff --git a/backend/igny8_core/modules/linker/tests/test_views.py b/backend/igny8_core/modules/linker/tests/test_views.py
deleted file mode 100644
index 123d2d7e..00000000
--- a/backend/igny8_core/modules/linker/tests/test_views.py
+++ /dev/null
@@ -1,137 +0,0 @@
-"""
-Tests for Linker API endpoints
-"""
-from unittest.mock import patch
-from django.test import TestCase
-from rest_framework.test import APIClient
-from rest_framework import status
-from igny8_core.business.content.models import Content
-from igny8_core.business.billing.exceptions import InsufficientCreditsError
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class LinkerAPITests(IntegrationTestBase):
- """Tests for Linker API endpoints"""
-
- def setUp(self):
- super().setUp()
- self.client = APIClient()
- self.client.force_authenticate(user=self.user)
-
- # Create test content
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="Test content.
",
- word_count=100,
- status='draft'
- )
-
- def test_process_endpoint_requires_authentication(self):
- """Test that process endpoint requires authentication"""
- client = APIClient() # Not authenticated
- response = client.post('/api/v1/linker/process/', {
- 'content_id': self.content.id
- })
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
-
- @patch('igny8_core.modules.linker.views.LinkerService.process')
- def test_process_endpoint_success(self, mock_process):
- """Test successful processing"""
- mock_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Linked Content",
- html_content="Linked.
",
- internal_links=[{'content_id': 1, 'anchor_text': 'test'}],
- linker_version=1,
- word_count=100
- )
- mock_process.return_value = mock_content
-
- response = self.client.post('/api/v1/linker/process/', {
- 'content_id': self.content.id
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['data']['content_id'], self.content.id)
- self.assertEqual(response.data['data']['links_added'], 1)
-
- def test_process_endpoint_invalid_content_id(self):
- """Test process endpoint with invalid content ID"""
- response = self.client.post('/api/v1/linker/process/', {
- 'content_id': 99999
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
- @patch('igny8_core.modules.linker.views.LinkerService.process')
- def test_process_endpoint_insufficient_credits(self, mock_process):
- """Test process endpoint with insufficient credits"""
- mock_process.side_effect = InsufficientCreditsError("Insufficient credits")
-
- response = self.client.post('/api/v1/linker/process/', {
- 'content_id': self.content.id
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_402_PAYMENT_REQUIRED)
-
- @patch('igny8_core.modules.linker.views.LinkerService.batch_process')
- def test_batch_process_endpoint_success(self, mock_batch):
- """Test successful batch processing"""
- content2 = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Content 2",
- word_count=100
- )
-
- mock_batch.return_value = [self.content, content2]
-
- response = self.client.post('/api/v1/linker/batch_process/', {
- 'content_ids': [self.content.id, content2.id]
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertEqual(len(response.data['data']), 2)
-
- def test_batch_process_endpoint_validation(self):
- """Test batch process endpoint validation"""
- response = self.client.post('/api/v1/linker/batch_process/', {
- 'content_ids': [] # Empty list
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
- def test_process_endpoint_respects_account_isolation(self):
- """Test that process endpoint respects account isolation"""
- from igny8_core.auth.models import Account
- other_account = Account.objects.create(
- name="Other Account",
- slug="other",
- plan=self.plan,
- owner=self.user
- )
-
- other_content = Content.objects.create(
- account=other_account,
- site=self.site,
- sector=self.sector,
- title="Other Content",
- word_count=100
- )
-
- response = self.client.post('/api/v1/linker/process/', {
- 'content_id': other_content.id
- }, format='json')
-
- # Should return 400 because content belongs to different account
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
diff --git a/backend/igny8_core/modules/optimizer/tests/__init__.py b/backend/igny8_core/modules/optimizer/tests/__init__.py
deleted file mode 100644
index 3d9b9227..00000000
--- a/backend/igny8_core/modules/optimizer/tests/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# Optimizer module tests
-
diff --git a/backend/igny8_core/modules/optimizer/tests/test_views.py b/backend/igny8_core/modules/optimizer/tests/test_views.py
deleted file mode 100644
index 1d0ae388..00000000
--- a/backend/igny8_core/modules/optimizer/tests/test_views.py
+++ /dev/null
@@ -1,180 +0,0 @@
-"""
-Tests for Optimizer API endpoints
-"""
-from unittest.mock import patch
-from django.test import TestCase
-from rest_framework.test import APIClient
-from rest_framework import status
-from igny8_core.business.content.models import Content
-from igny8_core.business.optimization.models import OptimizationTask
-from igny8_core.business.billing.exceptions import InsufficientCreditsError
-from igny8_core.api.tests.test_integration_base import IntegrationTestBase
-
-
-class OptimizerAPITests(IntegrationTestBase):
- """Tests for Optimizer API endpoints"""
-
- def setUp(self):
- super().setUp()
- self.client = APIClient()
- self.client.force_authenticate(user=self.user)
-
- # Create test content
- self.content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Test Content",
- html_content="Test content.
",
- word_count=500,
- status='draft',
- source='igny8'
- )
-
- def test_optimize_endpoint_requires_authentication(self):
- """Test that optimize endpoint requires authentication"""
- client = APIClient() # Not authenticated
- response = client.post('/api/v1/optimizer/optimize/', {
- 'content_id': self.content.id
- })
-
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
-
- @patch('igny8_core.modules.optimizer.views.OptimizerService.optimize_from_writer')
- def test_optimize_endpoint_success(self, mock_optimize):
- """Test successful optimization"""
- optimized_content = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Optimized",
- html_content="Optimized.
",
- word_count=500,
- optimizer_version=1,
- optimization_scores={'overall_score': 75.0}
- )
- mock_optimize.return_value = optimized_content
-
- # Create optimization task
- task = OptimizationTask.objects.create(
- content=optimized_content,
- scores_before={'overall_score': 50.0},
- scores_after={'overall_score': 75.0},
- status='completed',
- account=self.account
- )
-
- response = self.client.post('/api/v1/optimizer/optimize/', {
- 'content_id': self.content.id,
- 'entry_point': 'writer'
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertEqual(response.data['data']['content_id'], self.content.id)
-
- def test_optimize_endpoint_all_entry_points(self):
- """Test optimize endpoint with all entry point values"""
- entry_points = ['auto', 'writer', 'wordpress', 'external', 'manual']
-
- for entry_point in entry_points:
- with patch(f'igny8_core.modules.optimizer.views.OptimizerService.optimize_{entry_point if entry_point != "auto" else "from_writer"}') as mock_opt:
- if entry_point == 'auto':
- mock_opt = patch('igny8_core.modules.optimizer.views.OptimizerService.optimize_from_writer')
- mock_opt.return_value = self.content
-
- response = self.client.post('/api/v1/optimizer/optimize/', {
- 'content_id': self.content.id,
- 'entry_point': entry_point
- }, format='json')
-
- # Should accept all entry points
- self.assertIn(response.status_code, [status.HTTP_200_OK, status.HTTP_400_BAD_REQUEST])
-
- @patch('igny8_core.modules.optimizer.views.OptimizerService.optimize_from_writer')
- def test_batch_optimize_endpoint_success(self, mock_optimize):
- """Test successful batch optimization"""
- content2 = Content.objects.create(
- account=self.account,
- site=self.site,
- sector=self.sector,
- title="Content 2",
- word_count=500,
- source='igny8'
- )
-
- mock_optimize.return_value = self.content
-
- response = self.client.post('/api/v1/optimizer/batch_optimize/', {
- 'content_ids': [self.content.id, content2.id],
- 'entry_point': 'writer'
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertIn('succeeded', response.data['data'])
-
- @patch('igny8_core.modules.optimizer.views.OptimizerService.analyze_only')
- def test_analyze_endpoint_success(self, mock_analyze):
- """Test analyze endpoint returns scores"""
- scores = {
- 'seo_score': 50.0,
- 'readability_score': 60.0,
- 'engagement_score': 55.0,
- 'overall_score': 55.0
- }
- mock_analyze.return_value = scores
-
- response = self.client.post('/api/v1/optimizer/analyze/', {
- 'content_id': self.content.id
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertTrue(response.data['success'])
- self.assertIn('scores', response.data['data'])
- self.assertEqual(response.data['data']['scores']['overall_score'], 55.0)
-
- @patch('igny8_core.modules.optimizer.views.OptimizerService.optimize_from_writer')
- def test_optimize_endpoint_insufficient_credits(self, mock_optimize):
- """Test optimize endpoint with insufficient credits"""
- mock_optimize.side_effect = InsufficientCreditsError("Insufficient credits")
-
- response = self.client.post('/api/v1/optimizer/optimize/', {
- 'content_id': self.content.id
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_402_PAYMENT_REQUIRED)
-
- def test_optimize_endpoint_invalid_content_id(self):
- """Test optimize endpoint with invalid content ID"""
- response = self.client.post('/api/v1/optimizer/optimize/', {
- 'content_id': 99999
- }, format='json')
-
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
- def test_optimize_endpoint_respects_account_isolation(self):
- """Test that optimize endpoint respects account isolation"""
- from igny8_core.auth.models import Account
- other_account = Account.objects.create(
- name="Other Account",
- slug="other",
- plan=self.plan,
- owner=self.user
- )
-
- other_content = Content.objects.create(
- account=other_account,
- site=self.site,
- sector=self.sector,
- title="Other Content",
- word_count=100
- )
-
- response = self.client.post('/api/v1/optimizer/optimize/', {
- 'content_id': other_content.id
- }, format='json')
-
- # Should return 400 because content belongs to different account
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
diff --git a/backend/igny8_core/test_settings.py b/backend/igny8_core/test_settings.py
deleted file mode 100644
index 5abce93e..00000000
--- a/backend/igny8_core/test_settings.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""
-Test settings - auto-clobber test database
-"""
-from igny8_core.settings import *
-
-# Auto-clobber test database
-TEST_RUNNER = 'django.test.runner.DiscoverRunner'
-
diff --git a/backups/20260113_pre_v1_full_backup.sql b/backups/20260113_pre_v1_full_backup.sql
new file mode 100644
index 00000000..7bc3ece2
--- /dev/null
+++ b/backups/20260113_pre_v1_full_backup.sql
@@ -0,0 +1,23348 @@
+--
+-- PostgreSQL database dump
+--
+
+\restrict PUVE48TDasY77PgrE54IWB6JYHS4RdcgJkolpMhpw3CQikDoinRpBJ8K3EZ8pTM
+
+-- Dumped from database version 15.14 (Debian 15.14-1.pgdg13+1)
+-- Dumped by pg_dump version 15.14 (Debian 15.14-1.pgdg13+1)
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: admin_interface_theme; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.admin_interface_theme (
+ id integer NOT NULL,
+ name character varying(50) NOT NULL,
+ active boolean NOT NULL,
+ title character varying(50) NOT NULL,
+ title_visible boolean NOT NULL,
+ logo character varying(100) NOT NULL,
+ logo_visible boolean NOT NULL,
+ css_header_background_color character varying(10) NOT NULL,
+ title_color character varying(10) NOT NULL,
+ css_header_text_color character varying(10) NOT NULL,
+ css_header_link_color character varying(10) NOT NULL,
+ css_header_link_hover_color character varying(10) NOT NULL,
+ css_module_background_color character varying(10) NOT NULL,
+ css_module_text_color character varying(10) NOT NULL,
+ css_module_link_color character varying(10) NOT NULL,
+ css_module_link_hover_color character varying(10) NOT NULL,
+ css_module_rounded_corners boolean NOT NULL,
+ css_generic_link_color character varying(10) NOT NULL,
+ css_generic_link_hover_color character varying(10) NOT NULL,
+ css_save_button_background_color character varying(10) NOT NULL,
+ css_save_button_background_hover_color character varying(10) NOT NULL,
+ css_save_button_text_color character varying(10) NOT NULL,
+ css_delete_button_background_color character varying(10) NOT NULL,
+ css_delete_button_background_hover_color character varying(10) NOT NULL,
+ css_delete_button_text_color character varying(10) NOT NULL,
+ list_filter_dropdown boolean NOT NULL,
+ related_modal_active boolean NOT NULL,
+ related_modal_background_color character varying(10) NOT NULL,
+ related_modal_rounded_corners boolean NOT NULL,
+ logo_color character varying(10) NOT NULL,
+ recent_actions_visible boolean NOT NULL,
+ favicon character varying(100) NOT NULL,
+ related_modal_background_opacity character varying(5) NOT NULL,
+ env_name character varying(50) NOT NULL,
+ env_visible_in_header boolean NOT NULL,
+ env_color character varying(10) NOT NULL,
+ env_visible_in_favicon boolean NOT NULL,
+ related_modal_close_button_visible boolean NOT NULL,
+ language_chooser_active boolean NOT NULL,
+ language_chooser_display character varying(10) NOT NULL,
+ list_filter_sticky boolean NOT NULL,
+ form_pagination_sticky boolean NOT NULL,
+ form_submit_sticky boolean NOT NULL,
+ css_module_background_selected_color character varying(10) NOT NULL,
+ css_module_link_selected_color character varying(10) NOT NULL,
+ css text NOT NULL
+);
+
+
+ALTER TABLE public.admin_interface_theme OWNER TO igny8;
+
+--
+-- Name: admin_interface_theme_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.admin_interface_theme ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.admin_interface_theme_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_group; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_group (
+ id integer NOT NULL,
+ name character varying(150) NOT NULL
+);
+
+
+ALTER TABLE public.auth_group OWNER TO igny8;
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_group ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_group_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_group_permissions (
+ id bigint NOT NULL,
+ group_id integer NOT NULL,
+ permission_id integer NOT NULL
+);
+
+
+ALTER TABLE public.auth_group_permissions OWNER TO igny8;
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_group_permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_group_permissions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_permission; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_permission (
+ id integer NOT NULL,
+ name character varying(255) NOT NULL,
+ content_type_id integer NOT NULL,
+ codename character varying(100) NOT NULL
+);
+
+
+ALTER TABLE public.auth_permission OWNER TO igny8;
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_permission ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_permission_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_user (
+ id integer NOT NULL,
+ password character varying(128) NOT NULL,
+ last_login timestamp with time zone,
+ is_superuser boolean NOT NULL,
+ username character varying(150) NOT NULL,
+ first_name character varying(150) NOT NULL,
+ last_name character varying(150) NOT NULL,
+ email character varying(254) NOT NULL,
+ is_staff boolean NOT NULL,
+ is_active boolean NOT NULL,
+ date_joined timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.auth_user OWNER TO igny8;
+
+--
+-- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_user_groups (
+ id bigint NOT NULL,
+ user_id integer NOT NULL,
+ group_id integer NOT NULL
+);
+
+
+ALTER TABLE public.auth_user_groups OWNER TO igny8;
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_user_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_user ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.auth_user_user_permissions (
+ id bigint NOT NULL,
+ user_id integer NOT NULL,
+ permission_id integer NOT NULL
+);
+
+
+ALTER TABLE public.auth_user_user_permissions OWNER TO igny8;
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.auth_user_user_permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_user_permissions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: basefiles; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.basefiles (
+ baseid integer NOT NULL,
+ jobid integer NOT NULL,
+ fileid bigint NOT NULL,
+ fileindex integer,
+ basejobid integer
+);
+
+
+ALTER TABLE public.basefiles OWNER TO igny8;
+
+--
+-- Name: basefiles_baseid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.basefiles_baseid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.basefiles_baseid_seq OWNER TO igny8;
+
+--
+-- Name: basefiles_baseid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.basefiles_baseid_seq OWNED BY public.basefiles.baseid;
+
+
+--
+-- Name: billing_historicalaimodelconfig; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.billing_historicalaimodelconfig (
+ id bigint NOT NULL,
+ model_name character varying(100) NOT NULL,
+ display_name character varying(200) NOT NULL,
+ model_type character varying(20) NOT NULL,
+ provider character varying(50) NOT NULL,
+ context_window integer,
+ is_active boolean NOT NULL,
+ is_default boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ history_id integer NOT NULL,
+ history_date timestamp with time zone NOT NULL,
+ history_change_reason character varying(100),
+ history_type character varying(1) NOT NULL,
+ history_user_id bigint,
+ credits_per_image integer,
+ quality_tier character varying(20),
+ tokens_per_credit integer,
+ capabilities jsonb NOT NULL,
+ cost_per_1k_input numeric(10,6),
+ cost_per_1k_output numeric(10,6),
+ max_tokens integer,
+ landscape_size character varying(20),
+ square_size character varying(20) NOT NULL,
+ valid_sizes jsonb NOT NULL
+);
+
+
+ALTER TABLE public.billing_historicalaimodelconfig OWNER TO igny8;
+
+--
+-- Name: billing_historicalaimodelconfig_history_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.billing_historicalaimodelconfig ALTER COLUMN history_id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.billing_historicalaimodelconfig_history_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: billing_historicalcreditcostconfig; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.billing_historicalcreditcostconfig (
+ operation_type character varying(50) NOT NULL,
+ display_name character varying(100) NOT NULL,
+ description text NOT NULL,
+ is_active boolean NOT NULL,
+ history_id integer NOT NULL,
+ history_date timestamp with time zone NOT NULL,
+ history_change_reason character varying(100),
+ history_type character varying(1) NOT NULL,
+ history_user_id bigint,
+ calculation_mode character varying(20),
+ flat_rate_credits integer,
+ per_item_credits numeric(10,2),
+ per_item_unit integer,
+ base_credits integer NOT NULL
+);
+
+
+ALTER TABLE public.billing_historicalcreditcostconfig OWNER TO igny8;
+
+--
+-- Name: billing_historicalcreditcostconfig_history_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.billing_historicalcreditcostconfig ALTER COLUMN history_id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.billing_historicalcreditcostconfig_history_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: billing_historicalpayment; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.billing_historicalpayment (
+ id bigint NOT NULL,
+ amount numeric(10,2) NOT NULL,
+ currency character varying(3) NOT NULL,
+ status character varying(20) NOT NULL,
+ payment_method character varying(50) NOT NULL,
+ stripe_payment_intent_id character varying(255),
+ stripe_charge_id character varying(255),
+ paypal_order_id character varying(255),
+ paypal_capture_id character varying(255),
+ manual_reference character varying(255),
+ manual_notes text NOT NULL,
+ admin_notes text NOT NULL,
+ approved_at timestamp with time zone,
+ processed_at timestamp with time zone,
+ failed_at timestamp with time zone,
+ refunded_at timestamp with time zone,
+ failure_reason text NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ history_id integer NOT NULL,
+ history_date timestamp with time zone NOT NULL,
+ history_change_reason character varying(100),
+ history_type character varying(1) NOT NULL,
+ tenant_id bigint,
+ approved_by_id bigint,
+ history_user_id bigint,
+ invoice_id bigint
+);
+
+
+ALTER TABLE public.billing_historicalpayment OWNER TO igny8;
+
+--
+-- Name: billing_historicalpayment_history_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.billing_historicalpayment ALTER COLUMN history_id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.billing_historicalpayment_history_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: cdimages; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.cdimages (
+ mediaid integer NOT NULL,
+ lastburn timestamp without time zone NOT NULL
+);
+
+
+ALTER TABLE public.cdimages OWNER TO igny8;
+
+--
+-- Name: client; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.client (
+ clientid integer NOT NULL,
+ name text NOT NULL,
+ uname text NOT NULL,
+ autoprune smallint DEFAULT 0,
+ fileretention bigint DEFAULT 0,
+ jobretention bigint DEFAULT 0
+);
+
+
+ALTER TABLE public.client OWNER TO igny8;
+
+--
+-- Name: client_clientid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.client_clientid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.client_clientid_seq OWNER TO igny8;
+
+--
+-- Name: client_clientid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.client_clientid_seq OWNED BY public.client.clientid;
+
+
+--
+-- Name: counters; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.counters (
+ counter text NOT NULL,
+ minvalue integer DEFAULT 0,
+ maxvalue integer DEFAULT 0,
+ currentvalue integer DEFAULT 0,
+ wrapcounter text NOT NULL
+);
+
+
+ALTER TABLE public.counters OWNER TO igny8;
+
+--
+-- Name: device; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.device (
+ deviceid integer NOT NULL,
+ name text NOT NULL,
+ mediatypeid integer NOT NULL,
+ storageid integer NOT NULL,
+ devmounts integer DEFAULT 0 NOT NULL,
+ devreadbytes bigint DEFAULT 0 NOT NULL,
+ devwritebytes bigint DEFAULT 0 NOT NULL,
+ devreadbytessincecleaning bigint DEFAULT 0 NOT NULL,
+ devwritebytessincecleaning bigint DEFAULT 0 NOT NULL,
+ devreadtime bigint DEFAULT 0 NOT NULL,
+ devwritetime bigint DEFAULT 0 NOT NULL,
+ devreadtimesincecleaning bigint DEFAULT 0 NOT NULL,
+ devwritetimesincecleaning bigint DEFAULT 0 NOT NULL,
+ cleaningdate timestamp without time zone,
+ cleaningperiod bigint DEFAULT 0 NOT NULL
+);
+
+
+ALTER TABLE public.device OWNER TO igny8;
+
+--
+-- Name: device_deviceid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.device_deviceid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.device_deviceid_seq OWNER TO igny8;
+
+--
+-- Name: device_deviceid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.device_deviceid_seq OWNED BY public.device.deviceid;
+
+
+--
+-- Name: django_admin_log; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_admin_log (
+ id integer NOT NULL,
+ action_time timestamp with time zone NOT NULL,
+ object_id text,
+ object_repr character varying(200) NOT NULL,
+ action_flag smallint NOT NULL,
+ change_message text NOT NULL,
+ content_type_id integer,
+ user_id bigint NOT NULL,
+ CONSTRAINT django_admin_log_action_flag_check CHECK ((action_flag >= 0))
+);
+
+
+ALTER TABLE public.django_admin_log OWNER TO igny8;
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_admin_log ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_admin_log_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_celery_results_chordcounter; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_celery_results_chordcounter (
+ id integer NOT NULL,
+ group_id character varying(255) NOT NULL,
+ sub_tasks text NOT NULL,
+ count integer NOT NULL,
+ CONSTRAINT django_celery_results_chordcounter_count_check CHECK ((count >= 0))
+);
+
+
+ALTER TABLE public.django_celery_results_chordcounter OWNER TO igny8;
+
+--
+-- Name: django_celery_results_chordcounter_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_celery_results_chordcounter ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_celery_results_chordcounter_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_celery_results_groupresult; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_celery_results_groupresult (
+ id integer NOT NULL,
+ group_id character varying(255) NOT NULL,
+ date_created timestamp with time zone NOT NULL,
+ date_done timestamp with time zone NOT NULL,
+ content_type character varying(128) NOT NULL,
+ content_encoding character varying(64) NOT NULL,
+ result text
+);
+
+
+ALTER TABLE public.django_celery_results_groupresult OWNER TO igny8;
+
+--
+-- Name: django_celery_results_groupresult_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_celery_results_groupresult ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_celery_results_groupresult_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_celery_results_taskresult; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_celery_results_taskresult (
+ id integer NOT NULL,
+ task_id character varying(255) NOT NULL,
+ status character varying(50) NOT NULL,
+ content_type character varying(128) NOT NULL,
+ content_encoding character varying(64) NOT NULL,
+ result text,
+ date_done timestamp with time zone NOT NULL,
+ traceback text,
+ meta text,
+ task_args text,
+ task_kwargs text,
+ task_name character varying(255),
+ worker character varying(100),
+ date_created timestamp with time zone NOT NULL,
+ periodic_task_name character varying(255)
+);
+
+
+ALTER TABLE public.django_celery_results_taskresult OWNER TO igny8;
+
+--
+-- Name: django_celery_results_taskresult_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_celery_results_taskresult ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_celery_results_taskresult_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_content_type; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_content_type (
+ id integer NOT NULL,
+ app_label character varying(100) NOT NULL,
+ model character varying(100) NOT NULL
+);
+
+
+ALTER TABLE public.django_content_type OWNER TO igny8;
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_content_type ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_content_type_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_migrations; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_migrations (
+ id bigint NOT NULL,
+ app character varying(255) NOT NULL,
+ name character varying(255) NOT NULL,
+ applied timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.django_migrations OWNER TO igny8;
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.django_migrations ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_migrations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_session; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.django_session (
+ session_key character varying(40) NOT NULL,
+ session_data text NOT NULL,
+ expire_date timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.django_session OWNER TO igny8;
+
+--
+-- Name: file; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.file (
+ fileid bigint NOT NULL,
+ fileindex integer DEFAULT 0 NOT NULL,
+ jobid integer NOT NULL,
+ pathid integer NOT NULL,
+ filenameid integer NOT NULL,
+ deltaseq smallint DEFAULT 0 NOT NULL,
+ markid integer DEFAULT 0 NOT NULL,
+ lstat text NOT NULL,
+ md5 text NOT NULL
+);
+
+
+ALTER TABLE public.file OWNER TO igny8;
+
+--
+-- Name: file_fileid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.file_fileid_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.file_fileid_seq OWNER TO igny8;
+
+--
+-- Name: file_fileid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.file_fileid_seq OWNED BY public.file.fileid;
+
+
+--
+-- Name: filename; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.filename (
+ filenameid integer NOT NULL,
+ name text NOT NULL
+);
+ALTER TABLE ONLY public.filename ALTER COLUMN name SET STATISTICS 1000;
+
+
+ALTER TABLE public.filename OWNER TO igny8;
+
+--
+-- Name: filename_filenameid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.filename_filenameid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.filename_filenameid_seq OWNER TO igny8;
+
+--
+-- Name: filename_filenameid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.filename_filenameid_seq OWNED BY public.filename.filenameid;
+
+
+--
+-- Name: fileset; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.fileset (
+ filesetid integer NOT NULL,
+ fileset text NOT NULL,
+ md5 text NOT NULL,
+ createtime timestamp without time zone NOT NULL
+);
+
+
+ALTER TABLE public.fileset OWNER TO igny8;
+
+--
+-- Name: fileset_filesetid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.fileset_filesetid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.fileset_filesetid_seq OWNER TO igny8;
+
+--
+-- Name: fileset_filesetid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.fileset_filesetid_seq OWNED BY public.fileset.filesetid;
+
+
+--
+-- Name: igny8_account_payment_methods; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_account_payment_methods (
+ id bigint NOT NULL,
+ type character varying(50) NOT NULL,
+ display_name character varying(100) NOT NULL,
+ is_default boolean NOT NULL,
+ is_enabled boolean NOT NULL,
+ is_verified boolean NOT NULL,
+ country_code character varying(2) NOT NULL,
+ instructions text NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_account_payment_methods OWNER TO igny8;
+
+--
+-- Name: igny8_account_payment_methods_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_account_payment_methods ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_account_payment_methods_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_account_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_account_settings (
+ id bigint NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ key character varying(100) NOT NULL,
+ tenant_id bigint NOT NULL,
+ value jsonb NOT NULL
+);
+
+
+ALTER TABLE public.igny8_account_settings OWNER TO igny8;
+
+--
+-- Name: igny8_account_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_account_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_account_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_ai_model_config; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_ai_model_config (
+ id bigint NOT NULL,
+ model_name character varying(100) NOT NULL,
+ display_name character varying(200) NOT NULL,
+ model_type character varying(20) NOT NULL,
+ provider character varying(50) NOT NULL,
+ context_window integer,
+ is_active boolean NOT NULL,
+ is_default boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ credits_per_image integer,
+ quality_tier character varying(20),
+ tokens_per_credit integer,
+ capabilities jsonb NOT NULL,
+ cost_per_1k_input numeric(10,6),
+ cost_per_1k_output numeric(10,6),
+ max_tokens integer,
+ landscape_size character varying(20),
+ square_size character varying(20) DEFAULT '1024x1024'::character varying,
+ valid_sizes jsonb DEFAULT '[]'::jsonb
+);
+
+
+ALTER TABLE public.igny8_ai_model_config OWNER TO igny8;
+
+--
+-- Name: igny8_ai_model_config_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_ai_model_config ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_ai_model_config_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_ai_prompts; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_ai_prompts (
+ id bigint NOT NULL,
+ prompt_type character varying(50) NOT NULL,
+ prompt_value text NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ is_customized boolean NOT NULL,
+ default_prompt text NOT NULL
+);
+
+
+ALTER TABLE public.igny8_ai_prompts OWNER TO igny8;
+
+--
+-- Name: igny8_ai_prompts_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_ai_prompts ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_ai_prompts_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_ai_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_ai_settings (
+ id bigint NOT NULL,
+ integration_type character varying(50) NOT NULL,
+ config jsonb NOT NULL,
+ model_preferences jsonb NOT NULL,
+ cost_limits jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_ai_settings OWNER TO igny8;
+
+--
+-- Name: igny8_ai_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_ai_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_ai_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_ai_task_logs; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_ai_task_logs (
+ id bigint NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ task_id character varying(255),
+ function_name character varying(100) NOT NULL,
+ phase character varying(50) NOT NULL,
+ message text NOT NULL,
+ status character varying(20) NOT NULL,
+ duration integer,
+ cost numeric(10,6) NOT NULL,
+ tokens integer NOT NULL,
+ request_steps jsonb NOT NULL,
+ response_steps jsonb NOT NULL,
+ error text,
+ payload jsonb,
+ result jsonb,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_ai_task_logs OWNER TO igny8;
+
+--
+-- Name: igny8_ai_task_logs_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_ai_task_logs ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_ai_task_logs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_author_profiles; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_author_profiles (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text NOT NULL,
+ tone character varying(100) NOT NULL,
+ language character varying(50) NOT NULL,
+ structure_template jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ is_custom boolean NOT NULL,
+ cloned_from_id bigint
+);
+
+
+ALTER TABLE public.igny8_author_profiles OWNER TO igny8;
+
+--
+-- Name: igny8_author_profiles_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_author_profiles ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_author_profiles_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_automation_configs; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_automation_configs (
+ id bigint NOT NULL,
+ is_enabled boolean NOT NULL,
+ frequency character varying(20) NOT NULL,
+ scheduled_time time without time zone NOT NULL,
+ stage_1_batch_size integer NOT NULL,
+ stage_2_batch_size integer NOT NULL,
+ stage_3_batch_size integer NOT NULL,
+ stage_4_batch_size integer NOT NULL,
+ stage_5_batch_size integer NOT NULL,
+ stage_6_batch_size integer NOT NULL,
+ last_run_at timestamp with time zone,
+ next_run_at timestamp with time zone,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ account_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ within_stage_delay integer NOT NULL,
+ between_stage_delay integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_automation_configs OWNER TO igny8;
+
+--
+-- Name: igny8_automation_configs_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_automation_configs ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_automation_configs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_automation_rules; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_automation_rules (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text,
+ trigger character varying(50) NOT NULL,
+ schedule character varying(100),
+ conditions jsonb NOT NULL,
+ actions jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ status character varying(50) NOT NULL,
+ last_executed_at timestamp with time zone,
+ execution_count integer NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_automation_rules OWNER TO igny8;
+
+--
+-- Name: igny8_automation_rules_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_automation_rules ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_automation_rules_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_automation_runs; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_automation_runs (
+ id bigint NOT NULL,
+ run_id character varying(100) NOT NULL,
+ trigger_type character varying(20) NOT NULL,
+ status character varying(20) NOT NULL,
+ current_stage integer NOT NULL,
+ stage_1_result jsonb,
+ stage_2_result jsonb,
+ stage_3_result jsonb,
+ stage_4_result jsonb,
+ stage_5_result jsonb,
+ stage_6_result jsonb,
+ stage_7_result jsonb,
+ total_credits_used integer NOT NULL,
+ error_message text,
+ started_at timestamp with time zone NOT NULL,
+ completed_at timestamp with time zone,
+ account_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ cancelled_at timestamp with time zone,
+ paused_at timestamp with time zone,
+ resumed_at timestamp with time zone,
+ initial_snapshot jsonb NOT NULL
+);
+
+
+ALTER TABLE public.igny8_automation_runs OWNER TO igny8;
+
+--
+-- Name: igny8_automation_runs_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_automation_runs ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_automation_runs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_billing_configuration; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_billing_configuration (
+ id bigint NOT NULL,
+ default_tokens_per_credit integer NOT NULL,
+ default_credit_price_usd numeric(10,4) NOT NULL,
+ enable_token_based_reporting boolean NOT NULL,
+ credit_rounding_mode character varying(10) NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ updated_by_id bigint
+);
+
+
+ALTER TABLE public.igny8_billing_configuration OWNER TO igny8;
+
+--
+-- Name: igny8_billing_configuration_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_billing_configuration ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_billing_configuration_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_clusters; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_clusters (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text,
+ keywords_count integer NOT NULL,
+ volume integer NOT NULL,
+ mapped_pages integer NOT NULL,
+ status character varying(50) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ disabled boolean NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_clusters OWNER TO igny8;
+
+--
+-- Name: igny8_clusters_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_clusters ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_clusters_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content (
+ id bigint NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ content_html text NOT NULL,
+ word_count integer NOT NULL,
+ metadata jsonb DEFAULT '{}'::jsonb NOT NULL,
+ title character varying(255),
+ meta_title character varying(255),
+ meta_description text,
+ primary_keyword character varying(255),
+ secondary_keywords jsonb DEFAULT '[]'::jsonb NOT NULL,
+ status character varying(50) NOT NULL,
+ generated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
+ updated_at timestamp with time zone NOT NULL,
+ source character varying(50) NOT NULL,
+ sync_status character varying(50) DEFAULT ''::character varying,
+ external_id character varying(255),
+ external_url character varying(200),
+ sync_metadata jsonb DEFAULT '{}'::jsonb NOT NULL,
+ internal_links jsonb DEFAULT '[]'::jsonb NOT NULL,
+ linker_version integer DEFAULT 0 NOT NULL,
+ optimizer_version integer DEFAULT 0 NOT NULL,
+ optimization_scores jsonb DEFAULT '{}'::jsonb NOT NULL,
+ content_type character varying(50) NOT NULL,
+ json_blocks jsonb DEFAULT '[]'::jsonb NOT NULL,
+ structure_data jsonb DEFAULT '{}'::jsonb NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ task_id bigint,
+ cluster_id bigint,
+ content_structure character varying(50),
+ content_format character varying(50),
+ external_type character varying(100) DEFAULT ''::character varying,
+ external_metadata jsonb DEFAULT '{}'::jsonb,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone,
+ site_status character varying(50) NOT NULL,
+ scheduled_publish_at timestamp with time zone,
+ site_status_updated_at timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_content OWNER TO igny8;
+
+--
+-- Name: igny8_content_attributes; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_attributes (
+ id bigint NOT NULL,
+ attribute_type character varying(50) NOT NULL,
+ name character varying(120) NOT NULL,
+ value character varying(255),
+ external_id integer,
+ external_attribute_name character varying(100) NOT NULL,
+ source character varying(50) NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ cluster_id bigint,
+ content_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ task_id bigint
+);
+
+
+ALTER TABLE public.igny8_content_attributes OWNER TO igny8;
+
+--
+-- Name: igny8_content_attributes_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_attributes ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_attributes_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_cluster_map; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_cluster_map (
+ id bigint NOT NULL,
+ role character varying(50) NOT NULL,
+ source character varying(50) NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ cluster_id bigint NOT NULL,
+ content_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ task_id bigint
+);
+
+
+ALTER TABLE public.igny8_content_cluster_map OWNER TO igny8;
+
+--
+-- Name: igny8_content_cluster_map_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_cluster_map ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_cluster_map_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_ideas; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_ideas (
+ id bigint NOT NULL,
+ idea_title character varying(255) NOT NULL,
+ description text,
+ target_keywords character varying(500) NOT NULL,
+ status character varying(50) NOT NULL,
+ estimated_word_count integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ keyword_cluster_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ taxonomy_id bigint,
+ content_structure character varying(50) NOT NULL,
+ content_type character varying(50) NOT NULL,
+ disabled boolean NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_content_ideas OWNER TO igny8;
+
+--
+-- Name: igny8_content_ideas_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_ideas ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_ideas_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_ideas_keyword_objects (
+ id bigint NOT NULL,
+ contentideas_id bigint NOT NULL,
+ keywords_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_content_ideas_keyword_objects OWNER TO igny8;
+
+--
+-- Name: igny8_content_ideas_keyword_objects_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_ideas_keyword_objects ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_ideas_keyword_objects_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_taxonomy_map; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_taxonomy_map (
+ id bigint NOT NULL,
+ source character varying(50) NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ content_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ taxonomy_id bigint NOT NULL,
+ task_id bigint
+);
+
+
+ALTER TABLE public.igny8_content_taxonomy_map OWNER TO igny8;
+
+--
+-- Name: igny8_content_taxonomy_map_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_taxonomy_map ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_taxonomy_map_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_taxonomy_relations; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_taxonomy_relations (
+ id bigint NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ content_id bigint NOT NULL,
+ taxonomy_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_content_taxonomy_relations OWNER TO igny8;
+
+--
+-- Name: igny8_content_taxonomy_relations_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_taxonomy_relations ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_taxonomy_relations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_taxonomy_terms; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_taxonomy_terms (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ taxonomy_type character varying(50) NOT NULL,
+ description text NOT NULL,
+ external_id integer,
+ external_taxonomy character varying(100) NOT NULL,
+ sync_status character varying(50) NOT NULL,
+ count integer NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ parent_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_content_taxonomy_terms OWNER TO igny8;
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_content_taxonomy_terms_clusters (
+ id bigint NOT NULL,
+ contenttaxonomy_id bigint NOT NULL,
+ clusters_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_content_taxonomy_terms_clusters OWNER TO igny8;
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_taxonomy_terms_clusters ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_taxonomy_terms_clusters_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_content_taxonomy_terms ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_content_taxonomy_terms_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_core_auth_historicalaccount (
+ id bigint NOT NULL,
+ is_deleted boolean NOT NULL,
+ deleted_at timestamp with time zone,
+ restore_until timestamp with time zone,
+ delete_reason character varying(255),
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ stripe_customer_id character varying(255),
+ credits integer NOT NULL,
+ status character varying(20) NOT NULL,
+ payment_method character varying(30) NOT NULL,
+ deletion_retention_days integer NOT NULL,
+ billing_email character varying(254),
+ billing_address_line1 character varying(255) NOT NULL,
+ billing_address_line2 character varying(255) NOT NULL,
+ billing_city character varying(100) NOT NULL,
+ billing_state character varying(100) NOT NULL,
+ billing_postal_code character varying(20) NOT NULL,
+ billing_country character varying(2) NOT NULL,
+ tax_id character varying(100) NOT NULL,
+ usage_period_start timestamp with time zone,
+ usage_period_end timestamp with time zone,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ history_id integer NOT NULL,
+ history_date timestamp with time zone NOT NULL,
+ history_change_reason character varying(100),
+ history_type character varying(1) NOT NULL,
+ deleted_by_id bigint,
+ history_user_id bigint,
+ owner_id bigint,
+ plan_id bigint,
+ usage_ahrefs_queries integer NOT NULL,
+ CONSTRAINT igny8_core_auth_historicalaccount_deletion_retention_days_check CHECK ((deletion_retention_days >= 0))
+);
+
+
+ALTER TABLE public.igny8_core_auth_historicalaccount OWNER TO igny8;
+
+--
+-- Name: igny8_core_auth_historicalaccount_history_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_core_auth_historicalaccount ALTER COLUMN history_id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_core_auth_historicalaccount_history_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_credit_cost_config; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_credit_cost_config (
+ operation_type character varying(50) NOT NULL,
+ display_name character varying(100) NOT NULL,
+ description text NOT NULL,
+ is_active boolean NOT NULL,
+ calculation_mode character varying(20) NOT NULL,
+ flat_rate_credits integer,
+ per_item_credits numeric(10,2),
+ per_item_unit integer,
+ base_credits integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_credit_cost_config OWNER TO igny8;
+
+--
+-- Name: igny8_credit_packages; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_credit_packages (
+ id bigint NOT NULL,
+ name character varying(100) NOT NULL,
+ slug character varying(50) NOT NULL,
+ credits integer NOT NULL,
+ price numeric(10,2) NOT NULL,
+ discount_percentage integer NOT NULL,
+ stripe_product_id character varying(255),
+ stripe_price_id character varying(255),
+ paypal_plan_id character varying(255),
+ is_active boolean NOT NULL,
+ is_featured boolean NOT NULL,
+ description text NOT NULL,
+ features jsonb NOT NULL,
+ sort_order integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_credit_packages OWNER TO igny8;
+
+--
+-- Name: igny8_credit_packages_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_credit_packages ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_credit_packages_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_credit_transactions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_credit_transactions (
+ id bigint NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ transaction_type character varying(20) NOT NULL,
+ amount integer NOT NULL,
+ balance_after integer NOT NULL,
+ description character varying(255) NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ reference_id character varying(255) NOT NULL,
+ payment_id bigint
+);
+
+
+ALTER TABLE public.igny8_credit_transactions OWNER TO igny8;
+
+--
+-- Name: igny8_credit_transactions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_credit_transactions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_credit_transactions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_credit_usage_logs; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_credit_usage_logs (
+ id bigint NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ operation_type character varying(50) NOT NULL,
+ credits_used integer NOT NULL,
+ cost_usd numeric(10,4),
+ model_used character varying(100) NOT NULL,
+ tokens_input integer,
+ tokens_output integer,
+ related_object_type character varying(50) NOT NULL,
+ related_object_id integer,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ site_id bigint
+);
+
+
+ALTER TABLE public.igny8_credit_usage_logs OWNER TO igny8;
+
+--
+-- Name: igny8_credit_usage_logs_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_credit_usage_logs ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_credit_usage_logs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_deployment_records; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_deployment_records (
+ id bigint NOT NULL,
+ version integer NOT NULL,
+ deployed_version integer,
+ status character varying(20) NOT NULL,
+ deployed_at timestamp with time zone,
+ deployment_url character varying(200),
+ error_message text,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ site_blueprint_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_deployment_records OWNER TO igny8;
+
+--
+-- Name: igny8_deployment_records_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_deployment_records ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_deployment_records_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_email_log; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_email_log (
+ id bigint NOT NULL,
+ message_id character varying(200) NOT NULL,
+ to_email character varying(254) NOT NULL,
+ from_email character varying(254) NOT NULL,
+ subject character varying(500) NOT NULL,
+ template_name character varying(100) NOT NULL,
+ status character varying(20) NOT NULL,
+ provider character varying(50) NOT NULL,
+ error_message text NOT NULL,
+ tags jsonb NOT NULL,
+ sent_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_email_log OWNER TO igny8;
+
+--
+-- Name: igny8_email_log_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_email_log ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_email_log_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_email_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_email_settings (
+ id bigint NOT NULL,
+ from_email character varying(254) NOT NULL,
+ from_name character varying(100) NOT NULL,
+ reply_to_email character varying(254) NOT NULL,
+ company_name character varying(100) NOT NULL,
+ company_address text NOT NULL,
+ logo_url character varying(200) NOT NULL,
+ support_email character varying(254) NOT NULL,
+ support_url character varying(200) NOT NULL,
+ unsubscribe_url character varying(200) NOT NULL,
+ send_welcome_emails boolean NOT NULL,
+ send_billing_emails boolean NOT NULL,
+ send_subscription_emails boolean NOT NULL,
+ send_low_credit_warnings boolean NOT NULL,
+ low_credit_threshold integer NOT NULL,
+ renewal_reminder_days integer NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ updated_by_id bigint,
+ email_provider character varying(20) NOT NULL,
+ smtp_host character varying(255) NOT NULL,
+ smtp_password character varying(255) NOT NULL,
+ smtp_port integer NOT NULL,
+ smtp_timeout integer NOT NULL,
+ smtp_use_ssl boolean NOT NULL,
+ smtp_use_tls boolean NOT NULL,
+ smtp_username character varying(255) NOT NULL
+);
+
+
+ALTER TABLE public.igny8_email_settings OWNER TO igny8;
+
+--
+-- Name: igny8_email_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_email_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_email_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_email_templates; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_email_templates (
+ id bigint NOT NULL,
+ template_name character varying(100) NOT NULL,
+ template_path character varying(200) NOT NULL,
+ display_name character varying(100) NOT NULL,
+ description text NOT NULL,
+ template_type character varying(20) NOT NULL,
+ default_subject character varying(200) NOT NULL,
+ required_context jsonb NOT NULL,
+ sample_context jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ send_count integer NOT NULL,
+ last_sent_at timestamp with time zone,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_email_templates OWNER TO igny8;
+
+--
+-- Name: igny8_email_templates_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_email_templates ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_email_templates_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_global_ai_prompts; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_global_ai_prompts (
+ id bigint NOT NULL,
+ prompt_type character varying(50) NOT NULL,
+ prompt_value text NOT NULL,
+ description text NOT NULL,
+ variables jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ version integer NOT NULL,
+ last_updated timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_global_ai_prompts OWNER TO igny8;
+
+--
+-- Name: igny8_global_ai_prompts_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_global_ai_prompts ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_global_ai_prompts_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_global_author_profiles; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_global_author_profiles (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text NOT NULL,
+ tone character varying(100) NOT NULL,
+ language character varying(50) NOT NULL,
+ structure_template jsonb NOT NULL,
+ category character varying(50) NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_global_author_profiles OWNER TO igny8;
+
+--
+-- Name: igny8_global_author_profiles_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_global_author_profiles ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_global_author_profiles_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_global_integration_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_global_integration_settings (
+ id bigint NOT NULL,
+ openai_api_key character varying(500) NOT NULL,
+ openai_model character varying(100) NOT NULL,
+ openai_temperature double precision NOT NULL,
+ openai_max_tokens integer NOT NULL,
+ dalle_api_key character varying(500) NOT NULL,
+ dalle_model character varying(100) NOT NULL,
+ dalle_size character varying(20) NOT NULL,
+ runware_api_key character varying(500) NOT NULL,
+ is_active boolean NOT NULL,
+ last_updated timestamp with time zone NOT NULL,
+ updated_by_id bigint,
+ image_quality character varying(20) NOT NULL,
+ image_style character varying(30) NOT NULL,
+ runware_model character varying(100) NOT NULL,
+ desktop_image_size character varying(20) NOT NULL,
+ max_in_article_images integer NOT NULL,
+ default_image_service character varying(20) NOT NULL,
+ bria_api_key character varying(500) NOT NULL,
+ bria_model character varying(100) NOT NULL,
+ anthropic_api_key character varying(500) NOT NULL,
+ anthropic_model character varying(100) NOT NULL,
+ anthropic_temperature double precision NOT NULL,
+ anthropic_max_tokens integer NOT NULL,
+ default_text_provider character varying(20) NOT NULL
+);
+
+
+ALTER TABLE public.igny8_global_integration_settings OWNER TO igny8;
+
+--
+-- Name: igny8_global_integration_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_global_integration_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_global_integration_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_global_module_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_global_module_settings (
+ id bigint NOT NULL,
+ planner_enabled boolean NOT NULL,
+ writer_enabled boolean NOT NULL,
+ thinker_enabled boolean NOT NULL,
+ automation_enabled boolean NOT NULL,
+ site_builder_enabled boolean NOT NULL,
+ linker_enabled boolean NOT NULL,
+ optimizer_enabled boolean NOT NULL,
+ publisher_enabled boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_global_module_settings OWNER TO igny8;
+
+--
+-- Name: igny8_global_module_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_global_module_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_global_module_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_global_strategies; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_global_strategies (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text NOT NULL,
+ prompt_types jsonb NOT NULL,
+ section_logic jsonb NOT NULL,
+ category character varying(50) NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_global_strategies OWNER TO igny8;
+
+--
+-- Name: igny8_global_strategies_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_global_strategies ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_global_strategies_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_images; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_images (
+ id bigint NOT NULL,
+ image_type character varying(50) NOT NULL,
+ image_url character varying(500),
+ image_path character varying(500),
+ prompt text,
+ status character varying(50) NOT NULL,
+ "position" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ content_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ task_id bigint,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone,
+ caption text
+);
+
+
+ALTER TABLE public.igny8_images OWNER TO igny8;
+
+--
+-- Name: igny8_images_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_images ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_images_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_industries; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_industries (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ description text,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_industries OWNER TO igny8;
+
+--
+-- Name: igny8_industries_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_industries ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_industries_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_industry_sectors; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_industry_sectors (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ description text,
+ suggested_keywords jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ industry_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_industry_sectors OWNER TO igny8;
+
+--
+-- Name: igny8_industry_sectors_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_industry_sectors ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_industry_sectors_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_integration_providers; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_integration_providers (
+ provider_id character varying(50) NOT NULL,
+ display_name character varying(100) NOT NULL,
+ provider_type character varying(20) NOT NULL,
+ api_key character varying(500) NOT NULL,
+ api_secret character varying(500) NOT NULL,
+ webhook_secret character varying(500) NOT NULL,
+ api_endpoint character varying(200) NOT NULL,
+ config jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ is_sandbox boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ updated_by_id bigint
+);
+
+
+ALTER TABLE public.igny8_integration_providers OWNER TO igny8;
+
+--
+-- Name: igny8_integration_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_integration_settings (
+ id bigint NOT NULL,
+ integration_type character varying(50) NOT NULL,
+ config jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_integration_settings OWNER TO igny8;
+
+--
+-- Name: igny8_integration_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_integration_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_integration_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_invoices; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_invoices (
+ id bigint NOT NULL,
+ invoice_number character varying(50) NOT NULL,
+ subtotal numeric(10,2) NOT NULL,
+ tax numeric(10,2) NOT NULL,
+ total numeric(10,2) NOT NULL,
+ status character varying(20) NOT NULL,
+ invoice_date date NOT NULL,
+ due_date date NOT NULL,
+ paid_at timestamp with time zone,
+ line_items jsonb NOT NULL,
+ stripe_invoice_id character varying(255),
+ payment_method character varying(50),
+ notes text NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ currency character varying(3) NOT NULL,
+ subscription_id bigint
+);
+
+
+ALTER TABLE public.igny8_invoices OWNER TO igny8;
+
+--
+-- Name: igny8_invoices_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_invoices ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_invoices_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_keywords; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_keywords (
+ id bigint NOT NULL,
+ volume_override integer,
+ difficulty_override integer,
+ attribute_values jsonb NOT NULL,
+ status character varying(50) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ cluster_id bigint,
+ sector_id bigint NOT NULL,
+ seed_keyword_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ disabled boolean NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_keywords OWNER TO igny8;
+
+--
+-- Name: igny8_keywords_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_keywords ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_keywords_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_module_enable_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_module_enable_settings (
+ id bigint NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ planner_enabled boolean NOT NULL,
+ writer_enabled boolean NOT NULL,
+ thinker_enabled boolean NOT NULL,
+ automation_enabled boolean NOT NULL,
+ site_builder_enabled boolean NOT NULL,
+ linker_enabled boolean NOT NULL,
+ optimizer_enabled boolean NOT NULL,
+ publisher_enabled boolean NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_module_enable_settings OWNER TO igny8;
+
+--
+-- Name: igny8_module_enable_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_module_enable_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_module_enable_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_module_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_module_settings (
+ id bigint NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ module_name character varying(100) NOT NULL,
+ key character varying(255) NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_module_settings OWNER TO igny8;
+
+--
+-- Name: igny8_module_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_module_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_module_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_optimization_tasks; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_optimization_tasks (
+ id bigint NOT NULL,
+ scores_before jsonb NOT NULL,
+ scores_after jsonb NOT NULL,
+ html_before text NOT NULL,
+ html_after text NOT NULL,
+ status character varying(20) NOT NULL,
+ credits_used integer NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ content_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_optimization_tasks OWNER TO igny8;
+
+--
+-- Name: igny8_optimization_tasks_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_optimization_tasks ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_optimization_tasks_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_page_blueprints; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_page_blueprints (
+ id bigint NOT NULL,
+ slug character varying(255) NOT NULL,
+ title character varying(255) NOT NULL,
+ type character varying(50) NOT NULL,
+ blocks_json jsonb NOT NULL,
+ status character varying(20) NOT NULL,
+ "order" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ site_blueprint_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_page_blueprints OWNER TO igny8;
+
+--
+-- Name: igny8_page_blueprints_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_page_blueprints ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_page_blueprints_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_password_reset_tokens; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_password_reset_tokens (
+ id bigint NOT NULL,
+ token character varying(255) NOT NULL,
+ expires_at timestamp with time zone NOT NULL,
+ used boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ user_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_password_reset_tokens OWNER TO igny8;
+
+--
+-- Name: igny8_password_reset_tokens_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_password_reset_tokens ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_password_reset_tokens_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_payment_method_config; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_payment_method_config (
+ id bigint NOT NULL,
+ country_code character varying(2) NOT NULL,
+ payment_method character varying(50) NOT NULL,
+ is_enabled boolean NOT NULL,
+ display_name character varying(100) NOT NULL,
+ instructions text NOT NULL,
+ bank_name character varying(255) NOT NULL,
+ account_number character varying(255) NOT NULL,
+ routing_number character varying(255) NOT NULL,
+ swift_code character varying(255) NOT NULL,
+ wallet_type character varying(100) NOT NULL,
+ wallet_id character varying(255) NOT NULL,
+ sort_order integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ account_title character varying(255) NOT NULL,
+ iban character varying(255) NOT NULL
+);
+
+
+ALTER TABLE public.igny8_payment_method_config OWNER TO igny8;
+
+--
+-- Name: igny8_payment_method_config_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_payment_method_config ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_payment_method_config_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_payments; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_payments (
+ id bigint NOT NULL,
+ amount numeric(10,2) NOT NULL,
+ currency character varying(3) NOT NULL,
+ status character varying(20) NOT NULL,
+ payment_method character varying(50) NOT NULL,
+ stripe_payment_intent_id character varying(255),
+ stripe_charge_id character varying(255),
+ paypal_order_id character varying(255),
+ paypal_capture_id character varying(255),
+ manual_reference character varying(255),
+ manual_notes text NOT NULL,
+ approved_at timestamp with time zone,
+ processed_at timestamp with time zone,
+ failed_at timestamp with time zone,
+ refunded_at timestamp with time zone,
+ failure_reason text NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ approved_by_id bigint,
+ invoice_id bigint NOT NULL,
+ admin_notes text NOT NULL
+);
+
+
+ALTER TABLE public.igny8_payments OWNER TO igny8;
+
+--
+-- Name: igny8_payments_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_payments ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_payments_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_plan_limit_usage; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_plan_limit_usage (
+ id bigint NOT NULL,
+ limit_type character varying(50) NOT NULL,
+ amount_used integer NOT NULL,
+ period_start date NOT NULL,
+ period_end date NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_plan_limit_usage OWNER TO igny8;
+
+--
+-- Name: igny8_plan_limit_usage_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_plan_limit_usage ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_plan_limit_usage_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_plans; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_plans (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ price numeric(10,2) NOT NULL,
+ billing_cycle character varying(20) NOT NULL,
+ features jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ max_users integer NOT NULL,
+ max_sites integer NOT NULL,
+ max_industries integer,
+ max_author_profiles integer NOT NULL,
+ included_credits integer NOT NULL,
+ extra_credit_price numeric(10,2) NOT NULL,
+ allow_credit_topup boolean NOT NULL,
+ auto_credit_topup_threshold integer,
+ auto_credit_topup_amount integer,
+ stripe_product_id character varying(255),
+ stripe_price_id character varying(255),
+ credits_per_month integer NOT NULL,
+ is_internal boolean NOT NULL,
+ annual_discount_percent integer NOT NULL,
+ is_featured boolean NOT NULL,
+ max_keywords integer NOT NULL,
+ original_price numeric(10,2),
+ max_ahrefs_queries integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_plans OWNER TO igny8;
+
+--
+-- Name: igny8_plans_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_plans ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_plans_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_publishing_records; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_publishing_records (
+ id bigint NOT NULL,
+ destination character varying(50) NOT NULL,
+ destination_id character varying(255),
+ destination_url character varying(200),
+ status character varying(20) NOT NULL,
+ published_at timestamp with time zone,
+ error_message text,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ content_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ site_blueprint_id bigint
+);
+
+
+ALTER TABLE public.igny8_publishing_records OWNER TO igny8;
+
+--
+-- Name: igny8_publishing_records_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_publishing_records ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_publishing_records_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_publishing_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_publishing_settings (
+ id bigint NOT NULL,
+ auto_approval_enabled boolean NOT NULL,
+ auto_publish_enabled boolean NOT NULL,
+ daily_publish_limit integer NOT NULL,
+ weekly_publish_limit integer NOT NULL,
+ monthly_publish_limit integer NOT NULL,
+ publish_days jsonb NOT NULL,
+ publish_time_slots jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ CONSTRAINT igny8_publishing_settings_daily_publish_limit_check CHECK ((daily_publish_limit >= 0)),
+ CONSTRAINT igny8_publishing_settings_monthly_publish_limit_check CHECK ((monthly_publish_limit >= 0)),
+ CONSTRAINT igny8_publishing_settings_weekly_publish_limit_check CHECK ((weekly_publish_limit >= 0))
+);
+
+
+ALTER TABLE public.igny8_publishing_settings OWNER TO igny8;
+
+--
+-- Name: igny8_publishing_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_publishing_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_publishing_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_scheduled_tasks; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_scheduled_tasks (
+ id bigint NOT NULL,
+ scheduled_at timestamp with time zone NOT NULL,
+ executed_at timestamp with time zone,
+ status character varying(50) NOT NULL,
+ result jsonb NOT NULL,
+ error_message text,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ automation_rule_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_scheduled_tasks OWNER TO igny8;
+
+--
+-- Name: igny8_scheduled_tasks_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_scheduled_tasks ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_scheduled_tasks_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_sectors; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_sectors (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ description text,
+ is_active boolean NOT NULL,
+ status character varying(20) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ industry_sector_id bigint,
+ site_id bigint NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_sectors OWNER TO igny8;
+
+--
+-- Name: igny8_sectors_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_sectors ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_sectors_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_seed_keywords; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_seed_keywords (
+ id bigint NOT NULL,
+ keyword character varying(255) NOT NULL,
+ volume integer NOT NULL,
+ difficulty integer NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ industry_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ country character varying(2) NOT NULL
+);
+
+
+ALTER TABLE public.igny8_seed_keywords OWNER TO igny8;
+
+--
+-- Name: igny8_seed_keywords_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_seed_keywords ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_seed_keywords_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_blueprint_clusters; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_blueprint_clusters (
+ id bigint NOT NULL,
+ role character varying(50) NOT NULL,
+ coverage_status character varying(50) NOT NULL,
+ metadata jsonb NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ cluster_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ site_blueprint_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_blueprint_clusters OWNER TO igny8;
+
+--
+-- Name: igny8_site_blueprint_clusters_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_blueprint_clusters ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_blueprint_clusters_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_blueprint_taxonomies (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ taxonomy_type character varying(50) NOT NULL,
+ description text,
+ metadata jsonb NOT NULL,
+ external_reference character varying(255),
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ site_blueprint_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_blueprint_taxonomies OWNER TO igny8;
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_blueprint_taxonomies_clusters (
+ id bigint NOT NULL,
+ siteblueprinttaxonomy_id bigint NOT NULL,
+ clusters_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_blueprint_taxonomies_clusters OWNER TO igny8;
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_blueprint_taxonomies_clusters ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_blueprint_taxonomies_clusters_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_blueprint_taxonomies ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_blueprint_taxonomies_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_blueprints; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_blueprints (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text,
+ config_json jsonb NOT NULL,
+ structure_json jsonb NOT NULL,
+ status character varying(20) NOT NULL,
+ hosting_type character varying(50) NOT NULL,
+ version integer NOT NULL,
+ deployed_version integer,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_blueprints OWNER TO igny8;
+
+--
+-- Name: igny8_site_blueprints_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_blueprints ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_blueprints_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_builder_audience_profiles; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_builder_audience_profiles (
+ id bigint NOT NULL,
+ name character varying(120) NOT NULL,
+ description character varying(255) NOT NULL,
+ is_active boolean NOT NULL,
+ "order" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ CONSTRAINT igny8_site_builder_audience_profiles_order_check CHECK (("order" >= 0))
+);
+
+
+ALTER TABLE public.igny8_site_builder_audience_profiles OWNER TO igny8;
+
+--
+-- Name: igny8_site_builder_audience_profiles_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_builder_audience_profiles ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_builder_audience_profiles_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_builder_brand_personalities; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_builder_brand_personalities (
+ id bigint NOT NULL,
+ name character varying(120) NOT NULL,
+ description character varying(255) NOT NULL,
+ is_active boolean NOT NULL,
+ "order" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ CONSTRAINT igny8_site_builder_brand_personalities_order_check CHECK (("order" >= 0))
+);
+
+
+ALTER TABLE public.igny8_site_builder_brand_personalities OWNER TO igny8;
+
+--
+-- Name: igny8_site_builder_brand_personalities_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_builder_brand_personalities ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_builder_brand_personalities_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_builder_business_types; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_builder_business_types (
+ id bigint NOT NULL,
+ name character varying(120) NOT NULL,
+ description character varying(255) NOT NULL,
+ is_active boolean NOT NULL,
+ "order" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ CONSTRAINT igny8_site_builder_business_types_order_check CHECK (("order" >= 0))
+);
+
+
+ALTER TABLE public.igny8_site_builder_business_types OWNER TO igny8;
+
+--
+-- Name: igny8_site_builder_business_types_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_builder_business_types ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_builder_business_types_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_builder_hero_imagery; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_builder_hero_imagery (
+ id bigint NOT NULL,
+ name character varying(120) NOT NULL,
+ description character varying(255) NOT NULL,
+ is_active boolean NOT NULL,
+ "order" integer NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ CONSTRAINT igny8_site_builder_hero_imagery_order_check CHECK (("order" >= 0))
+);
+
+
+ALTER TABLE public.igny8_site_builder_hero_imagery OWNER TO igny8;
+
+--
+-- Name: igny8_site_builder_hero_imagery_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_builder_hero_imagery ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_builder_hero_imagery_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_integrations; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_integrations (
+ id bigint NOT NULL,
+ platform character varying(50) NOT NULL,
+ platform_type character varying(50) NOT NULL,
+ config_json jsonb NOT NULL,
+ credentials_json jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ sync_enabled boolean NOT NULL,
+ last_sync_at timestamp with time zone,
+ sync_status character varying(20) NOT NULL,
+ sync_error text,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ site_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_integrations OWNER TO igny8;
+
+--
+-- Name: igny8_site_integrations_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_integrations ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_integrations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_site_user_access; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_site_user_access (
+ id bigint NOT NULL,
+ granted_at timestamp with time zone NOT NULL,
+ granted_by_id bigint,
+ site_id bigint NOT NULL,
+ user_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_site_user_access OWNER TO igny8;
+
+--
+-- Name: igny8_site_user_access_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_site_user_access ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_site_user_access_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_sites; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_sites (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ domain character varying(200),
+ description text,
+ is_active boolean NOT NULL,
+ status character varying(20) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ wp_url character varying(200),
+ wp_username character varying(255),
+ wp_app_password character varying(255),
+ site_type character varying(50) NOT NULL,
+ hosting_type character varying(50) NOT NULL,
+ seo_metadata jsonb NOT NULL,
+ tenant_id bigint NOT NULL,
+ industry_id bigint NOT NULL,
+ wp_api_key character varying(255),
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_sites OWNER TO igny8;
+
+--
+-- Name: igny8_sites_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_sites ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_sites_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_strategies; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_strategies (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ description text NOT NULL,
+ prompt_types jsonb NOT NULL,
+ section_logic jsonb NOT NULL,
+ is_active boolean NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ sector_id bigint,
+ is_custom boolean NOT NULL,
+ cloned_from_id bigint
+);
+
+
+ALTER TABLE public.igny8_strategies OWNER TO igny8;
+
+--
+-- Name: igny8_strategies_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_strategies ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_strategies_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_subscriptions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_subscriptions (
+ id bigint NOT NULL,
+ stripe_subscription_id character varying(255),
+ status character varying(20) NOT NULL,
+ current_period_start timestamp with time zone NOT NULL,
+ current_period_end timestamp with time zone NOT NULL,
+ cancel_at_period_end boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ external_payment_id character varying(255),
+ plan_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_subscriptions OWNER TO igny8;
+
+--
+-- Name: igny8_subscriptions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_subscriptions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_subscriptions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_sync_events; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_sync_events (
+ id bigint NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ event_type character varying(50) NOT NULL,
+ action character varying(100) NOT NULL,
+ description text NOT NULL,
+ success boolean NOT NULL,
+ content_id integer,
+ external_id character varying(255),
+ details jsonb NOT NULL,
+ error_message text,
+ duration_ms integer,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ integration_id bigint NOT NULL,
+ site_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_sync_events OWNER TO igny8;
+
+--
+-- Name: igny8_sync_events_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_sync_events ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_sync_events_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_system_ai_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_system_ai_settings (
+ id bigint NOT NULL,
+ temperature double precision DEFAULT 0.7 NOT NULL,
+ max_tokens integer DEFAULT 8192 NOT NULL,
+ image_style character varying(30) DEFAULT 'photorealistic'::character varying NOT NULL,
+ image_quality character varying(20) DEFAULT 'standard'::character varying NOT NULL,
+ max_images_per_article integer DEFAULT 4 NOT NULL,
+ image_size character varying(20) DEFAULT '1024x1024'::character varying NOT NULL,
+ updated_at timestamp with time zone DEFAULT now() NOT NULL,
+ updated_by_id integer,
+ default_quality_tier character varying(20) NOT NULL,
+ max_allowed_images integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_system_ai_settings OWNER TO igny8;
+
+--
+-- Name: igny8_system_ai_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.igny8_system_ai_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.igny8_system_ai_settings_id_seq OWNER TO igny8;
+
+--
+-- Name: igny8_system_ai_settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.igny8_system_ai_settings_id_seq OWNED BY public.igny8_system_ai_settings.id;
+
+
+--
+-- Name: igny8_system_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_system_settings (
+ id bigint NOT NULL,
+ key character varying(255) NOT NULL,
+ value jsonb NOT NULL,
+ description text NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_system_settings OWNER TO igny8;
+
+--
+-- Name: igny8_system_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_system_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_system_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_tasks; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_tasks (
+ id bigint NOT NULL,
+ title character varying(255) NOT NULL,
+ description text,
+ keywords character varying(500) NOT NULL,
+ status character varying(50) NOT NULL,
+ content_type character varying(50),
+ content_structure character varying(50),
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ cluster_id bigint,
+ idea_id bigint,
+ sector_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ taxonomy_id bigint,
+ word_count integer NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone
+);
+
+
+ALTER TABLE public.igny8_tasks OWNER TO igny8;
+
+--
+-- Name: igny8_tasks_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_tasks ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_tasks_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_tasks_keyword_objects; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_tasks_keyword_objects (
+ id bigint NOT NULL,
+ tasks_id bigint NOT NULL,
+ keywords_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_tasks_keyword_objects OWNER TO igny8;
+
+--
+-- Name: igny8_tasks_keyword_objects_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_tasks_keyword_objects ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_tasks_keyword_objects_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_tenants; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_tenants (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL,
+ slug character varying(255) NOT NULL,
+ stripe_customer_id character varying(255),
+ credits integer NOT NULL,
+ status character varying(20) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ owner_id bigint,
+ plan_id bigint NOT NULL,
+ billing_address_line1 character varying(255) NOT NULL,
+ billing_address_line2 character varying(255) NOT NULL,
+ billing_city character varying(100) NOT NULL,
+ billing_country character varying(2) NOT NULL,
+ billing_email character varying(254),
+ billing_postal_code character varying(20) NOT NULL,
+ billing_state character varying(100) NOT NULL,
+ tax_id character varying(100) NOT NULL,
+ delete_reason character varying(255),
+ deleted_at timestamp with time zone,
+ deleted_by_id bigint,
+ deletion_retention_days integer NOT NULL,
+ is_deleted boolean NOT NULL,
+ restore_until timestamp with time zone,
+ payment_method character varying(30) NOT NULL,
+ usage_period_end timestamp with time zone,
+ usage_period_start timestamp with time zone,
+ usage_ahrefs_queries integer NOT NULL,
+ CONSTRAINT igny8_tenants_deletion_retention_days_check CHECK ((deletion_retention_days >= 0))
+);
+
+
+ALTER TABLE public.igny8_tenants OWNER TO igny8;
+
+--
+-- Name: igny8_tenants_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_tenants ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_tenants_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_user_settings; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_user_settings (
+ id bigint NOT NULL,
+ key character varying(255) NOT NULL,
+ value jsonb NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ tenant_id bigint NOT NULL,
+ user_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.igny8_user_settings OWNER TO igny8;
+
+--
+-- Name: igny8_user_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_user_settings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_user_settings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_users; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_users (
+ id bigint NOT NULL,
+ password character varying(128) NOT NULL,
+ last_login timestamp with time zone,
+ is_superuser boolean NOT NULL,
+ username character varying(150) NOT NULL,
+ first_name character varying(150) NOT NULL,
+ last_name character varying(150) NOT NULL,
+ is_staff boolean NOT NULL,
+ is_active boolean NOT NULL,
+ date_joined timestamp with time zone NOT NULL,
+ role character varying(20) NOT NULL,
+ email character varying(254) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ tenant_id bigint
+);
+
+
+ALTER TABLE public.igny8_users OWNER TO igny8;
+
+--
+-- Name: igny8_users_groups; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_users_groups (
+ id bigint NOT NULL,
+ user_id bigint NOT NULL,
+ group_id integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_users_groups OWNER TO igny8;
+
+--
+-- Name: igny8_users_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_users_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_users_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_users_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_users ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_users_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_users_user_permissions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_users_user_permissions (
+ id bigint NOT NULL,
+ user_id bigint NOT NULL,
+ permission_id integer NOT NULL
+);
+
+
+ALTER TABLE public.igny8_users_user_permissions OWNER TO igny8;
+
+--
+-- Name: igny8_users_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_users_user_permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_users_user_permissions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: igny8_webhook_events; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.igny8_webhook_events (
+ id bigint NOT NULL,
+ event_id character varying(255) NOT NULL,
+ provider character varying(20) NOT NULL,
+ event_type character varying(100) NOT NULL,
+ payload jsonb NOT NULL,
+ processed boolean NOT NULL,
+ processed_at timestamp with time zone,
+ error_message text NOT NULL,
+ retry_count integer NOT NULL,
+ created_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.igny8_webhook_events OWNER TO igny8;
+
+--
+-- Name: igny8_webhook_events_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.igny8_webhook_events ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.igny8_webhook_events_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: job; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.job (
+ jobid integer NOT NULL,
+ job text NOT NULL,
+ name text NOT NULL,
+ type character(1) NOT NULL,
+ level character(1) NOT NULL,
+ clientid integer DEFAULT 0,
+ jobstatus character(1) NOT NULL,
+ schedtime timestamp without time zone,
+ starttime timestamp without time zone,
+ endtime timestamp without time zone,
+ realendtime timestamp without time zone,
+ jobtdate bigint DEFAULT 0,
+ volsessionid integer DEFAULT 0,
+ volsessiontime integer DEFAULT 0,
+ jobfiles integer DEFAULT 0,
+ jobbytes bigint DEFAULT 0,
+ readbytes bigint DEFAULT 0,
+ joberrors integer DEFAULT 0,
+ jobmissingfiles integer DEFAULT 0,
+ poolid integer DEFAULT 0,
+ filesetid integer DEFAULT 0,
+ priorjobid integer DEFAULT 0,
+ purgedfiles smallint DEFAULT 0,
+ hasbase smallint DEFAULT 0,
+ hascache smallint DEFAULT 0,
+ reviewed smallint DEFAULT 0,
+ comment text,
+ filetable text DEFAULT 'File'::text
+);
+
+
+ALTER TABLE public.job OWNER TO igny8;
+
+--
+-- Name: job_jobid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.job_jobid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.job_jobid_seq OWNER TO igny8;
+
+--
+-- Name: job_jobid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.job_jobid_seq OWNED BY public.job.jobid;
+
+
+--
+-- Name: jobhisto; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.jobhisto (
+ jobid integer NOT NULL,
+ job text NOT NULL,
+ name text NOT NULL,
+ type character(1) NOT NULL,
+ level character(1) NOT NULL,
+ clientid integer,
+ jobstatus character(1) NOT NULL,
+ schedtime timestamp without time zone,
+ starttime timestamp without time zone,
+ endtime timestamp without time zone,
+ realendtime timestamp without time zone,
+ jobtdate bigint,
+ volsessionid integer,
+ volsessiontime integer,
+ jobfiles integer,
+ jobbytes bigint,
+ readbytes bigint,
+ joberrors integer,
+ jobmissingfiles integer,
+ poolid integer,
+ filesetid integer,
+ priorjobid integer,
+ purgedfiles smallint,
+ hasbase smallint,
+ hascache smallint,
+ reviewed smallint,
+ comment text,
+ filetable text
+);
+
+
+ALTER TABLE public.jobhisto OWNER TO igny8;
+
+--
+-- Name: jobmedia; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.jobmedia (
+ jobmediaid integer NOT NULL,
+ jobid integer NOT NULL,
+ mediaid integer NOT NULL,
+ firstindex integer DEFAULT 0,
+ lastindex integer DEFAULT 0,
+ startfile integer DEFAULT 0,
+ endfile integer DEFAULT 0,
+ startblock bigint DEFAULT 0,
+ endblock bigint DEFAULT 0,
+ volindex integer DEFAULT 0
+);
+
+
+ALTER TABLE public.jobmedia OWNER TO igny8;
+
+--
+-- Name: jobmedia_jobmediaid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.jobmedia_jobmediaid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.jobmedia_jobmediaid_seq OWNER TO igny8;
+
+--
+-- Name: jobmedia_jobmediaid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.jobmedia_jobmediaid_seq OWNED BY public.jobmedia.jobmediaid;
+
+
+--
+-- Name: location; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.location (
+ locationid integer NOT NULL,
+ location text NOT NULL,
+ cost integer DEFAULT 0,
+ enabled smallint
+);
+
+
+ALTER TABLE public.location OWNER TO igny8;
+
+--
+-- Name: location_locationid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.location_locationid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.location_locationid_seq OWNER TO igny8;
+
+--
+-- Name: location_locationid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.location_locationid_seq OWNED BY public.location.locationid;
+
+
+--
+-- Name: locationlog; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.locationlog (
+ loclogid integer NOT NULL,
+ date timestamp without time zone,
+ comment text NOT NULL,
+ mediaid integer DEFAULT 0,
+ locationid integer DEFAULT 0,
+ newvolstatus text NOT NULL,
+ newenabled smallint,
+ CONSTRAINT locationlog_newvolstatus_check CHECK ((newvolstatus = ANY (ARRAY['Full'::text, 'Archive'::text, 'Append'::text, 'Recycle'::text, 'Purged'::text, 'Read-Only'::text, 'Disabled'::text, 'Error'::text, 'Busy'::text, 'Used'::text, 'Cleaning'::text, 'Scratch'::text])))
+);
+
+
+ALTER TABLE public.locationlog OWNER TO igny8;
+
+--
+-- Name: locationlog_loclogid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.locationlog_loclogid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.locationlog_loclogid_seq OWNER TO igny8;
+
+--
+-- Name: locationlog_loclogid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.locationlog_loclogid_seq OWNED BY public.locationlog.loclogid;
+
+
+--
+-- Name: log; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.log (
+ logid integer NOT NULL,
+ jobid integer NOT NULL,
+ "time" timestamp without time zone,
+ logtext text NOT NULL
+);
+
+
+ALTER TABLE public.log OWNER TO igny8;
+
+--
+-- Name: log_logid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.log_logid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.log_logid_seq OWNER TO igny8;
+
+--
+-- Name: log_logid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.log_logid_seq OWNED BY public.log.logid;
+
+
+--
+-- Name: media; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.media (
+ mediaid integer NOT NULL,
+ volumename text NOT NULL,
+ slot integer DEFAULT 0,
+ poolid integer DEFAULT 0,
+ mediatype text NOT NULL,
+ mediatypeid integer DEFAULT 0,
+ labeltype integer DEFAULT 0,
+ firstwritten timestamp without time zone,
+ lastwritten timestamp without time zone,
+ labeldate timestamp without time zone,
+ voljobs integer DEFAULT 0,
+ volfiles integer DEFAULT 0,
+ volblocks integer DEFAULT 0,
+ volmounts integer DEFAULT 0,
+ volbytes bigint DEFAULT 0,
+ volabytes bigint DEFAULT 0,
+ volapadding bigint DEFAULT 0,
+ volholebytes bigint DEFAULT 0,
+ volholes integer DEFAULT 0,
+ volparts integer DEFAULT 0,
+ volerrors integer DEFAULT 0,
+ volwrites bigint DEFAULT 0,
+ volcapacitybytes bigint DEFAULT 0,
+ volstatus text NOT NULL,
+ enabled smallint DEFAULT 1,
+ recycle smallint DEFAULT 0,
+ actiononpurge smallint DEFAULT 0,
+ volretention bigint DEFAULT 0,
+ voluseduration bigint DEFAULT 0,
+ maxvoljobs integer DEFAULT 0,
+ maxvolfiles integer DEFAULT 0,
+ maxvolbytes bigint DEFAULT 0,
+ inchanger smallint DEFAULT 0,
+ storageid integer DEFAULT 0,
+ deviceid integer DEFAULT 0,
+ mediaaddressing smallint DEFAULT 0,
+ volreadtime bigint DEFAULT 0,
+ volwritetime bigint DEFAULT 0,
+ endfile integer DEFAULT 0,
+ endblock bigint DEFAULT 0,
+ locationid integer DEFAULT 0,
+ recyclecount integer DEFAULT 0,
+ initialwrite timestamp without time zone,
+ scratchpoolid integer DEFAULT 0,
+ recyclepoolid integer DEFAULT 0,
+ comment text,
+ CONSTRAINT media_volstatus_check CHECK ((volstatus = ANY (ARRAY['Full'::text, 'Archive'::text, 'Append'::text, 'Recycle'::text, 'Purged'::text, 'Read-Only'::text, 'Disabled'::text, 'Error'::text, 'Busy'::text, 'Used'::text, 'Cleaning'::text, 'Scratch'::text])))
+);
+
+
+ALTER TABLE public.media OWNER TO igny8;
+
+--
+-- Name: media_mediaid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.media_mediaid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.media_mediaid_seq OWNER TO igny8;
+
+--
+-- Name: media_mediaid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.media_mediaid_seq OWNED BY public.media.mediaid;
+
+
+--
+-- Name: mediatype; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.mediatype (
+ mediatypeid integer NOT NULL,
+ mediatype text NOT NULL,
+ readonly integer DEFAULT 0
+);
+
+
+ALTER TABLE public.mediatype OWNER TO igny8;
+
+--
+-- Name: mediatype_mediatypeid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.mediatype_mediatypeid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.mediatype_mediatypeid_seq OWNER TO igny8;
+
+--
+-- Name: mediatype_mediatypeid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.mediatype_mediatypeid_seq OWNED BY public.mediatype.mediatypeid;
+
+
+--
+-- Name: notifications_notification; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.notifications_notification (
+ id bigint NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ notification_type character varying(50) NOT NULL,
+ title character varying(200) NOT NULL,
+ message text NOT NULL,
+ severity character varying(20) NOT NULL,
+ object_id integer,
+ action_url character varying(500),
+ action_label character varying(50),
+ is_read boolean NOT NULL,
+ read_at timestamp with time zone,
+ metadata jsonb NOT NULL,
+ tenant_id bigint NOT NULL,
+ content_type_id integer,
+ site_id bigint,
+ user_id bigint,
+ CONSTRAINT notifications_notification_object_id_check CHECK ((object_id >= 0))
+);
+
+
+ALTER TABLE public.notifications_notification OWNER TO igny8;
+
+--
+-- Name: notifications_notification_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.notifications_notification ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.notifications_notification_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: path; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.path (
+ pathid integer NOT NULL,
+ path text NOT NULL
+);
+ALTER TABLE ONLY public.path ALTER COLUMN path SET STATISTICS 1000;
+
+
+ALTER TABLE public.path OWNER TO igny8;
+
+--
+-- Name: path_pathid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.path_pathid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.path_pathid_seq OWNER TO igny8;
+
+--
+-- Name: path_pathid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.path_pathid_seq OWNED BY public.path.pathid;
+
+
+--
+-- Name: pathhierarchy; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.pathhierarchy (
+ pathid integer NOT NULL,
+ ppathid integer NOT NULL
+);
+
+
+ALTER TABLE public.pathhierarchy OWNER TO igny8;
+
+--
+-- Name: pathvisibility; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.pathvisibility (
+ pathid integer NOT NULL,
+ jobid integer NOT NULL,
+ size bigint DEFAULT 0,
+ files integer DEFAULT 0
+);
+
+
+ALTER TABLE public.pathvisibility OWNER TO igny8;
+
+--
+-- Name: plugin_downloads; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.plugin_downloads (
+ id bigint NOT NULL,
+ ip_address inet,
+ user_agent character varying(500) NOT NULL,
+ download_type character varying(20) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ account_id bigint,
+ plugin_id bigint NOT NULL,
+ site_id bigint,
+ version_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.plugin_downloads OWNER TO igny8;
+
+--
+-- Name: plugin_downloads_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.plugin_downloads ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.plugin_downloads_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: plugin_installations; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.plugin_installations (
+ id bigint NOT NULL,
+ is_active boolean NOT NULL,
+ last_health_check timestamp with time zone,
+ health_status character varying(20) NOT NULL,
+ update_notified_at timestamp with time zone,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ plugin_id bigint NOT NULL,
+ site_id bigint NOT NULL,
+ current_version_id bigint,
+ pending_update_id bigint
+);
+
+
+ALTER TABLE public.plugin_installations OWNER TO igny8;
+
+--
+-- Name: plugin_installations_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.plugin_installations ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.plugin_installations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: plugin_versions; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.plugin_versions (
+ id bigint NOT NULL,
+ version character varying(20) NOT NULL,
+ version_code integer,
+ status character varying(20) NOT NULL,
+ file_path character varying(500) NOT NULL,
+ file_size integer NOT NULL,
+ checksum character varying(64) NOT NULL,
+ changelog text NOT NULL,
+ min_api_version character varying(20) NOT NULL,
+ min_platform_version character varying(20) NOT NULL,
+ min_php_version character varying(10) NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ released_at timestamp with time zone,
+ force_update boolean NOT NULL,
+ plugin_id bigint NOT NULL
+);
+
+
+ALTER TABLE public.plugin_versions OWNER TO igny8;
+
+--
+-- Name: plugin_versions_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.plugin_versions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.plugin_versions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: plugins; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.plugins (
+ id bigint NOT NULL,
+ name character varying(100) NOT NULL,
+ slug character varying(50) NOT NULL,
+ platform character varying(20) NOT NULL,
+ description text NOT NULL,
+ homepage_url character varying(200) NOT NULL,
+ is_active boolean NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.plugins OWNER TO igny8;
+
+--
+-- Name: plugins_id_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+ALTER TABLE public.plugins ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.plugins_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: pool; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.pool (
+ poolid integer NOT NULL,
+ name text NOT NULL,
+ numvols integer DEFAULT 0,
+ maxvols integer DEFAULT 0,
+ useonce smallint DEFAULT 0,
+ usecatalog smallint DEFAULT 0,
+ acceptanyvolume smallint DEFAULT 0,
+ volretention bigint DEFAULT 0,
+ voluseduration bigint DEFAULT 0,
+ maxvoljobs integer DEFAULT 0,
+ maxvolfiles integer DEFAULT 0,
+ maxvolbytes bigint DEFAULT 0,
+ autoprune smallint DEFAULT 0,
+ recycle smallint DEFAULT 0,
+ actiononpurge smallint DEFAULT 0,
+ pooltype text,
+ labeltype integer DEFAULT 0,
+ labelformat text NOT NULL,
+ enabled smallint DEFAULT 1,
+ scratchpoolid integer DEFAULT 0,
+ recyclepoolid integer DEFAULT 0,
+ nextpoolid integer DEFAULT 0,
+ migrationhighbytes bigint DEFAULT 0,
+ migrationlowbytes bigint DEFAULT 0,
+ migrationtime bigint DEFAULT 0,
+ CONSTRAINT pool_pooltype_check CHECK ((pooltype = ANY (ARRAY['Backup'::text, 'Copy'::text, 'Cloned'::text, 'Archive'::text, 'Migration'::text, 'Scratch'::text])))
+);
+
+
+ALTER TABLE public.pool OWNER TO igny8;
+
+--
+-- Name: pool_poolid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.pool_poolid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.pool_poolid_seq OWNER TO igny8;
+
+--
+-- Name: pool_poolid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.pool_poolid_seq OWNED BY public.pool.poolid;
+
+
+--
+-- Name: restoreobject; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.restoreobject (
+ restoreobjectid integer NOT NULL,
+ objectname text NOT NULL,
+ restoreobject bytea NOT NULL,
+ pluginname text NOT NULL,
+ objectlength integer DEFAULT 0,
+ objectfulllength integer DEFAULT 0,
+ objectindex integer DEFAULT 0,
+ objecttype integer DEFAULT 0,
+ fileindex integer DEFAULT 0,
+ jobid integer,
+ objectcompression integer DEFAULT 0
+);
+
+
+ALTER TABLE public.restoreobject OWNER TO igny8;
+
+--
+-- Name: restoreobject_restoreobjectid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.restoreobject_restoreobjectid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.restoreobject_restoreobjectid_seq OWNER TO igny8;
+
+--
+-- Name: restoreobject_restoreobjectid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.restoreobject_restoreobjectid_seq OWNED BY public.restoreobject.restoreobjectid;
+
+
+--
+-- Name: snapshot; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.snapshot (
+ snapshotid integer NOT NULL,
+ name text NOT NULL,
+ jobid integer DEFAULT 0,
+ filesetid integer DEFAULT 0,
+ createtdate bigint DEFAULT 0,
+ createdate timestamp without time zone NOT NULL,
+ clientid integer DEFAULT 0,
+ volume text NOT NULL,
+ device text NOT NULL,
+ type text NOT NULL,
+ retention integer DEFAULT 0,
+ comment text
+);
+
+
+ALTER TABLE public.snapshot OWNER TO igny8;
+
+--
+-- Name: snapshot_snapshotid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.snapshot_snapshotid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.snapshot_snapshotid_seq OWNER TO igny8;
+
+--
+-- Name: snapshot_snapshotid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.snapshot_snapshotid_seq OWNED BY public.snapshot.snapshotid;
+
+
+--
+-- Name: status; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.status (
+ jobstatus character(1) NOT NULL,
+ jobstatuslong text,
+ severity integer
+);
+
+
+ALTER TABLE public.status OWNER TO igny8;
+
+--
+-- Name: storage; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.storage (
+ storageid integer NOT NULL,
+ name text NOT NULL,
+ autochanger integer DEFAULT 0
+);
+
+
+ALTER TABLE public.storage OWNER TO igny8;
+
+--
+-- Name: storage_storageid_seq; Type: SEQUENCE; Schema: public; Owner: igny8
+--
+
+CREATE SEQUENCE public.storage_storageid_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.storage_storageid_seq OWNER TO igny8;
+
+--
+-- Name: storage_storageid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: igny8
+--
+
+ALTER SEQUENCE public.storage_storageid_seq OWNED BY public.storage.storageid;
+
+
+--
+-- Name: unsavedfiles; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.unsavedfiles (
+ unsavedid integer NOT NULL,
+ jobid integer NOT NULL,
+ pathid integer NOT NULL,
+ filenameid integer NOT NULL
+);
+
+
+ALTER TABLE public.unsavedfiles OWNER TO igny8;
+
+--
+-- Name: version; Type: TABLE; Schema: public; Owner: igny8
+--
+
+CREATE TABLE public.version (
+ versionid integer NOT NULL
+);
+
+
+ALTER TABLE public.version OWNER TO igny8;
+
+--
+-- Name: basefiles baseid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.basefiles ALTER COLUMN baseid SET DEFAULT nextval('public.basefiles_baseid_seq'::regclass);
+
+
+--
+-- Name: client clientid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.client ALTER COLUMN clientid SET DEFAULT nextval('public.client_clientid_seq'::regclass);
+
+
+--
+-- Name: device deviceid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.device ALTER COLUMN deviceid SET DEFAULT nextval('public.device_deviceid_seq'::regclass);
+
+
+--
+-- Name: file fileid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.file ALTER COLUMN fileid SET DEFAULT nextval('public.file_fileid_seq'::regclass);
+
+
+--
+-- Name: filename filenameid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.filename ALTER COLUMN filenameid SET DEFAULT nextval('public.filename_filenameid_seq'::regclass);
+
+
+--
+-- Name: fileset filesetid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.fileset ALTER COLUMN filesetid SET DEFAULT nextval('public.fileset_filesetid_seq'::regclass);
+
+
+--
+-- Name: igny8_system_ai_settings id; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_system_ai_settings ALTER COLUMN id SET DEFAULT nextval('public.igny8_system_ai_settings_id_seq'::regclass);
+
+
+--
+-- Name: job jobid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.job ALTER COLUMN jobid SET DEFAULT nextval('public.job_jobid_seq'::regclass);
+
+
+--
+-- Name: jobmedia jobmediaid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.jobmedia ALTER COLUMN jobmediaid SET DEFAULT nextval('public.jobmedia_jobmediaid_seq'::regclass);
+
+
+--
+-- Name: location locationid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.location ALTER COLUMN locationid SET DEFAULT nextval('public.location_locationid_seq'::regclass);
+
+
+--
+-- Name: locationlog loclogid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.locationlog ALTER COLUMN loclogid SET DEFAULT nextval('public.locationlog_loclogid_seq'::regclass);
+
+
+--
+-- Name: log logid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.log ALTER COLUMN logid SET DEFAULT nextval('public.log_logid_seq'::regclass);
+
+
+--
+-- Name: media mediaid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.media ALTER COLUMN mediaid SET DEFAULT nextval('public.media_mediaid_seq'::regclass);
+
+
+--
+-- Name: mediatype mediatypeid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.mediatype ALTER COLUMN mediatypeid SET DEFAULT nextval('public.mediatype_mediatypeid_seq'::regclass);
+
+
+--
+-- Name: path pathid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.path ALTER COLUMN pathid SET DEFAULT nextval('public.path_pathid_seq'::regclass);
+
+
+--
+-- Name: pool poolid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.pool ALTER COLUMN poolid SET DEFAULT nextval('public.pool_poolid_seq'::regclass);
+
+
+--
+-- Name: restoreobject restoreobjectid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.restoreobject ALTER COLUMN restoreobjectid SET DEFAULT nextval('public.restoreobject_restoreobjectid_seq'::regclass);
+
+
+--
+-- Name: snapshot snapshotid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.snapshot ALTER COLUMN snapshotid SET DEFAULT nextval('public.snapshot_snapshotid_seq'::regclass);
+
+
+--
+-- Name: storage storageid; Type: DEFAULT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.storage ALTER COLUMN storageid SET DEFAULT nextval('public.storage_storageid_seq'::regclass);
+
+
+--
+-- Data for Name: admin_interface_theme; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.admin_interface_theme (id, name, active, title, title_visible, logo, logo_visible, css_header_background_color, title_color, css_header_text_color, css_header_link_color, css_header_link_hover_color, css_module_background_color, css_module_text_color, css_module_link_color, css_module_link_hover_color, css_module_rounded_corners, css_generic_link_color, css_generic_link_hover_color, css_save_button_background_color, css_save_button_background_hover_color, css_save_button_text_color, css_delete_button_background_color, css_delete_button_background_hover_color, css_delete_button_text_color, list_filter_dropdown, related_modal_active, related_modal_background_color, related_modal_rounded_corners, logo_color, recent_actions_visible, favicon, related_modal_background_opacity, env_name, env_visible_in_header, env_color, env_visible_in_favicon, related_modal_close_button_visible, language_chooser_active, language_chooser_display, list_filter_sticky, form_pagination_sticky, form_submit_sticky, css_module_background_selected_color, css_module_link_selected_color, css) FROM stdin;
+1 Django t Django administration t t #0C4B33 #F5DD5D #44B78B #FFFFFF #C9F0DD #44B78B #FFFFFF #FFFFFF #C9F0DD t #0C3C26 #156641 #0C4B33 #0C3C26 #FFFFFF #BA2121 #A41515 #FFFFFF t t #000000 t #FFFFFF t 0.3 t #E74C3C t t t code t f f #FFFFCC #FFFFFF
+\.
+
+
+--
+-- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_group (id, name) FROM stdin;
+1 Content Manager
+2 Billing Admin
+3 Support Agent
+\.
+
+
+--
+-- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin;
+43 1 81
+44 1 82
+45 1 84
+46 1 85
+47 1 86
+48 1 88
+49 1 89
+50 1 90
+51 1 92
+52 1 69
+53 1 70
+54 1 72
+55 1 73
+56 1 74
+57 1 76
+58 1 77
+59 1 78
+60 1 80
+61 2 257
+62 2 258
+63 2 260
+64 2 259
+65 2 253
+66 2 254
+67 2 256
+68 2 255
+69 2 145
+70 2 146
+71 2 148
+72 2 147
+73 2 149
+74 2 150
+75 2 152
+76 2 151
+77 2 29
+78 2 30
+79 2 32
+80 2 31
+81 3 84
+82 3 88
+83 3 32
+84 3 52
+\.
+
+
+--
+-- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin;
+1 Can add log entry 1 add_logentry
+2 Can change log entry 1 change_logentry
+3 Can delete log entry 1 delete_logentry
+4 Can view log entry 1 view_logentry
+5 Can add permission 2 add_permission
+6 Can change permission 2 change_permission
+7 Can delete permission 2 delete_permission
+8 Can view permission 2 view_permission
+9 Can add group 3 add_group
+10 Can change group 3 change_group
+11 Can delete group 3 delete_group
+12 Can view group 3 view_group
+13 Can add content type 4 add_contenttype
+14 Can change content type 4 change_contenttype
+15 Can delete content type 4 delete_contenttype
+16 Can view content type 4 view_contenttype
+17 Can add session 5 add_session
+18 Can change session 5 change_session
+19 Can delete session 5 delete_session
+20 Can view session 5 view_session
+21 Can add plan 6 add_plan
+22 Can change plan 6 change_plan
+23 Can delete plan 6 delete_plan
+24 Can view plan 6 view_plan
+25 Can add user 7 add_user
+26 Can change user 7 change_user
+27 Can delete user 7 delete_user
+28 Can view user 7 view_user
+29 Can add Account 8 add_account
+30 Can change Account 8 change_account
+31 Can delete Account 8 delete_account
+32 Can view Account 8 view_account
+33 Can add Industry 9 add_industry
+34 Can change Industry 9 change_industry
+35 Can delete Industry 9 delete_industry
+36 Can view Industry 9 view_industry
+37 Can add Industry Sector 10 add_industrysector
+38 Can change Industry Sector 10 change_industrysector
+39 Can delete Industry Sector 10 delete_industrysector
+40 Can view Industry Sector 10 view_industrysector
+41 Can add password reset token 11 add_passwordresettoken
+42 Can change password reset token 11 change_passwordresettoken
+43 Can delete password reset token 11 delete_passwordresettoken
+44 Can view password reset token 11 view_passwordresettoken
+45 Can add Seed Keyword 12 add_seedkeyword
+46 Can change Seed Keyword 12 change_seedkeyword
+47 Can delete Seed Keyword 12 delete_seedkeyword
+48 Can view Seed Keyword 12 view_seedkeyword
+49 Can add site 13 add_site
+50 Can change site 13 change_site
+51 Can delete site 13 delete_site
+52 Can view site 13 view_site
+53 Can add sector 14 add_sector
+54 Can change sector 14 change_sector
+55 Can delete sector 14 delete_sector
+56 Can view sector 14 view_sector
+57 Can add Site User Access 15 add_siteuseraccess
+58 Can change Site User Access 15 change_siteuseraccess
+59 Can delete Site User Access 15 delete_siteuseraccess
+60 Can view Site User Access 15 view_siteuseraccess
+61 Can add subscription 16 add_subscription
+62 Can change subscription 16 change_subscription
+63 Can delete subscription 16 delete_subscription
+64 Can view subscription 16 view_subscription
+65 Can add ai task log 17 add_aitasklog
+66 Can change ai task log 17 change_aitasklog
+67 Can delete ai task log 17 delete_aitasklog
+68 Can view ai task log 17 view_aitasklog
+69 Can add Keyword 18 add_keywords
+70 Can change Keyword 18 change_keywords
+71 Can delete Keyword 18 delete_keywords
+72 Can view Keyword 18 view_keywords
+73 Can add Cluster 19 add_clusters
+74 Can change Cluster 19 change_clusters
+75 Can delete Cluster 19 delete_clusters
+76 Can view Cluster 19 view_clusters
+77 Can add Content Idea 20 add_contentideas
+78 Can change Content Idea 20 change_contentideas
+79 Can delete Content Idea 20 delete_contentideas
+80 Can view Content Idea 20 view_contentideas
+81 Can add Content 21 add_content
+82 Can change Content 21 change_content
+83 Can delete Content 21 delete_content
+84 Can view Content 21 view_content
+85 Can add Task 22 add_tasks
+86 Can change Task 22 change_tasks
+87 Can delete Task 22 delete_tasks
+88 Can view Task 22 view_tasks
+89 Can add Image 23 add_images
+90 Can change Image 23 change_images
+91 Can delete Image 23 delete_images
+92 Can view Image 23 view_images
+93 Can add content taxonomy map 24 add_contenttaxonomymap
+94 Can change content taxonomy map 24 change_contenttaxonomymap
+95 Can delete content taxonomy map 24 delete_contenttaxonomymap
+96 Can view content taxonomy map 24 view_contenttaxonomymap
+97 Can add content cluster map 25 add_contentclustermap
+98 Can change content cluster map 25 change_contentclustermap
+99 Can delete content cluster map 25 delete_contentclustermap
+100 Can view content cluster map 25 view_contentclustermap
+101 Can add content attribute map 26 add_contentattributemap
+102 Can change content attribute map 26 change_contentattributemap
+103 Can delete content attribute map 26 delete_contentattributemap
+104 Can view content attribute map 26 view_contentattributemap
+105 Can add system settings 27 add_systemsettings
+106 Can change system settings 27 change_systemsettings
+107 Can delete system settings 27 delete_systemsettings
+108 Can view system settings 27 view_systemsettings
+109 Can add account settings 28 add_accountsettings
+110 Can change account settings 28 change_accountsettings
+111 Can delete account settings 28 delete_accountsettings
+112 Can view account settings 28 view_accountsettings
+113 Can add ai prompt 29 add_aiprompt
+114 Can change ai prompt 29 change_aiprompt
+115 Can delete ai prompt 29 delete_aiprompt
+116 Can view ai prompt 29 view_aiprompt
+117 Can add ai settings 30 add_aisettings
+118 Can change ai settings 30 change_aisettings
+119 Can delete ai settings 30 delete_aisettings
+120 Can view ai settings 30 view_aisettings
+121 Can add Author Profile 31 add_authorprofile
+122 Can change Author Profile 31 change_authorprofile
+123 Can delete Author Profile 31 delete_authorprofile
+124 Can view Author Profile 31 view_authorprofile
+125 Can add integration settings 32 add_integrationsettings
+126 Can change integration settings 32 change_integrationsettings
+127 Can delete integration settings 32 delete_integrationsettings
+128 Can view integration settings 32 view_integrationsettings
+129 Can add module enable settings 33 add_moduleenablesettings
+130 Can change module enable settings 33 change_moduleenablesettings
+131 Can delete module enable settings 33 delete_moduleenablesettings
+132 Can view module enable settings 33 view_moduleenablesettings
+133 Can add module settings 34 add_modulesettings
+134 Can change module settings 34 change_modulesettings
+135 Can delete module settings 34 delete_modulesettings
+136 Can view module settings 34 view_modulesettings
+137 Can add Strategy 35 add_strategy
+138 Can change Strategy 35 change_strategy
+139 Can delete Strategy 35 delete_strategy
+140 Can view Strategy 35 view_strategy
+141 Can add user settings 36 add_usersettings
+142 Can change user settings 36 change_usersettings
+143 Can delete user settings 36 delete_usersettings
+144 Can view user settings 36 view_usersettings
+145 Can add credit transaction 37 add_credittransaction
+146 Can change credit transaction 37 change_credittransaction
+147 Can delete credit transaction 37 delete_credittransaction
+148 Can view credit transaction 37 view_credittransaction
+149 Can add credit usage log 38 add_creditusagelog
+150 Can change credit usage log 38 change_creditusagelog
+151 Can delete credit usage log 38 delete_creditusagelog
+152 Can view credit usage log 38 view_creditusagelog
+153 Can add Automation Rule 39 add_automationrule
+154 Can change Automation Rule 39 change_automationrule
+155 Can delete Automation Rule 39 delete_automationrule
+156 Can view Automation Rule 39 view_automationrule
+157 Can add Scheduled Task 40 add_scheduledtask
+158 Can change Scheduled Task 40 change_scheduledtask
+159 Can delete Scheduled Task 40 delete_scheduledtask
+160 Can view Scheduled Task 40 view_scheduledtask
+161 Can add Audience Profile 41 add_audienceprofile
+162 Can change Audience Profile 41 change_audienceprofile
+163 Can delete Audience Profile 41 delete_audienceprofile
+164 Can view Audience Profile 41 view_audienceprofile
+165 Can add Brand Personality 42 add_brandpersonality
+166 Can change Brand Personality 42 change_brandpersonality
+167 Can delete Brand Personality 42 delete_brandpersonality
+168 Can view Brand Personality 42 view_brandpersonality
+169 Can add Business Type 43 add_businesstype
+170 Can change Business Type 43 change_businesstype
+171 Can delete Business Type 43 delete_businesstype
+172 Can view Business Type 43 view_businesstype
+173 Can add Hero Imagery Direction 44 add_heroimagerydirection
+174 Can change Hero Imagery Direction 44 change_heroimagerydirection
+175 Can delete Hero Imagery Direction 44 delete_heroimagerydirection
+176 Can view Hero Imagery Direction 44 view_heroimagerydirection
+177 Can add Site Blueprint 45 add_siteblueprint
+178 Can change Site Blueprint 45 change_siteblueprint
+179 Can delete Site Blueprint 45 delete_siteblueprint
+180 Can view Site Blueprint 45 view_siteblueprint
+181 Can add Page Blueprint 46 add_pageblueprint
+182 Can change Page Blueprint 46 change_pageblueprint
+183 Can delete Page Blueprint 46 delete_pageblueprint
+184 Can view Page Blueprint 46 view_pageblueprint
+185 Can add Site Blueprint Cluster 47 add_siteblueprintcluster
+186 Can change Site Blueprint Cluster 47 change_siteblueprintcluster
+187 Can delete Site Blueprint Cluster 47 delete_siteblueprintcluster
+188 Can view Site Blueprint Cluster 47 view_siteblueprintcluster
+189 Can add Site Blueprint Taxonomy 48 add_siteblueprinttaxonomy
+190 Can change Site Blueprint Taxonomy 48 change_siteblueprinttaxonomy
+191 Can delete Site Blueprint Taxonomy 48 delete_siteblueprinttaxonomy
+192 Can view Site Blueprint Taxonomy 48 view_siteblueprinttaxonomy
+193 Can add Optimization Task 49 add_optimizationtask
+273 Can add Theme 69 add_theme
+194 Can change Optimization Task 49 change_optimizationtask
+195 Can delete Optimization Task 49 delete_optimizationtask
+196 Can view Optimization Task 49 view_optimizationtask
+197 Can add deployment record 50 add_deploymentrecord
+198 Can change deployment record 50 change_deploymentrecord
+199 Can delete deployment record 50 delete_deploymentrecord
+200 Can view deployment record 50 view_deploymentrecord
+201 Can add publishing record 51 add_publishingrecord
+202 Can change publishing record 51 change_publishingrecord
+203 Can delete publishing record 51 delete_publishingrecord
+204 Can view publishing record 51 view_publishingrecord
+205 Can add site integration 52 add_siteintegration
+206 Can change site integration 52 change_siteintegration
+207 Can delete site integration 52 delete_siteintegration
+208 Can view site integration 52 view_siteintegration
+221 Can add Content Attribute 56 add_contentattribute
+222 Can change Content Attribute 56 change_contentattribute
+223 Can delete Content Attribute 56 delete_contentattribute
+224 Can view Content Attribute 56 view_contentattribute
+225 Can add Content Taxonomy 57 add_contenttaxonomy
+226 Can change Content Taxonomy 57 change_contenttaxonomy
+227 Can delete Content Taxonomy 57 delete_contenttaxonomy
+228 Can view Content Taxonomy 57 view_contenttaxonomy
+229 Can add content taxonomy relation 58 add_contenttaxonomyrelation
+230 Can change content taxonomy relation 58 change_contenttaxonomyrelation
+231 Can delete content taxonomy relation 58 delete_contenttaxonomyrelation
+232 Can view content taxonomy relation 58 view_contenttaxonomyrelation
+233 Can add Sync Event 59 add_syncevent
+234 Can change Sync Event 59 change_syncevent
+235 Can delete Sync Event 59 delete_syncevent
+236 Can view Sync Event 59 view_syncevent
+237 Can add automation config 60 add_automationconfig
+238 Can change automation config 60 change_automationconfig
+239 Can delete automation config 60 delete_automationconfig
+240 Can view automation config 60 view_automationconfig
+241 Can add automation run 61 add_automationrun
+242 Can change automation run 61 change_automationrun
+243 Can delete automation run 61 delete_automationrun
+244 Can view automation run 61 view_automationrun
+245 Can add Credit Cost Configuration 62 add_creditcostconfig
+246 Can change Credit Cost Configuration 62 change_creditcostconfig
+247 Can delete Credit Cost Configuration 62 delete_creditcostconfig
+248 Can view Credit Cost Configuration 62 view_creditcostconfig
+249 Can add credit package 63 add_creditpackage
+250 Can change credit package 63 change_creditpackage
+251 Can delete credit package 63 delete_creditpackage
+252 Can view credit package 63 view_creditpackage
+253 Can add invoice 64 add_invoice
+254 Can change invoice 64 change_invoice
+255 Can delete invoice 64 delete_invoice
+256 Can view invoice 64 view_invoice
+257 Can add payment 65 add_payment
+258 Can change payment 65 change_payment
+259 Can delete payment 65 delete_payment
+260 Can view payment 65 view_payment
+261 Can add Payment Method Configuration 66 add_paymentmethodconfig
+262 Can change Payment Method Configuration 66 change_paymentmethodconfig
+263 Can delete Payment Method Configuration 66 delete_paymentmethodconfig
+264 Can view Payment Method Configuration 66 view_paymentmethodconfig
+265 Can add account payment method 67 add_accountpaymentmethod
+266 Can change account payment method 67 change_accountpaymentmethod
+267 Can delete account payment method 67 delete_accountpaymentmethod
+268 Can view account payment method 67 view_accountpaymentmethod
+269 Can add Plan Limit Usage 68 add_planlimitusage
+270 Can change Plan Limit Usage 68 change_planlimitusage
+271 Can delete Plan Limit Usage 68 delete_planlimitusage
+272 Can view Plan Limit Usage 68 view_planlimitusage
+274 Can change Theme 69 change_theme
+275 Can delete Theme 69 delete_theme
+276 Can view Theme 69 view_theme
+277 Can add task result 70 add_taskresult
+278 Can change task result 70 change_taskresult
+279 Can delete task result 70 delete_taskresult
+280 Can view task result 70 view_taskresult
+281 Can add chord counter 71 add_chordcounter
+282 Can change chord counter 71 change_chordcounter
+283 Can delete chord counter 71 delete_chordcounter
+284 Can view chord counter 71 view_chordcounter
+285 Can add group result 72 add_groupresult
+286 Can change group result 72 change_groupresult
+287 Can delete group result 72 delete_groupresult
+288 Can view group result 72 view_groupresult
+289 Can add historical Account 73 add_historicalaccount
+290 Can change historical Account 73 change_historicalaccount
+291 Can delete historical Account 73 delete_historicalaccount
+292 Can view historical Account 73 view_historicalaccount
+293 Can add historical payment 74 add_historicalpayment
+294 Can change historical payment 74 change_historicalpayment
+295 Can delete historical payment 74 delete_historicalpayment
+296 Can view historical payment 74 view_historicalpayment
+301 Can add Billing Configuration 76 add_billingconfiguration
+297 Can add historical Credit Cost Configuration 75 add_historicalcreditcostconfig
+298 Can change historical Credit Cost Configuration 75 change_historicalcreditcostconfig
+299 Can delete historical Credit Cost Configuration 75 delete_historicalcreditcostconfig
+300 Can view historical Credit Cost Configuration 75 view_historicalcreditcostconfig
+389 Can add Account (Trash) 98 add_accounttrash
+390 Can change Account (Trash) 98 change_accounttrash
+391 Can delete Account (Trash) 98 delete_accounttrash
+392 Can view Account (Trash) 98 view_accounttrash
+393 Can add Sector (Trash) 99 add_sectortrash
+394 Can change Sector (Trash) 99 change_sectortrash
+395 Can delete Sector (Trash) 99 delete_sectortrash
+396 Can view Sector (Trash) 99 view_sectortrash
+397 Can add Site (Trash) 100 add_sitetrash
+398 Can change Site (Trash) 100 change_sitetrash
+399 Can delete Site (Trash) 100 delete_sitetrash
+400 Can view Site (Trash) 100 view_sitetrash
+401 Can add Cluster (Trash) 101 add_clusterstrash
+402 Can change Cluster (Trash) 101 change_clusterstrash
+403 Can delete Cluster (Trash) 101 delete_clusterstrash
+404 Can view Cluster (Trash) 101 view_clusterstrash
+405 Can add Content Idea (Trash) 102 add_contentideastrash
+406 Can change Content Idea (Trash) 102 change_contentideastrash
+407 Can delete Content Idea (Trash) 102 delete_contentideastrash
+408 Can view Content Idea (Trash) 102 view_contentideastrash
+409 Can add Keyword (Trash) 103 add_keywordstrash
+410 Can change Keyword (Trash) 103 change_keywordstrash
+411 Can delete Keyword (Trash) 103 delete_keywordstrash
+412 Can view Keyword (Trash) 103 view_keywordstrash
+414 Can change Content (Trash) 104 change_contenttrash
+415 Can delete Content (Trash) 104 delete_contenttrash
+416 Can view Content (Trash) 104 view_contenttrash
+417 Can add Image (Trash) 105 add_imagestrash
+418 Can change Image (Trash) 105 change_imagestrash
+419 Can delete Image (Trash) 105 delete_imagestrash
+420 Can view Image (Trash) 105 view_imagestrash
+421 Can add Task (Trash) 106 add_taskstrash
+422 Can change Task (Trash) 106 change_taskstrash
+423 Can delete Task (Trash) 106 delete_taskstrash
+424 Can view Task (Trash) 106 view_taskstrash
+425 Can add Taxonomy (Trash) 107 add_contenttaxonomytrash
+426 Can change Taxonomy (Trash) 107 change_contenttaxonomytrash
+427 Can delete Taxonomy (Trash) 107 delete_contenttaxonomytrash
+428 Can view Taxonomy (Trash) 107 view_contenttaxonomytrash
+302 Can change Billing Configuration 76 change_billingconfiguration
+303 Can delete Billing Configuration 76 delete_billingconfiguration
+304 Can view Billing Configuration 76 view_billingconfiguration
+305 Can add Global Integration Settings 77 add_globalintegrationsettings
+306 Can change Global Integration Settings 77 change_globalintegrationsettings
+307 Can delete Global Integration Settings 77 delete_globalintegrationsettings
+308 Can view Global Integration Settings 77 view_globalintegrationsettings
+309 Can add Account Integration Override 78 add_accountintegrationoverride
+310 Can change Account Integration Override 78 change_accountintegrationoverride
+311 Can delete Account Integration Override 78 delete_accountintegrationoverride
+312 Can view Account Integration Override 78 view_accountintegrationoverride
+313 Can add Global AI Prompt 79 add_globalaiprompt
+314 Can change Global AI Prompt 79 change_globalaiprompt
+315 Can delete Global AI Prompt 79 delete_globalaiprompt
+316 Can view Global AI Prompt 79 view_globalaiprompt
+317 Can add Global Author Profile 80 add_globalauthorprofile
+318 Can change Global Author Profile 80 change_globalauthorprofile
+319 Can delete Global Author Profile 80 delete_globalauthorprofile
+320 Can view Global Author Profile 80 view_globalauthorprofile
+321 Can add Global Strategy 81 add_globalstrategy
+322 Can change Global Strategy 81 change_globalstrategy
+323 Can delete Global Strategy 81 delete_globalstrategy
+324 Can view Global Strategy 81 view_globalstrategy
+325 Can add Global Module Settings 82 add_globalmodulesettings
+326 Can change Global Module Settings 82 change_globalmodulesettings
+327 Can delete Global Module Settings 82 delete_globalmodulesettings
+328 Can view Global Module Settings 82 view_globalmodulesettings
+329 Can add historical AI Model Configuration 83 add_historicalaimodelconfig
+330 Can change historical AI Model Configuration 83 change_historicalaimodelconfig
+331 Can delete historical AI Model Configuration 83 delete_historicalaimodelconfig
+332 Can view historical AI Model Configuration 83 view_historicalaimodelconfig
+333 Can add AI Model Configuration 84 add_aimodelconfig
+334 Can change AI Model Configuration 84 change_aimodelconfig
+335 Can delete AI Model Configuration 84 delete_aimodelconfig
+336 Can view AI Model Configuration 84 view_aimodelconfig
+337 Can add notification 85 add_notification
+338 Can change notification 85 change_notification
+339 Can delete notification 85 delete_notification
+340 Can view notification 85 view_notification
+341 Can add Image Prompt 86 add_imageprompts
+342 Can change Image Prompt 86 change_imageprompts
+343 Can delete Image Prompt 86 delete_imageprompts
+344 Can view Image Prompt 86 view_imageprompts
+345 Can add Publishing Settings 87 add_publishingsettings
+346 Can change Publishing Settings 87 change_publishingsettings
+347 Can delete Publishing Settings 87 delete_publishingsettings
+348 Can view Publishing Settings 87 view_publishingsettings
+349 Can add Integration Provider 88 add_integrationprovider
+350 Can change Integration Provider 88 change_integrationprovider
+351 Can delete Integration Provider 88 delete_integrationprovider
+352 Can view Integration Provider 88 view_integrationprovider
+353 Can add System AI Settings 89 add_systemaisettings
+354 Can change System AI Settings 89 change_systemaisettings
+355 Can delete System AI Settings 89 delete_systemaisettings
+356 Can view System AI Settings 89 view_systemaisettings
+357 Can add Webhook Event 90 add_webhookevent
+358 Can change Webhook Event 90 change_webhookevent
+359 Can delete Webhook Event 90 delete_webhookevent
+360 Can view Webhook Event 90 view_webhookevent
+361 Can add Email Template 91 add_emailtemplate
+362 Can change Email Template 91 change_emailtemplate
+363 Can delete Email Template 91 delete_emailtemplate
+364 Can view Email Template 91 view_emailtemplate
+365 Can add Email Log 92 add_emaillog
+366 Can change Email Log 92 change_emaillog
+367 Can delete Email Log 92 delete_emaillog
+368 Can view Email Log 92 view_emaillog
+369 Can add Email Settings 93 add_emailsettings
+370 Can change Email Settings 93 change_emailsettings
+371 Can delete Email Settings 93 delete_emailsettings
+372 Can view Email Settings 93 view_emailsettings
+373 Can add Plugin 94 add_plugin
+374 Can change Plugin 94 change_plugin
+375 Can delete Plugin 94 delete_plugin
+376 Can view Plugin 94 view_plugin
+377 Can add Plugin Version 95 add_pluginversion
+378 Can change Plugin Version 95 change_pluginversion
+379 Can delete Plugin Version 95 delete_pluginversion
+380 Can view Plugin Version 95 view_pluginversion
+381 Can add Plugin Installation 96 add_plugininstallation
+382 Can change Plugin Installation 96 change_plugininstallation
+383 Can delete Plugin Installation 96 delete_plugininstallation
+384 Can view Plugin Installation 96 view_plugininstallation
+385 Can add Plugin Download 97 add_plugindownload
+386 Can change Plugin Download 97 change_plugindownload
+387 Can delete Plugin Download 97 delete_plugindownload
+388 Can view Plugin Download 97 view_plugindownload
+413 Can add Content (Trash) 104 add_contenttrash
+\.
+
+
+--
+-- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin;
+2 pbkdf2_sha256$1000000$xf5xMs5SEUAi9sQ8Wvw1cY$rLWE8cz1VxATgFnAtT+cCrBV0rgZ2aYkIf+L82Xjw+8= \N f admin f t 2025-10-29 19:13:20.076696+00
+1 pbkdf2_sha256$1000000$cI2wqK1ZC0KgAWACZyySfI$s3HVt4tDQa3ov6Ot14wKB75K0rG0quxRjV75cVNaMj0= 2025-10-29 19:30:07.60263+00 t root admin@igny8.com t t 2025-10-29 10:29:42.6185+00
+\.
+
+
+--
+-- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_user_groups (id, user_id, group_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: basefiles; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.basefiles (baseid, jobid, fileid, fileindex, basejobid) FROM stdin;
+\.
+
+
+--
+-- Data for Name: billing_historicalaimodelconfig; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.billing_historicalaimodelconfig (id, model_name, display_name, model_type, provider, context_window, is_active, is_default, created_at, updated_at, history_id, history_date, history_change_reason, history_type, history_user_id, credits_per_image, quality_tier, tokens_per_credit, capabilities, cost_per_1k_input, cost_per_1k_output, max_tokens, landscape_size, square_size, valid_sizes) FROM stdin;
+2 gpt-4.1 GPT-4.1 - Legacy Model text openai 8192 f f 2025-12-24 01:21:08.346229+00 2026-01-01 01:50:07.864045+00 1 2026-01-01 01:50:07.865765+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+9 gpt-image-1-mini GPT Image 1 Mini (Not compatible with OpenAI) image openai \N f f 2025-12-24 01:21:08.349347+00 2025-12-24 01:21:08.349352+00 2 2026-01-03 16:43:31.055272+00 \N - 3 \N \N \N {} \N \N \N \N 1024x1024 []
+8 gpt-image-1 GPT Image 1 (Not compatible with OpenAI) image openai \N f f 2025-12-24 01:21:08.348968+00 2025-12-24 01:21:08.348973+00 3 2026-01-03 16:43:31.063017+00 \N - 3 \N \N \N {} \N \N \N \N 1024x1024 []
+2 gpt-4.1 GPT-4.1 - Legacy Model text openai 8192 f f 2025-12-24 01:21:08.346229+00 2026-01-01 01:50:07.864045+00 4 2026-01-03 16:43:31.063976+00 \N - 3 \N \N \N {} \N \N \N \N 1024x1024 []
+5 gpt-5.2 GPT-5.2 - Most Advanced (16K context) text openai 16000 f t 2025-12-24 01:21:08.347511+00 2026-01-03 16:44:31.37767+00 5 2026-01-03 16:44:31.378757+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+11 civitai:618692@691639 Bria 3.2 - Premium image runware \N t t 2026-01-03 16:54:17.248193+00 2026-01-03 17:04:49.638569+00 6 2026-01-03 17:04:49.640122+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+4 gpt-5.1 GPT-5.1 - Premium text openai 8192 t f 2025-12-24 01:21:08.347068+00 2026-01-03 17:07:17.926681+00 7 2026-01-03 17:07:17.927544+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+11 civitai:618692@691639 Bria 3.2 - Premium image runware \N t t 2026-01-03 16:54:17.248193+00 2026-01-03 17:07:57.70515+00 8 2026-01-03 17:07:57.706033+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Standard image runware \N t f 2026-01-03 16:54:17.244617+00 2026-01-03 17:08:20.350575+00 9 2026-01-03 17:08:20.351581+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+11 bria:10@1 Bria 3.2 - Premium image runware \N t t 2026-01-03 16:54:17.248193+00 2026-01-03 18:53:33.490941+00 10 2026-01-03 18:53:33.49205+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+6 openai:2@3 DALL-E 3 - High Quality Images image runware \N t f 2025-12-24 01:21:08.347939+00 2026-01-03 19:03:03.501092+00 11 2026-01-03 19:03:03.502181+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+11 bria:10@1 Bria 3.2 - Premium image runware \N t t 2026-01-03 16:54:17.248193+00 2026-01-03 19:05:05.24953+00 12 2026-01-03 19:05:05.250437+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+7 dall-e-2 DALL-E 2 - Standard Quality image openai \N f f 2025-12-24 01:21:08.348489+00 2025-12-24 01:21:08.348496+00 13 2026-01-03 19:05:25.172549+00 \N - 3 \N \N \N {} \N \N \N \N 1024x1024 []
+6 google:4@2 Nano Banana Pro - High Accuracy & Quality image runware \N t f 2025-12-24 01:21:08.347939+00 2026-01-03 19:28:08.746058+00 14 2026-01-03 19:28:08.747467+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+11 bria:10@1 Bria 3.2 - Quality image runware \N t f 2026-01-03 16:54:17.248193+00 2026-01-03 20:11:36.60141+00 15 2026-01-03 20:11:36.603332+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-03 20:12:02.766414+00 16 2026-01-03 20:12:02.770239+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-03 20:12:02.845748+00 17 2026-01-03 20:12:02.846629+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-03 20:12:02.942077+00 18 2026-01-03 20:12:02.944038+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+6 google:4@2 Nano Banana - Premium image runware \N t f 2025-12-24 01:21:08.347939+00 2026-01-03 20:12:21.7245+00 19 2026-01-03 20:12:21.725564+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+5 dall-e-3 Dall-E-3 - Quality 2 image openai 16000 f t 2025-12-24 01:21:08.347511+00 2026-01-03 21:30:21.025451+00 20 2026-01-03 21:30:21.026459+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+5 dall-e-3 Dall-E-3 - Quality 2 image openai \N f t 2025-12-24 01:21:08.347511+00 2026-01-03 21:33:16.990345+00 21 2026-01-03 21:33:16.991184+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+5 dall-e-3 DALL-E 3 - HD Quality image openai \N t t 2025-12-24 01:21:08.347511+00 2026-01-03 21:36:28.706884+00 22 2026-01-03 21:36:28.708565+00 \N ~ \N \N \N \N {} \N \N \N \N 1024x1024 []
+5 dall-e-3 DALL-E 3 - HD Quality image openai \N t t 2025-12-24 01:21:08.347511+00 2026-01-03 21:46:19.717487+00 23 2026-01-03 21:46:19.719365+00 \N ~ \N \N \N \N {} \N \N \N \N 1024x1024 []
+11 bria:10@1 Bria 3.2 - Quality image runware \N t f 2026-01-03 16:54:17.248193+00 2026-01-03 20:11:36.60141+00 24 2026-01-03 23:04:24.326565+00 \N - 3 \N \N \N {} \N \N \N \N 1024x1024 []
+4 gpt-5.1 GPT-5.1 - Premium text openai 8192 t t 2025-12-24 01:21:08.347068+00 2026-01-03 23:49:12.914414+00 25 2026-01-03 23:49:12.91725+00 \N ~ 3 \N \N \N {} \N \N \N \N 1024x1024 []
+1 gpt-4o-mini GPT-4o mini - Fast & Affordable text openai 128000 t t 2025-12-24 01:21:08.345002+00 2026-01-04 22:12:40.728863+00 26 2026-01-04 22:12:40.731166+00 \N ~ 3 \N \N 10000 {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-04 22:12:51.037628+00 27 2026-01-04 22:12:51.0389+00 \N ~ 3 1 basic \N {} \N \N \N \N 1024x1024 []
+12 bytedance:seedream@4.5 Seedream 4.5 - High Quality image runware \N t f 2026-01-12 09:31:14.196836+00 2026-01-12 12:48:27.275538+00 28 2026-01-12 12:48:27.276616+00 \N ~ 3 5 quality_option2 \N {"high_resolution": true, "provider_settings": {"bytedance": {"maxSequentialImages": 4}}, "max_sequential_images": 4} \N \N \N 2560x1440 2048x2048 ["2048x2048", "2304x1728", "2560x1440", "1728x2304", "1440x2560"]
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-12 17:45:40.029472+00 29 2026-01-12 17:45:40.030767+00 \N ~ 3 2 basic \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-12 17:45:50.652607+00 30 2026-01-12 17:45:50.653339+00 \N ~ 3 1 basic \N {} \N \N \N \N 1024x1024 []
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-12 23:39:32.397493+00 32 2026-01-12 23:39:32.40071+00 \N ~ 3 1 basic \N {} \N \N \N \N 1024x1024 []
+12 bytedance:seedream@4.5 Seedream 4.5 - High Quality image runware \N t t 2026-01-12 09:31:14.196836+00 2026-01-12 18:26:59.096384+00 31 2026-01-12 18:26:59.09934+00 \N ~ 3 5 quality_option2 \N {"high_resolution": true, "provider_settings": {"bytedance": {"maxSequentialImages": 4}}, "max_sequential_images": 4} \N \N \N 2560x1440 2048x2048 ["2048x2048", "2304x1728", "2560x1440", "1728x2304", "1440x2560"]
+\.
+
+
+--
+-- Data for Name: billing_historicalcreditcostconfig; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.billing_historicalcreditcostconfig (operation_type, display_name, description, is_active, history_id, history_date, history_change_reason, history_type, history_user_id, calculation_mode, flat_rate_credits, per_item_credits, per_item_unit, base_credits) FROM stdin;
+clustering Keyword Clustering AI-powered keyword clustering into semantic groups t 1 2025-12-23 23:29:27.418626+00 \N ~ \N flat_rate 10 \N 1 1
+idea_generation Content Ideas Generation Generate content ideas from keyword clusters t 2 2025-12-23 23:29:27.425173+00 \N ~ \N per_item \N 2.00 1 1
+content_generation Content Generation AI-powered article content generation t 3 2025-12-23 23:29:27.428321+00 \N ~ \N per_item \N 0.01 100 1
+image_generation Image Generation AI-powered image generation t 4 2025-12-23 23:29:27.431147+00 \N ~ \N per_image 5 \N 1 1
+linking Internal Linking AI-powered internal link suggestions t 5 2025-12-23 23:29:27.433676+00 \N ~ \N flat_rate 8 \N 1 1
+optimization Content Optimization AI-powered content optimization t 6 2025-12-23 23:29:27.43628+00 \N ~ \N per_item \N 0.01 100 1
+reparse Content Reparse Reparse existing content t 7 2025-12-23 23:29:27.438889+00 \N ~ \N flat_rate 1 \N 1 1
+clustering Keyword Clustering AI-powered keyword clustering into semantic groups t 18 2025-12-26 01:18:33.244487+00 \N ~ \N \N \N \N \N 1
+content_generation Content Generation AI-powered article content generation t 19 2025-12-26 01:20:20.506656+00 \N ~ 3 \N \N \N \N 1
+clustering Keyword Clustering AI-powered keyword clustering into semantic groups t 20 2025-12-26 01:20:46.535968+00 \N ~ 3 \N \N \N \N 1
+idea_generation Content Ideas Generation Generate content ideas from keyword clusters t 21 2025-12-26 01:21:06.611623+00 \N ~ 3 \N \N \N \N 1
+content_generation Content Generation AI-powered article content generation t 22 2025-12-26 01:21:21.256314+00 \N ~ 3 \N \N \N \N 1
+image_prompt_extraction Image Prompt Extraction Extract image prompts from content t 23 2025-12-26 01:21:41.147645+00 \N ~ 3 \N \N \N \N 1
+clustering Keyword Clustering AI-powered keyword clustering into semantic groups t 24 2025-12-29 03:09:43.43235+00 \N ~ 3 \N \N \N \N 1
+content_generation Content Generation AI-powered article content generation t 25 2025-12-29 03:10:00.837687+00 \N ~ 3 \N \N \N \N 1
+idea_generation Content Ideas Generation Generate content ideas from keyword clusters t 26 2025-12-29 03:10:18.181172+00 \N ~ 3 \N \N \N \N 1
+image_generation Image Generation AI-powered image generation t 27 2025-12-29 03:12:07.928966+00 \N ~ 3 \N \N \N \N 1
+image_prompt_extraction Image Prompt Extraction Extract image prompts from content t 28 2025-12-29 03:12:26.590518+00 \N ~ 3 \N \N \N \N 1
+\.
+
+
+--
+-- Data for Name: billing_historicalpayment; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.billing_historicalpayment (id, amount, currency, status, payment_method, stripe_payment_intent_id, stripe_charge_id, paypal_order_id, paypal_capture_id, manual_reference, manual_notes, admin_notes, approved_at, processed_at, failed_at, refunded_at, failure_reason, metadata, created_at, updated_at, history_id, history_date, history_change_reason, history_type, tenant_id, approved_by_id, history_user_id, invoice_id) FROM stdin;
+10 24742.00 PKR succeeded bank_transfer \N \N \N \N sdsdsdsd334 \N \N \N \N {"submitted_by": "axeeeeeee@cisidj.com"} 2025-12-09 06:07:28.263162+00 2025-12-09 06:13:29.345747+00 1 2026-01-07 03:32:35.610685+00 \N - 100 3 3 16
+8 139.00 USD completed bank_transfer \N \N \N \N 22334445 \N \N \N \N {"submitted_by": "paid1@paid.com"} 2025-12-09 01:41:54.56674+00 2025-12-09 01:48:27.145899+00 2 2026-01-07 03:32:35.617763+00 \N - 89 \N 3 10
+1 229.00 USD completed bank_transfer \N \N \N \N BANK-XFER-12345 Scale plan monthly payment \N 2025-12-08 11:00:01.961893+00 \N \N {} 2025-12-08 11:00:01.963732+00 2025-12-08 11:00:01.963741+00 3 2026-01-07 03:32:35.618776+00 \N - 14 \N 3 3
+11 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 04:58:47.928551+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmopVPdRe4dWeLw7A5CXUbZ", "checkout_session_id": "cs_test_b1uVXmv8vnFZ7LLTT8WBWBFT3MIiF0gipyApbVvIBfpCK4zXkyXcjMDqHP"} 2026-01-07 04:58:47.929119+00 2026-01-07 04:58:47.929125+00 4 2026-01-07 04:58:47.93552+00 \N + 111 \N \N 24
+11 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 04:58:47.928551+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmopVPdRe4dWeLw7A5CXUbZ", "checkout_session_id": "cs_test_b1uVXmv8vnFZ7LLTT8WBWBFT3MIiF0gipyApbVvIBfpCK4zXkyXcjMDqHP"} 2026-01-07 04:58:47.929119+00 2026-01-07 04:58:47.929125+00 5 2026-01-07 05:20:21.665022+00 \N - 111 \N 3 24
+12 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:23:02.997107+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpCyPdRe4dWeLwmKo2fjtN", "checkout_session_id": "cs_test_b1XmUhyWHmaSMjn7OtI7QBVsRYJQY4AxKZQLNvNwY3Jiti4HEqM47WCY7i"} 2026-01-07 05:23:02.997493+00 2026-01-07 05:23:02.997497+00 6 2026-01-07 05:23:02.99887+00 \N + 112 \N \N 26
+12 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:23:02.997107+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpCyPdRe4dWeLwmKo2fjtN", "checkout_session_id": "cs_test_b1XmUhyWHmaSMjn7OtI7QBVsRYJQY4AxKZQLNvNwY3Jiti4HEqM47WCY7i"} 2026-01-07 05:23:02.997493+00 2026-01-07 05:23:02.997497+00 7 2026-01-07 05:28:23.641541+00 \N - 112 \N 3 26
+13 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:29:52.676129+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpJaPdRe4dWeLwTYErRtZg", "checkout_session_id": "cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV"} 2026-01-07 05:29:52.676509+00 2026-01-07 05:29:52.676514+00 8 2026-01-07 05:29:52.677847+00 \N + 113 \N \N 27
+13 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:29:52.676129+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpJaPdRe4dWeLwTYErRtZg", "checkout_session_id": "cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV"} 2026-01-07 05:29:52.676509+00 2026-01-07 05:33:45.930199+00 9 2026-01-07 05:33:45.931685+00 \N ~ 113 3 3 27
+13 99.00 USD succeeded stripe \N \N \N \N 1233445 \N 2026-01-07 05:29:52.676129+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpJaPdRe4dWeLwTYErRtZg", "checkout_session_id": "cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV"} 2026-01-07 05:29:52.676509+00 2026-01-07 05:34:35.532394+00 10 2026-01-07 05:34:35.533822+00 \N ~ 113 3 3 27
+14 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:50:28.818573+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpdVPdRe4dWeLw3TnM7iX1", "checkout_session_id": "cs_test_b10ezXfIienpbt1TkiV6QHLfaOziixfiIsePLKuhwYm3BcwMzuSOHdXrHh"} 2026-01-07 05:50:28.818938+00 2026-01-07 05:50:28.818942+00 11 2026-01-07 05:50:28.820269+00 \N + 114 \N \N 28
+15 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:56:04.503919+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpiwPdRe4dWeLwgWJrtTvG", "checkout_session_id": "cs_test_b1JfqVEFg84dfp3ZzFu5zQZ5vRFbsRTPcvO9p9O3zbtiCfP6vC5fDQdEl5"} 2026-01-07 05:56:04.504419+00 2026-01-07 05:56:04.504429+00 12 2026-01-07 05:56:04.506551+00 \N + 115 \N \N 29
+13 99.00 USD succeeded stripe sub_sub_1SmpJaPdRe4dWeLwTYErRtZg cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV \N \N 1233445 \N 2026-01-07 05:29:52.676129+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpJaPdRe4dWeLwTYErRtZg", "checkout_session_id": "cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV"} 2026-01-07 05:29:52.676509+00 2026-01-07 06:06:48.565752+00 13 2026-01-07 06:06:48.567586+00 \N ~ 113 3 \N 27
+15 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:56:04.503919+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpiwPdRe4dWeLwgWJrtTvG", "checkout_session_id": "cs_test_b1JfqVEFg84dfp3ZzFu5zQZ5vRFbsRTPcvO9p9O3zbtiCfP6vC5fDQdEl5"} 2026-01-07 05:56:04.504419+00 2026-01-07 05:56:04.504429+00 14 2026-01-07 06:16:17.752151+00 \N - 115 \N 3 29
+14 99.00 USD succeeded stripe \N \N \N \N \N 2026-01-07 05:50:28.818573+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpdVPdRe4dWeLw3TnM7iX1", "checkout_session_id": "cs_test_b10ezXfIienpbt1TkiV6QHLfaOziixfiIsePLKuhwYm3BcwMzuSOHdXrHh"} 2026-01-07 05:50:28.818938+00 2026-01-07 05:50:28.818942+00 15 2026-01-07 06:16:17.879945+00 \N - 114 \N 3 28
+13 99.00 USD succeeded stripe sub_sub_1SmpJaPdRe4dWeLwTYErRtZg cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV \N \N 1233445 \N 2026-01-07 05:29:52.676129+00 \N \N {"plan_id": "2", "subscription_id": "sub_1SmpJaPdRe4dWeLwTYErRtZg", "checkout_session_id": "cs_test_b1aaB1bETuVOvDPdeeRQ9cDNeFGlJRCIJpYDhNRIfAON15xkpQifSC4QaV"} 2026-01-07 05:29:52.676509+00 2026-01-07 06:06:48.565752+00 16 2026-01-07 06:16:17.957088+00 \N - 113 3 3 27
+16 99.00 USD succeeded stripe sub_sub_1Smq6EPdRe4dWeLwVXaITQNe cs_test_b1E6SS441m26QYwfgkLXEZ7Hz72MXQqgCY194dU7dbDQfbqX73eMrHec3H \N \N \N 2026-01-07 06:20:08.565584+00 \N \N {"plan_id": "2", "payment_intent": null, "subscription_id": "sub_1Smq6EPdRe4dWeLwVXaITQNe", "checkout_session_id": "cs_test_b1E6SS441m26QYwfgkLXEZ7Hz72MXQqgCY194dU7dbDQfbqX73eMrHec3H"} 2026-01-07 06:20:08.566288+00 2026-01-07 06:20:08.566296+00 17 2026-01-07 06:20:08.567718+00 \N + 116 \N \N 30
+17 99.00 USD succeeded stripe sub_sub_1SmqguPdRe4dWeLwQ1NiRpmG cs_test_b1Noq1QcJ65vi2y8QAGNAO7gFB6qduciUvBHwB8ndglmADBuXl95P7xdj9 \N \N 2026-01-07 06:58:02.594331+00 2026-01-07 06:58:02.594327+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1SmqguPdRe4dWeLwQ1NiRpmG", "checkout_session_id": "cs_test_b1Noq1QcJ65vi2y8QAGNAO7gFB6qduciUvBHwB8ndglmADBuXl95P7xdj9"} 2026-01-07 06:58:02.594825+00 2026-01-07 06:58:02.594831+00 18 2026-01-07 06:58:02.596808+00 \N + 117 \N \N 31
+34 99.00 USD succeeded stripe sub_sub_1Sn3ppPdRe4dWeLwJ9oluGsL cs_test_b1Eok3UbgXFslugWFBDgPqbWzvNpwrSqbCj8vrTmJxN5ivFIC3rprt0Kyt \N \N \N 2026-01-07 21:00:08.029841+00 2026-01-07 21:00:08.029838+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn3ppPdRe4dWeLwJ9oluGsL", "checkout_session_id": "cs_test_b1Eok3UbgXFslugWFBDgPqbWzvNpwrSqbCj8vrTmJxN5ivFIC3rprt0Kyt"} 2026-01-07 21:00:08.030228+00 2026-01-07 21:00:08.030232+00 54 2026-01-12 11:23:29.303681+00 \N - 137 \N 3 51
+33 99.00 USD succeeded stripe sub_sub_1Sn35DPdRe4dWeLw1QTj5I7z cs_test_b1H8x9j1Oh5EZVlHRWyA9Pg8KriMpAKd70ZhPtakX8Req2IqOVdwQCcf7u \N \N \N 2026-01-07 20:11:57.963588+00 2026-01-07 20:11:57.963585+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn35DPdRe4dWeLw1QTj5I7z", "checkout_session_id": "cs_test_b1H8x9j1Oh5EZVlHRWyA9Pg8KriMpAKd70ZhPtakX8Req2IqOVdwQCcf7u"} 2026-01-07 20:11:57.963983+00 2026-01-07 20:11:57.963989+00 55 2026-01-12 11:24:44.315452+00 \N - 136 \N 3 50
+38 99.00 USD succeeded paypal \N \N 0TR53037EF4354343 4MB1074548728674L \N 2026-01-07 23:33:04.879912+00 2026-01-07 23:33:04.87991+00 \N \N {"plan_id": "2", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 23:33:04.880458+00 2026-01-07 23:33:04.880463+00 59 2026-01-12 11:33:34.71214+00 \N - 141 \N 3 55
+20 27522.00 PKR succeeded bank_transfer \N \N \N \N 112233344 2026-01-07 14:42:09.658497+00 2026-01-07 14:42:09.658502+00 \N \N {} 2026-01-07 14:04:55.681685+00 2026-01-07 14:42:09.658661+00 22 2026-01-07 14:42:09.659865+00 \N ~ 122 3 3 36
+20 27522.00 USD pending_approval bank_transfer \N \N \N \N 112233344 \N \N \N \N {} 2026-01-07 14:04:55.681685+00 2026-01-07 14:04:55.681696+00 21 2026-01-07 14:04:55.68754+00 \N + 122 \N \N 36
+18 299.00 USD succeeded paypal \N \N 01474504S6586113X 0C5077039A388543H 2026-01-07 08:31:36.339612+00 2026-01-07 08:31:36.339609+00 \N \N {"plan_id": "5", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 08:31:36.34005+00 2026-01-07 08:31:36.340055+00 19 2026-01-07 08:31:36.342593+00 \N + 119 \N \N 33
+39 99.00 USD pending_approval bank_transfer \N \N \N \N 11224455 \N \N \N \N {} 2026-01-08 01:49:54.731058+00 2026-01-08 01:49:54.731068+00 47 2026-01-08 02:39:57.856561+00 \N - 142 \N 3 56
+39 99.00 USD pending_approval bank_transfer \N \N \N \N 11224455 \N \N \N \N {} 2026-01-08 01:49:54.731058+00 2026-01-08 01:49:54.731068+00 46 2026-01-08 01:49:54.737281+00 \N + 142 \N \N 56
+31 199.00 USD succeeded stripe sub_sub_1Sn2UsPdRe4dWeLwmhE8rh69 cs_test_b1iPR6W3HeV58JsmbDv3W53atRuEiEA1wrSCNwKQ3sLFhZFnuuZBUHLAQ4 \N \N \N 2026-01-07 19:34:31.600476+00 2026-01-07 19:34:31.600474+00 \N \N {"plan_id": "4", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2UsPdRe4dWeLwmhE8rh69", "checkout_session_id": "cs_test_b1iPR6W3HeV58JsmbDv3W53atRuEiEA1wrSCNwKQ3sLFhZFnuuZBUHLAQ4"} 2026-01-07 19:34:31.600839+00 2026-01-07 19:34:31.600843+00 56 2026-01-12 11:24:56.908576+00 \N - 134 \N 3 48
+36 299.00 USD succeeded paypal \N \N 6SP712609W4179440 6UT198740L4677413 \N 2026-01-07 21:47:32.334483+00 2026-01-07 21:47:32.33448+00 \N \N {"plan_id": "5", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 21:47:32.334883+00 2026-01-07 21:47:32.334887+00 42 2026-01-07 21:47:32.335985+00 \N + 139 \N \N 53
+20 27522.00 PKR succeeded bank_transfer \N \N \N \N 112233344 2026-01-07 14:42:09.658497+00 2026-01-07 14:42:09.658502+00 \N \N {} 2026-01-07 14:04:55.681685+00 2026-01-07 14:42:09.658661+00 27 2026-01-07 17:34:15.82379+00 \N - 122 3 3 36
+18 299.00 USD succeeded paypal \N \N 01474504S6586113X 0C5077039A388543H \N 2026-01-07 08:31:36.339612+00 2026-01-07 08:31:36.339609+00 \N \N {"plan_id": "5", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 08:31:36.34005+00 2026-01-07 08:31:36.340055+00 28 2026-01-07 17:34:16.052671+00 \N - 119 \N 3 33
+17 99.00 USD succeeded stripe sub_sub_1SmqguPdRe4dWeLwQ1NiRpmG cs_test_b1Noq1QcJ65vi2y8QAGNAO7gFB6qduciUvBHwB8ndglmADBuXl95P7xdj9 \N \N \N 2026-01-07 06:58:02.594331+00 2026-01-07 06:58:02.594327+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1SmqguPdRe4dWeLwQ1NiRpmG", "checkout_session_id": "cs_test_b1Noq1QcJ65vi2y8QAGNAO7gFB6qduciUvBHwB8ndglmADBuXl95P7xdj9"} 2026-01-07 06:58:02.594825+00 2026-01-07 06:58:02.594831+00 29 2026-01-07 17:34:16.216807+00 \N - 117 \N 3 31
+16 99.00 USD succeeded stripe sub_sub_1Smq6EPdRe4dWeLwVXaITQNe cs_test_b1E6SS441m26QYwfgkLXEZ7Hz72MXQqgCY194dU7dbDQfbqX73eMrHec3H \N \N \N \N 2026-01-07 06:20:08.565584+00 \N \N {"plan_id": "2", "payment_intent": null, "subscription_id": "sub_1Smq6EPdRe4dWeLwVXaITQNe", "checkout_session_id": "cs_test_b1E6SS441m26QYwfgkLXEZ7Hz72MXQqgCY194dU7dbDQfbqX73eMrHec3H"} 2026-01-07 06:20:08.566288+00 2026-01-07 06:20:08.566296+00 30 2026-01-07 17:34:16.290753+00 \N - 116 \N 3 30
+38 99.00 USD succeeded paypal \N \N 0TR53037EF4354343 4MB1074548728674L \N 2026-01-07 23:33:04.879912+00 2026-01-07 23:33:04.87991+00 \N \N {"plan_id": "2", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 23:33:04.880458+00 2026-01-07 23:33:04.880463+00 45 2026-01-07 23:33:04.882873+00 \N + 141 \N \N 55
+42 199.00 USD succeeded bank_transfer \N \N \N \N 112233 Bulk approved by dev@igny8.com 2026-01-08 04:11:40.079412+00 2026-01-08 04:11:40.079418+00 \N \N {} 2026-01-08 04:10:41.80769+00 2026-01-08 04:11:40.079529+00 60 2026-01-12 11:33:48.473494+00 \N - 145 3 3 59
+40 99.00 USD succeeded stripe sub_sub_1Sn9f1PdRe4dWeLwdb4UZg4U cs_test_b1IJRo36GNNtLxtGo84MNPT1EEr5ITcRdXgF5MJCNRdtDEBnAQYmGYda5y \N \N \N 2026-01-08 03:13:21.10696+00 2026-01-08 03:13:21.106957+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn9f1PdRe4dWeLwdb4UZg4U", "checkout_session_id": "cs_test_b1IJRo36GNNtLxtGo84MNPT1EEr5ITcRdXgF5MJCNRdtDEBnAQYmGYda5y"} 2026-01-08 03:13:21.107275+00 2026-01-08 03:13:21.107278+00 63 2026-01-12 11:37:54.565625+00 \N - 143 \N 3 57
+29 99.00 USD succeeded stripe sub_sub_1Sn2C1PdRe4dWeLwmo4UCqDt cs_test_b1Z2OzYHhp7YMGoPX8kerqoBwCxSDV3pIgZOm82TrDFQgp89aGIGkuwd2u \N \N \N 2026-01-07 19:14:56.197352+00 2026-01-07 19:14:56.197349+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2C1PdRe4dWeLwmo4UCqDt", "checkout_session_id": "cs_test_b1Z2OzYHhp7YMGoPX8kerqoBwCxSDV3pIgZOm82TrDFQgp89aGIGkuwd2u"} 2026-01-07 19:14:56.197706+00 2026-01-07 19:14:56.19771+00 35 2026-01-07 19:14:56.198334+00 \N + 132 \N \N 46
+30 99.00 USD succeeded stripe sub_sub_1Sn2EPPdRe4dWeLwQLpkU90x cs_test_b19w1GIMeLwaEPzVHAdyFo43GgifnVZczwJZ10kDwcRz7RK8P7QTorInHy \N \N \N 2026-01-07 19:17:23.365363+00 2026-01-07 19:17:23.365361+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2EPPdRe4dWeLwQLpkU90x", "checkout_session_id": "cs_test_b19w1GIMeLwaEPzVHAdyFo43GgifnVZczwJZ10kDwcRz7RK8P7QTorInHy"} 2026-01-07 19:17:23.365593+00 2026-01-07 19:17:23.365597+00 36 2026-01-07 19:17:23.366259+00 \N + 133 \N \N 47
+31 199.00 USD succeeded stripe sub_sub_1Sn2UsPdRe4dWeLwmhE8rh69 cs_test_b1iPR6W3HeV58JsmbDv3W53atRuEiEA1wrSCNwKQ3sLFhZFnuuZBUHLAQ4 \N \N \N 2026-01-07 19:34:31.600476+00 2026-01-07 19:34:31.600474+00 \N \N {"plan_id": "4", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2UsPdRe4dWeLwmhE8rh69", "checkout_session_id": "cs_test_b1iPR6W3HeV58JsmbDv3W53atRuEiEA1wrSCNwKQ3sLFhZFnuuZBUHLAQ4"} 2026-01-07 19:34:31.600839+00 2026-01-07 19:34:31.600843+00 37 2026-01-07 19:34:31.601372+00 \N + 134 \N \N 48
+32 299.00 USD succeeded stripe sub_sub_1Sn2lsPdRe4dWeLwXPc6wB0w cs_test_b1YwMtMnl402owL9Twoqz7btZyrvvwQu6qNMImENUwkHMDPvxayxBvlJ5j \N \N \N 2026-01-07 19:51:59.013709+00 2026-01-07 19:51:59.013706+00 \N \N {"plan_id": "5", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2lsPdRe4dWeLwXPc6wB0w", "checkout_session_id": "cs_test_b1YwMtMnl402owL9Twoqz7btZyrvvwQu6qNMImENUwkHMDPvxayxBvlJ5j"} 2026-01-07 19:51:59.014048+00 2026-01-07 19:51:59.014054+00 38 2026-01-07 19:51:59.014662+00 \N + 135 \N \N 49
+33 99.00 USD succeeded stripe sub_sub_1Sn35DPdRe4dWeLw1QTj5I7z cs_test_b1H8x9j1Oh5EZVlHRWyA9Pg8KriMpAKd70ZhPtakX8Req2IqOVdwQCcf7u \N \N \N 2026-01-07 20:11:57.963588+00 2026-01-07 20:11:57.963585+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn35DPdRe4dWeLw1QTj5I7z", "checkout_session_id": "cs_test_b1H8x9j1Oh5EZVlHRWyA9Pg8KriMpAKd70ZhPtakX8Req2IqOVdwQCcf7u"} 2026-01-07 20:11:57.963983+00 2026-01-07 20:11:57.963989+00 39 2026-01-07 20:11:57.964581+00 \N + 136 \N \N 50
+34 99.00 USD succeeded stripe sub_sub_1Sn3ppPdRe4dWeLwJ9oluGsL cs_test_b1Eok3UbgXFslugWFBDgPqbWzvNpwrSqbCj8vrTmJxN5ivFIC3rprt0Kyt \N \N \N 2026-01-07 21:00:08.029841+00 2026-01-07 21:00:08.029838+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn3ppPdRe4dWeLwJ9oluGsL", "checkout_session_id": "cs_test_b1Eok3UbgXFslugWFBDgPqbWzvNpwrSqbCj8vrTmJxN5ivFIC3rprt0Kyt"} 2026-01-07 21:00:08.030228+00 2026-01-07 21:00:08.030232+00 40 2026-01-07 21:00:08.031163+00 \N + 137 \N \N 51
+37 199.00 USD succeeded bank_transfer \N \N \N \N tnv-114455 2026-01-07 22:16:42.333937+00 2026-01-07 22:16:42.333945+00 \N \N {} 2026-01-07 21:57:11.447492+00 2026-01-07 22:16:42.334101+00 44 2026-01-07 22:16:42.33583+00 \N ~ 140 3 3 54
+37 199.00 USD pending_approval bank_transfer \N \N \N \N tnv-114455 \N \N \N \N {} 2026-01-07 21:57:11.447492+00 2026-01-07 21:57:11.447501+00 43 2026-01-07 21:57:11.451478+00 \N + 140 \N \N 54
+40 99.00 USD succeeded stripe sub_sub_1Sn9f1PdRe4dWeLwdb4UZg4U cs_test_b1IJRo36GNNtLxtGo84MNPT1EEr5ITcRdXgF5MJCNRdtDEBnAQYmGYda5y \N \N \N 2026-01-08 03:13:21.10696+00 2026-01-08 03:13:21.106957+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn9f1PdRe4dWeLwdb4UZg4U", "checkout_session_id": "cs_test_b1IJRo36GNNtLxtGo84MNPT1EEr5ITcRdXgF5MJCNRdtDEBnAQYmGYda5y"} 2026-01-08 03:13:21.107275+00 2026-01-08 03:13:21.107278+00 48 2026-01-08 03:13:21.1106+00 \N + 143 \N \N 57
+37 199.00 USD succeeded bank_transfer \N \N \N \N tnv-114455 2026-01-07 22:16:42.333937+00 2026-01-07 22:16:42.333945+00 \N \N {} 2026-01-07 21:57:11.447492+00 2026-01-07 22:16:42.334101+00 49 2026-01-08 03:38:15.120667+00 \N - 140 3 3 54
+41 299.00 USD succeeded stripe sub_sub_1SnA6APdRe4dWeLw4c5oqar3 cs_test_b1Bg42PLwcxtspBAeP80Py5ZoJrYkehFb8mdj7LxoD2YVuN4K4tLkJKdGv \N \N \N 2026-01-08 03:41:25.121114+00 2026-01-08 03:41:25.121111+00 \N \N {"plan_id": "5", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1SnA6APdRe4dWeLw4c5oqar3", "checkout_session_id": "cs_test_b1Bg42PLwcxtspBAeP80Py5ZoJrYkehFb8mdj7LxoD2YVuN4K4tLkJKdGv"} 2026-01-08 03:41:25.121479+00 2026-01-08 03:41:25.121483+00 50 2026-01-08 03:41:25.12229+00 \N + 144 \N \N 58
+42 199.00 USD succeeded bank_transfer \N \N \N \N 112233 Bulk approved by dev@igny8.com 2026-01-08 04:11:40.079412+00 2026-01-08 04:11:40.079418+00 \N \N {} 2026-01-08 04:10:41.80769+00 2026-01-08 04:11:40.079529+00 52 2026-01-08 04:11:40.080618+00 \N ~ 145 3 3 59
+41 299.00 USD succeeded stripe sub_sub_1SnA6APdRe4dWeLw4c5oqar3 cs_test_b1Bg42PLwcxtspBAeP80Py5ZoJrYkehFb8mdj7LxoD2YVuN4K4tLkJKdGv \N \N \N 2026-01-08 03:41:25.121114+00 2026-01-08 03:41:25.121111+00 \N \N {"plan_id": "5", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1SnA6APdRe4dWeLw4c5oqar3", "checkout_session_id": "cs_test_b1Bg42PLwcxtspBAeP80Py5ZoJrYkehFb8mdj7LxoD2YVuN4K4tLkJKdGv"} 2026-01-08 03:41:25.121479+00 2026-01-08 03:41:25.121483+00 53 2026-01-12 09:43:25.79927+00 \N - 144 \N 3 58
+36 299.00 USD succeeded paypal \N \N 6SP712609W4179440 6UT198740L4677413 \N 2026-01-07 21:47:32.334483+00 2026-01-07 21:47:32.33448+00 \N \N {"plan_id": "5", "auto_approved": true, "subscription_type": "paypal_order"} 2026-01-07 21:47:32.334883+00 2026-01-07 21:47:32.334887+00 57 2026-01-12 11:25:46.221113+00 \N - 139 \N 3 53
+32 299.00 USD succeeded stripe sub_sub_1Sn2lsPdRe4dWeLwXPc6wB0w cs_test_b1YwMtMnl402owL9Twoqz7btZyrvvwQu6qNMImENUwkHMDPvxayxBvlJ5j \N \N \N 2026-01-07 19:51:59.013709+00 2026-01-07 19:51:59.013706+00 \N \N {"plan_id": "5", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2lsPdRe4dWeLwXPc6wB0w", "checkout_session_id": "cs_test_b1YwMtMnl402owL9Twoqz7btZyrvvwQu6qNMImENUwkHMDPvxayxBvlJ5j"} 2026-01-07 19:51:59.014048+00 2026-01-07 19:51:59.014054+00 58 2026-01-12 11:25:46.281449+00 \N - 135 \N 3 49
+42 199.00 USD pending_approval bank_transfer \N \N \N \N 112233 \N \N \N \N {} 2026-01-08 04:10:41.80769+00 2026-01-08 04:10:41.807698+00 51 2026-01-08 04:10:41.809751+00 \N + 145 \N \N 59
+30 99.00 USD succeeded stripe sub_sub_1Sn2EPPdRe4dWeLwQLpkU90x cs_test_b19w1GIMeLwaEPzVHAdyFo43GgifnVZczwJZ10kDwcRz7RK8P7QTorInHy \N \N \N 2026-01-07 19:17:23.365363+00 2026-01-07 19:17:23.365361+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2EPPdRe4dWeLwQLpkU90x", "checkout_session_id": "cs_test_b19w1GIMeLwaEPzVHAdyFo43GgifnVZczwJZ10kDwcRz7RK8P7QTorInHy"} 2026-01-07 19:17:23.365593+00 2026-01-07 19:17:23.365597+00 61 2026-01-12 11:37:20.897779+00 \N - 133 \N 3 47
+29 99.00 USD succeeded stripe sub_sub_1Sn2C1PdRe4dWeLwmo4UCqDt cs_test_b1Z2OzYHhp7YMGoPX8kerqoBwCxSDV3pIgZOm82TrDFQgp89aGIGkuwd2u \N \N \N 2026-01-07 19:14:56.197352+00 2026-01-07 19:14:56.197349+00 \N \N {"plan_id": "2", "auto_approved": true, "payment_intent": null, "subscription_id": "sub_1Sn2C1PdRe4dWeLwmo4UCqDt", "checkout_session_id": "cs_test_b1Z2OzYHhp7YMGoPX8kerqoBwCxSDV3pIgZOm82TrDFQgp89aGIGkuwd2u"} 2026-01-07 19:14:56.197706+00 2026-01-07 19:14:56.19771+00 62 2026-01-12 11:37:20.899558+00 \N - 132 \N 3 46
+\.
+
+
+--
+-- Data for Name: cdimages; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.cdimages (mediaid, lastburn) FROM stdin;
+\.
+
+
+--
+-- Data for Name: client; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.client (clientid, name, uname, autoprune, fileretention, jobretention) FROM stdin;
+\.
+
+
+--
+-- Data for Name: counters; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.counters (counter, minvalue, maxvalue, currentvalue, wrapcounter) FROM stdin;
+\.
+
+
+--
+-- Data for Name: device; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.device (deviceid, name, mediatypeid, storageid, devmounts, devreadbytes, devwritebytes, devreadbytessincecleaning, devwritebytessincecleaning, devreadtime, devwritetime, devreadtimesincecleaning, devwritetimesincecleaning, cleaningdate, cleaningperiod) FROM stdin;
+\.
+
+
+--
+-- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) FROM stdin;
+443 2025-11-28 12:08:10.128222+00 41 Creating the perfect outdoor patio: design ideas and inspirations 2 [{"changed": {"fields": ["Status"]}}] 21 3
+444 2025-11-30 02:20:18.40655+00 76 [Site Builder] Contact Us 3 22 3
+445 2025-11-30 02:20:18.406604+00 75 [Site Builder] Blog 3 22 3
+446 2025-11-30 02:20:18.406616+00 74 [Site Builder] FAQ 3 22 3
+447 2025-11-30 02:22:03.872434+00 30 How to Put on a Duvet Cover the Easy Way 3 21 3
+448 2025-11-30 02:22:15.4642+00 33 Duvet Covers Guide – What are Duvet Covers, Best Materials, Purpose and USA Size Guide 3 21 3
+449 2025-11-30 02:22:43.404014+00 5 Comprehensive guide to kitchen remodeling: transforming your space 3 21 3
+450 2025-11-30 02:23:41.253067+00 76 [Site Builder] Contact Us 3 22 3
+451 2025-11-30 02:23:41.253102+00 75 [Site Builder] Blog 3 22 3
+452 2025-11-30 02:23:41.253113+00 74 [Site Builder] FAQ 3 22 3
+453 2025-11-30 02:50:43.122426+00 76 [Site Builder] Contact Us 3 22 3
+454 2025-11-30 02:50:43.122468+00 75 [Site Builder] Blog 3 22 3
+455 2025-11-30 02:50:43.122484+00 74 [Site Builder] FAQ 3 22 3
+456 2025-11-30 03:20:34.096461+00 388 wall art ideas 3 18 3
+457 2025-11-30 05:02:28.841079+00 70 Essential Lawn Mowing Tips for a Pristine Yard 3 22 3
+458 2025-11-30 05:02:28.84111+00 61 Comprehensive Guide to Kitchen Remodeling: Transforming Your Space 3 22 3
+459 2025-11-30 05:02:28.841122+00 60 Your Ultimate Home Repair Guide: DIY Solutions for Every Homeowner 3 22 3
+460 2025-11-30 05:03:41.620284+00 70 Essential Lawn Mowing Tips for a Pristine Yard 3 22 3
+461 2025-11-30 05:03:41.620323+00 61 Comprehensive Guide to Kitchen Remodeling: Transforming Your Space 3 22 3
+462 2025-11-30 05:03:41.620338+00 60 Your Ultimate Home Repair Guide: DIY Solutions for Every Homeowner 3 22 3
+463 2025-11-30 05:45:57.56936+00 70 Essential Lawn Mowing Tips for a Pristine Yard 3 22 3
+464 2025-11-30 05:45:57.569414+00 61 Comprehensive Guide to Kitchen Remodeling: Transforming Your Space 3 22 3
+465 2025-11-30 05:45:57.569428+00 60 Your Ultimate Home Repair Guide: DIY Solutions for Every Homeowner 3 22 3
+466 2025-11-30 07:17:31.661733+00 61 Comprehensive Guide to Kitchen Remodeling: Transforming Your Space 3 22 3
+467 2025-11-30 07:17:31.661771+00 60 Your Ultimate Home Repair Guide: DIY Solutions for Every Homeowner 3 22 3
+3122 2025-12-28 23:37:55.706506+00 647 3 70 3
+469 2025-12-01 06:40:58.767019+00 49 Ultimate vegetable gardening guide: From seed to harvest 3 21 3
+470 2025-12-01 06:40:58.767066+00 48 Ultimate guide to back massagers for relief: finding your perfect fit 3 21 3
+471 2025-12-01 06:40:58.767082+00 20 Our Passion for Cars: Discovering the Heart of Auto G8 3 21 3
+472 2025-12-01 06:40:58.767095+00 19 Explore Our Products: Site Builder Products Overview 3 21 3
+473 2025-12-01 06:40:58.767108+00 18 Frequently asked questions about site builders 3 21 3
+474 2025-12-01 06:40:58.76712+00 17 Welcome to Our Blog: Discover the Latest Articles 3 21 3
+475 2025-12-01 06:40:58.767133+00 16 Transform Your Ride with Auto G8 Home Solutions 3 21 3
+476 2025-12-01 06:40:58.767149+00 15 Get in touch with us for your site builder needs 3 21 3
+477 2025-12-01 06:41:33.490446+00 121 Ultimate Guide to Back Massagers for Relief: Finding Your Perfect Fit 3 22 3
+478 2025-12-01 06:41:33.490487+00 117 Ultimate Vegetable Gardening Guide: From Seed to Harvest 3 22 3
+479 2025-12-01 06:41:33.490504+00 76 [Site Builder] Contact Us 3 22 3
+480 2025-12-01 06:41:33.490516+00 75 [Site Builder] Blog 3 22 3
+481 2025-12-01 06:41:33.490527+00 74 [Site Builder] FAQ 3 22 3
+482 2025-12-01 06:41:33.490534+00 73 [Site Builder] Products 3 22 3
+483 2025-12-01 06:41:33.490542+00 72 [Site Builder] About Us 3 22 3
+484 2025-12-01 06:41:33.490553+00 71 [Site Builder] Home 3 22 3
+485 2025-12-01 06:41:33.490562+00 60 Your Ultimate Home Repair Guide: DIY Solutions for Every Homeowner 3 22 3
+486 2025-12-04 18:31:27.91932+00 6 Enterprise Plan 2 [{"changed": {"fields": ["Max users", "Included credits"]}}] 6 3
+487 2025-12-04 18:31:28.054118+00 6 Enterprise Plan 2 [] 6 3
+488 2025-12-04 19:36:31.180278+00 2 Automation Config: https://homeg8.com (daily) 2 [{"changed": {"fields": ["Within stage delay", "Between stage delay"]}}] 60 3
+489 2025-12-04 19:36:46.220129+00 3 Automation Config: https://massagersmart.com (daily) 2 [{"changed": {"fields": ["Within stage delay", "Between stage delay"]}}] 60 3
+490 2025-12-04 19:36:46.394611+00 3 Automation Config: https://massagersmart.com (daily) 2 [] 60 3
+491 2025-12-04 20:43:32.474593+00 156 Comparing the Best Back Massagers for Effective Pain Relief - in_article 3 23 3
+492 2025-12-04 20:43:32.474642+00 155 Comparing the Best Back Massagers for Effective Pain Relief - in_article 3 23 3
+493 2025-12-04 20:43:32.474662+00 154 Comparing the Best Back Massagers for Effective Pain Relief - featured 3 23 3
+494 2025-12-04 20:43:32.474679+00 153 Top 10 neck and back massagers for comfort and relief - in_article 3 23 3
+495 2025-12-04 20:43:32.474695+00 152 Top 10 neck and back massagers for comfort and relief - in_article 3 23 3
+496 2025-12-04 20:43:32.474711+00 151 Top 10 neck and back massagers for comfort and relief - featured 3 23 3
+497 2025-12-04 20:43:32.474727+00 150 The Ultimate Guide to Choosing the Right Neck and Back Massager - in_article 3 23 3
+498 2025-12-04 20:43:32.474748+00 149 The Ultimate Guide to Choosing the Right Neck and Back Massager - in_article 3 23 3
+499 2025-12-04 20:43:32.474765+00 148 The Ultimate Guide to Choosing the Right Neck and Back Massager - featured 3 23 3
+500 2025-12-04 20:43:32.474781+00 147 Ultimate guide to back massagers for relief: Finding your perfect fit - in_article 3 23 3
+501 2025-12-04 20:43:32.474797+00 146 Ultimate guide to back massagers for relief: Finding your perfect fit - in_article 3 23 3
+502 2025-12-04 20:43:32.474813+00 145 Ultimate guide to back massagers for relief: Finding your perfect fit - featured 3 23 3
+503 2025-12-04 20:43:32.474827+00 144 Choosing the right massager for your back: key considerations - in_article 3 23 3
+504 2025-12-04 20:43:32.474846+00 143 Choosing the right massager for your back: key considerations - in_article 3 23 3
+505 2025-12-04 20:43:32.474869+00 142 Choosing the right massager for your back: key considerations - featured 3 23 3
+506 2025-12-04 20:43:32.474888+00 141 Effective massagers for back pain relief: A comprehensive guide - in_article 3 23 3
+507 2025-12-04 20:43:32.474922+00 140 Effective massagers for back pain relief: A comprehensive guide - in_article 3 23 3
+508 2025-12-04 20:43:32.474938+00 139 Effective massagers for back pain relief: A comprehensive guide - featured 3 23 3
+509 2025-12-04 20:43:32.474952+00 138 The Ultimate Guide to Shiatsu Massagers for Neck and Back Relief - in_article 3 23 3
+510 2025-12-04 20:43:32.474965+00 137 The Ultimate Guide to Shiatsu Massagers for Neck and Back Relief - in_article 3 23 3
+511 2025-12-04 20:43:32.474976+00 136 The Ultimate Guide to Shiatsu Massagers for Neck and Back Relief - featured 3 23 3
+512 2025-12-04 20:43:32.474986+00 135 Comparing the Best Shiatsu Massagers for Neck and Back Pain Relief - in_article 3 23 3
+513 2025-12-04 20:43:32.474996+00 134 Comparing the Best Shiatsu Massagers for Neck and Back Pain Relief - in_article 3 23 3
+514 2025-12-04 20:43:32.475006+00 133 Comparing the Best Shiatsu Massagers for Neck and Back Pain Relief - featured 3 23 3
+515 2025-12-04 20:43:32.475017+00 33 Top 10 Python Libraries Every Developer Should Know - in_article 3 23 3
+516 2025-12-04 20:43:32.475028+00 32 Top 10 Python Libraries Every Developer Should Know - in_article 3 23 3
+517 2025-12-04 20:43:32.475039+00 31 Top 10 Python Libraries Every Developer Should Know - featured 3 23 3
+518 2025-12-04 20:43:32.475049+00 30 Mastering Python Programming: A Comprehensive Guide for Beginners - in_article 3 23 3
+519 2025-12-04 20:43:32.475059+00 29 Mastering Python Programming: A Comprehensive Guide for Beginners - in_article 3 23 3
+520 2025-12-04 20:43:32.475069+00 28 Mastering Python Programming: A Comprehensive Guide for Beginners - featured 3 23 3
+521 2025-12-04 20:43:32.475083+00 27 Handheld vs. Branded Back Massagers: Which One Fits Your Lifestyle? - in_article 3 23 3
+522 2025-12-04 20:43:32.475097+00 26 Handheld vs. Branded Back Massagers: Which One Fits Your Lifestyle? - in_article 3 23 3
+523 2025-12-04 20:43:32.475122+00 25 Handheld vs. Branded Back Massagers: Which One Fits Your Lifestyle? - featured 3 23 3
+524 2025-12-04 20:43:32.475142+00 24 Ultimate guide to back massagers: relieve pain and enhance relaxation - in_article 3 23 3
+525 2025-12-04 20:43:32.475158+00 23 Ultimate guide to back massagers: relieve pain and enhance relaxation - in_article 3 23 3
+526 2025-12-04 20:43:32.47517+00 22 Ultimate guide to back massagers: relieve pain and enhance relaxation - featured 3 23 3
+527 2025-12-04 20:43:32.475181+00 21 The Ultimate Guide to Shopping for Back Massagers: Find Your Perfect Fit - in_article 3 23 3
+528 2025-12-04 20:43:32.475191+00 20 The Ultimate Guide to Shopping for Back Massagers: Find Your Perfect Fit - in_article 3 23 3
+529 2025-12-04 20:43:32.475202+00 19 The Ultimate Guide to Shopping for Back Massagers: Find Your Perfect Fit - featured 3 23 3
+530 2025-12-04 20:44:19.99679+00 102 Exploring the Best Chair and Car Back Massagers for Ultimate Comfort 3 21 3
+531 2025-12-04 20:44:19.996833+00 101 The Ultimate Guide to Portable and Convenient Back Massagers 3 21 3
+532 2025-12-04 20:44:19.996849+00 98 Comparing the Best Back Massagers for Effective Pain Relief 3 21 3
+533 2025-12-04 20:44:19.996863+00 97 The Ultimate Guide to Back Massagers for Pain Relief 3 21 3
+534 2025-12-04 20:44:19.996875+00 96 Comparing the Best Shiatsu Massagers for Neck and Back Pain Relief 3 21 3
+535 2025-12-04 20:44:19.996886+00 95 The Ultimate Guide to Shiatsu Massagers for Neck and Back Relief 3 21 3
+536 2025-12-04 20:44:19.996925+00 94 Top 10 neck and back massagers for comfort and relief 3 21 3
+537 2025-12-04 20:44:19.996942+00 93 The Ultimate Guide to Choosing the Right Neck and Back Massager 3 21 3
+538 2025-12-04 20:44:19.996951+00 92 Choosing the right massager for your back: key considerations 3 21 3
+539 2025-12-04 20:44:19.99696+00 91 Effective massagers for back pain relief: A comprehensive guide 3 21 3
+540 2025-12-04 20:44:19.996967+00 90 Ultimate guide to back massagers for relief: Finding your perfect fit 3 21 3
+541 2025-12-04 20:44:19.996975+00 62 Comparative review: Shiatsu vs. Venom back massagers 3 21 3
+542 2025-12-04 20:44:19.996982+00 61 Exploring the Best Back Massagers: A Comprehensive Buying Guide 3 21 3
+543 2025-12-04 20:44:19.996989+00 60 Top 10 Python Libraries Every Developer Should Know 3 21 3
+544 2025-12-04 20:44:19.996996+00 59 Mastering Python Programming: A Comprehensive Guide for Beginners 3 21 3
+545 2025-12-04 20:44:19.997003+00 58 Handheld vs. Branded Back Massagers: Which One Fits Your Lifestyle? 3 21 3
+546 2025-12-04 20:44:19.99701+00 57 Ultimate guide to back massagers: relieve pain and enhance relaxation 3 21 3
+547 2025-12-04 20:44:19.997017+00 56 The Ultimate Guide to Shopping for Back Massagers: Find Your Perfect Fit 3 21 3
+548 2025-12-04 20:57:36.208705+00 310 Back Massagers 3 19 3
+549 2025-12-04 20:57:36.208758+00 322 Back Massagers for Pain Relief 3 19 3
+550 2025-12-04 20:57:36.208783+00 283 Back Massagers for Relief 3 19 3
+551 2025-12-04 20:57:36.2088+00 312 Back Pain Relief Solutions 3 19 3
+552 2025-12-04 20:57:36.208813+00 313 General Neck and Back Massagers 3 19 3
+553 2025-12-04 20:57:36.208825+00 323 Portable and Convenient Back Massagers 3 19 3
+554 2025-12-04 20:57:36.208838+00 311 Python Programming 3 19 3
+555 2025-12-04 20:57:36.208858+00 314 Shiatsu Massagers for Neck and Back Relief 3 19 3
+556 2025-12-04 20:57:36.208878+00 284 Shopping for Back Massagers 3 19 3
+557 2025-12-05 02:16:32.8988+00 17 AWS Admin - Test Site 3 13 3
+558 2025-12-05 02:16:32.898853+00 15 AWS Admin - Ira Cares 3 13 3
+559 2025-12-05 02:16:32.898874+00 14 AWS Admin - Vaino Apparel 3 13 3
+560 2025-12-05 02:16:32.898891+00 13 AWS Admin - AI AI 3 13 3
+561 2025-12-05 02:16:32.898938+00 12 AWS Admin - new site 3 13 3
+562 2025-12-05 02:16:32.898956+00 11 Salman Sadiq - Salman Sadiq 3 13 3
+563 2025-12-05 02:16:32.898973+00 10 AWS Admin - IT Services Company 3 13 3
+564 2025-12-05 02:16:32.899151+00 9 AWS Admin - Auto G8 3 13 3
+565 2025-12-05 02:26:59.221079+00 1 Free Plan 2 [{"changed": {"fields": ["Is active"]}}] 6 3
+566 2025-12-06 15:47:37.895536+00 21 slaman tacbit 3 8 3
+567 2025-12-07 02:21:03.694184+00 44 test@example.com 3 7 3
+568 2025-12-07 02:21:03.694243+00 46 test2@example.com 3 7 3
+569 2025-12-07 02:21:03.69426+00 47 test3@example.com 3 7 3
+570 2025-12-07 02:21:30.881065+00 18 test3 3 8 3
+571 2025-12-07 02:21:30.881111+00 17 test2 3 8 3
+572 2025-12-07 02:21:30.881128+00 15 test 3 8 3
+573 2025-12-07 07:33:21.602812+00 40 bluesalman@htomail.com 3 7 3
+574 2025-12-07 07:33:21.602851+00 42 growth@igny8.com 3 7 3
+575 2025-12-07 07:33:21.602868+00 45 newuser@example.com 3 7 3
+576 2025-12-07 07:33:21.602881+00 48 salman@alorig.com 3 7 3
+577 2025-12-07 07:33:21.602893+00 41 starter@igny8.com 3 7 3
+578 2025-12-07 07:33:43.507597+00 19 Salman Sadiq 3 8 3
+579 2025-12-07 07:33:43.507645+00 16 newuser 3 8 3
+580 2025-12-07 07:33:43.507663+00 13 Growth Account 3 8 3
+581 2025-12-07 07:33:43.507675+00 12 Starter Account 3 8 3
+582 2025-12-07 09:59:42.086576+00 20 29 - Manual Payment (PK JazzCash/EasyPaisa) (local_wallet) 2 [{"changed": {"fields": ["Type"]}}] 67 3
+583 2025-12-07 10:00:34.491083+00 29 Home G8 2 [{"changed": {"fields": ["Plan"]}}] 8 3
+584 2025-12-07 14:08:17.946265+00 29 Home G8 2 [{"changed": {"fields": ["Status"]}}] 8 3
+585 2025-12-07 14:11:16.792573+00 29 Home G8 2 [{"changed": {"fields": ["Credits"]}}] 8 3
+586 2025-12-08 06:21:32.670535+00 1 Free Plan 2 [{"changed": {"fields": ["Is active"]}}] 6 3
+587 2025-12-08 06:22:32.247838+00 30 TacBit 2 [{"changed": {"fields": ["Plan", "Credits"]}}] 8 3
+588 2025-12-08 07:43:05.318473+00 1 Scale Account - active 1 [{"added": {}}] 16 3
+589 2025-12-08 07:43:42.417667+00 14 Scale Account 2 [{"changed": {"fields": ["Payment method"]}}] 8 3
+590 2025-12-08 07:43:59.579616+00 1 Scale Account - active 2 [{"changed": {"fields": ["Payment method"]}}] 16 3
+591 2025-12-08 08:20:18.232163+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+592 2025-12-08 08:56:13.976082+00 32 Alorig 2 3 8 3
+593 2025-12-08 08:56:13.97613+00 31 Alorig1 3 8 3
+594 2025-12-08 08:56:13.976146+00 30 TacBit 3 8 3
+595 2025-12-08 08:56:13.976157+00 28 Auto Remote 3 8 3
+596 2025-12-08 08:56:13.976169+00 27 testing ssytem 3 8 3
+597 2025-12-08 08:56:13.976181+00 26 Slug Fix 3 8 3
+598 2025-12-08 08:56:13.976196+00 25 Salman Raza Sadiq 3 8 3
+599 2025-12-08 08:56:36.330064+00 60 alorig2@alorig.com 3 7 3
+600 2025-12-08 08:56:36.330133+00 56 auto+remote0003@example.com 3 7 3
+601 2025-12-08 08:56:36.330158+00 58 payments@tacbit.net 3 7 3
+602 2025-12-08 08:56:36.330182+00 59 salman1@alorig.com 3 7 3
+603 2025-12-08 08:56:36.330202+00 53 tacbit.com@gmail.com 3 7 3
+604 2025-12-08 08:56:36.330216+00 55 test@testingsystem.com 3 7 3
+605 2025-12-08 08:56:36.330231+00 54 test+slugfix@example.com 3 7 3
+606 2025-12-08 12:48:26.608468+00 5 Invoice INV-API-TEST-002 - Scale Account 3 64 3
+607 2025-12-08 12:48:26.608512+00 4 Invoice INV-API-TEST-001 - Scale Account 3 64 3
+608 2025-12-08 12:48:26.608531+00 2 Invoice INV-5-202512-0002 - AWS Admin 3 64 3
+609 2025-12-08 12:48:26.608548+00 1 Invoice INV-5-202512-0001 - AWS Admin 3 64 3
+610 2025-12-09 00:39:29.405056+00 88 asdasdsa 3 8 3
+611 2025-12-09 00:39:29.405091+00 87 Paid's Account 3 8 3
+612 2025-12-09 00:39:29.405103+00 86 Free's Account 3 8 3
+613 2025-12-09 00:39:29.405112+00 74 Test Account 3 8 3
+614 2025-12-09 00:39:29.405121+00 73 asdasdadaadsasd 3 8 3
+615 2025-12-09 00:39:29.405129+00 72 adsasdsa 3 8 3
+616 2025-12-09 00:39:29.405137+00 39 asdklasjdk 3 8 3
+617 2025-12-09 00:39:29.405149+00 38 abc 3 8 3
+618 2025-12-09 00:39:29.405159+00 37 Debug Test 3 8 3
+619 2025-12-09 00:39:29.405168+00 36 Alorig 6 3 8 3
+620 2025-12-09 00:39:29.405176+00 35 Alorig 5 3 8 3
+621 2025-12-09 00:39:29.405183+00 34 New User 3 8 3
+622 2025-12-09 00:39:29.405191+00 33 Test User456 3 8 3
+623 2025-12-09 00:39:55.863413+00 9 Invoice INV-87-202512-0002 - Paid's Account 3 64 3
+624 2025-12-09 00:39:55.863451+00 8 Invoice INV-87-202512-0001 - Paid's Account 3 64 3
+625 2025-12-09 00:39:55.863463+00 7 Invoice INV-85-202512-0001 - Paid's Account 3 64 3
+626 2025-12-09 00:39:55.863472+00 6 Invoice INV-83-202512-0001 - Paid's Account 3 64 3
+627 2025-12-09 00:40:27.342188+00 6 Paid's Account - pending_payment 3 16 3
+628 2025-12-09 00:40:27.342245+00 5 Paid's Account - pending_payment 3 16 3
+629 2025-12-09 00:49:24.680605+00 7 GB - Stripe 3 66 3
+630 2025-12-09 00:49:24.680667+00 8 GB - PayPal 3 66 3
+631 2025-12-09 00:49:24.680692+00 3 IN - Stripe 3 66 3
+632 2025-12-09 00:49:24.68071+00 4 IN - PayPal 3 66 3
+633 2025-12-09 00:49:24.680726+00 1 US - Stripe 3 66 3
+634 2025-12-09 00:49:24.680742+00 2 US - PayPal 3 66 3
+635 2025-12-09 00:50:00.273523+00 5 PK - Bank Transfer 2 [{"changed": {"fields": ["Country code"]}}] 66 3
+636 2025-12-09 00:51:25.13813+00 11 * - manual 3 66 3
+637 2025-12-09 00:52:01.286192+00 10 * - Bank Transfer 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+638 2025-12-09 00:52:01.295757+00 9 GB - Bank Transfer 2 [{"changed": {"fields": ["Sort order"]}}] 66 3
+639 2025-12-09 00:52:01.304437+00 6 IN - Local Wallet 2 [{"changed": {"fields": ["Sort order"]}}] 66 3
+640 2025-12-09 00:52:01.308651+00 5 PK - Bank Transfer 2 [{"changed": {"fields": ["Sort order"]}}] 66 3
+641 2025-12-09 00:52:01.313787+00 14 PK - Local Wallet 2 [{"changed": {"fields": ["Sort order"]}}] 66 3
+642 2025-12-09 00:53:29.340895+00 9 GB - Bank Transfer 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+643 2025-12-09 00:53:29.342508+00 6 IN - Local Wallet 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+644 2025-12-09 01:42:36.216432+00 8 Payment 8 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+645 2025-12-09 01:46:42.142764+00 8 Payment 8 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+646 2025-12-09 01:47:21.787574+00 8 Payment 8 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+647 2025-12-09 01:47:41.738251+00 10 Invoice INV-89-202512-0001 - Paid 1 2 [{"changed": {"fields": ["Status"]}}] 64 3
+648 2025-12-09 01:48:07.937915+00 8 Payment 8 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+649 2025-12-09 01:48:27.147308+00 8 Payment 8 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+650 2025-12-09 01:52:55.683844+00 89 Paid 1 2 [{"changed": {"fields": ["Status"]}}] 8 3
+651 2025-12-09 01:59:58.962984+00 1 12 - Bank Transfer (bank_transfer) 3 67 3
+652 2025-12-09 01:59:58.963036+00 2 12 - Manual Payment (manual) 3 67 3
+653 2025-12-09 01:59:58.963057+00 3 13 - Bank Transfer (bank_transfer) 3 67 3
+654 2025-12-09 01:59:58.963073+00 4 13 - Manual Payment (manual) 3 67 3
+655 2025-12-09 01:59:58.963088+00 6 14 - Manual Payment (manual) 3 67 3
+656 2025-12-09 01:59:58.963102+00 5 14 - Bank Transfer (bank_transfer) 3 67 3
+657 2025-12-09 01:59:58.963116+00 11 15 - Bank Transfer (bank_transfer) 3 67 3
+658 2025-12-09 01:59:58.963139+00 12 15 - Manual Payment (manual) 3 67 3
+659 2025-12-09 01:59:58.963151+00 13 16 - Bank Transfer (bank_transfer) 3 67 3
+660 2025-12-09 01:59:58.963164+00 14 16 - Manual Payment (manual) 3 67 3
+661 2025-12-09 01:59:58.963177+00 15 17 - Bank Transfer (bank_transfer) 3 67 3
+662 2025-12-09 01:59:58.96319+00 16 17 - Manual Payment (manual) 3 67 3
+663 2025-12-09 01:59:58.963201+00 17 18 - Bank Transfer (bank_transfer) 3 67 3
+664 2025-12-09 01:59:58.963208+00 18 18 - Manual Payment (manual) 3 67 3
+665 2025-12-09 01:59:58.963215+00 7 19 - Bank Transfer (bank_transfer) 3 67 3
+666 2025-12-09 01:59:58.963223+00 8 19 - Manual Payment (manual) 3 67 3
+667 2025-12-09 01:59:58.96323+00 20 29 - Manual Payment (PK JazzCash/EasyPaisa) (local_wallet) 3 67 3
+668 2025-12-09 01:59:58.963237+00 19 29 - Bank Transfer (bank_transfer) 3 67 3
+669 2025-12-09 01:59:58.963447+00 21 83 - (bank_transfer) 3 67 3
+670 2025-12-09 01:59:58.963491+00 22 85 - (bank_transfer) 3 67 3
+671 2025-12-09 01:59:58.96351+00 23 87 - (bank_transfer) 3 67 3
+672 2025-12-09 02:02:19.653556+00 14 * - Local Wallet 2 [{"changed": {"fields": ["Country code", "Instructions"]}}] 66 3
+673 2025-12-09 02:06:12.662215+00 9 Payment 9 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+674 2025-12-09 02:06:41.889845+00 9 Payment 9 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+675 2025-12-09 02:13:20.275243+00 9 Payment 9 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+676 2025-12-09 02:14:44.344802+00 9 Payment 9 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+677 2025-12-09 02:14:53.048828+00 9 Payment 9 - Bank Transfer (Manual) - 139.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+678 2025-12-09 04:33:12.131315+00 12 * - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+679 2025-12-09 04:33:12.134437+00 13 * - PayPal 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+680 2025-12-09 04:33:12.135345+00 10 * - Bank Transfer (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+681 2025-12-09 04:33:12.136272+00 15 * - Manual Payment 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+682 2025-12-09 04:33:12.137295+00 9 GB - Bank Transfer (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+683 2025-12-09 04:33:12.138179+00 6 IN - Local Wallet (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+684 2025-12-09 04:53:16.667061+00 12 * - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+685 2025-12-09 04:53:16.66957+00 24 AU - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+686 2025-12-09 04:53:16.671124+00 22 CA - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+687 2025-12-09 04:53:16.672184+00 26 DE - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+688 2025-12-09 04:53:16.673324+00 28 FR - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+689 2025-12-09 04:53:16.67428+00 18 GB - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+690 2025-12-09 04:53:16.676452+00 19 IN - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+691 2025-12-09 04:53:16.677601+00 21 PK - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+692 2025-12-09 04:53:16.678586+00 16 US - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+693 2025-12-09 04:53:29.645347+00 13 * - PayPal 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+694 2025-12-09 06:09:13.047133+00 10 Payment 10 - Bank Transfer (Manual) - 24742.00 PKR 2 [{"changed": {"fields": ["Status"]}}] 65 3
+695 2025-12-09 06:12:07.777324+00 99 ascewwefwe 3 8 3
+696 2025-12-09 06:12:07.777359+00 98 asdasdasdafafjk 3 8 3
+697 2025-12-09 06:12:07.777371+00 97 asdasdsad 3 8 3
+698 2025-12-09 06:12:07.77738+00 96 asdasdasd 3 8 3
+699 2025-12-09 06:12:07.777388+00 95 sdsdds 3 8 3
+700 2025-12-09 06:12:07.777398+00 94 asdsadasd 3 8 3
+701 2025-12-09 06:12:07.777407+00 93 sadsadasd 3 8 3
+702 2025-12-09 06:12:07.777415+00 92 Free Salman 3 8 3
+703 2025-12-09 06:12:07.777422+00 91 Salman Alorig 3 8 3
+704 2025-12-09 06:12:29.044619+00 15 Invoice INV-99-202512-0001 - ascewwefwe 3 64 3
+705 2025-12-09 06:12:29.044666+00 14 Invoice INV-97-202512-0001 - asdasdsad 3 64 3
+706 2025-12-09 06:12:29.04469+00 13 Invoice INV-96-202512-0001 - asdasdasd 3 64 3
+707 2025-12-09 06:12:29.044703+00 12 Invoice INV-91-202512-0001 - Salman Alorig 3 64 3
+708 2025-12-09 06:13:14.436658+00 10 Payment 10 - Bank Transfer (Manual) - 24742.00 PKR 2 [{"changed": {"fields": ["Status"]}}] 65 3
+709 2025-12-09 06:13:29.359082+00 10 Payment 10 - Bank Transfer (Manual) - 24742.00 PKR 2 [{"changed": {"fields": ["Status"]}}] 65 3
+710 2025-12-09 06:18:33.988549+00 66 abc@123.com 3 7 3
+711 2025-12-09 06:18:33.988595+00 63 alorig5@alorig.com 3 7 3
+712 2025-12-09 06:18:33.988607+00 64 alorig6@alorig.com 3 7 3
+713 2025-12-09 06:18:33.988616+00 100 asda@adasda.com 3 7 3
+714 2025-12-09 06:18:33.988623+00 117 asdas@sdsad.com 3 7 3
+715 2025-12-09 06:18:33.98863+00 122 asdasda@adsad.com 3 7 3
+716 2025-12-09 06:18:33.988638+00 128 asdasdada@askdjkasjd.com 3 7 3
+717 2025-12-09 06:18:33.98865+00 127 asdsada@asdsad.com 3 7 3
+718 2025-12-09 06:18:33.98866+00 130 axeeeeeee@cisidj.com 3 7 3
+719 2025-12-09 06:18:33.988668+00 65 debugtest@example.com 3 7 3
+720 2025-12-09 06:18:33.988675+00 124 fdfsdf@dksdsds.com 3 7 3
+721 2025-12-09 06:18:33.988683+00 121 free@salman.com 3 7 3
+722 2025-12-09 06:18:33.98869+00 126 sadasdas@asdasda.com 3 7 3
+723 2025-12-09 06:18:33.988698+00 67 sadhas@sajdsad.com 3 7 3
+724 2025-12-09 06:18:33.988715+00 129 sadwewdas@asdasdasd.com 3 7 3
+725 2025-12-09 06:18:33.988731+00 120 salman@alorig.com 3 7 3
+726 2025-12-09 06:18:33.988751+00 43 scale@igny8.com 3 7 3
+727 2025-12-09 06:18:33.988766+00 101 sdsds@sdsdsd.com 3 7 3
+728 2025-12-09 06:18:33.988777+00 123 sdsdsd@asdsadas.com 3 7 3
+729 2025-12-09 06:18:33.988788+00 61 test456@example.com 3 7 3
+730 2025-12-09 06:18:33.988799+00 102 test_free_user_1765219784@example.com 3 7 3
+731 2025-12-09 06:18:33.988809+00 62 testnew@example.com 3 7 3
+732 2025-12-09 06:18:33.988821+00 115 workflow_test_free@example.com 3 7 3
+733 2025-12-09 06:18:33.98883+00 116 workflow_test_paid@example.com 3 7 3
+734 2025-12-09 06:19:05.354735+00 14 sdadiaosdaodn - active 3 16 3
+735 2025-12-09 06:19:05.354785+00 13 ascewwefwe - pending_payment 3 16 3
+736 2025-12-09 06:19:05.354806+00 12 asdasdsad - pending_payment 3 16 3
+737 2025-12-09 06:19:05.354821+00 11 asdasdasd - pending_payment 3 16 3
+738 2025-12-09 06:19:05.354834+00 10 Salman Alorig - pending_payment 3 16 3
+739 2025-12-09 06:19:05.354847+00 7 Paid's Account - active 3 16 3
+740 2025-12-09 06:21:07.962819+00 118 paid1@paid.com 2 [{"changed": {"fields": ["password"]}}] 7 3
+741 2025-12-10 09:29:39.043989+00 6 Image Generation Service - Scale Account 3 32 3
+742 2025-12-10 09:29:39.044059+00 4 OpenAI - Scale Account 3 32 3
+743 2025-12-10 09:29:39.044084+00 5 Runware - Scale Account 3 32 3
+744 2025-12-10 09:29:57.228998+00 7 OpenAI - Home G8 3 32 3
+745 2025-12-10 10:19:02.495362+00 1 OpenAI - AWS Admin 2 [{"changed": {"fields": ["Is active"]}}] 32 3
+746 2025-12-10 10:19:11.701867+00 2 Runware - AWS Admin 2 [{"changed": {"fields": ["Is active"]}}] 32 3
+747 2025-12-12 13:17:25.216269+00 2 Starter 2 [{"changed": {"fields": ["Max sites", "Max keywords"]}}] 6 3
+748 2025-12-12 13:18:43.224073+00 2 Starter 2 [{"changed": {"fields": ["Price"]}}] 6 3
+749 2025-12-12 13:36:45.828313+00 4 Growth 2 [{"changed": {"fields": ["Price", "Max sites", "Max clusters", "Max content ideas", "Max content words", "Max images basic", "Max images premium", "Max image prompts", "Included credits"]}}] 6 3
+750 2025-12-12 13:40:14.394813+00 5 Scale 2 [{"changed": {"fields": ["Price", "Max sites", "Max industries", "Max keywords", "Max clusters", "Max content ideas", "Max content words", "Max images basic", "Max images premium", "Max image prompts", "Included credits"]}}] 6 3
+751 2025-12-12 14:18:45.056034+00 2 Professional Pack - 5000 credits - $39.99 3 63 3
+752 2025-12-12 18:39:50.918956+00 4 Growth 2 [{"changed": {"fields": ["Max keywords"]}}] 6 3
+753 2025-12-12 18:43:55.069511+00 4 Growth 2 [{"changed": {"fields": ["Max clusters"]}}] 6 3
+754 2025-12-12 19:05:40.066986+00 4 Growth 2 [{"changed": {"fields": ["Max keywords"]}}] 6 3
+755 2025-12-13 12:52:38.680573+00 103 Test Account - Limits 3 8 3
+756 2025-12-13 12:52:50.844754+00 100 sdadiaosdaodn 3 8 3
+757 2025-12-13 12:58:12.65829+00 12 Test Plan - Low Limits 2 [{"changed": {"fields": ["Is internal"]}}] 6 3
+758 2025-12-13 19:19:39.32969+00 4 Growth 2 [{"changed": {"fields": ["Original price"]}}] 6 3
+759 2025-12-13 19:19:59.988787+00 2 Starter 2 [{"changed": {"fields": ["Original price"]}}] 6 3
+760 2025-12-13 19:20:16.200209+00 5 Scale 2 [{"changed": {"fields": ["Original price"]}}] 6 3
+761 2025-12-13 19:36:02.548023+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+762 2025-12-13 21:03:36.777884+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+763 2025-12-13 21:03:57.297931+00 5 Scale 2 [{"changed": {"fields": ["Features"]}}] 6 3
+764 2025-12-13 21:04:08.879004+00 2 Starter 2 [{"changed": {"fields": ["Features"]}}] 6 3
+765 2025-12-13 21:04:21.345561+00 1 Free Plan 2 [{"changed": {"fields": ["Features"]}}] 6 3
+766 2025-12-13 21:09:37.295491+00 4 Growth 2 [{"changed": {"fields": ["Max keywords", "Max clusters"]}}] 6 3
+767 2025-12-14 19:51:40.523156+00 2 Automation Config: https://homeg8.com (daily) 2 [{"changed": {"fields": ["Is enabled"]}}] 60 3
+768 2025-12-14 19:55:51.845294+00 1 Free Plan 2 [{"changed": {"fields": ["Max keywords", "Max clusters", "Max content ideas", "Max content words", "Max images basic", "Max images premium", "Max image prompts", "Included credits", "Extra credit price", "Allow credit topup"]}}] 6 3
+769 2025-12-15 13:28:28.29769+00 6 Internal (System/Superuser) 2 [{"changed": {"fields": ["Max keywords", "Max clusters"]}}] 6 3
+770 2025-12-15 13:31:25.957635+00 5 AWS Admin - Home & Garden Site 2 [{"changed": {"fields": ["Is active"]}}] 13 3
+771 2025-12-17 05:12:17.200946+00 146 Comparing the Best Back Massagers Available Today 3 21 3
+772 2025-12-17 05:12:17.200982+00 145 The Ultimate Guide to Transactional Back Massager Options 3 21 3
+773 2025-12-17 05:12:17.200993+00 144 Top rated back massagers: A buyer’s guide 3 21 3
+774 2025-12-17 05:12:17.201001+00 143 The Ultimate Guide to the Best Rated Back Massagers 3 21 3
+775 2025-12-17 05:12:17.201009+00 142 Top 5 Back Vibrating Massagers for Instant Relief 3 21 3
+776 2025-12-17 05:12:17.201017+00 141 The Ultimate Guide to Functional Back Massagers: Relief at Your Fingertips 3 21 3
+777 2025-12-17 05:12:17.201025+00 136 Top local back massager services reviewed 3 21 3
+778 2025-12-17 05:12:17.201037+00 135 Your Ultimate Guide to Finding the Best Local Back Massagers 3 21 3
+779 2025-12-17 05:12:17.201046+00 134 The Best Back Massagers for Home Use: A Comprehensive Review 3 21 3
+780 2025-12-17 05:12:17.201054+00 133 The Ultimate Guide to Back Massagers: Relieve Pain and Tension Effectively 3 21 3
+781 2025-12-17 05:12:17.201061+00 132 Comparing back massager options: Which one is right for you? 3 21 3
+782 2025-12-17 05:12:17.201068+00 131 The ultimate guide to back massager options: Finding your perfect fit 3 21 3
+783 2025-12-20 01:37:36.451296+00 12 Test Plan - Low Limits 2 [{"changed": {"fields": ["Is active"]}}] 6 3
+784 2025-12-20 14:57:33.491008+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai api key", "Openai model", "Dalle api key"]}}] 77 3
+785 2025-12-20 14:57:33.790253+00 1 Global Integration Settings 2 [] 77 3
+786 2025-12-20 15:10:43.826107+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Runware api key"]}}] 77 3
+787 2025-12-20 15:23:14.95797+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service"]}}] 77 3
+788 2025-12-20 15:23:54.371673+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Max in article images"]}}] 77 3
+789 2025-12-20 19:23:40.850177+00 11 Clustering (Default) 3 29 3
+790 2025-12-20 19:23:40.85059+00 10 Content Generation (Default) 3 29 3
+791 2025-12-20 19:23:40.850613+00 9 Ideas Generation (Default) 3 29 3
+792 2025-12-20 19:25:26.260584+00 1 Clustering (v1) 2 [{"changed": {"fields": ["Prompt value", "Variables"]}}] 79 3
+793 2025-12-20 19:27:56.819153+00 2 Ideas Generation (v1) 2 [{"changed": {"fields": ["Prompt value", "Variables"]}}] 79 3
+794 2025-12-20 19:29:14.62159+00 16 Clustering (Default) 3 29 3
+795 2025-12-20 19:29:14.62211+00 1 Clustering (Default) 3 29 3
+796 2025-12-20 19:29:14.622147+00 3 Content Generation (Default) 3 29 3
+797 2025-12-20 19:29:14.622182+00 15 Ideas Generation (Default) 3 29 3
+798 2025-12-20 19:29:14.622207+00 2 Ideas Generation (Default) 3 29 3
+799 2025-12-20 19:29:14.622229+00 12 Image Prompt Extraction (Default) 3 29 3
+800 2025-12-20 19:29:14.622251+00 4 Image Prompt Extraction (Default) 3 29 3
+801 2025-12-20 19:29:14.622284+00 13 Image Prompt Template (Default) 3 29 3
+802 2025-12-20 19:29:14.622306+00 5 Image Prompt Template (Default) 3 29 3
+803 2025-12-20 19:29:14.622325+00 14 Negative Prompt (Default) 3 29 3
+804 2025-12-20 19:29:14.622341+00 6 Negative Prompt (Default) 3 29 3
+805 2025-12-20 19:29:14.622359+00 7 test (Default) 3 29 3
+806 2025-12-20 19:29:14.622379+00 8 test2 (Default) 3 29 3
+807 2025-12-20 19:56:31.998159+00 3 Content Generation (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+808 2025-12-20 19:56:52.631488+00 4 Image Prompt Extraction (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+809 2025-12-20 19:57:17.579846+00 5 Image Prompt Template (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+810 2025-12-20 19:57:43.035445+00 6 Negative Prompt (v1) 2 [] 79 3
+811 2025-12-20 19:58:14.245812+00 8 Product Content Generation (v1) 2 [{"changed": {"fields": ["Is active", "Prompt value"]}}] 79 3
+812 2025-12-20 19:58:23.806479+00 9 Service Page Generation (v1) 2 [{"changed": {"fields": ["Is active", "Prompt value"]}}] 79 3
+813 2025-12-20 19:58:33.035997+00 7 Site Structure Generation (v1) 2 [{"changed": {"fields": ["Is active", "Prompt value"]}}] 79 3
+814 2025-12-20 19:58:41.252544+00 10 Taxonomy Generation (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+815 2025-12-20 19:58:48.351353+00 10 Taxonomy Generation (v1) 2 [{"changed": {"fields": ["Is active"]}}] 79 3
+816 2025-12-20 20:21:47.269095+00 3 Content Generation (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+817 2025-12-20 20:34:53.652056+00 4 Image Prompt Extraction (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+818 2025-12-20 21:13:37.460335+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled", "Optimizer enabled"]}}] 82 3
+819 2025-12-20 21:13:37.658282+00 1 Global Module Settings 2 [] 82 3
+820 2025-12-20 21:41:51.333125+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled"]}}] 82 3
+821 2025-12-20 21:46:53.845405+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled"]}}] 82 3
+822 2025-12-20 21:51:34.775029+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled"]}}] 82 3
+823 2025-12-20 21:51:52.084135+00 1 Global Module Settings 2 [{"changed": {"fields": ["Optimizer enabled"]}}] 82 3
+824 2025-12-20 22:06:39.423807+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled", "Optimizer enabled"]}}] 82 3
+825 2025-12-20 22:32:03.034467+00 1 Global Module Settings 2 [{"changed": {"fields": ["Site builder enabled", "Publisher enabled"]}}] 82 3
+826 2025-12-20 22:47:58.802994+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled", "Optimizer enabled"]}}] 82 3
+827 2025-12-20 22:48:16.47909+00 1 Global Module Settings 2 [{"changed": {"fields": ["Linker enabled", "Optimizer enabled"]}}] 82 3
+828 2025-12-20 23:00:59.37942+00 1 Global Module Settings 2 [{"changed": {"fields": ["Site builder enabled"]}}] 82 3
+829 2025-12-24 15:29:44.445644+00 9 image_generation - Paid 2 3 32 3
+830 2025-12-24 15:29:44.445698+00 3 image_generation - AWS Admin 3 32 3
+831 2025-12-24 15:29:44.445723+00 8 OpenAI - Paid 2 3 32 3
+832 2025-12-24 15:29:44.445743+00 1 OpenAI - AWS Admin 3 32 3
+833 2025-12-24 15:29:44.445762+00 2 Runware - AWS Admin 3 32 3
+834 2025-12-24 15:30:38.963094+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model"]}}] 77 3
+835 2025-12-24 15:31:00.276719+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model"]}}] 77 3
+836 2025-12-25 00:26:37.552407+00 4 Image Prompt Extraction (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+837 2025-12-25 01:21:22.658472+00 325 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+838 2025-12-25 01:21:22.658506+00 324 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+839 2025-12-25 01:21:22.658518+00 323 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+840 2025-12-25 01:21:22.658529+00 322 Hyperice vs Homedics: Which Back Massager Is Best for You? - featured 3 23 3
+841 2025-12-25 01:21:22.658537+00 321 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+842 2025-12-25 01:21:22.658546+00 320 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+843 2025-12-25 01:21:22.658555+00 319 How to Choose the Best Back Massager for Lower Back Pain - featured 3 23 3
+844 2025-12-25 01:21:22.658567+00 318 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+845 2025-12-25 01:21:22.658577+00 317 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+846 2025-12-25 01:27:44.457906+00 10 OpenAI - Paid 2 3 32 3
+847 2025-12-25 01:32:05.50168+00 4 Image Prompt Extraction (v1) 2 [{"changed": {"fields": ["Prompt value"]}}] 79 3
+848 2025-12-25 11:32:09.592439+00 2 Starter 2 [{"changed": {"fields": ["Price", "Original price", "Annual discount percent", "Features"]}}] 6 3
+849 2025-12-25 11:32:13.72188+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+850 2025-12-25 11:32:16.852236+00 5 Scale 2 [{"changed": {"fields": ["Features"]}}] 6 3
+851 2025-12-25 11:35:47.64807+00 2 Starter 2 [{"changed": {"fields": ["Max content ideas", "Max images basic", "Max images premium", "Max image prompts", "Included credits"]}}] 6 3
+852 2025-12-25 11:40:38.128093+00 4 Growth 2 [{"changed": {"fields": ["Price", "Original price", "Annual discount percent", "Max keywords", "Max content ideas", "Max images basic", "Max images premium", "Max image prompts", "Included credits"]}}] 6 3
+853 2025-12-25 11:42:50.658259+00 5 Scale 2 [{"changed": {"fields": ["Price", "Original price", "Max sites", "Max keywords", "Max clusters", "Max content words", "Max images basic", "Max images premium", "Included credits"]}}] 6 3
+854 2025-12-25 11:56:48.258656+00 2 Starter 2 [{"changed": {"fields": ["Max content ideas"]}}] 6 3
+855 2025-12-25 11:57:01.858528+00 4 Growth 2 [{"changed": {"fields": ["Max content ideas"]}}] 6 3
+856 2025-12-25 11:57:23.416295+00 5 Scale 2 [{"changed": {"fields": ["Max content ideas"]}}] 6 3
+857 2025-12-25 12:00:45.984981+00 5 Scale 2 [{"changed": {"fields": ["Original price", "Annual discount percent"]}}] 6 3
+858 2025-12-25 13:00:45.648515+00 2 Starter 2 [{"changed": {"fields": ["Features"]}}] 6 3
+859 2025-12-25 13:04:13.886653+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+860 2025-12-25 13:05:25.205034+00 2 Starter 2 [{"changed": {"fields": ["Features"]}}] 6 3
+861 2025-12-25 13:05:56.204909+00 5 Scale 2 [{"changed": {"fields": ["Features"]}}] 6 3
+862 2025-12-25 13:06:49.685474+00 4 Growth 2 [{"changed": {"fields": ["Features"]}}] 6 3
+863 2025-12-25 13:07:12.647744+00 5 Scale 2 [{"changed": {"fields": ["Features"]}}] 6 3
+864 2025-12-25 13:08:00.701699+00 2 Starter 2 [{"changed": {"fields": ["Features"]}}] 6 3
+865 2025-12-25 13:08:55.824049+00 5 Scale 2 [{"changed": {"fields": ["Features"]}}] 6 3
+866 2025-12-26 01:15:23.801348+00 11 image_generation - Paid 2 3 32 3
+867 2025-12-26 01:15:44.93314+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model"]}}] 77 3
+868 2025-12-26 01:20:20.508933+00 3 Content Generation - 1000 tokens/credit 2 [{"changed": {"fields": ["Tokens per credit", "Min credits"]}}] 62 3
+869 2025-12-26 01:20:46.53749+00 1 Keyword Clustering - 1000 tokens/credit 2 [{"changed": {"fields": ["Tokens per credit", "Min credits"]}}] 62 3
+870 2025-12-26 01:21:06.613877+00 2 Content Ideas Generation - 1000 tokens/credit 2 [{"changed": {"fields": ["Tokens per credit"]}}] 62 3
+871 2025-12-26 01:21:21.258229+00 3 Content Generation - 1000 tokens/credit 2 [{"changed": {"fields": ["Min credits"]}}] 62 3
+872 2025-12-26 01:21:41.149156+00 4 Image Prompt Extraction - 1000 tokens/credit 2 [{"changed": {"fields": ["Tokens per credit"]}}] 62 3
+873 2025-12-28 02:15:33.668502+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model", "Runware api key"]}}] 77 3
+874 2025-12-28 19:54:28.41413+00 292 7 Best Back Massagers for Knots and Deep Muscle Relief - featured 3 23 3
+875 2025-12-28 19:54:28.414169+00 291 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+876 2025-12-28 19:54:28.414192+00 290 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+877 2025-12-28 19:54:28.414219+00 289 Best Back Massager for Lower Back Pain: How to Choose - featured 3 23 3
+878 2025-12-28 19:54:28.414261+00 288 Comparing the Best Back Massagers Available Today - in_article 3 23 3
+879 2025-12-28 19:54:28.414277+00 287 Comparing the Best Back Massagers Available Today - in_article 3 23 3
+880 2025-12-28 19:54:28.414301+00 286 Comparing the Best Back Massagers Available Today - featured 3 23 3
+881 2025-12-28 19:54:28.414327+00 285 The Ultimate Guide to Transactional Back Massager Options - in_article 3 23 3
+882 2025-12-28 19:54:28.414343+00 284 The Ultimate Guide to Transactional Back Massager Options - in_article 3 23 3
+883 2025-12-28 19:54:28.414357+00 283 The Ultimate Guide to Transactional Back Massager Options - featured 3 23 3
+884 2025-12-28 19:54:28.414381+00 282 Top rated back massagers: A buyer’s guide - in_article 3 23 3
+885 2025-12-28 19:54:28.414395+00 281 Top rated back massagers: A buyer’s guide - in_article 3 23 3
+886 2025-12-28 19:54:28.414409+00 280 Top rated back massagers: A buyer’s guide - featured 3 23 3
+887 2025-12-28 19:54:28.414424+00 279 The Ultimate Guide to the Best Rated Back Massagers - in_article 3 23 3
+888 2025-12-28 19:54:28.414438+00 278 The Ultimate Guide to the Best Rated Back Massagers - in_article 3 23 3
+889 2025-12-28 19:54:28.414451+00 277 The Ultimate Guide to the Best Rated Back Massagers - featured 3 23 3
+890 2025-12-28 19:54:28.414463+00 276 Top 5 Back Vibrating Massagers for Instant Relief - in_article 3 23 3
+891 2025-12-28 19:54:28.414478+00 275 Top 5 Back Vibrating Massagers for Instant Relief - in_article 3 23 3
+892 2025-12-28 19:54:28.414493+00 274 Top 5 Back Vibrating Massagers for Instant Relief - featured 3 23 3
+893 2025-12-28 19:54:28.414508+00 273 The Ultimate Guide to Functional Back Massagers: Relief at Your Fingertips - in_article 3 23 3
+894 2025-12-28 19:54:28.414522+00 272 The Ultimate Guide to Functional Back Massagers: Relief at Your Fingertips - in_article 3 23 3
+895 2025-12-28 19:54:28.414536+00 271 The Ultimate Guide to Functional Back Massagers: Relief at Your Fingertips - featured 3 23 3
+896 2025-12-28 19:54:28.41455+00 270 Essential garden tools for every gardener: A complete guide - in_article 3 23 3
+897 2025-12-28 19:54:28.414565+00 269 Essential garden tools for every gardener: A complete guide - in_article 3 23 3
+898 2025-12-28 19:54:28.41458+00 268 Essential garden tools for every gardener: A complete guide - featured 3 23 3
+899 2025-12-28 19:54:28.414592+00 267 The Ultimate Guide to Organic Gardening Essentials - in_article 3 23 3
+900 2025-12-28 19:54:28.414603+00 266 The Ultimate Guide to Organic Gardening Essentials - in_article 3 23 3
+901 2025-12-28 19:54:28.414614+00 265 The Ultimate Guide to Organic Gardening Essentials - featured 3 23 3
+902 2025-12-28 19:54:28.414624+00 264 Top tips for natural pest control in organic gardening - in_article 3 23 3
+903 2025-12-28 19:54:28.414635+00 263 Top tips for natural pest control in organic gardening - in_article 3 23 3
+904 2025-12-28 19:54:28.414646+00 262 Top tips for natural pest control in organic gardening - featured 3 23 3
+905 2025-12-28 19:54:28.414656+00 261 Creative herb garden ideas to maximize your space - in_article 3 23 3
+906 2025-12-28 19:54:28.414666+00 260 Creative herb garden ideas to maximize your space - in_article 3 23 3
+907 2025-12-28 19:54:28.414677+00 259 Creative herb garden ideas to maximize your space - featured 3 23 3
+908 2025-12-28 19:54:28.414686+00 258 Top local back massager services reviewed - in_article 3 23 3
+909 2025-12-28 19:54:28.414696+00 257 Top local back massager services reviewed - in_article 3 23 3
+910 2025-12-28 19:54:28.414706+00 256 Top local back massager services reviewed - featured 3 23 3
+911 2025-12-28 19:54:28.414715+00 255 Your Ultimate Guide to Finding the Best Local Back Massagers - in_article 3 23 3
+912 2025-12-28 19:54:28.414725+00 254 Your Ultimate Guide to Finding the Best Local Back Massagers - in_article 3 23 3
+913 2025-12-28 19:54:28.414735+00 253 Your Ultimate Guide to Finding the Best Local Back Massagers - featured 3 23 3
+914 2025-12-28 19:54:28.414745+00 252 The Best Back Massagers for Home Use: A Comprehensive Review - in_article 3 23 3
+915 2025-12-28 19:54:28.414755+00 251 The Best Back Massagers for Home Use: A Comprehensive Review - in_article 3 23 3
+916 2025-12-28 19:54:28.414765+00 250 The Best Back Massagers for Home Use: A Comprehensive Review - featured 3 23 3
+917 2025-12-28 19:54:28.414775+00 249 The Ultimate Guide to Back Massagers: Relieve Pain and Tension Effectively - in_article 3 23 3
+918 2025-12-28 19:54:28.414785+00 248 The Ultimate Guide to Back Massagers: Relieve Pain and Tension Effectively - in_article 3 23 3
+919 2025-12-28 19:54:28.414795+00 247 The Ultimate Guide to Back Massagers: Relieve Pain and Tension Effectively - featured 3 23 3
+920 2025-12-28 19:54:28.414804+00 246 Comparing back massager options: Which one is right for you? - in_article 3 23 3
+921 2025-12-28 19:54:28.414813+00 245 Comparing back massager options: Which one is right for you? - in_article 3 23 3
+922 2025-12-28 19:54:28.414823+00 244 Comparing back massager options: Which one is right for you? - featured 3 23 3
+923 2025-12-28 19:54:28.414832+00 243 The ultimate guide to back massager options: Finding your perfect fit - in_article 3 23 3
+924 2025-12-28 19:54:28.414842+00 242 The ultimate guide to back massager options: Finding your perfect fit - in_article 3 23 3
+925 2025-12-28 19:54:28.414851+00 241 The ultimate guide to back massager options: Finding your perfect fit - featured 3 23 3
+926 2025-12-28 19:54:28.414861+00 240 Stylish garden pathways: design tips and ideas - in_article 3 23 3
+927 2025-12-28 19:54:28.414871+00 239 Stylish garden pathways: design tips and ideas - in_article 3 23 3
+928 2025-12-28 19:54:28.41488+00 238 Stylish garden pathways: design tips and ideas - featured 3 23 3
+929 2025-12-28 19:54:28.41489+00 237 Top 10 Lawn Care Tips for Homeowners - in_article 3 23 3
+930 2025-12-28 19:54:28.414899+00 236 Top 10 Lawn Care Tips for Homeowners - in_article 3 23 3
+931 2025-12-28 19:54:28.414908+00 235 Top 10 Lawn Care Tips for Homeowners - featured 3 23 3
+932 2025-12-28 19:54:28.414918+00 234 Creating the perfect outdoor patio: design tips and inspirations - in_article 3 23 3
+933 2025-12-28 19:54:28.414928+00 233 Creating the perfect outdoor patio: design tips and inspirations - in_article 3 23 3
+934 2025-12-28 19:54:28.414938+00 232 Creating the perfect outdoor patio: design tips and inspirations - featured 3 23 3
+935 2025-12-28 19:54:28.414947+00 231 Innovative Outdoor Lighting Ideas to Transform Your Space - in_article 3 23 3
+936 2025-12-28 19:54:28.414956+00 230 Innovative Outdoor Lighting Ideas to Transform Your Space - in_article 3 23 3
+937 2025-12-28 19:54:28.414965+00 229 Innovative Outdoor Lighting Ideas to Transform Your Space - featured 3 23 3
+938 2025-12-28 19:54:28.414974+00 228 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy - in_article 3 23 3
+939 2025-12-28 19:54:28.414984+00 227 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy - in_article 3 23 3
+940 2025-12-28 19:54:28.414994+00 226 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy - featured 3 23 3
+941 2025-12-28 19:54:28.415003+00 225 Creative landscape design ideas to transform your outdoor space - in_article 3 23 3
+942 2025-12-28 19:54:28.415011+00 224 Creative landscape design ideas to transform your outdoor space - in_article 3 23 3
+943 2025-12-28 19:54:28.41502+00 223 Creative landscape design ideas to transform your outdoor space - featured 3 23 3
+944 2025-12-28 19:54:28.415028+00 222 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space - in_article 3 23 3
+945 2025-12-28 19:54:28.415037+00 221 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space - in_article 3 23 3
+946 2025-12-28 19:54:28.415045+00 220 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space - featured 3 23 3
+947 2025-12-28 19:54:28.415057+00 219 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard - in_article 3 23 3
+948 2025-12-28 19:54:28.415083+00 218 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard - in_article 3 23 3
+949 2025-12-28 19:54:28.415102+00 217 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard - featured 3 23 3
+950 2025-12-28 19:54:28.415119+00 216 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager - in_article 3 23 3
+951 2025-12-28 19:54:28.415135+00 215 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager - in_article 3 23 3
+952 2025-12-28 19:54:28.415149+00 214 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager - featured 3 23 3
+953 2025-12-28 19:54:28.41516+00 213 Top 5 back massagers for effective pain relief - in_article 3 23 3
+954 2025-12-28 19:54:28.41517+00 212 Top 5 back massagers for effective pain relief - in_article 3 23 3
+955 2025-12-28 19:54:28.415182+00 211 Top 5 back massagers for effective pain relief - featured 3 23 3
+956 2025-12-28 19:54:28.415195+00 210 Top 10 Back Massagers You Can Buy Today - in_article 3 23 3
+957 2025-12-28 19:54:28.415207+00 209 Top 10 Back Massagers You Can Buy Today - in_article 3 23 3
+958 2025-12-28 19:54:28.415219+00 208 Top 10 Back Massagers You Can Buy Today - featured 3 23 3
+959 2025-12-28 19:54:28.415232+00 207 Top 5 Back Massagers You Can Buy Today - in_article 3 23 3
+960 2025-12-28 19:54:28.415241+00 206 Top 5 Back Massagers You Can Buy Today - in_article 3 23 3
+961 2025-12-28 19:54:28.415265+00 205 Top 5 Back Massagers You Can Buy Today - featured 3 23 3
+962 2025-12-28 19:54:28.415273+00 204 The Ultimate Guide to Back Massagers: Types and Features - in_article 3 23 3
+963 2025-12-28 19:54:28.415281+00 203 The Ultimate Guide to Back Massagers: Types and Features - in_article 3 23 3
+964 2025-12-28 19:54:28.41529+00 202 The Ultimate Guide to Back Massagers: Types and Features - featured 3 23 3
+965 2025-12-28 19:54:28.415298+00 201 The Ultimate Guide to Back Massagers for Pain Relief - in_article 3 23 3
+966 2025-12-28 19:54:28.415307+00 200 The Ultimate Guide to Back Massagers for Pain Relief - in_article 3 23 3
+967 2025-12-28 19:54:28.415316+00 199 The Ultimate Guide to Back Massagers for Pain Relief - featured 3 23 3
+968 2025-12-28 19:54:28.415324+00 198 Electric massagers: A comprehensive review for back pain relief - in_article 3 23 3
+969 2025-12-28 19:54:28.415332+00 197 Electric massagers: A comprehensive review for back pain relief - in_article 3 23 3
+970 2025-12-28 19:54:28.41534+00 196 Electric massagers: A comprehensive review for back pain relief - featured 3 23 3
+971 2025-12-28 19:54:28.415348+00 195 Finding the Best Back Massagers Near You: A Comprehensive Guide - in_article 3 23 3
+972 2025-12-28 19:54:28.415356+00 194 Finding the Best Back Massagers Near You: A Comprehensive Guide - in_article 3 23 3
+973 2025-12-28 19:54:28.415371+00 193 Finding the Best Back Massagers Near You: A Comprehensive Guide - featured 3 23 3
+974 2025-12-28 19:55:37.096334+00 401 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+975 2025-12-28 19:55:37.096399+00 400 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+976 2025-12-28 19:55:37.096417+00 399 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+977 2025-12-28 19:55:37.096433+00 398 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+978 2025-12-28 19:55:37.09645+00 397 10 Best Heated Back Massagers for Ultimate Relaxation - featured 3 23 3
+979 2025-12-28 19:55:37.096465+00 396 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+980 2025-12-28 19:55:37.096479+00 395 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+981 2025-12-28 19:55:37.096496+00 394 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+982 2025-12-28 19:55:37.09651+00 393 10 Best Portable Back Massagers for Instant Relief - featured 3 23 3
+1043 2025-12-28 19:55:37.097362+00 332 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+983 2025-12-28 19:55:37.096523+00 392 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+984 2025-12-28 19:55:37.096535+00 391 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+985 2025-12-28 19:55:37.096548+00 390 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+986 2025-12-28 19:55:37.09656+00 389 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+987 2025-12-28 19:55:37.096573+00 388 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - featured 3 23 3
+988 2025-12-28 19:55:37.096585+00 387 How to Choose the Best Handheld Back Massager for You - in_article 3 23 3
+989 2025-12-28 19:55:37.096597+00 386 How to Choose the Best Handheld Back Massager for You - in_article 3 23 3
+990 2025-12-28 19:55:37.09661+00 385 How to Choose the Best Handheld Back Massager for You - in_article 3 23 3
+991 2025-12-28 19:55:37.096623+00 384 How to Choose the Best Handheld Back Massager for You - in_article 3 23 3
+992 2025-12-28 19:55:37.096635+00 383 How to Choose the Best Handheld Back Massager for You - featured 3 23 3
+993 2025-12-28 19:55:37.096648+00 382 Complete Guide to Portable Back Massagers and Massage Guns - in_article 3 23 3
+994 2025-12-28 19:55:37.09666+00 381 Complete Guide to Portable Back Massagers and Massage Guns - in_article 3 23 3
+995 2025-12-28 19:55:37.096672+00 380 Complete Guide to Portable Back Massagers and Massage Guns - in_article 3 23 3
+996 2025-12-28 19:55:37.096684+00 379 Complete Guide to Portable Back Massagers and Massage Guns - in_article 3 23 3
+997 2025-12-28 19:55:37.096696+00 378 Complete Guide to Portable Back Massagers and Massage Guns - featured 3 23 3
+998 2025-12-28 19:55:37.096709+00 377 Back Massager for Chair: Do You Really Need One? - in_article 3 23 3
+999 2025-12-28 19:55:37.096721+00 376 Back Massager for Chair: Do You Really Need One? - in_article 3 23 3
+1000 2025-12-28 19:55:37.096732+00 375 Back Massager for Chair: Do You Really Need One? - in_article 3 23 3
+1001 2025-12-28 19:55:37.096745+00 374 Back Massager for Chair: Do You Really Need One? - in_article 3 23 3
+1002 2025-12-28 19:55:37.096758+00 373 Back Massager for Chair: Do You Really Need One? - featured 3 23 3
+1003 2025-12-28 19:55:37.096772+00 372 Top 5 Back Massagers for Office Chairs - in_article 3 23 3
+1004 2025-12-28 19:55:37.096786+00 371 Top 5 Back Massagers for Office Chairs - in_article 3 23 3
+1005 2025-12-28 19:55:37.0968+00 370 Top 5 Back Massagers for Office Chairs - in_article 3 23 3
+1006 2025-12-28 19:55:37.096814+00 369 Top 5 Back Massagers for Office Chairs - featured 3 23 3
+1007 2025-12-28 19:55:37.096827+00 368 Complete Guide to Back Massagers for Chairs - in_article 3 23 3
+1008 2025-12-28 19:55:37.096841+00 367 Complete Guide to Back Massagers for Chairs - in_article 3 23 3
+1009 2025-12-28 19:55:37.096857+00 366 Complete Guide to Back Massagers for Chairs - in_article 3 23 3
+1010 2025-12-28 19:55:37.096871+00 365 Complete Guide to Back Massagers for Chairs - in_article 3 23 3
+1011 2025-12-28 19:55:37.096886+00 364 Complete Guide to Back Massagers for Chairs - featured 3 23 3
+1012 2025-12-28 19:55:37.0969+00 363 How to Choose the Best Back Massager for Your Chair - in_article 3 23 3
+1013 2025-12-28 19:55:37.096914+00 362 How to Choose the Best Back Massager for Your Chair - in_article 3 23 3
+1014 2025-12-28 19:55:37.096927+00 361 How to Choose the Best Back Massager for Your Chair - in_article 3 23 3
+1015 2025-12-28 19:55:37.096941+00 360 How to Choose the Best Back Massager for Your Chair - in_article 3 23 3
+1016 2025-12-28 19:55:37.096954+00 359 How to Choose the Best Back Massager for Your Chair - featured 3 23 3
+1017 2025-12-28 19:55:37.096967+00 358 10 Best Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1018 2025-12-28 19:55:37.096981+00 357 10 Best Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1019 2025-12-28 19:55:37.096994+00 356 10 Best Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1020 2025-12-28 19:55:37.097007+00 355 10 Best Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1021 2025-12-28 19:55:37.097021+00 354 10 Best Back Hook Massagers for Self-Trigger Point Relief - featured 3 23 3
+1022 2025-12-28 19:55:37.097033+00 353 Back Hook Massagers vs Traditional Massagers: Which Is Better? - in_article 3 23 3
+1023 2025-12-28 19:55:37.097047+00 352 Back Hook Massagers vs Traditional Massagers: Which Is Better? - in_article 3 23 3
+1024 2025-12-28 19:55:37.09706+00 351 Back Hook Massagers vs Traditional Massagers: Which Is Better? - in_article 3 23 3
+1025 2025-12-28 19:55:37.097074+00 350 Back Hook Massagers vs Traditional Massagers: Which Is Better? - in_article 3 23 3
+1026 2025-12-28 19:55:37.097087+00 349 Back Hook Massagers vs Traditional Massagers: Which Is Better? - featured 3 23 3
+1027 2025-12-28 19:55:37.097103+00 348 How to Use a Back Hook Massager for Targeted Relief - in_article 3 23 3
+1028 2025-12-28 19:55:37.097116+00 347 How to Use a Back Hook Massager for Targeted Relief - in_article 3 23 3
+1029 2025-12-28 19:55:37.09713+00 346 How to Use a Back Hook Massager for Targeted Relief - in_article 3 23 3
+1030 2025-12-28 19:55:37.097144+00 345 How to Use a Back Hook Massager for Targeted Relief - in_article 3 23 3
+1031 2025-12-28 19:55:37.097159+00 344 How to Use a Back Hook Massager for Targeted Relief - featured 3 23 3
+1032 2025-12-28 19:55:37.097173+00 343 Complete Guide to Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1033 2025-12-28 19:55:37.097189+00 342 Complete Guide to Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1034 2025-12-28 19:55:37.097203+00 341 Complete Guide to Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1035 2025-12-28 19:55:37.097218+00 340 Complete Guide to Back Hook Massagers for Self-Trigger Point Relief - in_article 3 23 3
+1036 2025-12-28 19:55:37.097233+00 339 Complete Guide to Back Hook Massagers for Self-Trigger Point Relief - featured 3 23 3
+1037 2025-12-28 19:55:37.097269+00 338 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1038 2025-12-28 19:55:37.097286+00 337 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1039 2025-12-28 19:55:37.097302+00 336 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1040 2025-12-28 19:55:37.097317+00 335 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1041 2025-12-28 19:55:37.097332+00 334 How to Choose the Best Back Massager for Lower Back Pain - featured 3 23 3
+1042 2025-12-28 19:55:37.097347+00 333 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+1044 2025-12-28 19:55:37.097387+00 331 How to Choose the Best Back Massager for Pain Relief - featured 3 23 3
+1045 2025-12-28 19:55:37.097402+00 330 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+1046 2025-12-28 19:55:37.097416+00 329 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+1047 2025-12-28 19:55:37.097432+00 328 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+1048 2025-12-28 19:55:37.097446+00 327 Hyperice vs Homedics: Which Back Massager Is Best for You? - in_article 3 23 3
+1049 2025-12-28 19:55:37.097458+00 326 Hyperice vs Homedics: Which Back Massager Is Best for You? - featured 3 23 3
+1050 2025-12-28 19:55:37.097468+00 316 Best Back Massagers for Chair Use: A Detailed Comparison - in_article 3 23 3
+1051 2025-12-28 19:55:37.097479+00 315 Best Back Massagers for Chair Use: A Detailed Comparison - in_article 3 23 3
+1052 2025-12-28 19:55:37.097488+00 314 Best Back Massagers for Chair Use: A Detailed Comparison - in_article 3 23 3
+1053 2025-12-28 19:55:37.097498+00 313 Best Back Massagers for Chair Use: A Detailed Comparison - in_article 3 23 3
+1054 2025-12-28 19:55:37.097508+00 312 Best Back Massagers for Chair Use: A Detailed Comparison - featured 3 23 3
+1055 2025-12-28 19:55:37.097522+00 311 Top 5 Best Back Massagers for Every Need - in_article 3 23 3
+1056 2025-12-28 19:55:37.097536+00 310 Top 5 Best Back Massagers for Every Need - in_article 3 23 3
+1057 2025-12-28 19:55:37.097549+00 309 Top 5 Best Back Massagers for Every Need - featured 3 23 3
+1058 2025-12-28 19:55:37.097562+00 308 Complete Guide to Choosing the Best Back Massager - in_article 3 23 3
+1059 2025-12-28 19:55:37.097575+00 307 Complete Guide to Choosing the Best Back Massager - in_article 3 23 3
+1060 2025-12-28 19:55:37.097589+00 306 Complete Guide to Choosing the Best Back Massager - featured 3 23 3
+1061 2025-12-28 19:55:37.097602+00 305 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1062 2025-12-28 19:55:37.097614+00 304 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1063 2025-12-28 19:55:37.097629+00 303 How to Use an Electric Massager for Back Pain Safely - featured 3 23 3
+1064 2025-12-28 19:55:37.097643+00 302 Essential Garden Tools for Every Gardener: A Complete Guide - in_article 3 23 3
+1065 2025-12-28 19:55:37.097656+00 301 Essential Garden Tools for Every Gardener: A Complete Guide - in_article 3 23 3
+1066 2025-12-28 19:55:37.097669+00 300 Essential Garden Tools for Every Gardener: A Complete Guide - in_article 3 23 3
+1067 2025-12-28 19:55:37.097683+00 299 Essential Garden Tools for Every Gardener: A Complete Guide - in_article 3 23 3
+1068 2025-12-28 19:55:37.097696+00 298 Essential Garden Tools for Every Gardener: A Complete Guide - featured 3 23 3
+1069 2025-12-28 19:55:37.09771+00 297 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1070 2025-12-28 19:55:37.097723+00 296 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1071 2025-12-28 19:55:37.097736+00 295 Complete Guide to Back Massagers for Pain Relief - featured 3 23 3
+1072 2025-12-28 19:55:37.09775+00 294 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1073 2025-12-28 19:55:37.097764+00 293 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1074 2025-12-28 19:55:37.097778+00 192 The Future of Wellness: How Medical Software is Transforming Back Massagers - in_article 3 23 3
+1075 2025-12-28 19:55:37.097792+00 191 The Future of Wellness: How Medical Software is Transforming Back Massagers - in_article 3 23 3
+1076 2025-12-28 19:55:37.097807+00 190 The Future of Wellness: How Medical Software is Transforming Back Massagers - featured 3 23 3
+1077 2025-12-28 19:55:37.09782+00 189 Finding the Best Back Massager: Your Ultimate Shopping Guide - in_article 3 23 3
+1078 2025-12-28 19:55:37.097834+00 188 Finding the Best Back Massager: Your Ultimate Shopping Guide - in_article 3 23 3
+1079 2025-12-28 19:55:37.097849+00 187 Finding the Best Back Massager: Your Ultimate Shopping Guide - featured 3 23 3
+1080 2025-12-28 19:55:37.097863+00 186 Top 5 Back Massagers to Consider in 2023 - in_article 3 23 3
+1081 2025-12-28 19:55:37.097879+00 185 Top 5 Back Massagers to Consider in 2023 - in_article 3 23 3
+1082 2025-12-28 19:55:37.097893+00 184 Top 5 Back Massagers to Consider in 2023 - featured 3 23 3
+1083 2025-12-28 19:55:37.09791+00 183 Finding the Best Back Massager: Your Ultimate Shopping Guide - in_article 3 23 3
+1084 2025-12-28 19:55:37.097925+00 182 Finding the Best Back Massager: Your Ultimate Shopping Guide - in_article 3 23 3
+1085 2025-12-28 19:55:37.09794+00 181 Finding the Best Back Massager: Your Ultimate Shopping Guide - featured 3 23 3
+1086 2025-12-28 19:55:37.097956+00 180 The Ultimate Guide to Shopping for Back Massagers - in_article 3 23 3
+1087 2025-12-28 19:55:37.097971+00 179 The Ultimate Guide to Shopping for Back Massagers - in_article 3 23 3
+1088 2025-12-28 19:55:37.097985+00 178 The Ultimate Guide to Shopping for Back Massagers - featured 3 23 3
+1089 2025-12-28 19:55:37.098+00 177 The ultimate guide to the best back massagers: finding your perfect match - in_article 3 23 3
+1090 2025-12-28 19:55:37.098015+00 176 The ultimate guide to the best back massagers: finding your perfect match - in_article 3 23 3
+1091 2025-12-28 19:55:37.098028+00 175 The ultimate guide to the best back massagers: finding your perfect match - featured 3 23 3
+1092 2025-12-28 19:55:37.098041+00 174 The Best Back Massagers of 2023: Your Essential Buying Guide - in_article 3 23 3
+1093 2025-12-28 19:55:37.098051+00 173 The Best Back Massagers of 2023: Your Essential Buying Guide - in_article 3 23 3
+1094 2025-12-28 19:55:37.09806+00 172 The Best Back Massagers of 2023: Your Essential Buying Guide - featured 3 23 3
+1095 2025-12-28 19:55:37.09807+00 171 Comprehensive guide to using back massagers safely - in_article 3 23 3
+1096 2025-12-28 19:55:37.098079+00 170 Comprehensive guide to using back massagers safely - in_article 3 23 3
+1097 2025-12-28 19:55:37.098089+00 169 Comprehensive guide to using back massagers safely - featured 3 23 3
+1098 2025-12-28 19:55:37.098098+00 168 Comparing the Latest Back Massagers: Which One is Right for You? - in_article 3 23 3
+1099 2025-12-28 19:55:37.098108+00 167 Comparing the Latest Back Massagers: Which One is Right for You? - in_article 3 23 3
+1100 2025-12-28 19:55:37.098123+00 166 Comparing the Latest Back Massagers: Which One is Right for You? - featured 3 23 3
+1101 2025-12-28 19:55:37.098138+00 165 Integrating Medical Software with Back Massagers: A New Era in Wellness - in_article 3 23 3
+1102 2025-12-28 19:55:37.098153+00 164 Integrating Medical Software with Back Massagers: A New Era in Wellness - in_article 3 23 3
+1103 2025-12-28 19:55:37.098169+00 163 Integrating Medical Software with Back Massagers: A New Era in Wellness - featured 3 23 3
+1104 2025-12-28 19:55:37.098183+00 162 Exploring the Best Types of Back Massagers: A Comprehensive Guide - in_article 3 23 3
+1105 2025-12-28 19:55:37.098198+00 161 Exploring the Best Types of Back Massagers: A Comprehensive Guide - in_article 3 23 3
+1106 2025-12-28 19:55:37.098212+00 160 Exploring the Best Types of Back Massagers: A Comprehensive Guide - featured 3 23 3
+1107 2025-12-28 19:55:37.098226+00 159 The Benefits and Risks of Back Massagers: What You Need to Know - in_article 3 23 3
+1108 2025-12-28 19:55:37.09824+00 158 The Benefits and Risks of Back Massagers: What You Need to Know - in_article 3 23 3
+1109 2025-12-28 19:55:37.098277+00 157 The Benefits and Risks of Back Massagers: What You Need to Know - featured 3 23 3
+1110 2025-12-28 19:55:37.098293+00 132 Ultimate guide to kitchen remodeling: transforming your space - in_article 3 23 3
+1111 2025-12-28 19:55:37.098308+00 131 Ultimate guide to kitchen remodeling: transforming your space - in_article 3 23 3
+1112 2025-12-28 19:55:37.098322+00 130 Ultimate guide to kitchen remodeling: transforming your space - featured 3 23 3
+1113 2025-12-28 19:55:37.098336+00 129 Creative home renovation ideas to refresh your space - in_article 3 23 3
+1114 2025-12-28 19:55:37.098351+00 128 Creative home renovation ideas to refresh your space - in_article 3 23 3
+1115 2025-12-28 19:55:37.098374+00 127 Creative home renovation ideas to refresh your space - featured 3 23 3
+1116 2025-12-28 19:55:37.098389+00 126 Top flooring installation techniques for DIY enthusiasts - in_article 3 23 3
+1117 2025-12-28 19:55:37.098403+00 125 Top flooring installation techniques for DIY enthusiasts - in_article 3 23 3
+1118 2025-12-28 19:55:37.098418+00 124 Top flooring installation techniques for DIY enthusiasts - featured 3 23 3
+1119 2025-12-28 19:55:37.098431+00 123 The ultimate guide to flooring installation: techniques and tips - in_article 3 23 3
+1120 2025-12-28 19:55:37.098441+00 122 The ultimate guide to flooring installation: techniques and tips - in_article 3 23 3
+1121 2025-12-28 19:55:37.098451+00 121 The ultimate guide to flooring installation: techniques and tips - featured 3 23 3
+1122 2025-12-28 19:55:37.098461+00 120 Top interior design trends to watch in 2024 - in_article 3 23 3
+1123 2025-12-28 19:55:37.098478+00 119 Top interior design trends to watch in 2024 - in_article 3 23 3
+1124 2025-12-28 19:55:37.098493+00 118 Top interior design trends to watch in 2024 - featured 3 23 3
+1125 2025-12-28 19:55:37.098508+00 117 How to incorporate the latest interior design trends into your home - in_article 3 23 3
+1126 2025-12-28 19:55:37.098606+00 116 How to incorporate the latest interior design trends into your home - in_article 3 23 3
+1127 2025-12-28 19:55:37.098639+00 115 How to incorporate the latest interior design trends into your home - featured 3 23 3
+1128 2025-12-28 19:55:37.098656+00 114 Furniture arrangement: The art of space optimization - in_article 3 23 3
+1129 2025-12-28 19:55:37.098671+00 113 Furniture arrangement: The art of space optimization - in_article 3 23 3
+1130 2025-12-28 19:55:37.098686+00 112 Furniture arrangement: The art of space optimization - featured 3 23 3
+1131 2025-12-28 19:55:37.098701+00 111 Maximizing small spaces: Innovative design techniques - in_article 3 23 3
+1132 2025-12-28 19:55:37.098716+00 110 Maximizing small spaces: Innovative design techniques - in_article 3 23 3
+1133 2025-12-28 19:55:37.098726+00 109 Maximizing small spaces: Innovative design techniques - featured 3 23 3
+1134 2025-12-28 19:55:37.098736+00 108 Mastering Home Staging: Tips to Impress Buyers - in_article 3 23 3
+1135 2025-12-28 19:55:37.098746+00 107 Mastering Home Staging: Tips to Impress Buyers - in_article 3 23 3
+1136 2025-12-28 19:55:37.098756+00 106 Mastering Home Staging: Tips to Impress Buyers - featured 3 23 3
+1137 2025-12-28 19:55:37.098765+00 105 Transform Your Space: Innovative Room Makeover Ideas - in_article 3 23 3
+1138 2025-12-28 19:55:37.098775+00 104 Transform Your Space: Innovative Room Makeover Ideas - in_article 3 23 3
+1139 2025-12-28 19:55:37.098784+00 103 Transform Your Space: Innovative Room Makeover Ideas - featured 3 23 3
+1140 2025-12-28 19:55:37.098793+00 102 Enhancing your space: Lighting techniques for interior design - in_article 3 23 3
+1141 2025-12-28 19:55:37.098805+00 101 Enhancing your space: Lighting techniques for interior design - in_article 3 23 3
+1142 2025-12-28 19:55:37.098819+00 100 Enhancing your space: Lighting techniques for interior design - featured 3 23 3
+1143 2025-12-28 19:55:37.098834+00 99 Mastering interior lighting design: principles and styles - in_article 3 23 3
+1144 2025-12-28 19:55:37.098848+00 98 Mastering interior lighting design: principles and styles - in_article 3 23 3
+1145 2025-12-28 19:55:37.098862+00 97 Mastering interior lighting design: principles and styles - featured 3 23 3
+1146 2025-12-28 19:55:37.098877+00 96 2023 home decor trends: What’s in and what’s out - in_article 3 23 3
+1147 2025-12-28 19:55:37.098893+00 95 2023 home decor trends: What’s in and what’s out - in_article 3 23 3
+1148 2025-12-28 19:55:37.098907+00 94 2023 home decor trends: What’s in and what’s out - featured 3 23 3
+1149 2025-12-28 19:55:37.098921+00 93 Home decor ideas to transform your living space - in_article 3 23 3
+1150 2025-12-28 19:55:37.098935+00 92 Home decor ideas to transform your living space - in_article 3 23 3
+1151 2025-12-28 19:55:37.098949+00 91 Home decor ideas to transform your living space - featured 3 23 3
+1152 2025-12-28 19:55:37.098963+00 18 Ultimate guide to kitchen remodeling: transform your space - in_article 3 23 3
+1153 2025-12-28 19:55:37.098977+00 17 Ultimate guide to kitchen remodeling: transform your space - in_article 3 23 3
+1154 2025-12-28 19:55:37.098991+00 16 Ultimate guide to kitchen remodeling: transform your space - featured 3 23 3
+1155 2025-12-28 19:55:37.099004+00 15 Essential plant care tips for every gardener - in_article 3 23 3
+1156 2025-12-28 19:55:37.099017+00 14 Essential plant care tips for every gardener - in_article 3 23 3
+1157 2025-12-28 19:55:37.099031+00 13 Essential plant care tips for every gardener - featured 3 23 3
+1158 2025-12-28 20:05:52.274807+00 173 7 Best Back Massagers for Knots and Deep Muscle Relief 3 21 3
+1159 2025-12-28 20:05:52.274849+00 171 Best Back Massager for Lower Back Pain: How to Choose 3 21 3
+1160 2025-12-28 20:05:52.274865+00 166 How to Choose the Best Back Massager for Lower Back Pain 3 21 3
+1161 2025-12-28 20:05:52.274878+00 154 Essential Garden Tools for Every Gardener: A Complete Guide 3 21 3
+1162 2025-12-28 20:05:52.27489+00 153 Essential Garden Tools for Every Gardener: A Complete Guide 3 21 3
+1163 2025-12-28 20:05:52.274902+00 140 Top tips for natural pest control in organic gardening 3 21 3
+1164 2025-12-28 20:05:52.274915+00 139 The Ultimate Guide to Organic Gardening Essentials 3 21 3
+1165 2025-12-28 20:05:52.27493+00 138 Creative herb garden ideas to maximize your space 3 21 3
+1166 2025-12-28 20:05:52.274943+00 137 Essential garden tools for every gardener: A complete guide 3 21 3
+1167 2025-12-28 20:05:52.274955+00 130 Innovative Outdoor Lighting Ideas to Transform Your Space 3 21 3
+1168 2025-12-28 20:05:52.274967+00 129 Creating the perfect outdoor patio: design tips and inspirations 3 21 3
+1169 2025-12-28 20:05:52.274978+00 128 Top 10 Lawn Care Tips for Homeowners 3 21 3
+1170 2025-12-28 20:05:52.274989+00 127 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard 3 21 3
+1171 2025-12-28 20:05:52.275001+00 126 Stylish garden pathways: design tips and ideas 3 21 3
+1172 2025-12-28 20:05:52.275012+00 125 Creative landscape design ideas to transform your outdoor space 3 21 3
+1173 2025-12-28 20:05:52.275023+00 124 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space 3 21 3
+1174 2025-12-28 20:05:52.275035+00 123 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy 3 21 3
+1175 2025-12-28 20:05:52.275047+00 122 Comparing the Latest Back Massagers: Which One is Right for You? 3 21 3
+1176 2025-12-28 20:05:52.275059+00 121 Exploring the Best Types of Back Massagers: A Comprehensive Guide 3 21 3
+1177 2025-12-28 20:05:52.27507+00 120 Top 5 Back Massagers You Can Buy Today 3 21 3
+1178 2025-12-28 20:05:52.275081+00 119 The Ultimate Guide to Shopping for Back Massagers 3 21 3
+1179 2025-12-28 20:05:52.275092+00 118 The Future of Wellness: How Medical Software is Transforming Back Massagers 3 21 3
+1180 2025-12-28 20:05:52.275104+00 117 Integrating Medical Software with Back Massagers: A New Era in Wellness 3 21 3
+1181 2025-12-28 20:05:52.275116+00 116 The Benefits and Risks of Back Massagers: What You Need to Know 3 21 3
+1182 2025-12-28 20:05:52.275127+00 115 Comprehensive guide to using back massagers safely 3 21 3
+1183 2025-12-28 20:05:52.275139+00 114 The Best Back Massagers of 2023: Your Essential Buying Guide 3 21 3
+1184 2025-12-28 20:05:52.275151+00 113 The ultimate guide to the best back massagers: finding your perfect match 3 21 3
+1185 2025-12-28 20:05:52.275162+00 112 Top 5 Back Massagers to Consider in 2023 3 21 3
+1186 2025-12-28 20:05:52.275174+00 111 The Ultimate Guide to Back Massagers: Types and Features 3 21 3
+1187 2025-12-28 20:05:52.275186+00 110 Top 10 Back Massagers You Can Buy Today 3 21 3
+1188 2025-12-28 20:05:52.275198+00 109 Finding the Best Back Massager: Your Ultimate Shopping Guide 3 21 3
+1189 2025-12-28 20:05:52.275209+00 108 Finding the Best Back Massager: Your Ultimate Shopping Guide 3 21 3
+1190 2025-12-28 20:05:52.27522+00 107 Top 5 back massagers for effective pain relief 3 21 3
+1191 2025-12-28 20:05:52.275232+00 106 The Ultimate Guide to Back Massagers for Pain Relief 3 21 3
+1192 2025-12-28 20:05:52.275265+00 105 Finding the Best Back Massagers Near You: A Comprehensive Guide 3 21 3
+1193 2025-12-28 20:05:52.275277+00 104 Electric massagers: A comprehensive review for back pain relief 3 21 3
+1194 2025-12-28 20:05:52.275289+00 103 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager 3 21 3
+1195 2025-12-28 20:05:52.2753+00 89 Creative home renovation ideas to refresh your space 3 21 3
+1196 2025-12-28 20:05:52.275311+00 88 Ultimate guide to kitchen remodeling: transforming your space 3 21 3
+1197 2025-12-28 20:05:52.275323+00 87 How to incorporate the latest interior design trends into your home 3 21 3
+1198 2025-12-28 20:05:52.275337+00 86 Top interior design trends to watch in 2024 3 21 3
+1199 2025-12-28 20:05:52.275348+00 85 Top flooring installation techniques for DIY enthusiasts 3 21 3
+1200 2025-12-28 20:05:52.275359+00 84 The ultimate guide to flooring installation: techniques and tips 3 21 3
+1201 2025-12-28 20:05:52.27537+00 83 Furniture arrangement: The art of space optimization 3 21 3
+1202 2025-12-28 20:05:52.275381+00 82 Maximizing small spaces: Innovative design techniques 3 21 3
+1203 2025-12-28 20:05:52.275392+00 81 Mastering Home Staging: Tips to Impress Buyers 3 21 3
+1204 2025-12-28 20:05:52.275404+00 80 Transform Your Space: Innovative Room Makeover Ideas 3 21 3
+1205 2025-12-28 20:05:52.275422+00 79 Enhancing your space: Lighting techniques for interior design 3 21 3
+1206 2025-12-28 20:05:52.275433+00 78 Mastering interior lighting design: principles and styles 3 21 3
+1207 2025-12-28 20:05:52.275445+00 77 2023 home decor trends: What’s in and what’s out 3 21 3
+1208 2025-12-28 20:05:52.275456+00 76 Home decor ideas to transform your living space 3 21 3
+1209 2025-12-28 20:05:52.275467+00 51 Ultimate guide to kitchen remodeling: transform your space 3 21 3
+1210 2025-12-28 20:05:52.275478+00 50 Essential plant care tips for every gardener 3 21 3
+1211 2025-12-28 22:59:31.80505+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Runware api key"]}}] 77 3
+1212 2025-12-28 23:08:30.496904+00 455 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1213 2025-12-28 23:08:30.497204+00 454 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1214 2025-12-28 23:08:30.497234+00 453 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1215 2025-12-28 23:08:30.497299+00 452 How to Choose the Best Back Massager for Lower Back Pain - in_article 3 23 3
+1216 2025-12-28 23:08:30.497325+00 451 How to Choose the Best Back Massager for Lower Back Pain - featured 3 23 3
+1217 2025-12-28 23:08:30.497343+00 450 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1218 2025-12-28 23:08:30.497363+00 449 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1219 2025-12-28 23:08:30.497381+00 448 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1220 2025-12-28 23:08:30.497399+00 447 How to Use an Electric Massager for Back Pain Safely - in_article 3 23 3
+1221 2025-12-28 23:08:30.497414+00 446 How to Use an Electric Massager for Back Pain Safely - featured 3 23 3
+1222 2025-12-28 23:08:30.497432+00 445 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+1223 2025-12-28 23:08:30.497449+00 444 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+1224 2025-12-28 23:08:30.497465+00 443 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+1225 2025-12-28 23:08:30.497479+00 442 Best Back Massager for Lower Back Pain: How to Choose - in_article 3 23 3
+1226 2025-12-28 23:08:30.497495+00 441 Best Back Massager for Lower Back Pain: How to Choose - featured 3 23 3
+1227 2025-12-28 23:08:30.497508+00 440 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1228 2025-12-28 23:08:30.497524+00 439 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1229 2025-12-28 23:08:30.49754+00 438 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1230 2025-12-28 23:08:30.497554+00 437 7 Best Back Massagers for Knots and Deep Muscle Relief - in_article 3 23 3
+1231 2025-12-28 23:08:30.49757+00 436 7 Best Back Massagers for Knots and Deep Muscle Relief - featured 3 23 3
+1232 2025-12-28 23:08:30.497587+00 435 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1233 2025-12-28 23:08:30.4976+00 434 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1234 2025-12-28 23:08:30.497614+00 433 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1235 2025-12-28 23:08:30.497627+00 432 Complete Guide to Back Massagers for Pain Relief - in_article 3 23 3
+1236 2025-12-28 23:08:30.497643+00 431 Complete Guide to Back Massagers for Pain Relief - featured 3 23 3
+1237 2025-12-28 23:08:30.497663+00 430 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1238 2025-12-28 23:08:30.49768+00 429 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1239 2025-12-28 23:08:30.497694+00 428 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1240 2025-12-28 23:08:30.49771+00 427 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1241 2025-12-28 23:08:30.49775+00 426 10 Best Heated Back Massagers for Ultimate Relaxation - featured 3 23 3
+1242 2025-12-28 23:08:30.49777+00 425 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1243 2025-12-28 23:08:30.497784+00 424 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1244 2025-12-28 23:08:30.4978+00 423 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1245 2025-12-28 23:08:30.497817+00 422 10 Best Heated Back Massagers for Ultimate Relaxation - in_article 3 23 3
+1246 2025-12-28 23:08:30.497834+00 421 10 Best Heated Back Massagers for Ultimate Relaxation - featured 3 23 3
+1247 2025-12-28 23:08:30.497847+00 420 Hyperice vs Homedics: Which Back Massager is Best for You? - in_article 3 23 3
+1248 2025-12-28 23:08:30.497865+00 419 Hyperice vs Homedics: Which Back Massager is Best for You? - in_article 3 23 3
+1249 2025-12-28 23:08:30.497882+00 418 Hyperice vs Homedics: Which Back Massager is Best for You? - in_article 3 23 3
+1250 2025-12-28 23:08:30.497896+00 417 Hyperice vs Homedics: Which Back Massager is Best for You? - in_article 3 23 3
+1251 2025-12-28 23:08:30.497913+00 416 Hyperice vs Homedics: Which Back Massager is Best for You? - featured 3 23 3
+1252 2025-12-28 23:08:30.497929+00 415 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+1253 2025-12-28 23:08:30.497948+00 414 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+1254 2025-12-28 23:08:30.497964+00 413 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+1255 2025-12-28 23:08:30.497979+00 412 How to Choose the Best Back Massager for Pain Relief - in_article 3 23 3
+1256 2025-12-28 23:08:30.497994+00 411 How to Choose the Best Back Massager for Pain Relief - featured 3 23 3
+1257 2025-12-28 23:08:30.49801+00 410 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+1258 2025-12-28 23:08:30.498025+00 409 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+1259 2025-12-28 23:08:30.49804+00 408 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+1260 2025-12-28 23:08:30.498055+00 407 10 Best Portable Back Massagers for Instant Relief - in_article 3 23 3
+1261 2025-12-28 23:08:30.498072+00 406 10 Best Portable Back Massagers for Instant Relief - featured 3 23 3
+1262 2025-12-28 23:08:30.498087+00 405 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+1263 2025-12-28 23:08:30.498102+00 404 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+1264 2025-12-28 23:08:30.49812+00 403 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - in_article 3 23 3
+1265 2025-12-28 23:08:30.498135+00 402 Portable Back Massager Gun vs. Handheld Massager: Which Is Better? - featured 3 23 3
+1266 2025-12-28 23:16:31.980327+00 229 Essential Garden Tools for Every Gardener: A Complete Guide 3 22 3
+1267 2025-12-28 23:16:31.980357+00 228 Creative Herb Garden Ideas to Maximize Your Space 3 22 3
+1268 2025-12-28 23:16:31.980367+00 227 The Ultimate Guide to Organic Gardening Essentials 3 22 3
+1269 2025-12-28 23:16:31.980376+00 226 Top Tips for Natural Pest Control in Organic Gardening 3 22 3
+1270 2025-12-28 23:16:31.980384+00 219 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy 3 22 3
+1271 2025-12-28 23:16:31.980391+00 218 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space 3 22 3
+1272 2025-12-28 23:16:31.980399+00 217 Creative Landscape Design Ideas to Transform Your Outdoor Space 3 22 3
+1273 2025-12-28 23:16:31.980406+00 216 Stylish Garden Pathways: Design Tips and Ideas 3 22 3
+1274 2025-12-28 23:16:31.980413+00 215 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard 3 22 3
+1275 2025-12-28 23:16:31.98042+00 214 Top 10 Lawn Care Tips for Homeowners 3 22 3
+1276 2025-12-28 23:16:31.980428+00 213 Creating the Perfect Outdoor Patio: Design Tips and Inspirations 3 22 3
+1277 2025-12-28 23:16:31.980435+00 212 Innovative Outdoor Lighting Ideas to Transform Your Space 3 22 3
+1278 2025-12-28 23:16:31.980442+00 211 The Ultimate Guide to Back Massagers for Pain Relief 3 22 3
+1279 2025-12-28 23:16:31.980449+00 210 Top 5 Back Massagers for Effective Pain Relief 3 22 3
+1280 2025-12-28 23:16:31.980456+00 209 Finding the Best Back Massager: Your Ultimate Shopping Guide 3 22 3
+1281 2025-12-28 23:16:31.980463+00 208 Top 10 Back Massagers You Can Buy Today 3 22 3
+1282 2025-12-28 23:16:31.98047+00 207 The Ultimate Guide to Back Massagers: Types and Features 3 22 3
+1283 2025-12-28 23:16:31.980479+00 206 Top 5 Back Massagers to Consider in 2023 3 22 3
+1284 2025-12-28 23:16:31.980495+00 205 The Ultimate Guide to the Best Back Massagers: Finding Your Perfect Match 3 22 3
+1285 2025-12-28 23:16:31.980515+00 204 The Best Back Massagers of 2023: Your Essential Buying Guide 3 22 3
+1286 2025-12-28 23:16:31.980528+00 203 Comprehensive Guide to Using Back Massagers Safely 3 22 3
+1287 2025-12-28 23:16:31.980538+00 202 The Benefits and Risks of Back Massagers: What You Need to Know 3 22 3
+1288 2025-12-28 23:16:31.980551+00 201 Integrating Medical Software with Back Massagers: A New Era in Wellness 3 22 3
+1289 2025-12-28 23:16:31.98057+00 200 The Future of Wellness: How Medical Software is Transforming Back Massagers 3 22 3
+1290 2025-12-28 23:16:31.980581+00 199 The Ultimate Guide to Shopping for Back Massagers 3 22 3
+1291 2025-12-28 23:16:31.980592+00 198 Top 5 Back Massagers You Can Buy Today 3 22 3
+1292 2025-12-28 23:16:31.980604+00 197 Exploring the Best Types of Back Massagers: A Comprehensive Guide 3 22 3
+1293 2025-12-28 23:16:31.980615+00 196 Comparing the Latest Back Massagers: Which One is Right for You? 3 22 3
+1294 2025-12-28 23:16:31.980626+00 195 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager 3 22 3
+1295 2025-12-28 23:16:31.980637+00 194 Electric Massagers: A Comprehensive Review for Back Pain Relief 3 22 3
+1296 2025-12-28 23:16:31.980649+00 193 Finding the Best Back Massagers Near You: A Comprehensive Guide 3 22 3
+1297 2025-12-28 23:16:31.980658+00 158 Ultimate Guide to Kitchen Remodeling: Transforming Your Space 3 22 3
+1298 2025-12-28 23:16:31.980666+00 157 Creative Home Renovation Ideas to Refresh Your Space 3 22 3
+1299 2025-12-28 23:16:31.980677+00 156 The Ultimate Guide to Flooring Installation: Techniques and Tips 3 22 3
+1300 2025-12-28 23:16:31.98069+00 155 Top Flooring Installation Techniques for DIY Enthusiasts 3 22 3
+1301 2025-12-28 23:16:31.980703+00 154 Top Interior Design Trends to Watch in 2024 3 22 3
+1302 2025-12-28 23:16:31.980716+00 153 How to Incorporate the Latest Interior Design Trends into Your Home 3 22 3
+1303 2025-12-28 23:16:31.980726+00 152 Home Decor Ideas to Transform Your Living Space 3 22 3
+1304 2025-12-28 23:16:31.980734+00 151 2023 Home Decor Trends: What’s In and What’s Out 3 22 3
+1305 2025-12-28 23:16:31.980745+00 150 Mastering Interior Lighting Design: Principles and Styles 3 22 3
+1306 2025-12-28 23:16:31.980755+00 149 Enhancing Your Space: Lighting Techniques for Interior Design 3 22 3
+1307 2025-12-28 23:16:31.980766+00 148 Transform Your Space: Innovative Room Makeover Ideas 3 22 3
+1308 2025-12-28 23:16:31.980777+00 147 Mastering Home Staging: Tips to Impress Buyers 3 22 3
+1309 2025-12-28 23:16:31.980789+00 146 Maximizing Small Spaces: Innovative Design Techniques 3 22 3
+1310 2025-12-28 23:16:31.980798+00 145 Furniture Arrangement: The Art of Space Optimization 3 22 3
+1311 2025-12-28 23:17:31.558043+00 199 The Benefits and Risks of Back Massagers: What You Need to Know 3 20 3
+1312 2025-12-28 23:17:31.558084+00 267 Top 5 Back Massagers for Effective Pain Relief 3 20 3
+1313 2025-12-28 23:17:31.558107+00 205 Comparing the Latest Back Massagers: Which One is Right for You? 3 20 3
+1314 2025-12-28 23:17:31.558127+00 222 The Ultimate Guide to Organic Gardening Essentials 3 20 3
+1315 2025-12-28 23:17:31.558143+00 220 Essential Garden Tools for Every Gardener: A Complete Guide 3 20 3
+1316 2025-12-28 23:17:31.558156+00 213 Innovative Outdoor Lighting Ideas to Transform Your Space 3 20 3
+1317 2025-12-28 23:17:31.558167+00 212 Creating the Perfect Outdoor Patio: Design Tips and Inspirations 3 20 3
+1318 2025-12-28 23:17:31.558177+00 210 The Ultimate Guide to Lawn Care: Tips for a Lush, Green Yard 3 20 3
+1319 2025-12-28 23:17:31.558185+00 209 Stylish Garden Pathways: Design Tips and Ideas 3 20 3
+1320 2025-12-28 23:17:31.558194+00 208 Creative Landscape Design Ideas to Transform Your Outdoor Space 3 20 3
+1321 2025-12-28 23:17:31.558202+00 207 Step-by-Step Deck Building Guide: Create Your Dream Outdoor Space 3 20 3
+1322 2025-12-28 23:17:31.55821+00 206 The Ultimate Tree Planting Guide: From Seedling to Thriving Canopy 3 20 3
+1323 2025-12-28 23:17:31.558218+00 204 Exploring the Best Types of Back Massagers: A Comprehensive Guide 3 20 3
+1324 2025-12-28 23:17:31.558233+00 202 The Ultimate Guide to Shopping for Back Massagers 3 20 3
+1325 2025-12-28 23:17:31.558281+00 198 Comprehensive Guide to Using Back Massagers Safely 3 20 3
+1326 2025-12-28 23:17:31.558295+00 196 The Ultimate Guide to the Best Back Massagers: Finding Your Perfect Match 3 20 3
+1327 2025-12-28 23:17:31.558306+00 194 The Ultimate Guide to Back Massagers: Types and Features 3 20 3
+1328 2025-12-28 23:17:31.558318+00 192 Finding the Best Back Massager: Your Ultimate Shopping Guide 3 20 3
+1329 2025-12-28 23:17:31.55833+00 190 The Ultimate Guide to Back Massagers for Pain Relief 3 20 3
+1330 2025-12-28 23:17:31.55834+00 174 Finding the Best Back Massagers Near You: A Comprehensive Guide 3 20 3
+1331 2025-12-28 23:17:31.558352+00 172 The Ultimate Guide to Back Pain Relief Solutions: Choosing the Right Massager 3 20 3
+1332 2025-12-28 23:17:31.558365+00 142 Ultimate Guide to Kitchen Remodeling: Transforming Your Space 3 20 3
+1333 2025-12-28 23:17:31.558376+00 136 The Ultimate Guide to Flooring Installation: Techniques and Tips 3 20 3
+1334 2025-12-28 23:17:31.558384+00 135 Furniture Arrangement: The Art of Space Optimization 3 20 3
+1335 2025-12-28 23:17:31.558393+00 134 Maximizing Small Spaces: Innovative Design Techniques 3 20 3
+1336 2025-12-28 23:17:31.558401+00 133 Mastering Home Staging: Tips to Impress Buyers 3 20 3
+1337 2025-12-28 23:17:31.558409+00 132 Transform Your Space: Innovative Room Makeover Ideas 3 20 3
+1338 2025-12-28 23:17:31.558417+00 131 Enhancing Your Space: Lighting Techniques for Interior Design 3 20 3
+1339 2025-12-28 23:17:31.558426+00 130 Mastering Interior Lighting Design: Principles and Styles 3 20 3
+1340 2025-12-28 23:17:31.558445+00 128 Home Decor Ideas to Transform Your Living Space 3 20 3
+1341 2025-12-28 23:17:31.558462+00 139 How to Incorporate the Latest Interior Design Trends into Your Home 3 20 3
+1342 2025-12-28 23:17:31.558473+00 137 Top Flooring Installation Techniques for DIY Enthusiasts 3 20 3
+1343 2025-12-28 23:17:31.558485+00 221 Creative Herb Garden Ideas to Maximize Your Space 3 20 3
+1344 2025-12-28 23:17:31.558498+00 266 Comprehensive Guide to Choosing the Right Back Massager for Pain Relief 3 20 3
+1345 2025-12-28 23:17:31.558509+00 200 Integrating Medical Software with Back Massagers: A New Era in Wellness 3 20 3
+1346 2025-12-28 23:17:31.558517+00 201 The Future of Wellness: How Medical Software is Transforming Back Massagers 3 20 3
+1347 2025-12-28 23:17:31.558525+00 143 Creative Home Renovation Ideas to Refresh Your Space 3 20 3
+1348 2025-12-28 23:17:31.558533+00 211 Top 10 Lawn Care Tips for Homeowners 3 20 3
+1349 2025-12-28 23:17:31.558567+00 193 Top 10 Back Massagers You Can Buy Today 3 20 3
+1350 2025-12-28 23:17:31.558576+00 203 Top 5 Back Massagers You Can Buy Today 3 20 3
+1351 2025-12-28 23:17:31.558584+00 197 The Best Back Massagers of 2023: Your Essential Buying Guide 3 20 3
+1352 2025-12-28 23:17:31.558592+00 195 Top 5 Back Massagers to Consider in 2023 3 20 3
+3336 2025-12-29 02:58:04.121732+00 1 Global Integration Settings 2 [] 77 3
+1353 2025-12-28 23:17:31.558601+00 191 Top 5 Back Massagers for Effective Pain Relief 3 20 3
+1354 2025-12-28 23:17:31.558609+00 173 Electric Massagers: A Comprehensive Review for Back Pain Relief 3 20 3
+1355 2025-12-28 23:17:31.558617+00 223 Top Tips for Natural Pest Control in Organic Gardening 3 20 3
+1356 2025-12-28 23:17:31.558625+00 129 2023 Home Decor Trends: What’s In and What’s Out 3 20 3
+1357 2025-12-28 23:17:31.558633+00 138 Top Interior Design Trends to Watch in 2024 3 20 3
+1358 2025-12-28 23:17:50.144032+00 339 Back Massagers for Pain Relief 3 19 3
+1359 2025-12-28 23:17:50.144069+00 346 Back Massager Shopping Options 3 19 3
+1360 2025-12-28 23:17:50.144086+00 345 Back Massagers - Types and Features 3 19 3
+1361 2025-12-28 23:17:50.144099+00 344 Best Back Massagers 3 19 3
+1362 2025-12-28 23:17:50.14411+00 350 Building and Planting Guides 3 19 3
+1363 2025-12-28 23:17:50.144122+00 409 DIY Home Improvement Projects and How-To Guides 3 19 3
+1364 2025-12-28 23:17:50.144134+00 320 Flooring and Installation Techniques 3 19 3
+1365 2025-12-28 23:17:50.144145+00 349 Garden Design Inspiration 3 19 3
+1366 2025-12-28 23:17:50.144153+00 352 Garden Tools and Resources 3 19 3
+1367 2025-12-28 23:17:50.144161+00 365 Home Decor Enhancement Strategies 3 19 3
+1368 2025-12-28 23:17:50.14417+00 316 Home Decor Inspiration 3 19 3
+1369 2025-12-28 23:17:50.144178+00 319 Home Renovation and Improvement 3 19 3
+1370 2025-12-28 23:17:50.144186+00 342 Informational Resources on Back Massagers 3 19 3
+1371 2025-12-28 23:17:50.144193+00 321 Interior Design Trends 3 19 3
+1372 2025-12-28 23:17:50.1442+00 315 Interior Lighting Design Insights 3 19 3
+1373 2025-12-28 23:17:50.144208+00 348 Lawn Care and Maintenance 3 19 3
+1374 2025-12-28 23:17:50.144215+00 343 Medical Software and Back Massagers 3 19 3
+1375 2025-12-28 23:17:50.144222+00 351 Organic Gardening Essentials 3 19 3
+1376 2025-12-28 23:17:50.144229+00 347 Outdoor Living Design 3 19 3
+1377 2025-12-28 23:17:50.144236+00 410 Power Tools Reviews for DIY and Home Projects 3 19 3
+1378 2025-12-28 23:17:50.144265+00 317 Room Transformation Strategies 3 19 3
+1379 2025-12-28 23:17:50.144272+00 341 Shopping for Back Massagers 3 19 3
+1380 2025-12-28 23:17:50.14428+00 318 Space Optimization Techniques 3 19 3
+1381 2025-12-28 23:17:50.144288+00 340 Types of Back Massagers 3 19 3
+1382 2025-12-28 23:26:28.782098+00 15 * - Manual Payment 3 66 3
+1383 2025-12-28 23:26:28.782149+00 24 AU - Stripe (Credit/Debit Card) 3 66 3
+1384 2025-12-28 23:26:28.78217+00 25 AU - Bank Transfer (Manual) 3 66 3
+1385 2025-12-28 23:26:28.782187+00 22 CA - Stripe (Credit/Debit Card) 3 66 3
+1386 2025-12-28 23:26:28.782205+00 23 CA - Bank Transfer (Manual) 3 66 3
+1387 2025-12-28 23:26:28.782222+00 26 DE - Stripe (Credit/Debit Card) 3 66 3
+1388 2025-12-28 23:26:28.782239+00 27 DE - Bank Transfer (Manual) 3 66 3
+1389 2025-12-28 23:26:28.782285+00 28 FR - Stripe (Credit/Debit Card) 3 66 3
+1390 2025-12-28 23:26:28.782302+00 29 FR - Bank Transfer (Manual) 3 66 3
+1391 2025-12-28 23:26:28.782318+00 18 GB - Stripe (Credit/Debit Card) 3 66 3
+1392 2025-12-28 23:26:28.782334+00 9 GB - Bank Transfer (Manual) 3 66 3
+1393 2025-12-28 23:26:28.782349+00 19 IN - Stripe (Credit/Debit Card) 3 66 3
+1394 2025-12-28 23:26:28.782366+00 20 IN - Bank Transfer (Manual) 3 66 3
+1395 2025-12-28 23:26:28.782381+00 6 IN - Local Wallet (Manual) 3 66 3
+1396 2025-12-28 23:26:28.782397+00 21 PK - Stripe (Credit/Debit Card) 3 66 3
+1397 2025-12-28 23:26:28.782412+00 5 PK - Bank Transfer (Manual) 3 66 3
+1398 2025-12-28 23:26:28.782427+00 16 US - Stripe (Credit/Debit Card) 3 66 3
+1399 2025-12-28 23:26:28.782441+00 17 US - Bank Transfer (Manual) 3 66 3
+1400 2025-12-28 23:27:00.091995+00 9 5 - Bank Transfer (bank_transfer) 3 67 3
+1401 2025-12-28 23:27:00.092063+00 24 89 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1402 2025-12-28 23:27:00.092083+00 26 91 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1403 2025-12-28 23:27:00.092098+00 27 96 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1404 2025-12-28 23:27:00.092111+00 28 97 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1405 2025-12-28 23:27:00.092126+00 29 99 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1406 2025-12-28 23:27:00.09214+00 30 100 - Bank Transfer (Manual) (bank_transfer) 3 67 3
+1407 2025-12-28 23:27:00.092154+00 10 5 - Manual Payment (manual) 3 67 3
+1408 2025-12-28 23:29:33.468579+00 14 * - Local Wallet (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+1409 2025-12-28 23:30:50.567783+00 89 Paid 1 3 8 3
+1410 2025-12-28 23:30:50.567816+00 29 Home G8 3 8 3
+1411 2025-12-28 23:30:50.56783+00 14 Scale Account 3 8 3
+1412 2025-12-28 23:31:10.287439+00 57 admin@homeg8.com 3 7 3
+1413 2025-12-28 23:31:10.287479+00 118 paid1@paid.com 3 7 3
+1414 2025-12-28 23:31:53.207124+00 26 AWS Admin - homer 3 13 3
+1415 2025-12-28 23:31:53.207165+00 25 AWS Admin - sadas 3 13 3
+1416 2025-12-28 23:31:53.207187+00 22 Paid 2 - site 3 massgers 3 13 3
+1417 2025-12-28 23:31:53.207203+00 20 AWS Admin - asdasd 3 13 3
+1418 2025-12-28 23:31:53.207217+00 19 Home G8 - tester site 3 13 3
+1419 2025-12-28 23:31:53.207229+00 18 Scale Account - new site 3 13 3
+1420 2025-12-28 23:32:32.470678+00 3 paid2@paid.com -> Home & Garden Site 1 [{"added": {}}] 15 3
+1421 2025-12-28 23:33:38.720567+00 5 Paid 2 - Home & Garden Site 2 [{"changed": {"fields": ["Account"]}}] 13 3
+1422 2025-12-28 23:34:24.23029+00 21 Paid 2 - Test Site 2 2 [{"changed": {"fields": ["Name"]}}] 13 3
+1423 2025-12-28 23:36:36.432277+00 526 Usage Deduction - -2 credits - Paid 2 3 37 3
+1424 2025-12-28 23:36:36.432322+00 525 Usage Deduction - -2 credits - Paid 2 3 37 3
+1425 2025-12-28 23:36:36.43234+00 524 Usage Deduction - -2 credits - Paid 2 3 37 3
+1426 2025-12-28 23:36:36.432356+00 523 Usage Deduction - -2 credits - Paid 2 3 37 3
+1427 2025-12-28 23:36:36.432371+00 522 Usage Deduction - -2 credits - Paid 2 3 37 3
+1428 2025-12-28 23:36:36.432386+00 521 Usage Deduction - -2 credits - Paid 2 3 37 3
+1429 2025-12-28 23:36:36.432438+00 520 Usage Deduction - -2 credits - Paid 2 3 37 3
+1430 2025-12-28 23:36:36.432453+00 519 Usage Deduction - -2 credits - Paid 2 3 37 3
+1431 2025-12-28 23:36:36.432466+00 518 Usage Deduction - -2 credits - Paid 2 3 37 3
+1432 2025-12-28 23:36:36.432479+00 517 Usage Deduction - -2 credits - Paid 2 3 37 3
+1433 2025-12-28 23:36:36.432493+00 516 Usage Deduction - -2 credits - Paid 2 3 37 3
+1434 2025-12-28 23:36:36.432506+00 515 Usage Deduction - -4 credits - Paid 2 3 37 3
+1435 2025-12-28 23:36:36.432521+00 514 Usage Deduction - -4 credits - Paid 2 3 37 3
+1436 2025-12-28 23:36:36.432535+00 513 Usage Deduction - -4 credits - Paid 2 3 37 3
+1437 2025-12-28 23:36:36.432548+00 512 Usage Deduction - -4 credits - Paid 2 3 37 3
+1438 2025-12-28 23:36:36.43256+00 511 Usage Deduction - -4 credits - Paid 2 3 37 3
+1439 2025-12-28 23:36:36.432572+00 510 Usage Deduction - -4 credits - Paid 2 3 37 3
+1440 2025-12-28 23:36:36.432585+00 509 Usage Deduction - -4 credits - Paid 2 3 37 3
+1441 2025-12-28 23:36:36.432598+00 508 Usage Deduction - -4 credits - Paid 2 3 37 3
+1442 2025-12-28 23:36:36.43261+00 507 Usage Deduction - -4 credits - Paid 2 3 37 3
+1443 2025-12-28 23:36:36.432629+00 506 Usage Deduction - -4 credits - Paid 2 3 37 3
+1444 2025-12-28 23:36:36.432644+00 505 Usage Deduction - -4 credits - Paid 2 3 37 3
+1445 2025-12-28 23:36:36.432657+00 504 Usage Deduction - -2 credits - Paid 2 3 37 3
+1446 2025-12-28 23:36:36.432671+00 503 Usage Deduction - -1 credits - Paid 2 3 37 3
+1447 2025-12-28 23:36:36.432685+00 502 Usage Deduction - -2 credits - Paid 2 3 37 3
+1448 2025-12-28 23:36:36.432697+00 501 Usage Deduction - -2 credits - Paid 2 3 37 3
+1449 2025-12-28 23:36:36.43271+00 500 Usage Deduction - -2 credits - Paid 2 3 37 3
+1450 2025-12-28 23:36:36.432723+00 499 Usage Deduction - -2 credits - Paid 2 3 37 3
+1451 2025-12-28 23:36:36.432735+00 498 Usage Deduction - -1 credits - Paid 2 3 37 3
+1452 2025-12-28 23:36:36.432748+00 497 Usage Deduction - -2 credits - Paid 2 3 37 3
+1453 2025-12-28 23:36:36.432767+00 496 Usage Deduction - -2 credits - Paid 2 3 37 3
+1454 2025-12-28 23:36:36.432781+00 495 Usage Deduction - -2 credits - Paid 2 3 37 3
+1455 2025-12-28 23:36:36.432796+00 494 Usage Deduction - -2 credits - Paid 2 3 37 3
+1456 2025-12-28 23:36:36.43281+00 493 Usage Deduction - -2 credits - Paid 2 3 37 3
+1457 2025-12-28 23:36:36.432827+00 492 Usage Deduction - -2 credits - Paid 2 3 37 3
+1458 2025-12-28 23:36:36.432845+00 491 Usage Deduction - -4 credits - Paid 2 3 37 3
+1459 2025-12-28 23:36:36.432863+00 490 Usage Deduction - -4 credits - Paid 2 3 37 3
+1460 2025-12-28 23:36:36.432882+00 489 Usage Deduction - -4 credits - Paid 2 3 37 3
+1461 2025-12-28 23:36:36.432901+00 488 Usage Deduction - -4 credits - Paid 2 3 37 3
+1462 2025-12-28 23:36:36.432913+00 487 Usage Deduction - -4 credits - Paid 2 3 37 3
+1463 2025-12-28 23:36:36.432928+00 486 Usage Deduction - -4 credits - Paid 2 3 37 3
+1464 2025-12-28 23:36:36.432947+00 485 Usage Deduction - -4 credits - Paid 2 3 37 3
+1465 2025-12-28 23:36:36.432964+00 484 Usage Deduction - -4 credits - Paid 2 3 37 3
+1466 2025-12-28 23:36:36.432981+00 483 Usage Deduction - -4 credits - Paid 2 3 37 3
+1467 2025-12-28 23:36:36.432999+00 482 Usage Deduction - -4 credits - Paid 2 3 37 3
+1468 2025-12-28 23:36:36.433016+00 481 Usage Deduction - -4 credits - Paid 2 3 37 3
+1469 2025-12-28 23:36:36.433034+00 480 Usage Deduction - -4 credits - Paid 2 3 37 3
+1470 2025-12-28 23:36:36.433052+00 479 Usage Deduction - -4 credits - Paid 2 3 37 3
+1471 2025-12-28 23:36:36.433069+00 478 Usage Deduction - -4 credits - Paid 2 3 37 3
+1472 2025-12-28 23:36:36.433087+00 477 Usage Deduction - -4 credits - Paid 2 3 37 3
+1473 2025-12-28 23:36:36.433105+00 476 Usage Deduction - -4 credits - Paid 2 3 37 3
+1474 2025-12-28 23:36:36.433124+00 475 Usage Deduction - -3 credits - Paid 2 3 37 3
+1475 2025-12-28 23:36:36.433142+00 474 Usage Deduction - -3 credits - Paid 2 3 37 3
+1476 2025-12-28 23:36:36.43316+00 473 Usage Deduction - -3 credits - Paid 2 3 37 3
+1477 2025-12-28 23:36:36.433177+00 472 Usage Deduction - -5 credits - Paid 2 3 37 3
+1478 2025-12-28 23:36:36.433194+00 471 Usage Deduction - -5 credits - Paid 2 3 37 3
+1479 2025-12-28 23:36:36.433211+00 470 Usage Deduction - -3 credits - Paid 2 3 37 3
+1480 2025-12-28 23:36:36.433234+00 469 Usage Deduction - -5 credits - Paid 2 3 37 3
+1481 2025-12-28 23:36:36.433268+00 468 Usage Deduction - -4 credits - Paid 2 3 37 3
+1482 2025-12-28 23:36:36.433287+00 467 Usage Deduction - -13 credits - Paid 2 3 37 3
+1483 2025-12-28 23:36:36.433305+00 466 Usage Deduction - -8 credits - Paid 2 3 37 3
+1484 2025-12-28 23:36:36.433322+00 465 Usage Deduction - -11 credits - Paid 2 3 37 3
+1485 2025-12-28 23:36:36.43334+00 464 Usage Deduction - -10 credits - Paid 2 3 37 3
+1486 2025-12-28 23:36:36.433357+00 463 Usage Deduction - -47 credits - Paid 2 3 37 3
+1487 2025-12-28 23:36:36.433374+00 462 Usage Deduction - -8 credits - Paid 2 3 37 3
+1488 2025-12-28 23:36:36.433392+00 461 Usage Deduction - -8 credits - Paid 2 3 37 3
+1489 2025-12-28 23:36:36.433417+00 460 Usage Deduction - -32 credits - Paid 2 3 37 3
+1490 2025-12-28 23:36:36.433434+00 459 Usage Deduction - -17 credits - Paid 2 3 37 3
+1491 2025-12-28 23:36:36.433451+00 458 Usage Deduction - -18 credits - Paid 2 3 37 3
+1492 2025-12-28 23:36:36.433468+00 457 Usage Deduction - -17 credits - Paid 2 3 37 3
+1493 2025-12-28 23:36:36.433486+00 456 Usage Deduction - -18 credits - Paid 2 3 37 3
+1494 2025-12-28 23:36:36.433509+00 455 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1495 2025-12-28 23:36:36.43353+00 454 Usage Deduction - -2 credits - Paid 2 3 37 3
+1496 2025-12-28 23:36:36.433548+00 453 Usage Deduction - -2 credits - Paid 2 3 37 3
+1497 2025-12-28 23:36:36.433565+00 452 Usage Deduction - -2 credits - Paid 2 3 37 3
+1498 2025-12-28 23:36:36.433582+00 451 Usage Deduction - -2 credits - Paid 2 3 37 3
+1499 2025-12-28 23:36:36.433598+00 450 Usage Deduction - -2 credits - Paid 2 3 37 3
+1500 2025-12-28 23:36:36.433616+00 449 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1501 2025-12-28 23:36:36.433641+00 448 Usage Deduction - -2 credits - Paid 2 3 37 3
+1502 2025-12-28 23:36:36.433658+00 447 Usage Deduction - -2 credits - Paid 2 3 37 3
+1503 2025-12-28 23:36:36.433675+00 446 Usage Deduction - -18 credits - Paid 2 3 37 3
+1504 2025-12-28 23:36:36.433692+00 445 Usage Deduction - -20 credits - Paid 2 3 37 3
+1505 2025-12-28 23:36:36.43371+00 444 Usage Deduction - -2 credits - Paid 2 3 37 3
+1506 2025-12-28 23:36:36.433729+00 443 Usage Deduction - -27 credits - Paid 2 3 37 3
+1507 2025-12-28 23:36:36.433746+00 442 Usage Deduction - -39 credits - Paid 2 3 37 3
+1508 2025-12-28 23:36:36.433763+00 441 Usage Deduction - -15 credits - Paid 2 3 37 3
+1509 2025-12-28 23:36:36.433779+00 440 Usage Deduction - -10 credits - Paid 2 3 37 3
+1510 2025-12-28 23:36:36.433797+00 439 Usage Deduction - -10 credits - Paid 2 3 37 3
+1511 2025-12-28 23:36:36.433815+00 438 Usage Deduction - -41 credits - Paid 2 3 37 3
+1512 2025-12-28 23:36:36.433833+00 437 Usage Deduction - -10 credits - Paid 2 3 37 3
+1513 2025-12-28 23:36:36.433852+00 436 Usage Deduction - -11 credits - Paid 2 3 37 3
+1514 2025-12-28 23:36:36.43387+00 435 Usage Deduction - -14 credits - Paid 2 3 37 3
+1515 2025-12-28 23:36:36.433932+00 434 Usage Deduction - -15 credits - Paid 2 3 37 3
+1516 2025-12-28 23:36:36.433952+00 433 Usage Deduction - -11 credits - Paid 2 3 37 3
+1517 2025-12-28 23:36:36.433976+00 432 Usage Deduction - -4 credits - Paid 2 3 37 3
+1518 2025-12-28 23:36:36.433993+00 431 Usage Deduction - -9 credits - Paid 2 3 37 3
+1519 2025-12-28 23:36:36.43401+00 430 Usage Deduction - -15 credits - Paid 2 3 37 3
+1520 2025-12-28 23:36:36.434028+00 429 Usage Deduction - -10 credits - Paid 2 3 37 3
+1521 2025-12-28 23:36:36.434044+00 428 Usage Deduction - -9 credits - Paid 2 3 37 3
+1522 2025-12-28 23:36:36.434061+00 427 Usage Deduction - -15 credits - Paid 2 3 37 3
+1523 2025-12-28 23:36:36.434078+00 426 Usage Deduction - -15 credits - Paid 2 3 37 3
+1524 2025-12-28 23:36:36.434094+00 425 Usage Deduction - -15 credits - Paid 2 3 37 3
+1525 2025-12-28 23:36:36.434111+00 424 Usage Deduction - -15 credits - Paid 2 3 37 3
+1526 2025-12-28 23:36:36.434128+00 423 Usage Deduction - -15 credits - Paid 2 3 37 3
+1527 2025-12-28 23:36:36.434145+00 422 Usage Deduction - -15 credits - Paid 2 3 37 3
+1528 2025-12-28 23:36:36.434162+00 421 Usage Deduction - -15 credits - Paid 2 3 37 3
+1529 2025-12-28 23:36:36.434178+00 420 Usage Deduction - -10 credits - Paid 2 3 37 3
+1530 2025-12-28 23:36:36.434196+00 419 Usage Deduction - -10 credits - Paid 2 3 37 3
+1531 2025-12-28 23:36:36.434213+00 418 Usage Deduction - -6 credits - Paid 2 3 37 3
+1532 2025-12-28 23:36:36.434236+00 417 Usage Deduction - -3 credits - Paid 2 3 37 3
+1533 2025-12-28 23:36:36.434269+00 416 Usage Deduction - -15 credits - Paid 2 3 37 3
+1534 2025-12-28 23:36:36.434285+00 415 Usage Deduction - -4 credits - Paid 2 3 37 3
+1535 2025-12-28 23:36:36.434302+00 414 Usage Deduction - -4 credits - Paid 2 3 37 3
+1536 2025-12-28 23:36:36.434318+00 413 Usage Deduction - -4 credits - Paid 2 3 37 3
+1537 2025-12-28 23:36:36.434334+00 412 Usage Deduction - -4 credits - Paid 2 3 37 3
+1538 2025-12-28 23:36:36.434354+00 411 Usage Deduction - -15 credits - Paid 2 3 37 3
+1539 2025-12-28 23:36:36.434371+00 410 Usage Deduction - -6 credits - Paid 2 3 37 3
+1540 2025-12-28 23:36:36.434387+00 409 Usage Deduction - -15 credits - Paid 2 3 37 3
+1541 2025-12-28 23:36:36.434412+00 408 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1542 2025-12-28 23:36:36.434429+00 407 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1543 2025-12-28 23:36:36.434449+00 406 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1544 2025-12-28 23:36:36.435923+00 405 Usage Deduction - -7 credits - Paid 2 3 37 3
+1545 2025-12-28 23:36:36.436018+00 404 Usage Deduction - -15 credits - Paid 2 3 37 3
+1546 2025-12-28 23:36:36.436049+00 403 Usage Deduction - -8 credits - Paid 2 3 37 3
+1547 2025-12-28 23:36:36.436064+00 402 Usage Deduction - -15 credits - Paid 2 3 37 3
+1548 2025-12-28 23:36:36.436081+00 401 Usage Deduction - -15 credits - Paid 2 3 37 3
+1549 2025-12-28 23:36:36.436093+00 400 Usage Deduction - -15 credits - Paid 2 3 37 3
+1550 2025-12-28 23:36:36.436104+00 399 Usage Deduction - -7 credits - Paid 2 3 37 3
+1551 2025-12-28 23:36:36.436115+00 398 Usage Deduction - -15 credits - Paid 2 3 37 3
+1552 2025-12-28 23:36:36.436129+00 397 Usage Deduction - -6 credits - Paid 2 3 37 3
+1553 2025-12-28 23:36:36.43614+00 396 Usage Deduction - -15 credits - Paid 2 3 37 3
+1554 2025-12-28 23:36:36.436151+00 395 Usage Deduction - -15 credits - Paid 2 3 37 3
+1555 2025-12-28 23:36:36.436169+00 394 Usage Deduction - -15 credits - Paid 2 3 37 3
+1556 2025-12-28 23:36:36.436199+00 393 Usage Deduction - -15 credits - Paid 2 3 37 3
+1557 2025-12-28 23:36:36.436215+00 392 Usage Deduction - -15 credits - Paid 2 3 37 3
+1558 2025-12-28 23:36:36.436228+00 391 Usage Deduction - -15 credits - Paid 2 3 37 3
+1559 2025-12-28 23:36:36.43624+00 390 Usage Deduction - -4 credits - Paid 2 3 37 3
+1560 2025-12-28 23:36:36.436267+00 389 Usage Deduction - -3 credits - Paid 2 3 37 3
+1561 2025-12-28 23:36:36.436278+00 388 Usage Deduction - -15 credits - Paid 2 3 37 3
+1562 2025-12-28 23:36:36.436288+00 387 Usage Deduction - -10 credits - Paid 2 3 37 3
+1563 2025-12-28 23:36:36.436299+00 386 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1564 2025-12-28 23:36:36.436314+00 385 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1565 2025-12-28 23:36:36.436325+00 384 Usage Deduction - -10 credits - Paid 2 3 37 3
+1566 2025-12-28 23:36:36.436336+00 383 Usage Deduction - -2 credits - Paid 2 3 37 3
+1567 2025-12-28 23:36:36.436349+00 382 Usage Deduction - -2 credits - Paid 2 3 37 3
+1568 2025-12-28 23:36:36.436362+00 381 Usage Deduction - -2 credits - Paid 2 3 37 3
+1569 2025-12-28 23:36:36.436373+00 380 Usage Deduction - -2 credits - Paid 2 3 37 3
+1570 2025-12-28 23:36:36.436385+00 379 Usage Deduction - -2 credits - Paid 2 3 37 3
+1571 2025-12-28 23:36:36.436395+00 378 Usage Deduction - -2 credits - Paid 2 3 37 3
+1572 2025-12-28 23:36:36.436415+00 377 Usage Deduction - -7 credits - Paid 2 3 37 3
+1573 2025-12-28 23:36:36.436426+00 376 Usage Deduction - -7 credits - Paid 2 3 37 3
+1574 2025-12-28 23:36:36.436438+00 375 Usage Deduction - -4 credits - Paid 2 3 37 3
+1575 2025-12-28 23:36:36.436449+00 374 Usage Deduction - -6 credits - Paid 2 3 37 3
+1576 2025-12-28 23:36:36.43646+00 373 Usage Deduction - -7 credits - Paid 2 3 37 3
+1577 2025-12-28 23:36:36.43647+00 372 Usage Deduction - -8 credits - Paid 2 3 37 3
+1578 2025-12-28 23:36:36.436481+00 371 Usage Deduction - -15 credits - Paid 2 3 37 3
+1579 2025-12-28 23:36:36.436491+00 370 Usage Deduction - -15 credits - Paid 2 3 37 3
+1580 2025-12-28 23:36:36.436511+00 369 Usage Deduction - -15 credits - Paid 2 3 37 3
+1581 2025-12-28 23:36:36.436527+00 368 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1582 2025-12-28 23:36:36.436553+00 367 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1583 2025-12-28 23:36:36.436578+00 366 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1584 2025-12-28 23:36:36.436601+00 365 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1585 2025-12-28 23:36:36.436619+00 364 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1586 2025-12-28 23:36:36.436634+00 363 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1587 2025-12-28 23:36:36.436649+00 362 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1588 2025-12-28 23:36:36.436671+00 361 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1589 2025-12-28 23:36:36.436698+00 360 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1590 2025-12-28 23:36:36.436716+00 359 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1591 2025-12-28 23:36:36.436728+00 358 Usage Deduction - -10 credits - Paid 2 3 37 3
+1592 2025-12-28 23:36:36.436739+00 357 Usage Deduction - -2 credits - Paid 2 3 37 3
+1593 2025-12-28 23:36:36.436752+00 356 Usage Deduction - -2 credits - Paid 2 3 37 3
+1594 2025-12-28 23:36:36.436763+00 355 Usage Deduction - -2 credits - Paid 2 3 37 3
+1595 2025-12-28 23:36:36.436774+00 354 Usage Deduction - -2 credits - Paid 2 3 37 3
+1596 2025-12-28 23:36:36.436795+00 353 Usage Deduction - -6 credits - Paid 2 3 37 3
+1597 2025-12-28 23:36:36.436806+00 352 Usage Deduction - -5 credits - Paid 2 3 37 3
+1598 2025-12-28 23:36:36.436818+00 351 Usage Deduction - -5 credits - Paid 2 3 37 3
+1599 2025-12-28 23:36:36.436833+00 350 Usage Deduction - -7 credits - Paid 2 3 37 3
+1600 2025-12-28 23:36:36.436847+00 349 Usage Deduction - -15 credits - Paid 2 3 37 3
+1601 2025-12-28 23:36:36.43687+00 348 Usage Deduction - -15 credits - Paid 2 3 37 3
+1602 2025-12-28 23:36:36.436893+00 347 Usage Deduction - -10 credits - Paid 2 3 37 3
+1603 2025-12-28 23:36:36.436911+00 346 Usage Deduction - -2 credits - Paid 2 3 37 3
+1604 2025-12-28 23:36:36.436933+00 345 Usage Deduction - -5 credits - Paid 2 3 37 3
+1605 2025-12-28 23:36:36.436953+00 344 Usage Deduction - -2 credits - Paid 2 3 37 3
+1606 2025-12-28 23:36:36.436964+00 343 Usage Deduction - -7 credits - Paid 2 3 37 3
+1607 2025-12-28 23:36:36.436976+00 342 Usage Deduction - -15 credits - Paid 2 3 37 3
+1608 2025-12-28 23:36:36.436987+00 341 Usage Deduction - -10 credits - Paid 2 3 37 3
+1609 2025-12-28 23:36:36.436998+00 340 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1610 2025-12-28 23:36:36.437009+00 339 Subscription Renewal - 1000 credits - sdadiaosdaodn 3 37 3
+1611 2025-12-28 23:36:36.437019+00 338 Subscription Renewal - 1000 credits - asdasdasdafafjk 3 37 3
+1612 2025-12-28 23:36:36.437032+00 337 Subscription Renewal - 1000 credits - sdsdds 3 37 3
+1613 2025-12-28 23:36:36.437043+00 336 Subscription Renewal - 1000 credits - asdsadasd 3 37 3
+1614 2025-12-28 23:36:36.437053+00 335 Subscription Renewal - 1000 credits - sadsadasd 3 37 3
+1615 2025-12-28 23:36:36.437063+00 334 Subscription Renewal - 1000 credits - Free Salman 3 37 3
+1616 2025-12-28 23:36:36.437073+00 333 Subscription Renewal - 2000 credits - Paid 2 3 37 3
+1617 2025-12-28 23:36:36.437084+00 332 Subscription Renewal - 1000 credits - asdasdsa 3 37 3
+1618 2025-12-28 23:36:36.437094+00 331 plan_allocation - 1000 credits - Paid's Account 3 37 3
+1619 2025-12-28 23:36:36.437104+00 330 plan_allocation - 1000 credits - Free's Account 3 37 3
+1620 2025-12-28 23:36:36.437114+00 329 plan_allocation - 1000 credits - Free's Account 3 37 3
+1621 2025-12-28 23:36:36.437124+00 328 plan_allocation - 1000 credits - Free's Account 3 37 3
+1622 2025-12-28 23:36:36.437134+00 327 plan_allocation - 1000 credits - Free's Account 3 37 3
+1623 2025-12-28 23:36:36.437149+00 326 plan_allocation - 1000 credits - Free's Account 3 37 3
+1624 2025-12-28 23:36:36.437166+00 325 plan_allocation - 1000 credits - Free's Account 3 37 3
+1625 2025-12-28 23:36:36.437177+00 324 Subscription Renewal - 1000 credits - Test Account 3 37 3
+1626 2025-12-28 23:36:36.437188+00 323 Subscription Renewal - 1000 credits - asdasdadaadsasd 3 37 3
+1627 2025-12-28 23:36:36.437199+00 322 Subscription Renewal - 1000 credits - adsasdsa 3 37 3
+1628 2025-12-28 23:36:36.437216+00 289 Subscription Renewal - 1000 credits - asdklasjdk 3 37 3
+1629 2025-12-28 23:36:36.437229+00 288 Subscription Renewal - 1000 credits - abc 3 37 3
+1630 2025-12-28 23:36:36.437255+00 287 Subscription Renewal - 1000 credits - Debug Test 3 37 3
+1631 2025-12-28 23:36:36.437265+00 286 Subscription Renewal - 1000 credits - Alorig 6 3 37 3
+1632 2025-12-28 23:36:36.437275+00 285 Subscription Renewal - 1000 credits - Alorig 5 3 37 3
+1633 2025-12-28 23:36:36.437285+00 284 Subscription Renewal - 1000 credits - New User 3 37 3
+1634 2025-12-28 23:36:36.437296+00 283 Subscription Renewal - 100 credits - Test User456 3 37 3
+1635 2025-12-28 23:36:36.437306+00 282 Manual Adjustment - 1000 credits - Scale Account 3 37 3
+1636 2025-12-28 23:36:36.437316+00 281 Subscription Renewal - 100 credits - Alorig 2 3 37 3
+1637 2025-12-28 23:36:36.437326+00 280 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1638 2025-12-28 23:36:36.437336+00 279 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1639 2025-12-28 23:36:36.437347+00 278 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1640 2025-12-28 23:36:36.437357+00 277 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1641 2025-12-28 23:36:36.437366+00 276 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1642 2025-12-28 23:36:36.437376+00 275 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1643 2025-12-28 23:36:36.437387+00 274 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1644 2025-12-28 23:36:36.437409+00 273 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1645 2025-12-28 23:36:36.43742+00 272 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1646 2025-12-28 23:36:36.437431+00 271 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1647 2025-12-28 23:36:36.437445+00 270 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1648 2025-12-28 23:36:36.437455+00 269 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1649 2025-12-28 23:36:36.437465+00 268 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1650 2025-12-28 23:36:36.437475+00 267 Usage Deduction - -9 credits - AWS Admin 3 37 3
+1651 2025-12-28 23:36:36.437485+00 266 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1652 2025-12-28 23:36:36.4375+00 265 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1653 2025-12-28 23:36:36.437531+00 264 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1654 2025-12-28 23:36:36.437552+00 263 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1655 2025-12-28 23:36:36.437569+00 262 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1656 2025-12-28 23:36:36.437583+00 261 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1657 2025-12-28 23:36:36.437595+00 260 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1658 2025-12-28 23:36:36.437606+00 259 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1659 2025-12-28 23:36:36.437618+00 258 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1660 2025-12-28 23:36:36.437634+00 257 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1661 2025-12-28 23:36:36.437701+00 256 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1662 2025-12-28 23:36:36.43772+00 255 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1663 2025-12-28 23:36:36.437733+00 254 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1664 2025-12-28 23:36:36.437745+00 253 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1665 2025-12-28 23:36:36.437763+00 252 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1666 2025-12-28 23:36:36.437774+00 251 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1667 2025-12-28 23:36:36.437785+00 250 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1668 2025-12-28 23:36:36.437795+00 249 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1669 2025-12-28 23:36:36.437805+00 248 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1670 2025-12-28 23:36:36.437815+00 247 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1671 2025-12-28 23:36:36.437825+00 246 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1672 2025-12-28 23:36:36.437835+00 245 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1673 2025-12-28 23:36:36.437849+00 244 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1674 2025-12-28 23:36:36.437861+00 243 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1675 2025-12-28 23:36:36.437871+00 242 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1676 2025-12-28 23:36:36.437885+00 241 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1677 2025-12-28 23:36:36.437895+00 240 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1678 2025-12-28 23:36:36.437905+00 239 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1679 2025-12-28 23:36:36.437916+00 238 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1680 2025-12-28 23:36:36.437926+00 237 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1681 2025-12-28 23:36:36.437939+00 236 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1682 2025-12-28 23:36:36.437949+00 235 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1683 2025-12-28 23:36:36.437976+00 234 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1684 2025-12-28 23:36:36.437987+00 233 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1685 2025-12-28 23:36:36.437998+00 232 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1686 2025-12-28 23:36:36.438015+00 231 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1687 2025-12-28 23:36:36.438041+00 230 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1688 2025-12-28 23:36:36.438058+00 229 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1689 2025-12-28 23:36:36.438075+00 228 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1690 2025-12-28 23:36:36.438089+00 227 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1691 2025-12-28 23:36:36.438104+00 226 Usage Deduction - -3 credits - AWS Admin 3 37 3
+1692 2025-12-28 23:36:36.438128+00 225 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1693 2025-12-28 23:36:36.438142+00 224 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1694 2025-12-28 23:36:36.438162+00 223 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1695 2025-12-28 23:36:36.438178+00 222 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1696 2025-12-28 23:36:36.438188+00 221 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1697 2025-12-28 23:36:36.438199+00 220 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1698 2025-12-28 23:36:36.438214+00 219 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1699 2025-12-28 23:36:36.43826+00 218 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1700 2025-12-28 23:36:36.438305+00 217 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1701 2025-12-28 23:36:36.438318+00 216 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1702 2025-12-28 23:36:36.43833+00 215 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1703 2025-12-28 23:36:36.43834+00 214 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1704 2025-12-28 23:36:36.438351+00 213 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1705 2025-12-28 23:36:36.438361+00 212 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1706 2025-12-28 23:36:36.438371+00 211 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1707 2025-12-28 23:36:36.438382+00 210 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1708 2025-12-28 23:36:36.438411+00 209 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1709 2025-12-28 23:36:36.438423+00 208 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1710 2025-12-28 23:36:36.438434+00 207 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1711 2025-12-28 23:36:36.438445+00 206 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1712 2025-12-28 23:36:36.438455+00 205 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1713 2025-12-28 23:36:36.438466+00 204 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1714 2025-12-28 23:36:36.438476+00 203 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1715 2025-12-28 23:36:36.438489+00 202 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1716 2025-12-28 23:36:36.4385+00 201 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1717 2025-12-28 23:36:36.438512+00 200 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1718 2025-12-28 23:36:36.438522+00 199 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1719 2025-12-28 23:36:36.438532+00 198 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1720 2025-12-28 23:36:36.438543+00 197 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1721 2025-12-28 23:36:36.438567+00 196 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1722 2025-12-28 23:36:36.438597+00 195 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1723 2025-12-28 23:36:36.438617+00 194 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1724 2025-12-28 23:36:36.438641+00 193 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1725 2025-12-28 23:36:36.438656+00 192 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1726 2025-12-28 23:36:36.43867+00 191 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1727 2025-12-28 23:36:36.438686+00 190 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1728 2025-12-28 23:36:36.438701+00 189 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1729 2025-12-28 23:36:36.438716+00 188 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1730 2025-12-28 23:36:36.43873+00 187 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1731 2025-12-28 23:36:36.438741+00 186 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1732 2025-12-28 23:36:36.438752+00 185 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1733 2025-12-28 23:36:36.438763+00 184 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1734 2025-12-28 23:36:36.438774+00 183 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1735 2025-12-28 23:36:36.438785+00 182 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1736 2025-12-28 23:36:36.438795+00 181 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1737 2025-12-28 23:36:36.43881+00 180 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1738 2025-12-28 23:36:36.43882+00 179 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1739 2025-12-28 23:36:36.43883+00 178 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1740 2025-12-28 23:36:36.438844+00 177 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1741 2025-12-28 23:36:36.438854+00 176 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1742 2025-12-28 23:36:36.438864+00 175 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1743 2025-12-28 23:36:36.438874+00 174 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1744 2025-12-28 23:36:36.438884+00 173 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1745 2025-12-28 23:36:36.438894+00 172 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1746 2025-12-28 23:36:36.438905+00 171 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1747 2025-12-28 23:36:36.438915+00 170 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1748 2025-12-28 23:36:36.438926+00 169 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1749 2025-12-28 23:36:36.438937+00 168 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1750 2025-12-28 23:36:36.438972+00 167 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1751 2025-12-28 23:36:36.438983+00 166 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1752 2025-12-28 23:36:36.438993+00 165 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1753 2025-12-28 23:36:36.439004+00 164 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1754 2025-12-28 23:36:36.439014+00 163 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1755 2025-12-28 23:36:36.439025+00 162 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1756 2025-12-28 23:36:36.439038+00 161 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1757 2025-12-28 23:36:36.439048+00 160 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1758 2025-12-28 23:36:36.439062+00 159 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1759 2025-12-28 23:36:36.439074+00 158 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1760 2025-12-28 23:36:36.439085+00 157 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1761 2025-12-28 23:36:36.439095+00 156 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1762 2025-12-28 23:36:36.439105+00 155 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1763 2025-12-28 23:36:36.439115+00 154 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1764 2025-12-28 23:36:36.439125+00 153 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1765 2025-12-28 23:36:36.439135+00 152 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1766 2025-12-28 23:36:36.439158+00 151 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1767 2025-12-28 23:36:36.439182+00 150 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1768 2025-12-28 23:36:36.439197+00 149 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1769 2025-12-28 23:36:36.439213+00 148 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1770 2025-12-28 23:36:36.439227+00 147 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1771 2025-12-28 23:36:36.439259+00 146 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1772 2025-12-28 23:36:36.439286+00 145 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1773 2025-12-28 23:36:36.439302+00 144 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1774 2025-12-28 23:36:36.439313+00 143 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1775 2025-12-28 23:36:36.439324+00 142 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1776 2025-12-28 23:36:36.439337+00 141 Usage Deduction - -15 credits - AWS Admin 3 37 3
+1777 2025-12-28 23:36:36.439348+00 140 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1778 2025-12-28 23:36:36.439359+00 139 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1779 2025-12-28 23:36:36.439379+00 138 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1780 2025-12-28 23:36:36.439396+00 137 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1781 2025-12-28 23:36:36.439435+00 136 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1782 2025-12-28 23:36:36.439453+00 135 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1783 2025-12-28 23:36:36.439468+00 134 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1784 2025-12-28 23:36:36.439484+00 133 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1785 2025-12-28 23:36:36.439496+00 132 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1786 2025-12-28 23:36:36.439506+00 131 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1787 2025-12-28 23:36:36.439523+00 130 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1788 2025-12-28 23:36:36.439534+00 129 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1789 2025-12-28 23:36:36.439545+00 128 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1790 2025-12-28 23:36:36.439555+00 127 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1791 2025-12-28 23:36:36.439567+00 126 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1792 2025-12-28 23:36:36.439578+00 125 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1793 2025-12-28 23:36:36.439593+00 124 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1794 2025-12-28 23:36:36.439605+00 123 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1795 2025-12-28 23:36:36.439617+00 122 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1796 2025-12-28 23:36:36.439628+00 121 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1797 2025-12-28 23:36:36.439639+00 120 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1798 2025-12-28 23:36:36.43965+00 119 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1799 2025-12-28 23:36:36.43966+00 118 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1800 2025-12-28 23:36:36.439677+00 117 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1801 2025-12-28 23:36:36.439687+00 116 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1802 2025-12-28 23:36:36.439698+00 115 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1803 2025-12-28 23:36:36.439711+00 114 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1804 2025-12-28 23:36:36.439721+00 113 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1805 2025-12-28 23:36:36.439734+00 112 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1806 2025-12-28 23:36:36.439745+00 111 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1807 2025-12-28 23:36:36.439755+00 110 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1808 2025-12-28 23:36:36.439767+00 109 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1809 2025-12-28 23:36:36.439777+00 108 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1810 2025-12-28 23:36:36.439788+00 107 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1811 2025-12-28 23:36:36.439798+00 106 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1812 2025-12-28 23:36:36.439808+00 105 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1813 2025-12-28 23:36:36.439819+00 104 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1814 2025-12-28 23:36:36.439828+00 103 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1815 2025-12-28 23:36:36.439839+00 102 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1816 2025-12-28 23:36:36.43985+00 101 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1817 2025-12-28 23:36:36.43986+00 100 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1818 2025-12-28 23:36:36.43987+00 99 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1819 2025-12-28 23:36:36.439883+00 98 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1820 2025-12-28 23:36:36.439894+00 97 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1821 2025-12-28 23:36:36.439904+00 96 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1822 2025-12-28 23:36:36.439933+00 95 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1823 2025-12-28 23:36:36.439945+00 94 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1824 2025-12-28 23:36:36.439957+00 93 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1825 2025-12-28 23:36:36.439968+00 92 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1826 2025-12-28 23:36:36.439981+00 91 Usage Deduction - -8 credits - AWS Admin 3 37 3
+1827 2025-12-28 23:36:36.439992+00 90 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1828 2025-12-28 23:36:36.440002+00 89 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1829 2025-12-28 23:36:36.440013+00 88 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1830 2025-12-28 23:36:36.440023+00 87 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1831 2025-12-28 23:36:36.440034+00 86 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1832 2025-12-28 23:36:36.440044+00 85 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1833 2025-12-28 23:36:36.440055+00 84 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1834 2025-12-28 23:36:36.440066+00 83 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1835 2025-12-28 23:36:36.440104+00 82 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1836 2025-12-28 23:36:36.440126+00 81 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1837 2025-12-28 23:36:36.440148+00 80 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1838 2025-12-28 23:36:36.440165+00 79 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1839 2025-12-28 23:36:36.440177+00 78 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1840 2025-12-28 23:36:36.440188+00 77 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1841 2025-12-28 23:36:36.4402+00 76 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1842 2025-12-28 23:36:36.44021+00 75 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1843 2025-12-28 23:36:36.440226+00 74 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1844 2025-12-28 23:36:36.440237+00 73 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1845 2025-12-28 23:36:36.440263+00 72 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1846 2025-12-28 23:36:36.440275+00 71 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1847 2025-12-28 23:36:36.440285+00 70 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1848 2025-12-28 23:36:36.440296+00 69 Usage Deduction - -9 credits - AWS Admin 3 37 3
+1849 2025-12-28 23:36:36.440307+00 68 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1850 2025-12-28 23:36:36.440318+00 67 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1851 2025-12-28 23:36:36.440334+00 66 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1852 2025-12-28 23:36:36.440345+00 65 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1853 2025-12-28 23:36:36.440355+00 64 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1854 2025-12-28 23:36:36.440365+00 63 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1855 2025-12-28 23:36:36.440375+00 62 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1856 2025-12-28 23:36:36.440386+00 61 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1857 2025-12-28 23:36:36.440395+00 60 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1858 2025-12-28 23:36:36.440413+00 59 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1859 2025-12-28 23:36:36.440423+00 58 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1860 2025-12-28 23:36:36.440433+00 57 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1861 2025-12-28 23:36:36.440444+00 56 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1862 2025-12-28 23:36:36.440454+00 55 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1863 2025-12-28 23:36:36.440464+00 54 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1864 2025-12-28 23:36:36.440477+00 53 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1865 2025-12-28 23:36:36.440488+00 52 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1866 2025-12-28 23:36:36.440498+00 51 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1867 2025-12-28 23:36:36.440513+00 50 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1868 2025-12-28 23:36:36.440524+00 49 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1869 2025-12-28 23:36:36.440534+00 48 Usage Deduction - -45 credits - AWS Admin 3 37 3
+1870 2025-12-28 23:36:36.440545+00 47 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1871 2025-12-28 23:36:36.440555+00 46 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1872 2025-12-28 23:36:36.440565+00 45 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1873 2025-12-28 23:36:36.440576+00 44 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1874 2025-12-28 23:36:36.440586+00 43 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1875 2025-12-28 23:36:36.440597+00 42 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1876 2025-12-28 23:36:36.440607+00 41 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1877 2025-12-28 23:36:36.440617+00 40 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1878 2025-12-28 23:36:36.440631+00 39 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1879 2025-12-28 23:36:36.440641+00 38 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1880 2025-12-28 23:36:36.440666+00 37 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1881 2025-12-28 23:36:36.44069+00 36 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1882 2025-12-28 23:36:36.440704+00 35 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1883 2025-12-28 23:36:36.440722+00 34 Subscription Renewal - 4000 credits - Salman Sadiq 3 37 3
+1884 2025-12-28 23:36:36.440734+00 33 Subscription Renewal - 4000 credits - Scale Account 3 37 3
+1885 2025-12-28 23:36:36.440746+00 32 Subscription Renewal - 2000 credits - Growth Account 3 37 3
+1886 2025-12-28 23:36:36.440758+00 31 Subscription Renewal - 1000 credits - Starter Account 3 37 3
+1887 2025-12-28 23:36:36.440774+00 30 Subscription Renewal - 1000 credits - AWS Admin 3 37 3
+1888 2025-12-28 23:36:36.440785+00 29 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1889 2025-12-28 23:36:36.440796+00 28 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1890 2025-12-28 23:36:36.440807+00 27 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1891 2025-12-28 23:36:36.44082+00 26 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1892 2025-12-28 23:36:36.440836+00 25 Usage Deduction - -4 credits - AWS Admin 3 37 3
+1893 2025-12-28 23:36:36.440856+00 24 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1894 2025-12-28 23:36:36.440883+00 23 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1895 2025-12-28 23:36:36.440902+00 22 Usage Deduction - -6 credits - AWS Admin 3 37 3
+1896 2025-12-28 23:36:36.440919+00 21 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1897 2025-12-28 23:36:36.440935+00 20 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1898 2025-12-28 23:36:36.440958+00 19 Usage Deduction - -5 credits - AWS Admin 3 37 3
+1899 2025-12-28 23:36:36.440987+00 18 Usage Deduction - -2 credits - AWS Admin 3 37 3
+1900 2025-12-28 23:36:36.440999+00 17 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1901 2025-12-28 23:36:36.441012+00 16 Usage Deduction - -7 credits - AWS Admin 3 37 3
+1902 2025-12-28 23:36:36.441027+00 15 Usage Deduction - -1 credits - AWS Admin 3 37 3
+1903 2025-12-28 23:36:36.441038+00 14 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1904 2025-12-28 23:36:36.441049+00 13 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1905 2025-12-28 23:36:36.44106+00 12 Usage Deduction - -30 credits - AWS Admin 3 37 3
+1906 2025-12-28 23:36:36.441071+00 11 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1907 2025-12-28 23:36:36.441081+00 10 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1908 2025-12-28 23:36:36.441092+00 9 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1909 2025-12-28 23:36:36.441105+00 8 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1910 2025-12-28 23:36:36.441116+00 7 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1911 2025-12-28 23:36:36.441133+00 6 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1912 2025-12-28 23:36:36.441149+00 5 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1913 2025-12-28 23:36:36.441165+00 4 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1914 2025-12-28 23:36:36.44118+00 3 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1915 2025-12-28 23:36:36.441194+00 2 Usage Deduction - -10 credits - AWS Admin 3 37 3
+1916 2025-12-28 23:36:36.441205+00 1 Usage Deduction - -50 credits - AWS Admin 3 37 3
+1917 2025-12-28 23:36:58.229536+00 647 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1918 2025-12-28 23:36:58.229585+00 646 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1919 2025-12-28 23:36:58.229604+00 645 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1920 2025-12-28 23:36:58.22962+00 644 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1921 2025-12-28 23:36:58.229636+00 643 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1922 2025-12-28 23:36:58.229652+00 642 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1923 2025-12-28 23:36:58.229667+00 641 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1924 2025-12-28 23:36:58.229681+00 640 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1925 2025-12-28 23:36:58.229696+00 639 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1926 2025-12-28 23:36:58.22971+00 638 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1927 2025-12-28 23:36:58.229724+00 637 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1928 2025-12-28 23:36:58.229738+00 636 Content Generation - 4 credits - Paid 2 3 38 3
+1929 2025-12-28 23:36:58.229753+00 635 Content Generation - 4 credits - Paid 2 3 38 3
+1930 2025-12-28 23:36:58.229766+00 634 Content Generation - 4 credits - Paid 2 3 38 3
+1931 2025-12-28 23:36:58.22978+00 633 Content Generation - 4 credits - Paid 2 3 38 3
+1932 2025-12-28 23:36:58.229794+00 632 Content Generation - 4 credits - Paid 2 3 38 3
+1933 2025-12-28 23:36:58.229809+00 631 Content Generation - 4 credits - Paid 2 3 38 3
+1934 2025-12-28 23:36:58.229824+00 630 Content Generation - 4 credits - Paid 2 3 38 3
+1935 2025-12-28 23:36:58.229839+00 629 Content Generation - 4 credits - Paid 2 3 38 3
+1936 2025-12-28 23:36:58.229853+00 628 Content Generation - 4 credits - Paid 2 3 38 3
+1937 2025-12-28 23:36:58.229868+00 627 Content Generation - 4 credits - Paid 2 3 38 3
+1938 2025-12-28 23:36:58.229882+00 626 Content Generation - 4 credits - Paid 2 3 38 3
+1939 2025-12-28 23:36:58.229896+00 625 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1940 2025-12-28 23:36:58.22991+00 624 Image Prompt Extraction - 1 credits - Paid 2 3 38 3
+1941 2025-12-28 23:36:58.229924+00 623 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1942 2025-12-28 23:36:58.229938+00 622 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1943 2025-12-28 23:36:58.229952+00 621 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1944 2025-12-28 23:36:58.229971+00 620 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1945 2025-12-28 23:36:58.230003+00 619 Image Prompt Extraction - 1 credits - Paid 2 3 38 3
+1946 2025-12-28 23:36:58.23004+00 618 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1947 2025-12-28 23:36:58.230075+00 617 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1948 2025-12-28 23:36:58.230102+00 616 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1949 2025-12-28 23:36:58.23012+00 615 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1950 2025-12-28 23:36:58.230139+00 614 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1951 2025-12-28 23:36:58.230156+00 613 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1952 2025-12-28 23:36:58.230171+00 612 Content Generation - 4 credits - Paid 2 3 38 3
+1953 2025-12-28 23:36:58.230189+00 611 Content Generation - 4 credits - Paid 2 3 38 3
+1954 2025-12-28 23:36:58.230205+00 610 Content Generation - 4 credits - Paid 2 3 38 3
+1955 2025-12-28 23:36:58.23022+00 609 Content Generation - 4 credits - Paid 2 3 38 3
+1956 2025-12-28 23:36:58.230235+00 608 Content Generation - 4 credits - Paid 2 3 38 3
+1957 2025-12-28 23:36:58.230282+00 607 Content Generation - 4 credits - Paid 2 3 38 3
+1958 2025-12-28 23:36:58.230316+00 606 Content Generation - 4 credits - Paid 2 3 38 3
+1959 2025-12-28 23:36:58.230345+00 605 Content Generation - 4 credits - Paid 2 3 38 3
+1960 2025-12-28 23:36:58.230362+00 604 Content Generation - 4 credits - Paid 2 3 38 3
+1961 2025-12-28 23:36:58.230378+00 603 Content Generation - 4 credits - Paid 2 3 38 3
+1962 2025-12-28 23:36:58.230393+00 602 Content Generation - 4 credits - Paid 2 3 38 3
+1963 2025-12-28 23:36:58.230417+00 601 Content Generation - 4 credits - Paid 2 3 38 3
+1964 2025-12-28 23:36:58.230431+00 600 Content Generation - 4 credits - Paid 2 3 38 3
+1965 2025-12-28 23:36:58.230446+00 599 Content Ideas Generation - 4 credits - Paid 2 3 38 3
+1966 2025-12-28 23:36:58.230462+00 598 Content Ideas Generation - 4 credits - Paid 2 3 38 3
+1967 2025-12-28 23:36:58.230478+00 597 Content Ideas Generation - 4 credits - Paid 2 3 38 3
+1968 2025-12-28 23:36:58.230495+00 596 Keyword Clustering - 3 credits - Paid 2 3 38 3
+1969 2025-12-28 23:36:58.23051+00 595 Keyword Clustering - 3 credits - Paid 2 3 38 3
+1970 2025-12-28 23:36:58.230525+00 594 Keyword Clustering - 3 credits - Paid 2 3 38 3
+1971 2025-12-28 23:36:58.230539+00 593 Content Ideas Generation - 5 credits - Paid 2 3 38 3
+1972 2025-12-28 23:36:58.230553+00 592 Content Ideas Generation - 5 credits - Paid 2 3 38 3
+1973 2025-12-28 23:36:58.230567+00 591 Keyword Clustering - 3 credits - Paid 2 3 38 3
+1974 2025-12-28 23:36:58.230582+00 590 Content Ideas Generation - 5 credits - Paid 2 3 38 3
+1975 2025-12-28 23:36:58.230597+00 589 Keyword Clustering - 4 credits - Paid 2 3 38 3
+1976 2025-12-28 23:36:58.230612+00 588 Image Prompt Extraction - 13 credits - Paid 2 3 38 3
+1977 2025-12-28 23:36:58.230626+00 587 Image Prompt Extraction - 8 credits - Paid 2 3 38 3
+1978 2025-12-28 23:36:58.230639+00 586 Image Prompt Extraction - 11 credits - Paid 2 3 38 3
+1979 2025-12-28 23:36:58.230655+00 585 Image Prompt Extraction - 10 credits - Paid 2 3 38 3
+1980 2025-12-28 23:36:58.230671+00 584 Content Generation - 47 credits - Paid 2 3 38 3
+1981 2025-12-28 23:36:58.230708+00 583 Image Prompt Extraction - 8 credits - Paid 2 3 38 3
+1982 2025-12-28 23:36:58.230733+00 582 Image Prompt Extraction - 8 credits - Paid 2 3 38 3
+1983 2025-12-28 23:36:58.230756+00 581 Content Generation - 32 credits - Paid 2 3 38 3
+1984 2025-12-28 23:36:58.230771+00 580 Content Ideas Generation - 17 credits - Paid 2 3 38 3
+1985 2025-12-28 23:36:58.230785+00 579 Keyword Clustering - 18 credits - Paid 2 3 38 3
+1986 2025-12-28 23:36:58.2308+00 578 Content Ideas Generation - 17 credits - Paid 2 3 38 3
+1987 2025-12-28 23:36:58.230817+00 577 Keyword Clustering - 18 credits - Paid 2 3 38 3
+1988 2025-12-28 23:36:58.230832+00 576 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+1989 2025-12-28 23:36:58.230848+00 575 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1990 2025-12-28 23:36:58.230863+00 574 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1991 2025-12-28 23:36:58.230879+00 573 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1992 2025-12-28 23:36:58.230893+00 572 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1993 2025-12-28 23:36:58.230907+00 571 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1994 2025-12-28 23:36:58.230923+00 570 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+1995 2025-12-28 23:36:58.230938+00 569 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1996 2025-12-28 23:36:58.230953+00 568 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+1997 2025-12-28 23:36:58.230972+00 567 Content Generation - 18 credits - Paid 2 3 38 3
+1998 2025-12-28 23:36:58.231004+00 566 Content Generation - 20 credits - Paid 2 3 38 3
+1999 2025-12-28 23:36:58.231035+00 565 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2000 2025-12-28 23:36:58.231079+00 564 Content Generation - 27 credits - Paid 2 3 38 3
+2001 2025-12-28 23:36:58.231097+00 563 Content Generation - 39 credits - Paid 2 3 38 3
+2002 2025-12-28 23:36:58.231113+00 562 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2003 2025-12-28 23:36:58.231129+00 561 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2004 2025-12-28 23:36:58.231143+00 560 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2005 2025-12-28 23:36:58.231158+00 559 Content Generation - 41 credits - Paid 2 3 38 3
+2006 2025-12-28 23:36:58.231172+00 558 Content Generation - 10 credits - Paid 2 3 38 3
+2007 2025-12-28 23:36:58.231186+00 557 Content Generation - 11 credits - Paid 2 3 38 3
+2008 2025-12-28 23:36:58.2312+00 556 Content Generation - 14 credits - Paid 2 3 38 3
+2009 2025-12-28 23:36:58.231214+00 555 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2010 2025-12-28 23:36:58.231231+00 554 Content Generation - 11 credits - Paid 2 3 38 3
+2011 2025-12-28 23:36:58.231263+00 553 Content Generation - 4 credits - Paid 2 3 38 3
+2012 2025-12-28 23:36:58.231277+00 552 Content Generation - 9 credits - Paid 2 3 38 3
+2013 2025-12-28 23:36:58.231291+00 551 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2014 2025-12-28 23:36:58.231306+00 550 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2015 2025-12-28 23:36:58.23132+00 549 Content Generation - 9 credits - Paid 2 3 38 3
+2016 2025-12-28 23:36:58.231334+00 548 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2017 2025-12-28 23:36:58.231347+00 547 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2018 2025-12-28 23:36:58.23136+00 546 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2019 2025-12-28 23:36:58.231373+00 545 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2020 2025-12-28 23:36:58.231387+00 544 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2021 2025-12-28 23:36:58.231411+00 543 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2022 2025-12-28 23:36:58.231425+00 542 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2023 2025-12-28 23:36:58.231439+00 541 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2024 2025-12-28 23:36:58.231455+00 540 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2025 2025-12-28 23:36:58.231476+00 539 Content Generation - 6 credits - Paid 2 3 38 3
+2026 2025-12-28 23:36:58.231496+00 538 Content Generation - 3 credits - Paid 2 3 38 3
+2027 2025-12-28 23:36:58.231509+00 537 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2028 2025-12-28 23:36:58.231524+00 536 Content Generation - 4 credits - Paid 2 3 38 3
+2029 2025-12-28 23:36:58.231538+00 535 Content Generation - 4 credits - Paid 2 3 38 3
+2030 2025-12-28 23:36:58.231553+00 534 Content Generation - 4 credits - Paid 2 3 38 3
+2031 2025-12-28 23:36:58.231567+00 533 Content Generation - 4 credits - Paid 2 3 38 3
+2032 2025-12-28 23:36:58.23159+00 532 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2033 2025-12-28 23:36:58.23162+00 531 Content Generation - 6 credits - Paid 2 3 38 3
+2034 2025-12-28 23:36:58.231643+00 530 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2035 2025-12-28 23:36:58.231666+00 529 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2036 2025-12-28 23:36:58.231692+00 528 Content Generation - 4 credits - AWS Admin 3 38 3
+2037 2025-12-28 23:36:58.231722+00 527 Content Generation - 5 credits - AWS Admin 3 38 3
+2038 2025-12-28 23:36:58.231751+00 526 Content Generation - 7 credits - Paid 2 3 38 3
+2039 2025-12-28 23:36:58.23178+00 525 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2040 2025-12-28 23:36:58.2318+00 524 Content Generation - 8 credits - Paid 2 3 38 3
+2041 2025-12-28 23:36:58.231815+00 523 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2042 2025-12-28 23:36:58.23184+00 522 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2043 2025-12-28 23:36:58.231871+00 521 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2044 2025-12-28 23:36:58.23189+00 520 Content Generation - 7 credits - Paid 2 3 38 3
+2045 2025-12-28 23:36:58.231907+00 519 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2046 2025-12-28 23:36:58.231923+00 518 Content Generation - 6 credits - Paid 2 3 38 3
+2047 2025-12-28 23:36:58.231936+00 517 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2048 2025-12-28 23:36:58.23195+00 516 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2049 2025-12-28 23:36:58.231976+00 515 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2050 2025-12-28 23:36:58.232006+00 514 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2051 2025-12-28 23:36:58.232027+00 513 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2052 2025-12-28 23:36:58.232059+00 512 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2053 2025-12-28 23:36:58.232079+00 511 Content Generation - 4 credits - Paid 2 3 38 3
+2054 2025-12-28 23:36:58.232095+00 510 Content Generation - 3 credits - Paid 2 3 38 3
+2055 2025-12-28 23:36:58.23211+00 509 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2056 2025-12-28 23:36:58.232125+00 508 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2057 2025-12-28 23:36:58.232139+00 507 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2058 2025-12-28 23:36:58.232155+00 506 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2059 2025-12-28 23:36:58.232175+00 505 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2060 2025-12-28 23:36:58.232191+00 504 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2061 2025-12-28 23:36:58.232204+00 503 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2062 2025-12-28 23:36:58.232217+00 502 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2063 2025-12-28 23:36:58.23223+00 501 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2064 2025-12-28 23:36:58.232261+00 500 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2065 2025-12-28 23:36:58.232276+00 499 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2066 2025-12-28 23:36:58.232293+00 498 Content Generation - 7 credits - Paid 2 3 38 3
+2067 2025-12-28 23:36:58.232305+00 497 Content Generation - 7 credits - Paid 2 3 38 3
+2068 2025-12-28 23:36:58.23232+00 496 Content Generation - 4 credits - Paid 2 3 38 3
+2069 2025-12-28 23:36:58.232334+00 495 Content Generation - 6 credits - Paid 2 3 38 3
+2070 2025-12-28 23:36:58.232351+00 494 Content Generation - 7 credits - Paid 2 3 38 3
+2071 2025-12-28 23:36:58.23237+00 493 Content Generation - 8 credits - Paid 2 3 38 3
+2072 2025-12-28 23:36:58.232383+00 492 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2073 2025-12-28 23:36:58.232406+00 491 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2074 2025-12-28 23:36:58.23242+00 490 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2075 2025-12-28 23:36:58.232434+00 489 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2076 2025-12-28 23:36:58.232448+00 488 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2077 2025-12-28 23:36:58.232461+00 487 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2078 2025-12-28 23:36:58.232475+00 486 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2079 2025-12-28 23:36:58.232489+00 485 Content Generation - 7 credits - AWS Admin 3 38 3
+2080 2025-12-28 23:36:58.232503+00 484 Content Generation - 7 credits - AWS Admin 3 38 3
+2081 2025-12-28 23:36:58.232516+00 483 Content Generation - 6 credits - AWS Admin 3 38 3
+2082 2025-12-28 23:36:58.23253+00 482 Content Generation - 7 credits - AWS Admin 3 38 3
+2083 2025-12-28 23:36:58.232543+00 481 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2084 2025-12-28 23:36:58.232556+00 480 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2085 2025-12-28 23:36:58.232571+00 479 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2086 2025-12-28 23:36:58.232587+00 478 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2087 2025-12-28 23:36:58.232609+00 477 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2088 2025-12-28 23:36:58.232628+00 476 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2089 2025-12-28 23:36:58.232644+00 475 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2090 2025-12-28 23:36:58.23266+00 474 Content Generation - 6 credits - Paid 2 3 38 3
+2091 2025-12-28 23:36:58.232674+00 473 Content Generation - 5 credits - Paid 2 3 38 3
+2092 2025-12-28 23:36:58.232687+00 472 Content Generation - 5 credits - Paid 2 3 38 3
+2093 2025-12-28 23:36:58.232701+00 471 Content Generation - 7 credits - Paid 2 3 38 3
+2094 2025-12-28 23:36:58.232715+00 470 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2095 2025-12-28 23:36:58.23273+00 469 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2096 2025-12-28 23:36:58.232743+00 468 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2097 2025-12-28 23:36:58.232757+00 467 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2098 2025-12-28 23:36:58.232772+00 466 Content Generation - 5 credits - Paid 2 3 38 3
+2099 2025-12-28 23:36:58.232793+00 465 Image Prompt Extraction - 2 credits - Paid 2 3 38 3
+2100 2025-12-28 23:36:58.232813+00 464 Content Generation - 7 credits - Paid 2 3 38 3
+2101 2025-12-28 23:36:58.232845+00 463 Content Ideas Generation - 15 credits - Paid 2 3 38 3
+2102 2025-12-28 23:36:58.23287+00 462 Keyword Clustering - 10 credits - Paid 2 3 38 3
+2103 2025-12-28 23:36:58.232892+00 461 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2104 2025-12-28 23:36:58.232912+00 460 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2105 2025-12-28 23:36:58.232945+00 459 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2106 2025-12-28 23:36:58.232963+00 458 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2107 2025-12-28 23:36:58.232979+00 457 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2108 2025-12-28 23:36:58.232993+00 456 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2109 2025-12-28 23:36:58.233008+00 455 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2110 2025-12-28 23:36:58.233023+00 454 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2111 2025-12-28 23:36:58.233037+00 453 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2112 2025-12-28 23:36:58.233051+00 452 Content Generation - 6 credits - AWS Admin 3 38 3
+2113 2025-12-28 23:36:58.233066+00 451 Content Generation - 7 credits - AWS Admin 3 38 3
+2114 2025-12-28 23:36:58.233086+00 450 Content Generation - 5 credits - AWS Admin 3 38 3
+2115 2025-12-28 23:36:58.233105+00 449 Content Generation - 5 credits - AWS Admin 3 38 3
+2116 2025-12-28 23:36:58.233119+00 448 Content Generation - 7 credits - AWS Admin 3 38 3
+2117 2025-12-28 23:36:58.233134+00 447 Content Generation - 9 credits - AWS Admin 3 38 3
+2118 2025-12-28 23:36:58.23315+00 446 Content Generation - 4 credits - AWS Admin 3 38 3
+2119 2025-12-28 23:36:58.233168+00 445 Content Generation - 6 credits - AWS Admin 3 38 3
+2120 2025-12-28 23:36:58.233185+00 444 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2121 2025-12-28 23:36:58.233199+00 443 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2122 2025-12-28 23:36:58.233213+00 442 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2123 2025-12-28 23:36:58.233228+00 441 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2124 2025-12-28 23:36:58.233243+00 440 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2125 2025-12-28 23:36:58.233274+00 439 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2126 2025-12-28 23:36:58.233288+00 438 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2127 2025-12-28 23:36:58.233302+00 437 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2128 2025-12-28 23:36:58.233316+00 436 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2129 2025-12-28 23:36:58.233336+00 435 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2130 2025-12-28 23:36:58.23335+00 434 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2131 2025-12-28 23:36:58.233364+00 433 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2132 2025-12-28 23:36:58.233377+00 432 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2133 2025-12-28 23:36:58.233391+00 431 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2134 2025-12-28 23:36:58.23341+00 430 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2135 2025-12-28 23:36:58.233423+00 429 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2136 2025-12-28 23:36:58.233437+00 428 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2137 2025-12-28 23:36:58.233451+00 427 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2138 2025-12-28 23:36:58.233468+00 426 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2139 2025-12-28 23:36:58.233512+00 425 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2140 2025-12-28 23:36:58.233527+00 424 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2141 2025-12-28 23:36:58.233542+00 423 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2142 2025-12-28 23:36:58.233556+00 422 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2143 2025-12-28 23:36:58.233569+00 421 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2144 2025-12-28 23:36:58.233582+00 420 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2145 2025-12-28 23:36:58.233595+00 419 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2146 2025-12-28 23:36:58.233608+00 418 Content Generation - 7 credits - AWS Admin 3 38 3
+2147 2025-12-28 23:36:58.233622+00 417 Content Generation - 5 credits - AWS Admin 3 38 3
+2148 2025-12-28 23:36:58.233641+00 416 Content Generation - 8 credits - AWS Admin 3 38 3
+2149 2025-12-28 23:36:58.233656+00 415 Content Generation - 7 credits - AWS Admin 3 38 3
+2150 2025-12-28 23:36:58.23367+00 414 Content Generation - 4 credits - AWS Admin 3 38 3
+2151 2025-12-28 23:36:58.233684+00 413 Content Generation - 5 credits - AWS Admin 3 38 3
+2152 2025-12-28 23:36:58.233697+00 412 Content Generation - 6 credits - AWS Admin 3 38 3
+2153 2025-12-28 23:36:58.233711+00 411 Content Generation - 6 credits - AWS Admin 3 38 3
+2154 2025-12-28 23:36:58.233724+00 410 Content Generation - 6 credits - AWS Admin 3 38 3
+2155 2025-12-28 23:36:58.233738+00 409 Content Generation - 7 credits - AWS Admin 3 38 3
+2156 2025-12-28 23:36:58.233751+00 408 Content Generation - 6 credits - AWS Admin 3 38 3
+2157 2025-12-28 23:36:58.233765+00 407 Content Generation - 8 credits - AWS Admin 3 38 3
+2158 2025-12-28 23:36:58.23378+00 406 Content Generation - 3 credits - AWS Admin 3 38 3
+2159 2025-12-28 23:36:58.233794+00 405 Content Generation - 6 credits - AWS Admin 3 38 3
+2160 2025-12-28 23:36:58.233813+00 404 Content Generation - 6 credits - AWS Admin 3 38 3
+2161 2025-12-28 23:36:58.233833+00 403 Content Generation - 5 credits - AWS Admin 3 38 3
+2162 2025-12-28 23:36:58.233848+00 402 Content Generation - 7 credits - AWS Admin 3 38 3
+2163 2025-12-28 23:36:58.233862+00 401 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2164 2025-12-28 23:36:58.233878+00 400 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2165 2025-12-28 23:36:58.233893+00 399 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2166 2025-12-28 23:36:58.233907+00 398 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2167 2025-12-28 23:36:58.233921+00 397 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2168 2025-12-28 23:36:58.233935+00 396 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2169 2025-12-28 23:36:58.233949+00 395 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2170 2025-12-28 23:36:58.233962+00 394 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2171 2025-12-28 23:36:58.233978+00 393 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2172 2025-12-28 23:36:58.23401+00 392 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2173 2025-12-28 23:36:58.234034+00 391 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2174 2025-12-28 23:36:58.234053+00 390 Content Generation - 6 credits - AWS Admin 3 38 3
+2175 2025-12-28 23:36:58.234076+00 389 Content Generation - 5 credits - AWS Admin 3 38 3
+2176 2025-12-28 23:36:58.234095+00 388 Content Generation - 5 credits - AWS Admin 3 38 3
+2177 2025-12-28 23:36:58.234111+00 387 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2178 2025-12-28 23:36:58.234124+00 386 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2179 2025-12-28 23:36:58.234139+00 385 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2180 2025-12-28 23:36:58.234154+00 384 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2181 2025-12-28 23:36:58.234168+00 383 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2182 2025-12-28 23:36:58.234182+00 382 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2183 2025-12-28 23:36:58.234196+00 381 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2184 2025-12-28 23:36:58.23421+00 380 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2185 2025-12-28 23:36:58.234222+00 379 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2186 2025-12-28 23:36:58.234238+00 378 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2187 2025-12-28 23:36:58.23427+00 377 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2188 2025-12-28 23:36:58.234293+00 376 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2189 2025-12-28 23:36:58.234327+00 375 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2190 2025-12-28 23:36:58.234352+00 374 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2191 2025-12-28 23:36:58.234367+00 373 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2192 2025-12-28 23:36:58.234383+00 372 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2193 2025-12-28 23:36:58.234407+00 371 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2194 2025-12-28 23:36:58.234423+00 370 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2195 2025-12-28 23:36:58.234438+00 369 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2196 2025-12-28 23:36:58.234454+00 368 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2197 2025-12-28 23:36:58.234468+00 367 Content Generation - 7 credits - AWS Admin 3 38 3
+2198 2025-12-28 23:36:58.234483+00 366 Content Generation - 8 credits - AWS Admin 3 38 3
+2199 2025-12-28 23:36:58.234498+00 365 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2200 2025-12-28 23:36:58.234512+00 364 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2201 2025-12-28 23:36:58.234525+00 363 Content Generation - 6 credits - AWS Admin 3 38 3
+2202 2025-12-28 23:36:58.23454+00 362 Content Generation - 5 credits - AWS Admin 3 38 3
+2203 2025-12-28 23:36:58.234553+00 361 Content Generation - 6 credits - AWS Admin 3 38 3
+2204 2025-12-28 23:36:58.234568+00 360 Content Generation - 6 credits - AWS Admin 3 38 3
+2205 2025-12-28 23:36:58.234584+00 359 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2206 2025-12-28 23:36:58.234597+00 358 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2207 2025-12-28 23:36:58.234612+00 357 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2208 2025-12-28 23:36:58.234626+00 356 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2209 2025-12-28 23:36:58.23464+00 355 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2210 2025-12-28 23:36:58.234655+00 354 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2211 2025-12-28 23:36:58.234672+00 353 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2212 2025-12-28 23:36:58.234692+00 352 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2213 2025-12-28 23:36:58.234712+00 351 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2214 2025-12-28 23:36:58.234732+00 350 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2215 2025-12-28 23:36:58.234746+00 349 Content Generation - 6 credits - AWS Admin 3 38 3
+2216 2025-12-28 23:36:58.23476+00 348 Content Generation - 5 credits - AWS Admin 3 38 3
+2217 2025-12-28 23:36:58.234774+00 347 Content Generation - 6 credits - AWS Admin 3 38 3
+2218 2025-12-28 23:36:58.234787+00 346 Content Generation - 7 credits - AWS Admin 3 38 3
+2219 2025-12-28 23:36:58.2348+00 345 Content Generation - 7 credits - AWS Admin 3 38 3
+2220 2025-12-28 23:36:58.234818+00 344 Content Generation - 6 credits - AWS Admin 3 38 3
+2221 2025-12-28 23:36:58.234837+00 343 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2222 2025-12-28 23:36:58.234866+00 342 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2223 2025-12-28 23:36:58.23489+00 341 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2224 2025-12-28 23:36:58.234908+00 340 Content Generation - 4 credits - AWS Admin 3 38 3
+2225 2025-12-28 23:36:58.234924+00 339 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2226 2025-12-28 23:36:58.23494+00 338 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2227 2025-12-28 23:36:58.234955+00 337 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2228 2025-12-28 23:36:58.234969+00 336 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2229 2025-12-28 23:36:58.234983+00 335 Content Generation - 5 credits - AWS Admin 3 38 3
+2230 2025-12-28 23:36:58.235008+00 334 Content Generation - 7 credits - AWS Admin 3 38 3
+2231 2025-12-28 23:36:58.235039+00 333 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2232 2025-12-28 23:36:58.235056+00 332 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2233 2025-12-28 23:36:58.235071+00 331 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2234 2025-12-28 23:36:58.235086+00 330 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2235 2025-12-28 23:36:58.235101+00 329 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2236 2025-12-28 23:36:58.235116+00 328 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2237 2025-12-28 23:36:58.23513+00 327 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2238 2025-12-28 23:36:58.235144+00 326 Content Generation - 4 credits - AWS Admin 3 38 3
+2239 2025-12-28 23:36:58.235163+00 325 Content Generation - 7 credits - AWS Admin 3 38 3
+2240 2025-12-28 23:36:58.23518+00 324 Content Generation - 6 credits - AWS Admin 3 38 3
+2241 2025-12-28 23:36:58.235195+00 323 Content Generation - 6 credits - AWS Admin 3 38 3
+2242 2025-12-28 23:36:58.235211+00 322 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2243 2025-12-28 23:36:58.235231+00 321 Content Ideas Generation - 15 credits - AWS Admin 3 38 3
+2244 2025-12-28 23:36:58.235268+00 320 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2245 2025-12-28 23:36:58.235286+00 319 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2246 2025-12-28 23:36:58.2353+00 318 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2247 2025-12-28 23:36:58.235313+00 317 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2248 2025-12-28 23:36:58.235326+00 316 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2249 2025-12-28 23:36:58.23534+00 315 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2250 2025-12-28 23:36:58.235372+00 314 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2251 2025-12-28 23:36:58.235393+00 313 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2252 2025-12-28 23:36:58.235417+00 312 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2253 2025-12-28 23:36:58.235432+00 311 Content Generation - 5 credits - AWS Admin 3 38 3
+2254 2025-12-28 23:36:58.235448+00 310 Content Generation - 5 credits - AWS Admin 3 38 3
+2255 2025-12-28 23:36:58.235463+00 309 Content Generation - 7 credits - AWS Admin 3 38 3
+2256 2025-12-28 23:36:58.235477+00 308 Content Generation - 8 credits - AWS Admin 3 38 3
+2257 2025-12-28 23:36:58.235498+00 307 Content Generation - 7 credits - AWS Admin 3 38 3
+2258 2025-12-28 23:36:58.235517+00 306 Content Generation - 7 credits - AWS Admin 3 38 3
+2259 2025-12-28 23:36:58.235536+00 305 Content Generation - 7 credits - AWS Admin 3 38 3
+2260 2025-12-28 23:36:58.235555+00 304 Content Generation - 10 credits - AWS Admin 3 38 3
+2261 2025-12-28 23:36:58.235574+00 303 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2262 2025-12-28 23:36:58.235593+00 302 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2263 2025-12-28 23:36:58.235613+00 301 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2264 2025-12-28 23:36:58.235632+00 300 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2265 2025-12-28 23:36:58.235646+00 299 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2266 2025-12-28 23:36:58.235661+00 298 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2267 2025-12-28 23:36:58.235675+00 297 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2268 2025-12-28 23:36:58.235688+00 296 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2269 2025-12-28 23:36:58.235701+00 295 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2270 2025-12-28 23:36:58.235717+00 294 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2271 2025-12-28 23:36:58.235731+00 293 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2272 2025-12-28 23:36:58.235744+00 292 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2273 2025-12-28 23:36:58.235757+00 291 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2274 2025-12-28 23:36:58.23577+00 290 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2275 2025-12-28 23:36:58.235784+00 289 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2276 2025-12-28 23:36:58.235808+00 288 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2277 2025-12-28 23:36:58.235836+00 287 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2278 2025-12-28 23:36:58.235887+00 286 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2279 2025-12-28 23:36:58.235909+00 285 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2280 2025-12-28 23:36:58.235929+00 284 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2281 2025-12-28 23:36:58.235944+00 283 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2282 2025-12-28 23:36:58.235958+00 282 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2283 2025-12-28 23:36:58.235973+00 281 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2284 2025-12-28 23:36:58.235987+00 280 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2285 2025-12-28 23:36:58.236+00 279 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2286 2025-12-28 23:36:58.236014+00 278 Content Generation - 5 credits - AWS Admin 3 38 3
+2287 2025-12-28 23:36:58.236028+00 277 Content Generation - 6 credits - AWS Admin 3 38 3
+2288 2025-12-28 23:36:58.236042+00 276 Content Generation - 8 credits - AWS Admin 3 38 3
+2289 2025-12-28 23:36:58.236055+00 275 Content Generation - 7 credits - AWS Admin 3 38 3
+2290 2025-12-28 23:36:58.236069+00 274 Content Generation - 6 credits - AWS Admin 3 38 3
+2291 2025-12-28 23:36:58.236083+00 273 Content Generation - 7 credits - AWS Admin 3 38 3
+2292 2025-12-28 23:36:58.236097+00 272 Content Generation - 6 credits - AWS Admin 3 38 3
+2293 2025-12-28 23:36:58.236109+00 271 Content Generation - 8 credits - AWS Admin 3 38 3
+2294 2025-12-28 23:36:58.236122+00 270 Content Generation - 6 credits - AWS Admin 3 38 3
+2295 2025-12-28 23:36:58.236135+00 269 Content Generation - 7 credits - AWS Admin 3 38 3
+2296 2025-12-28 23:36:58.236148+00 268 Content Generation - 5 credits - AWS Admin 3 38 3
+2297 2025-12-28 23:36:58.236161+00 267 Content Generation - 5 credits - AWS Admin 3 38 3
+2298 2025-12-28 23:36:58.236175+00 266 Content Generation - 5 credits - AWS Admin 3 38 3
+2299 2025-12-28 23:36:58.236188+00 265 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2300 2025-12-28 23:36:58.236202+00 264 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2301 2025-12-28 23:36:58.236214+00 263 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2302 2025-12-28 23:36:58.236228+00 262 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2303 2025-12-28 23:36:58.236242+00 261 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2304 2025-12-28 23:36:58.236278+00 260 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2305 2025-12-28 23:36:58.23631+00 259 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2306 2025-12-28 23:36:58.236327+00 258 Content Generation - 6 credits - AWS Admin 3 38 3
+2307 2025-12-28 23:36:58.236342+00 257 Content Generation - 5 credits - AWS Admin 3 38 3
+2308 2025-12-28 23:36:58.236357+00 256 Content Generation - 5 credits - AWS Admin 3 38 3
+2309 2025-12-28 23:36:58.236372+00 255 Content Generation - 6 credits - AWS Admin 3 38 3
+2310 2025-12-28 23:36:58.236386+00 254 Content Generation - 5 credits - AWS Admin 3 38 3
+2311 2025-12-28 23:36:58.236408+00 253 Content Generation - 10 credits - AWS Admin 3 38 3
+2312 2025-12-28 23:36:58.236422+00 252 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2313 2025-12-28 23:36:58.236443+00 251 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2314 2025-12-28 23:36:58.236459+00 250 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2315 2025-12-28 23:36:58.236478+00 249 Content Generation - 9 credits - AWS Admin 3 38 3
+2316 2025-12-28 23:36:58.236499+00 248 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2317 2025-12-28 23:36:58.236519+00 247 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2318 2025-12-28 23:36:58.236537+00 246 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2319 2025-12-28 23:36:58.236551+00 245 Content Generation - 4 credits - AWS Admin 3 38 3
+2320 2025-12-28 23:36:58.236564+00 244 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2321 2025-12-28 23:36:58.236578+00 243 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2322 2025-12-28 23:36:58.236591+00 242 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2323 2025-12-28 23:36:58.236605+00 241 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2324 2025-12-28 23:36:58.236618+00 240 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2325 2025-12-28 23:36:58.236633+00 239 Content Generation - 6 credits - AWS Admin 3 38 3
+2326 2025-12-28 23:36:58.236653+00 238 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2327 2025-12-28 23:36:58.236667+00 237 Content Generation - 7 credits - AWS Admin 3 38 3
+2328 2025-12-28 23:36:58.23668+00 236 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2329 2025-12-28 23:36:58.236695+00 235 Content Generation - 7 credits - AWS Admin 3 38 3
+2330 2025-12-28 23:36:58.236724+00 234 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2331 2025-12-28 23:36:58.236749+00 233 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2332 2025-12-28 23:36:58.23677+00 232 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2333 2025-12-28 23:36:58.236789+00 231 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2334 2025-12-28 23:36:58.236808+00 230 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2335 2025-12-28 23:36:58.236828+00 229 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2336 2025-12-28 23:36:58.236848+00 228 Content Ideas Generation - 45 credits - AWS Admin 3 38 3
+2337 2025-12-28 23:36:58.236862+00 227 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2338 2025-12-28 23:36:58.236879+00 226 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2339 2025-12-28 23:36:58.236911+00 225 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2340 2025-12-28 23:36:58.236936+00 224 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2341 2025-12-28 23:36:58.236952+00 223 Content Generation - 7 credits - AWS Admin 3 38 3
+2342 2025-12-28 23:36:58.236969+00 222 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2343 2025-12-28 23:36:58.236984+00 221 Content Generation - 4 credits - AWS Admin 3 38 3
+2344 2025-12-28 23:36:58.236998+00 220 Content Generation - 4 credits - AWS Admin 3 38 3
+2345 2025-12-28 23:36:58.237012+00 219 Content Generation - 5 credits - AWS Admin 3 38 3
+2346 2025-12-28 23:36:58.237027+00 218 Content Generation - 6 credits - AWS Admin 3 38 3
+2347 2025-12-28 23:36:58.23704+00 217 Content Generation - 6 credits - AWS Admin 3 38 3
+2348 2025-12-28 23:36:58.23706+00 216 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2349 2025-12-28 23:36:58.237093+00 215 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2350 2025-12-28 23:36:58.237115+00 214 Content Generation - 6 credits - AWS Admin 3 38 3
+2351 2025-12-28 23:36:58.237135+00 213 Content Generation - 7 credits - AWS Admin 3 38 3
+2352 2025-12-28 23:36:58.237155+00 212 Content Generation - 7 credits - AWS Admin 3 38 3
+2353 2025-12-28 23:36:58.237175+00 211 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2354 2025-12-28 23:36:58.237189+00 210 Content Generation - 4 credits - AWS Admin 3 38 3
+2355 2025-12-28 23:36:58.237203+00 209 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2356 2025-12-28 23:36:58.237216+00 208 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2357 2025-12-28 23:36:58.237229+00 207 Content Generation - 6 credits - AWS Admin 3 38 3
+2358 2025-12-28 23:36:58.237256+00 206 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2359 2025-12-28 23:36:58.23727+00 205 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2360 2025-12-28 23:36:58.237284+00 204 Content Generation - 5 credits - AWS Admin 3 38 3
+2361 2025-12-28 23:36:58.237298+00 203 Image Prompt Extraction - 2 credits - AWS Admin 3 38 3
+2362 2025-12-28 23:36:58.237311+00 202 Content Generation - 7 credits - AWS Admin 3 38 3
+2363 2025-12-28 23:36:58.237324+00 201 Content Generation - 7 credits - AWS Admin 3 38 3
+2364 2025-12-28 23:36:58.237337+00 200 Content Generation - 1 credits - AWS Admin 3 38 3
+2365 2025-12-28 23:36:58.23735+00 199 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2366 2025-12-28 23:36:58.237363+00 198 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2367 2025-12-28 23:36:58.237376+00 197 Content Ideas Generation - 30 credits - AWS Admin 3 38 3
+2368 2025-12-28 23:36:58.237391+00 196 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2369 2025-12-28 23:36:58.237431+00 195 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2370 2025-12-28 23:36:58.237455+00 194 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2371 2025-12-28 23:36:58.237475+00 193 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2372 2025-12-28 23:36:58.237495+00 192 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2373 2025-12-28 23:36:58.237511+00 191 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2374 2025-12-28 23:36:58.237528+00 190 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2375 2025-12-28 23:36:58.237542+00 189 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2376 2025-12-28 23:36:58.237556+00 188 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2377 2025-12-28 23:36:58.237573+00 187 Keyword Clustering - 10 credits - AWS Admin 3 38 3
+2378 2025-12-28 23:36:58.237587+00 186 Site Structure Generation - 50 credits - AWS Admin 3 38 3
+2379 2025-12-28 23:36:58.2376+00 185 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2380 2025-12-28 23:36:58.237614+00 184 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2381 2025-12-28 23:36:58.237629+00 183 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2382 2025-12-28 23:36:58.237642+00 182 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2383 2025-12-28 23:36:58.237655+00 181 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2384 2025-12-28 23:36:58.237668+00 180 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2385 2025-12-28 23:36:58.237681+00 179 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2386 2025-12-28 23:36:58.237694+00 178 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2387 2025-12-28 23:36:58.237707+00 177 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2388 2025-12-28 23:36:58.23772+00 176 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2389 2025-12-28 23:36:58.237733+00 175 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2390 2025-12-28 23:36:58.237747+00 174 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2391 2025-12-28 23:36:58.23776+00 173 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2392 2025-12-28 23:36:58.237772+00 172 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2393 2025-12-28 23:36:58.237785+00 171 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2394 2025-12-28 23:36:58.237798+00 170 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2395 2025-12-28 23:36:58.237812+00 169 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2396 2025-12-28 23:36:58.237825+00 168 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2397 2025-12-28 23:36:58.237838+00 167 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2398 2025-12-28 23:36:58.237852+00 166 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2399 2025-12-28 23:36:58.237865+00 165 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2400 2025-12-28 23:36:58.237878+00 164 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2401 2025-12-28 23:36:58.237892+00 163 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2402 2025-12-28 23:36:58.237905+00 162 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2403 2025-12-28 23:36:58.237919+00 161 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2404 2025-12-28 23:36:58.237932+00 160 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2405 2025-12-28 23:36:58.237945+00 159 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2406 2025-12-28 23:36:58.237958+00 158 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2407 2025-12-28 23:36:58.237976+00 157 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2408 2025-12-28 23:36:58.238007+00 156 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2409 2025-12-28 23:36:58.238033+00 155 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2410 2025-12-28 23:36:58.238047+00 154 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2411 2025-12-28 23:36:58.238062+00 153 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2412 2025-12-28 23:36:58.238093+00 120 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2413 2025-12-28 23:36:58.238118+00 119 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2414 2025-12-28 23:36:58.238134+00 118 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2415 2025-12-28 23:36:58.238147+00 117 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2416 2025-12-28 23:36:58.238162+00 116 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2417 2025-12-28 23:36:58.238205+00 115 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2418 2025-12-28 23:36:58.23824+00 114 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2419 2025-12-28 23:36:58.238276+00 113 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2420 2025-12-28 23:36:58.238303+00 112 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2421 2025-12-28 23:36:58.238332+00 111 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2422 2025-12-28 23:36:58.23835+00 110 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2423 2025-12-28 23:36:58.238365+00 109 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2424 2025-12-28 23:36:58.238379+00 108 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2425 2025-12-28 23:36:58.238392+00 107 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2426 2025-12-28 23:36:58.238414+00 106 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2427 2025-12-28 23:36:58.238429+00 105 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2428 2025-12-28 23:36:58.238443+00 104 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2429 2025-12-28 23:36:58.238457+00 103 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2430 2025-12-28 23:36:58.238471+00 102 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2431 2025-12-28 23:36:58.238484+00 69 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2432 2025-12-28 23:36:58.238497+00 68 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2433 2025-12-28 23:36:58.23851+00 67 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2434 2025-12-28 23:36:58.238522+00 66 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2435 2025-12-28 23:36:58.238535+00 65 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2436 2025-12-28 23:36:58.238548+00 64 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2437 2025-12-28 23:36:58.238562+00 63 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2438 2025-12-28 23:36:58.238578+00 62 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2439 2025-12-28 23:36:58.238592+00 61 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2440 2025-12-28 23:36:58.238606+00 60 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2441 2025-12-28 23:36:58.238619+00 59 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2442 2025-12-28 23:36:58.238632+00 58 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2443 2025-12-28 23:36:58.23865+00 57 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2444 2025-12-28 23:36:58.238669+00 56 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2445 2025-12-28 23:36:58.238686+00 55 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2446 2025-12-28 23:36:58.238703+00 54 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2447 2025-12-28 23:36:58.238722+00 53 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2448 2025-12-28 23:36:58.23874+00 52 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2449 2025-12-28 23:36:58.238754+00 51 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2450 2025-12-28 23:36:58.238767+00 50 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2451 2025-12-28 23:36:58.238781+00 49 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2452 2025-12-28 23:36:58.238795+00 48 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2453 2025-12-28 23:36:58.238808+00 47 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2454 2025-12-28 23:36:58.238821+00 46 Keyword Clustering - 1 credits - Scale Account 3 38 3
+2455 2025-12-28 23:36:58.238835+00 45 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2456 2025-12-28 23:36:58.238855+00 44 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2457 2025-12-28 23:36:58.238874+00 43 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2458 2025-12-28 23:36:58.238891+00 42 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2459 2025-12-28 23:36:58.238904+00 41 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2460 2025-12-28 23:36:58.238916+00 40 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2461 2025-12-28 23:36:58.23893+00 39 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2462 2025-12-28 23:36:58.238944+00 38 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2463 2025-12-28 23:36:58.238957+00 37 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2464 2025-12-28 23:36:58.238977+00 36 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2465 2025-12-28 23:36:58.238997+00 35 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2466 2025-12-28 23:36:58.239018+00 2 Keyword Clustering - 1 credits - Scale Account 3 38 3
+2467 2025-12-28 23:36:58.239032+00 1 Keyword Clustering - 1 credits - AWS Admin 3 38 3
+2468 2025-12-28 23:37:23.95784+00 654 generate_image_prompts - success - 2025-12-28 20:56:30.276193+00:00 3 17 3
+2469 2025-12-28 23:37:23.95788+00 653 generate_image_prompts - success - 2025-12-28 20:56:19.449110+00:00 3 17 3
+2470 2025-12-28 23:37:23.957898+00 652 generate_image_prompts - success - 2025-12-28 20:56:07.258946+00:00 3 17 3
+2471 2025-12-28 23:37:23.957925+00 651 generate_image_prompts - success - 2025-12-28 20:55:54.607984+00:00 3 17 3
+2472 2025-12-28 23:37:23.957948+00 650 generate_image_prompts - success - 2025-12-28 20:55:41.838783+00:00 3 17 3
+2473 2025-12-28 23:37:23.957964+00 649 generate_image_prompts - success - 2025-12-28 20:55:29.359488+00:00 3 17 3
+2474 2025-12-28 23:37:23.957977+00 648 generate_image_prompts - success - 2025-12-28 20:55:18.534958+00:00 3 17 3
+2475 2025-12-28 23:37:23.957987+00 647 generate_image_prompts - success - 2025-12-28 20:55:06.791633+00:00 3 17 3
+2476 2025-12-28 23:37:23.957998+00 646 generate_image_prompts - success - 2025-12-28 20:54:54.467866+00:00 3 17 3
+2477 2025-12-28 23:37:23.958009+00 645 generate_image_prompts - success - 2025-12-28 20:54:42.745680+00:00 3 17 3
+2478 2025-12-28 23:37:23.958021+00 644 generate_image_prompts - success - 2025-12-28 20:54:31.555362+00:00 3 17 3
+2479 2025-12-28 23:37:23.958032+00 643 generate_content - success - 2025-12-28 20:54:14.782369+00:00 3 17 3
+2480 2025-12-28 23:37:23.958042+00 642 generate_content - success - 2025-12-28 20:53:43.963055+00:00 3 17 3
+2481 2025-12-28 23:37:23.95805+00 641 generate_content - success - 2025-12-28 20:46:16.309408+00:00 3 17 3
+2482 2025-12-28 23:37:23.958059+00 640 generate_content - success - 2025-12-28 20:40:54.119474+00:00 3 17 3
+2483 2025-12-28 23:37:23.958069+00 639 generate_content - success - 2025-12-28 20:36:33.214476+00:00 3 17 3
+2484 2025-12-28 23:37:23.958078+00 638 generate_content - success - 2025-12-28 20:35:43.279815+00:00 3 17 3
+2485 2025-12-28 23:37:23.958088+00 637 generate_content - success - 2025-12-28 20:35:10.583078+00:00 3 17 3
+2486 2025-12-28 23:37:23.958097+00 636 generate_content - success - 2025-12-28 20:27:53.443524+00:00 3 17 3
+2487 2025-12-28 23:37:23.958107+00 635 generate_content - success - 2025-12-28 20:22:25.201516+00:00 3 17 3
+2488 2025-12-28 23:37:23.958116+00 634 generate_content - success - 2025-12-28 20:16:59.807882+00:00 3 17 3
+2489 2025-12-28 23:37:23.958126+00 633 generate_content - success - 2025-12-28 20:11:33.382580+00:00 3 17 3
+2490 2025-12-28 23:37:23.958136+00 632 generate_image_prompts - success - 2025-12-28 19:37:35.123986+00:00 3 17 3
+2491 2025-12-28 23:37:23.958145+00 631 generate_image_prompts - success - 2025-12-28 19:37:22.173383+00:00 3 17 3
+2492 2025-12-28 23:37:23.958154+00 630 generate_image_prompts - success - 2025-12-28 19:37:10.365178+00:00 3 17 3
+2493 2025-12-28 23:37:23.958163+00 629 generate_image_prompts - success - 2025-12-28 19:36:55.043559+00:00 3 17 3
+2494 2025-12-28 23:37:23.958171+00 628 generate_image_prompts - success - 2025-12-28 19:36:41.446934+00:00 3 17 3
+2495 2025-12-28 23:37:23.95818+00 627 generate_image_prompts - success - 2025-12-28 19:36:27.138373+00:00 3 17 3
+2496 2025-12-28 23:37:23.958189+00 626 generate_image_prompts - success - 2025-12-28 19:36:14.859841+00:00 3 17 3
+2497 2025-12-28 23:37:23.958198+00 625 generate_image_prompts - success - 2025-12-28 19:36:03.620129+00:00 3 17 3
+2498 2025-12-28 23:37:23.958207+00 624 generate_image_prompts - success - 2025-12-28 19:35:51.140527+00:00 3 17 3
+2499 2025-12-28 23:37:23.958216+00 623 generate_image_prompts - success - 2025-12-28 19:35:36.357171+00:00 3 17 3
+2500 2025-12-28 23:37:23.958225+00 622 generate_image_prompts - success - 2025-12-28 19:35:22.656395+00:00 3 17 3
+2501 2025-12-28 23:37:23.958235+00 621 generate_image_prompts - success - 2025-12-28 19:35:06.043478+00:00 3 17 3
+2502 2025-12-28 23:37:23.958279+00 620 generate_image_prompts - success - 2025-12-28 19:34:50.835649+00:00 3 17 3
+2503 2025-12-28 23:37:23.95829+00 619 generate_content - success - 2025-12-28 19:29:34.412730+00:00 3 17 3
+2504 2025-12-28 23:37:23.958299+00 618 generate_content - success - 2025-12-28 19:24:09.629890+00:00 3 17 3
+2505 2025-12-28 23:37:23.958309+00 617 generate_content - success - 2025-12-28 03:37:17.687231+00:00 3 17 3
+2506 2025-12-28 23:37:23.958317+00 616 generate_content - success - 2025-12-28 03:34:15.872848+00:00 3 17 3
+2507 2025-12-28 23:37:23.958327+00 615 generate_content - success - 2025-12-28 03:28:48.661587+00:00 3 17 3
+2508 2025-12-28 23:37:23.958336+00 614 generate_content - success - 2025-12-28 03:23:12.890724+00:00 3 17 3
+2509 2025-12-28 23:37:23.958345+00 613 generate_content - success - 2025-12-28 03:17:43.242833+00:00 3 17 3
+2510 2025-12-28 23:37:23.958354+00 612 generate_content - success - 2025-12-28 03:12:08.410939+00:00 3 17 3
+2511 2025-12-28 23:37:23.958363+00 611 generate_content - success - 2025-12-28 02:47:42.702926+00:00 3 17 3
+2512 2025-12-28 23:37:23.958372+00 610 generate_content - error - 2025-12-28 02:47:18.291857+00:00 3 17 3
+2513 2025-12-28 23:37:23.958382+00 609 generate_content - success - 2025-12-28 02:42:05.407324+00:00 3 17 3
+2514 2025-12-28 23:37:23.95839+00 608 generate_content - success - 2025-12-28 02:36:38.052493+00:00 3 17 3
+2515 2025-12-28 23:37:23.958429+00 607 generate_content - success - 2025-12-28 02:30:52.714945+00:00 3 17 3
+2516 2025-12-28 23:37:23.958439+00 606 generate_content - success - 2025-12-28 02:25:24.603169+00:00 3 17 3
+2517 2025-12-28 23:37:23.958448+00 605 generate_ideas - success - 2025-12-28 02:24:32.039405+00:00 3 17 3
+2518 2025-12-28 23:37:23.958457+00 604 generate_ideas - success - 2025-12-28 02:23:49.695048+00:00 3 17 3
+2519 2025-12-28 23:37:23.958465+00 603 generate_ideas - success - 2025-12-28 02:23:08.928345+00:00 3 17 3
+2520 2025-12-28 23:37:23.958474+00 602 auto_cluster - success - 2025-12-28 02:22:22.525612+00:00 3 17 3
+2521 2025-12-28 23:37:23.958484+00 601 auto_cluster - success - 2025-12-28 00:51:07.072548+00:00 3 17 3
+2522 2025-12-28 23:37:23.958493+00 600 auto_cluster - success - 2025-12-27 23:29:27.898288+00:00 3 17 3
+2523 2025-12-28 23:37:23.958502+00 599 generate_ideas - success - 2025-12-27 22:31:44.810466+00:00 3 17 3
+2524 2025-12-28 23:37:23.958511+00 598 generate_ideas - success - 2025-12-27 21:24:31.694500+00:00 3 17 3
+2525 2025-12-28 23:37:23.95852+00 597 auto_cluster - success - 2025-12-27 15:30:17.384769+00:00 3 17 3
+2526 2025-12-28 23:37:23.958529+00 596 generate_ideas - success - 2025-12-27 07:22:18.433029+00:00 3 17 3
+2527 2025-12-28 23:37:23.958538+00 595 auto_cluster - success - 2025-12-27 06:30:15.442769+00:00 3 17 3
+2528 2025-12-28 23:37:23.958547+00 594 generate_image_prompts - success - 2025-12-25 02:15:08.366246+00:00 3 17 3
+2529 2025-12-28 23:37:23.958556+00 593 generate_image_prompts - success - 2025-12-25 01:39:07.668776+00:00 3 17 3
+2530 2025-12-28 23:37:23.958564+00 592 generate_image_prompts - success - 2025-12-25 01:22:03.903774+00:00 3 17 3
+2531 2025-12-28 23:37:23.958573+00 591 generate_image_prompts - success - 2025-12-25 00:40:49.046887+00:00 3 17 3
+2532 2025-12-28 23:37:23.958582+00 590 generate_content - success - 2025-12-25 00:32:02.570140+00:00 3 17 3
+2533 2025-12-28 23:37:23.958594+00 589 generate_image_prompts - success - 2025-12-25 00:27:04.854143+00:00 3 17 3
+2534 2025-12-28 23:37:23.958604+00 588 generate_image_prompts - success - 2025-12-25 00:14:58.064407+00:00 3 17 3
+2535 2025-12-28 23:37:23.958614+00 587 generate_image_prompts - error - 2025-12-25 00:11:08.288307+00:00 3 17 3
+2536 2025-12-28 23:37:23.958622+00 586 generate_content - success - 2025-12-24 23:40:31.015613+00:00 3 17 3
+2537 2025-12-28 23:37:23.958632+00 585 generate_ideas - success - 2025-12-24 22:22:47.983352+00:00 3 17 3
+2538 2025-12-28 23:37:23.95864+00 584 generate_image_prompts - error - 2025-12-24 22:20:28.676113+00:00 3 17 3
+2539 2025-12-28 23:37:23.958649+00 583 auto_cluster - success - 2025-12-24 15:25:31.326322+00:00 3 17 3
+2540 2025-12-28 23:37:23.958658+00 582 generate_ideas - success - 2025-12-24 15:22:08.415568+00:00 3 17 3
+2541 2025-12-28 23:37:23.958667+00 581 generate_ideas - error - 2025-12-24 14:19:47.416967+00:00 3 17 3
+2542 2025-12-28 23:37:23.958676+00 580 auto_cluster - error - 2025-12-24 14:13:52.672650+00:00 3 17 3
+2543 2025-12-28 23:37:23.958685+00 579 auto_cluster - error - 2025-12-24 13:34:29.144446+00:00 3 17 3
+2544 2025-12-28 23:37:23.958693+00 578 auto_cluster - error - 2025-12-24 13:30:31.087450+00:00 3 17 3
+2545 2025-12-28 23:37:23.958703+00 577 auto_cluster - error - 2025-12-24 13:24:24.898468+00:00 3 17 3
+2546 2025-12-28 23:37:23.958712+00 576 auto_cluster - error - 2025-12-24 13:23:36.648682+00:00 3 17 3
+2547 2025-12-28 23:37:23.958721+00 575 auto_cluster - success - 2025-12-24 00:21:32.074334+00:00 3 17 3
+2548 2025-12-28 23:37:23.95873+00 574 auto_cluster - error - 2025-12-24 00:05:46.843277+00:00 3 17 3
+2549 2025-12-28 23:37:23.958738+00 573 auto_cluster - error - 2025-12-24 00:00:14.727297+00:00 3 17 3
+2550 2025-12-28 23:37:23.958747+00 572 auto_cluster - success - 2025-12-23 23:59:21.129939+00:00 3 17 3
+2551 2025-12-28 23:37:23.958755+00 571 auto_cluster - error - 2025-12-23 23:57:38.171111+00:00 3 17 3
+2552 2025-12-28 23:37:23.958764+00 570 auto_cluster - error - 2025-12-23 23:38:37.228344+00:00 3 17 3
+2553 2025-12-28 23:37:23.958772+00 569 generate_image_prompts - success - 2025-12-17 13:10:07.398244+00:00 3 17 3
+2554 2025-12-28 23:37:23.958781+00 568 generate_image_prompts - success - 2025-12-17 13:09:06.001472+00:00 3 17 3
+2555 2025-12-28 23:37:23.958789+00 567 generate_image_prompts - success - 2025-12-17 13:06:08.935688+00:00 3 17 3
+2556 2025-12-28 23:37:23.958797+00 566 generate_image_prompts - success - 2025-12-17 13:02:32.202938+00:00 3 17 3
+2557 2025-12-28 23:37:23.958805+00 565 generate_image_prompts - success - 2025-12-17 12:57:23.767185+00:00 3 17 3
+2558 2025-12-28 23:37:23.958814+00 564 generate_image_prompts - success - 2025-12-17 12:56:19.282066+00:00 3 17 3
+2559 2025-12-28 23:37:23.958823+00 563 generate_image_prompts - success - 2025-12-17 12:54:47.462919+00:00 3 17 3
+2560 2025-12-28 23:37:23.958832+00 562 generate_image_prompts - success - 2025-12-17 12:51:52.996505+00:00 3 17 3
+2561 2025-12-28 23:37:23.958843+00 561 generate_content - success - 2025-12-17 12:17:55.721167+00:00 3 17 3
+2562 2025-12-28 23:37:23.958853+00 560 generate_content - success - 2025-12-17 11:45:55.247247+00:00 3 17 3
+2563 2025-12-28 23:37:23.958867+00 559 generate_image_prompts - success - 2025-12-17 11:30:48.845270+00:00 3 17 3
+2564 2025-12-28 23:37:23.958879+00 558 generate_content - success - 2025-12-17 11:03:05.359006+00:00 3 17 3
+2565 2025-12-28 23:37:23.958888+00 557 generate_content - success - 2025-12-17 10:36:52.168387+00:00 3 17 3
+2566 2025-12-28 23:37:23.958897+00 556 generate_ideas - success - 2025-12-17 10:31:29.954037+00:00 3 17 3
+2567 2025-12-28 23:37:23.958906+00 555 auto_cluster - success - 2025-12-17 09:45:28.375258+00:00 3 17 3
+2568 2025-12-28 23:37:23.958914+00 554 auto_cluster - success - 2025-12-17 09:29:19.837996+00:00 3 17 3
+2569 2025-12-28 23:37:23.958923+00 553 generate_content - success - 2025-12-17 08:42:56.294448+00:00 3 17 3
+2570 2025-12-28 23:37:23.958936+00 552 generate_content - success - 2025-12-17 08:12:55.100215+00:00 3 17 3
+2571 2025-12-28 23:37:23.95895+00 551 generate_content - error - 2025-12-17 08:05:09.647029+00:00 3 17 3
+2572 2025-12-28 23:37:23.958964+00 550 generate_content - error - 2025-12-17 08:01:59.342304+00:00 3 17 3
+2573 2025-12-28 23:37:23.958973+00 549 generate_content - success - 2025-12-17 07:51:56.080552+00:00 3 17 3
+2574 2025-12-28 23:37:23.958982+00 548 generate_content - success - 2025-12-17 07:48:10.276794+00:00 3 17 3
+2575 2025-12-28 23:37:23.958991+00 547 generate_ideas - success - 2025-12-17 07:46:20.501363+00:00 3 17 3
+2576 2025-12-28 23:37:23.958999+00 546 generate_content - success - 2025-12-17 07:22:17.352147+00:00 3 17 3
+2577 2025-12-28 23:37:23.95901+00 545 generate_content - success - 2025-12-17 07:17:40.950878+00:00 3 17 3
+2578 2025-12-28 23:37:23.959019+00 544 generate_content - success - 2025-12-17 06:43:24.846739+00:00 3 17 3
+2579 2025-12-28 23:37:23.959028+00 543 generate_ideas - success - 2025-12-17 06:36:32.771797+00:00 3 17 3
+2580 2025-12-28 23:37:23.959037+00 542 auto_cluster - success - 2025-12-17 06:33:29.041533+00:00 3 17 3
+2581 2025-12-28 23:37:23.959045+00 541 generate_content - success - 2025-12-17 05:06:48.253238+00:00 3 17 3
+2582 2025-12-28 23:37:23.959054+00 540 generate_ideas - success - 2025-12-17 04:54:04.651445+00:00 3 17 3
+2583 2025-12-28 23:37:23.959063+00 539 generate_ideas - success - 2025-12-17 04:44:44.156792+00:00 3 17 3
+2584 2025-12-28 23:37:23.959071+00 538 generate_ideas - success - 2025-12-17 04:35:04.617543+00:00 3 17 3
+2585 2025-12-28 23:37:23.95908+00 537 generate_ideas - success - 2025-12-17 04:15:06.942931+00:00 3 17 3
+2586 2025-12-28 23:37:23.959089+00 536 generate_ideas - success - 2025-12-17 03:30:57.636315+00:00 3 17 3
+2587 2025-12-28 23:37:23.959098+00 535 generate_ideas - success - 2025-12-17 03:25:38.347124+00:00 3 17 3
+2588 2025-12-28 23:37:23.959108+00 534 generate_ideas - success - 2025-12-17 03:12:46.840922+00:00 3 17 3
+2589 2025-12-28 23:37:23.959117+00 533 auto_cluster - success - 2025-12-17 03:10:35.135740+00:00 3 17 3
+3338 2025-12-29 02:59:06.736914+00 1 Global Integration Settings 2 [] 77 3
+2590 2025-12-28 23:37:23.959126+00 532 auto_cluster - error - 2025-12-17 03:08:41.559618+00:00 3 17 3
+2591 2025-12-28 23:37:23.959136+00 531 auto_cluster - success - 2025-12-17 02:50:14.022010+00:00 3 17 3
+2592 2025-12-28 23:37:23.959144+00 530 generate_content - success - 2025-12-17 01:47:27.575172+00:00 3 17 3
+2593 2025-12-28 23:37:23.959153+00 529 generate_content - success - 2025-12-17 01:41:32.201252+00:00 3 17 3
+2594 2025-12-28 23:37:23.959162+00 528 generate_ideas - success - 2025-12-17 01:37:33.337453+00:00 3 17 3
+2595 2025-12-28 23:37:23.959172+00 527 generate_content - success - 2025-12-17 01:35:44.201951+00:00 3 17 3
+2596 2025-12-28 23:37:23.959183+00 526 generate_content - success - 2025-12-17 01:25:06.371843+00:00 3 17 3
+2597 2025-12-28 23:37:23.959193+00 525 generate_content - success - 2025-12-17 01:23:18.467557+00:00 3 17 3
+2598 2025-12-28 23:37:23.959202+00 524 generate_content - success - 2025-12-17 01:22:09.256890+00:00 3 17 3
+2599 2025-12-28 23:37:23.959212+00 523 generate_ideas - success - 2025-12-17 01:13:28.694537+00:00 3 17 3
+2600 2025-12-28 23:37:23.959222+00 522 generate_content - success - 2025-12-17 01:07:42.413561+00:00 3 17 3
+2601 2025-12-28 23:37:23.959231+00 521 generate_ideas - success - 2025-12-17 01:02:24.162926+00:00 3 17 3
+2602 2025-12-28 23:37:23.959254+00 520 generate_ideas - error - 2025-12-17 00:55:36.215525+00:00 3 17 3
+2603 2025-12-28 23:37:23.959264+00 519 generate_ideas - success - 2025-12-17 00:45:05.797589+00:00 3 17 3
+2604 2025-12-28 23:37:23.959273+00 518 generate_ideas - error - 2025-12-17 00:44:23.185628+00:00 3 17 3
+2605 2025-12-28 23:37:23.959281+00 517 generate_content - success - 2025-12-17 00:34:12.634489+00:00 3 17 3
+2606 2025-12-28 23:37:23.95929+00 516 generate_content - success - 2025-12-17 00:19:28.294628+00:00 3 17 3
+2607 2025-12-28 23:37:23.959299+00 515 generate_content - success - 2025-12-17 00:05:30.945846+00:00 3 17 3
+2608 2025-12-28 23:37:23.959308+00 514 generate_ideas - success - 2025-12-16 23:59:06.889275+00:00 3 17 3
+2609 2025-12-28 23:37:23.959317+00 513 generate_content - success - 2025-12-16 23:36:41.902542+00:00 3 17 3
+2610 2025-12-28 23:37:23.959326+00 512 generate_ideas - success - 2025-12-16 23:31:57.239376+00:00 3 17 3
+2611 2025-12-28 23:37:23.959334+00 511 generate_ideas - success - 2025-12-16 23:14:16.204803+00:00 3 17 3
+2612 2025-12-28 23:37:23.959343+00 510 generate_ideas - success - 2025-12-16 23:02:35.460325+00:00 3 17 3
+2613 2025-12-28 23:37:23.959353+00 509 generate_content - success - 2025-12-16 22:50:08.821915+00:00 3 17 3
+2614 2025-12-28 23:37:23.959361+00 508 generate_ideas - success - 2025-12-16 22:45:17.515521+00:00 3 17 3
+2615 2025-12-28 23:37:23.95937+00 507 generate_content - success - 2025-12-16 22:39:20.686606+00:00 3 17 3
+2616 2025-12-28 23:37:23.959379+00 506 generate_ideas - success - 2025-12-16 22:36:46.597849+00:00 3 17 3
+2617 2025-12-28 23:37:23.959389+00 505 generate_ideas - success - 2025-12-16 22:32:21.579263+00:00 3 17 3
+2618 2025-12-28 23:37:23.959405+00 504 generate_ideas - success - 2025-12-16 22:12:37.864231+00:00 3 17 3
+2619 2025-12-28 23:37:23.959414+00 503 generate_ideas - success - 2025-12-16 22:10:24.676682+00:00 3 17 3
+2620 2025-12-28 23:37:23.959422+00 502 generate_ideas - success - 2025-12-16 22:08:12.408863+00:00 3 17 3
+2621 2025-12-28 23:37:23.959432+00 501 generate_ideas - success - 2025-12-16 21:37:52.236739+00:00 3 17 3
+2622 2025-12-28 23:37:23.959441+00 500 generate_content - success - 2025-12-16 21:12:05.411622+00:00 3 17 3
+2623 2025-12-28 23:37:23.959449+00 499 generate_content - success - 2025-12-16 20:39:17.509638+00:00 3 17 3
+2624 2025-12-28 23:37:23.959457+00 498 generate_ideas - success - 2025-12-16 20:37:01.240450+00:00 3 17 3
+2625 2025-12-28 23:37:23.959467+00 497 auto_cluster - success - 2025-12-15 14:29:32.786875+00:00 3 17 3
+2626 2025-12-28 23:37:23.959475+00 496 auto_cluster - success - 2025-12-15 13:34:50.240573+00:00 3 17 3
+2627 2025-12-28 23:37:23.959483+00 495 auto_cluster - success - 2025-12-15 13:18:12.874263+00:00 3 17 3
+2628 2025-12-28 23:37:23.959492+00 494 auto_cluster - success - 2025-12-13 11:34:21.207872+00:00 3 17 3
+2629 2025-12-28 23:37:23.959501+00 493 generate_image_prompts - success - 2025-12-13 02:06:31.610413+00:00 3 17 3
+2630 2025-12-28 23:37:23.959509+00 492 generate_image_prompts - success - 2025-12-13 02:06:22.373246+00:00 3 17 3
+2631 2025-12-28 23:37:23.959518+00 491 generate_image_prompts - success - 2025-12-13 02:06:12.755755+00:00 3 17 3
+2632 2025-12-28 23:37:23.959526+00 490 generate_image_prompts - success - 2025-12-13 02:06:03.214275+00:00 3 17 3
+2633 2025-12-28 23:37:23.959535+00 489 generate_image_prompts - success - 2025-12-13 02:05:53.447991+00:00 3 17 3
+2634 2025-12-28 23:37:23.959544+00 488 generate_image_prompts - success - 2025-12-13 02:05:42.474563+00:00 3 17 3
+2635 2025-12-28 23:37:23.959554+00 487 generate_content - success - 2025-12-13 02:05:20.988997+00:00 3 17 3
+2636 2025-12-28 23:37:23.959562+00 486 generate_content - success - 2025-12-13 02:04:46.168122+00:00 3 17 3
+2637 2025-12-28 23:37:23.959571+00 485 generate_content - success - 2025-12-13 02:04:09.800766+00:00 3 17 3
+2638 2025-12-28 23:37:23.95958+00 484 generate_content - success - 2025-12-13 02:03:42.255586+00:00 3 17 3
+2639 2025-12-28 23:37:23.959589+00 483 generate_content - success - 2025-12-13 02:03:08.933211+00:00 3 17 3
+2640 2025-12-28 23:37:23.9596+00 482 generate_content - success - 2025-12-13 02:02:31.216771+00:00 3 17 3
+2641 2025-12-28 23:37:23.95961+00 481 generate_ideas - success - 2025-12-13 02:01:44.613573+00:00 3 17 3
+2642 2025-12-28 23:37:23.959618+00 480 generate_ideas - success - 2025-12-13 02:01:09.890272+00:00 3 17 3
+2643 2025-12-28 23:37:23.959627+00 479 generate_ideas - success - 2025-12-13 02:00:40.816136+00:00 3 17 3
+2644 2025-12-28 23:37:23.959636+00 478 generate_image_prompts - success - 2025-12-11 02:05:00.259649+00:00 3 17 3
+2645 2025-12-28 23:37:23.959644+00 477 generate_image_prompts - success - 2025-12-11 02:04:48.606006+00:00 3 17 3
+2646 2025-12-28 23:37:23.959654+00 476 generate_image_prompts - success - 2025-12-11 02:04:36.394346+00:00 3 17 3
+2647 2025-12-28 23:37:23.959663+00 475 generate_image_prompts - success - 2025-12-11 02:04:24.786581+00:00 3 17 3
+2648 2025-12-28 23:37:23.959672+00 474 generate_content - success - 2025-12-11 02:03:59.754870+00:00 3 17 3
+2649 2025-12-28 23:37:23.959681+00 473 generate_content - success - 2025-12-11 02:03:19.742987+00:00 3 17 3
+2650 2025-12-28 23:37:23.95969+00 472 generate_content - success - 2025-12-11 02:02:31.071844+00:00 3 17 3
+2651 2025-12-28 23:37:23.959699+00 471 generate_content - success - 2025-12-11 02:01:55.295936+00:00 3 17 3
+2652 2025-12-28 23:37:23.959708+00 470 generate_ideas - success - 2025-12-11 02:00:56.925501+00:00 3 17 3
+2653 2025-12-28 23:37:23.959717+00 469 generate_ideas - success - 2025-12-11 02:00:41.795730+00:00 3 17 3
+2654 2025-12-28 23:37:23.959725+00 468 auto_cluster - success - 2025-12-10 16:41:45.119075+00:00 3 17 3
+2655 2025-12-28 23:37:23.959734+00 467 generate_image_prompts - success - 2025-12-10 14:41:20.998344+00:00 3 17 3
+2656 2025-12-28 23:37:23.959743+00 466 generate_image_prompts - success - 2025-12-10 14:41:09.972240+00:00 3 17 3
+2657 2025-12-28 23:37:23.959779+00 465 generate_image_prompts - success - 2025-12-10 14:40:58.358074+00:00 3 17 3
+2658 2025-12-28 23:37:23.95979+00 464 generate_image_prompts - success - 2025-12-10 14:40:47.221704+00:00 3 17 3
+2659 2025-12-28 23:37:23.9598+00 463 generate_content - success - 2025-12-10 14:40:26.336357+00:00 3 17 3
+2660 2025-12-28 23:37:23.959808+00 462 generate_content - success - 2025-12-10 14:39:55.100684+00:00 3 17 3
+2661 2025-12-28 23:37:23.959817+00 461 generate_content - success - 2025-12-10 14:39:26.942725+00:00 3 17 3
+2662 2025-12-28 23:37:23.959826+00 460 generate_content - success - 2025-12-10 14:38:59.237830+00:00 3 17 3
+2663 2025-12-28 23:37:23.959834+00 459 generate_ideas - success - 2025-12-10 14:38:17.832226+00:00 3 17 3
+2664 2025-12-28 23:37:23.959843+00 458 generate_ideas - success - 2025-12-10 14:37:52.784472+00:00 3 17 3
+2665 2025-12-28 23:37:23.959852+00 457 auto_cluster - success - 2025-12-10 14:36:51.796567+00:00 3 17 3
+2666 2025-12-28 23:37:23.95986+00 456 generate_image_prompts - success - 2025-12-10 09:34:10.998794+00:00 3 17 3
+2667 2025-12-28 23:37:23.959869+00 455 generate_content - success - 2025-12-10 09:33:36.431415+00:00 3 17 3
+2668 2025-12-28 23:37:23.959878+00 454 generate_image_prompts - success - 2025-12-10 09:10:41.706345+00:00 3 17 3
+2669 2025-12-28 23:37:23.959888+00 453 generate_content - success - 2025-12-10 09:10:10.025916+00:00 3 17 3
+2670 2025-12-28 23:37:23.959898+00 452 generate_ideas - success - 2025-12-10 09:09:00.010068+00:00 3 17 3
+2671 2025-12-28 23:37:23.959912+00 451 auto_cluster - success - 2025-12-10 09:06:50.930529+00:00 3 17 3
+2672 2025-12-28 23:37:23.959924+00 450 auto_cluster - error - 2025-12-10 08:51:13.343307+00:00 3 17 3
+2673 2025-12-28 23:37:23.959938+00 449 auto_cluster - error - 2025-12-10 08:50:57.557216+00:00 3 17 3
+2674 2025-12-28 23:37:23.95995+00 448 auto_cluster - error - 2025-12-10 08:47:51.553396+00:00 3 17 3
+2675 2025-12-28 23:37:23.959959+00 447 auto_cluster - success - 2025-12-10 08:44:59.303014+00:00 3 17 3
+2676 2025-12-28 23:37:23.959969+00 446 auto_cluster - error - 2025-12-10 08:41:45.421478+00:00 3 17 3
+2677 2025-12-28 23:37:23.959978+00 445 auto_cluster - error - 2025-12-10 08:40:57.769981+00:00 3 17 3
+2678 2025-12-28 23:37:23.959988+00 444 auto_cluster - error - 2025-12-10 08:18:17.644213+00:00 3 17 3
+2679 2025-12-28 23:37:23.959996+00 443 auto_cluster - error - 2025-12-10 08:17:17.773254+00:00 3 17 3
+2680 2025-12-28 23:37:23.960005+00 442 auto_cluster - error - 2025-12-10 08:04:11.820545+00:00 3 17 3
+2681 2025-12-28 23:37:23.960014+00 441 auto_cluster - error - 2025-12-10 07:53:38.719180+00:00 3 17 3
+2682 2025-12-28 23:37:23.960024+00 440 auto_cluster - error - 2025-12-08 16:27:14.919858+00:00 3 17 3
+2683 2025-12-28 23:37:23.960033+00 439 auto_cluster - error - 2025-12-08 16:26:39.757145+00:00 3 17 3
+2684 2025-12-28 23:37:23.960048+00 438 auto_cluster - error - 2025-12-07 17:52:37.607956+00:00 3 17 3
+2685 2025-12-28 23:37:23.960063+00 437 auto_cluster - error - 2025-12-07 16:29:15.662771+00:00 3 17 3
+2686 2025-12-28 23:37:23.960076+00 436 auto_cluster - error - 2025-12-07 16:24:59.444198+00:00 3 17 3
+2687 2025-12-28 23:37:23.960087+00 435 generate_image_prompts - success - 2025-12-06 17:34:57.976233+00:00 3 17 3
+2688 2025-12-28 23:37:23.960096+00 434 generate_image_prompts - success - 2025-12-06 17:34:47.407745+00:00 3 17 3
+2689 2025-12-28 23:37:23.960105+00 433 generate_image_prompts - success - 2025-12-06 17:34:36.180646+00:00 3 17 3
+2690 2025-12-28 23:37:23.960114+00 432 generate_image_prompts - success - 2025-12-06 17:34:23.898237+00:00 3 17 3
+2691 2025-12-28 23:37:23.960122+00 431 generate_image_prompts - success - 2025-12-06 17:34:13.545881+00:00 3 17 3
+2692 2025-12-28 23:37:23.960131+00 430 generate_image_prompts - success - 2025-12-06 17:34:01.787638+00:00 3 17 3
+2693 2025-12-28 23:37:23.960139+00 429 generate_image_prompts - success - 2025-12-06 17:33:50.050853+00:00 3 17 3
+2694 2025-12-28 23:37:23.960148+00 428 generate_image_prompts - success - 2025-12-06 17:33:37.974285+00:00 3 17 3
+2695 2025-12-28 23:37:23.960157+00 427 generate_content - success - 2025-12-06 17:33:13.195396+00:00 3 17 3
+2696 2025-12-28 23:37:23.960166+00 426 generate_content - success - 2025-12-06 17:32:39.720576+00:00 3 17 3
+2697 2025-12-28 23:37:23.960175+00 425 generate_content - success - 2025-12-06 17:31:56.913069+00:00 3 17 3
+2698 2025-12-28 23:37:23.960184+00 424 generate_content - success - 2025-12-06 17:31:24.090684+00:00 3 17 3
+2699 2025-12-28 23:37:23.960192+00 423 generate_content - success - 2025-12-06 17:30:47.825107+00:00 3 17 3
+2700 2025-12-28 23:37:23.960201+00 422 generate_content - success - 2025-12-06 17:30:06.956591+00:00 3 17 3
+2701 2025-12-28 23:37:23.96021+00 421 generate_content - success - 2025-12-06 17:29:21.478285+00:00 3 17 3
+2702 2025-12-28 23:37:23.960219+00 420 generate_content - success - 2025-12-06 17:28:50.151210+00:00 3 17 3
+2703 2025-12-28 23:37:23.960228+00 419 generate_ideas - success - 2025-12-06 17:27:55.256676+00:00 3 17 3
+2704 2025-12-28 23:37:23.960236+00 418 generate_ideas - success - 2025-12-06 17:27:13.850172+00:00 3 17 3
+2705 2025-12-28 23:37:23.960258+00 417 generate_ideas - success - 2025-12-06 17:26:36.349094+00:00 3 17 3
+2706 2025-12-28 23:37:23.960267+00 416 generate_ideas - success - 2025-12-06 17:25:56.851054+00:00 3 17 3
+2707 2025-12-28 23:37:23.960276+00 415 auto_cluster - success - 2025-12-06 17:25:12.722824+00:00 3 17 3
+2708 2025-12-28 23:37:23.960286+00 414 auto_cluster - success - 2025-12-05 12:01:16.332858+00:00 3 17 3
+2709 2025-12-28 23:37:23.960295+00 413 generate_image_prompts - success - 2025-12-04 22:49:00.338453+00:00 3 17 3
+2710 2025-12-28 23:37:23.960304+00 412 generate_image_prompts - success - 2025-12-04 22:48:53.797365+00:00 3 17 3
+2711 2025-12-28 23:37:23.960313+00 411 generate_image_prompts - success - 2025-12-04 22:48:44.471119+00:00 3 17 3
+2712 2025-12-28 23:37:23.960322+00 410 generate_image_prompts - success - 2025-12-04 22:48:36.681949+00:00 3 17 3
+2713 2025-12-28 23:37:23.960331+00 409 generate_image_prompts - success - 2025-12-04 22:48:28.633858+00:00 3 17 3
+2714 2025-12-28 23:37:23.960339+00 408 generate_image_prompts - success - 2025-12-04 22:48:21.626150+00:00 3 17 3
+2715 2025-12-28 23:37:23.960348+00 407 generate_image_prompts - success - 2025-12-04 22:48:14.207724+00:00 3 17 3
+2716 2025-12-28 23:37:23.960357+00 406 generate_image_prompts - success - 2025-12-04 22:48:06.911714+00:00 3 17 3
+2717 2025-12-28 23:37:23.960366+00 405 generate_image_prompts - success - 2025-12-04 22:47:59.569799+00:00 3 17 3
+2718 2025-12-28 23:37:23.960375+00 404 generate_image_prompts - success - 2025-12-04 22:47:52.173683+00:00 3 17 3
+2719 2025-12-28 23:37:23.960384+00 403 generate_image_prompts - success - 2025-12-04 22:47:44.872510+00:00 3 17 3
+2720 2025-12-28 23:37:23.960393+00 402 generate_image_prompts - success - 2025-12-04 22:47:37.733525+00:00 3 17 3
+2721 2025-12-28 23:37:23.960408+00 401 generate_image_prompts - success - 2025-12-04 22:47:30.451444+00:00 3 17 3
+2722 2025-12-28 23:37:23.960417+00 400 generate_image_prompts - success - 2025-12-04 22:47:23.839350+00:00 3 17 3
+2723 2025-12-28 23:37:23.960426+00 399 generate_image_prompts - success - 2025-12-04 22:47:17.114557+00:00 3 17 3
+2724 2025-12-28 23:37:23.960435+00 398 generate_image_prompts - success - 2025-12-04 22:47:09.668428+00:00 3 17 3
+2725 2025-12-28 23:37:23.960443+00 397 generate_image_prompts - success - 2025-12-04 22:47:02.247850+00:00 3 17 3
+2726 2025-12-28 23:37:23.960452+00 396 generate_image_prompts - success - 2025-12-04 22:46:55.597941+00:00 3 17 3
+2727 2025-12-28 23:37:23.96046+00 395 generate_image_prompts - success - 2025-12-04 22:46:47.961364+00:00 3 17 3
+2728 2025-12-28 23:37:23.960469+00 394 generate_image_prompts - success - 2025-12-04 22:46:39.835957+00:00 3 17 3
+2729 2025-12-28 23:37:23.960478+00 393 generate_content - success - 2025-12-04 22:46:15.934415+00:00 3 17 3
+2730 2025-12-28 23:37:23.960486+00 392 generate_content - success - 2025-12-04 22:45:30.761843+00:00 3 17 3
+2731 2025-12-28 23:37:23.960495+00 391 generate_content - success - 2025-12-04 22:44:58.836103+00:00 3 17 3
+2732 2025-12-28 23:37:23.960504+00 390 generate_content - success - 2025-12-04 22:44:14.506964+00:00 3 17 3
+2733 2025-12-28 23:37:23.960513+00 389 generate_content - success - 2025-12-04 22:43:24.987049+00:00 3 17 3
+2734 2025-12-28 23:37:23.960522+00 388 generate_content - success - 2025-12-04 22:42:51.088272+00:00 3 17 3
+2735 2025-12-28 23:37:23.960531+00 387 generate_content - success - 2025-12-04 22:42:08.256507+00:00 3 17 3
+2736 2025-12-28 23:37:23.96054+00 386 generate_content - success - 2025-12-04 22:41:34.057366+00:00 3 17 3
+2737 2025-12-28 23:37:23.96055+00 385 generate_content - success - 2025-12-04 22:40:51.689234+00:00 3 17 3
+2738 2025-12-28 23:37:23.960559+00 384 generate_content - success - 2025-12-04 22:40:12.191538+00:00 3 17 3
+2739 2025-12-28 23:37:23.960568+00 383 generate_content - success - 2025-12-04 22:39:26.209842+00:00 3 17 3
+2740 2025-12-28 23:37:23.960576+00 382 generate_content - success - 2025-12-04 22:38:37.867384+00:00 3 17 3
+2741 2025-12-28 23:37:23.960584+00 381 generate_content - success - 2025-12-04 22:37:53.582022+00:00 3 17 3
+2742 2025-12-28 23:37:23.960593+00 380 generate_content - success - 2025-12-04 22:37:13.082715+00:00 3 17 3
+2743 2025-12-28 23:37:23.960602+00 379 generate_content - success - 2025-12-04 22:36:54.109935+00:00 3 17 3
+2744 2025-12-28 23:37:23.96061+00 378 generate_content - success - 2025-12-04 22:36:13.964868+00:00 3 17 3
+2745 2025-12-28 23:37:23.960619+00 377 generate_content - success - 2025-12-04 22:35:38.170539+00:00 3 17 3
+2746 2025-12-28 23:37:23.960627+00 376 generate_ideas - success - 2025-12-04 22:34:38.255381+00:00 3 17 3
+2747 2025-12-28 23:37:23.960636+00 375 generate_ideas - success - 2025-12-04 22:33:57.398383+00:00 3 17 3
+2748 2025-12-28 23:37:23.960644+00 374 generate_ideas - success - 2025-12-04 22:33:13.728874+00:00 3 17 3
+2749 2025-12-28 23:37:23.960653+00 373 generate_ideas - success - 2025-12-04 22:32:18.979383+00:00 3 17 3
+2750 2025-12-28 23:37:23.960662+00 372 generate_ideas - success - 2025-12-04 22:28:28.045852+00:00 3 17 3
+2751 2025-12-28 23:37:23.96067+00 371 generate_ideas - success - 2025-12-04 22:27:43.397277+00:00 3 17 3
+2752 2025-12-28 23:37:23.960679+00 370 generate_ideas - success - 2025-12-04 22:23:54.587448+00:00 3 17 3
+2753 2025-12-28 23:37:23.960688+00 369 generate_ideas - success - 2025-12-04 22:23:14.122717+00:00 3 17 3
+2754 2025-12-28 23:37:23.960696+00 368 auto_cluster - success - 2025-12-04 22:22:15.461203+00:00 3 17 3
+2755 2025-12-28 23:37:23.960705+00 367 auto_cluster - success - 2025-12-04 22:22:08.034832+00:00 3 17 3
+2756 2025-12-28 23:37:23.960714+00 366 auto_cluster - success - 2025-12-04 22:21:58.411205+00:00 3 17 3
+2757 2025-12-28 23:37:23.960723+00 365 generate_content - success - 2025-12-04 22:13:37.773719+00:00 3 17 3
+2758 2025-12-28 23:37:23.960732+00 364 generate_content - success - 2025-12-04 22:13:06.659122+00:00 3 17 3
+2759 2025-12-28 23:37:23.960741+00 363 generate_content - success - 2025-12-04 21:56:31.275571+00:00 3 17 3
+2760 2025-12-28 23:37:23.96075+00 362 generate_ideas - success - 2025-12-04 21:55:34.526541+00:00 3 17 3
+2761 2025-12-28 23:37:23.96076+00 361 generate_ideas - success - 2025-12-04 21:54:45.992807+00:00 3 17 3
+2762 2025-12-28 23:37:23.960768+00 360 generate_ideas - success - 2025-12-04 21:53:59.564520+00:00 3 17 3
+2763 2025-12-28 23:37:23.960777+00 359 generate_ideas - success - 2025-12-04 21:53:23.846494+00:00 3 17 3
+2764 2025-12-28 23:37:23.960786+00 358 generate_ideas - success - 2025-12-04 21:52:50.091255+00:00 3 17 3
+2765 2025-12-28 23:37:23.960795+00 357 generate_ideas - success - 2025-12-04 21:52:18.643267+00:00 3 17 3
+2766 2025-12-28 23:37:23.960803+00 356 generate_ideas - success - 2025-12-04 21:51:47.338197+00:00 3 17 3
+2767 2025-12-28 23:37:23.960812+00 355 generate_ideas - success - 2025-12-04 21:51:12.654292+00:00 3 17 3
+2768 2025-12-28 23:37:23.96082+00 354 generate_ideas - success - 2025-12-04 21:50:39.067653+00:00 3 17 3
+2769 2025-12-28 23:37:23.960829+00 353 auto_cluster - success - 2025-12-04 21:49:50.345299+00:00 3 17 3
+2770 2025-12-28 23:37:23.960839+00 352 auto_cluster - success - 2025-12-04 21:49:38.735124+00:00 3 17 3
+2771 2025-12-28 23:37:23.960848+00 351 generate_ideas - success - 2025-12-04 21:06:24.886240+00:00 3 17 3
+2772 2025-12-28 23:37:23.960857+00 350 generate_ideas - success - 2025-12-04 21:05:48.132520+00:00 3 17 3
+2773 2025-12-28 23:37:23.960866+00 349 generate_ideas - success - 2025-12-04 21:04:59.951292+00:00 3 17 3
+2774 2025-12-28 23:37:23.960875+00 348 generate_ideas - success - 2025-12-04 21:04:15.537519+00:00 3 17 3
+2775 2025-12-28 23:37:23.960884+00 347 generate_ideas - success - 2025-12-04 21:03:40.728352+00:00 3 17 3
+2776 2025-12-28 23:37:23.960892+00 346 generate_ideas - success - 2025-12-04 21:03:02.818693+00:00 3 17 3
+2777 2025-12-28 23:37:23.960901+00 345 auto_cluster - success - 2025-12-04 21:02:04.085941+00:00 3 17 3
+2778 2025-12-28 23:37:23.96091+00 344 auto_cluster - success - 2025-12-04 21:01:51.764133+00:00 3 17 3
+2779 2025-12-28 23:37:23.960919+00 343 auto_cluster - success - 2025-12-04 21:01:36.753479+00:00 3 17 3
+2780 2025-12-28 23:37:23.960927+00 342 generate_content - success - 2025-12-04 20:15:23.163986+00:00 3 17 3
+2781 2025-12-28 23:37:23.960936+00 341 generate_content - success - 2025-12-04 20:14:32.483528+00:00 3 17 3
+2782 2025-12-28 23:37:23.960945+00 340 generate_ideas - success - 2025-12-04 20:13:23.077123+00:00 3 17 3
+2783 2025-12-28 23:37:23.960964+00 339 generate_image_prompts - success - 2025-12-04 19:43:18.283355+00:00 3 17 3
+2784 2025-12-28 23:37:23.960987+00 338 generate_content - success - 2025-12-04 19:42:52.862807+00:00 3 17 3
+2785 2025-12-28 23:37:23.961003+00 337 generate_content - success - 2025-12-04 19:42:13.117650+00:00 3 17 3
+2786 2025-12-28 23:37:23.961016+00 336 generate_content - success - 2025-12-04 19:41:27.816839+00:00 3 17 3
+2787 2025-12-28 23:37:23.961028+00 335 generate_content - success - 2025-12-04 19:40:39.518404+00:00 3 17 3
+2788 2025-12-28 23:37:23.961041+00 334 generate_ideas - success - 2025-12-04 19:39:32.931825+00:00 3 17 3
+2789 2025-12-28 23:37:23.961053+00 333 generate_ideas - success - 2025-12-04 19:38:49.254619+00:00 3 17 3
+2790 2025-12-28 23:37:23.961066+00 332 auto_cluster - success - 2025-12-04 19:37:36.359056+00:00 3 17 3
+2791 2025-12-28 23:37:23.96108+00 331 generate_image_prompts - success - 2025-12-04 19:12:31.973517+00:00 3 17 3
+2792 2025-12-28 23:37:23.961093+00 330 generate_image_prompts - success - 2025-12-04 19:12:22.044555+00:00 3 17 3
+2793 2025-12-28 23:37:23.961106+00 329 generate_image_prompts - success - 2025-12-04 19:12:13.447293+00:00 3 17 3
+2794 2025-12-28 23:37:23.961115+00 328 generate_image_prompts - success - 2025-12-04 19:12:03.565779+00:00 3 17 3
+2795 2025-12-28 23:37:23.961124+00 327 generate_image_prompts - success - 2025-12-04 19:11:55.421739+00:00 3 17 3
+2796 2025-12-28 23:37:23.961133+00 326 generate_image_prompts - success - 2025-12-04 19:11:46.041168+00:00 3 17 3
+2797 2025-12-28 23:37:23.961141+00 325 generate_image_prompts - success - 2025-12-04 19:11:35.349621+00:00 3 17 3
+2798 2025-12-28 23:37:23.96115+00 324 generate_content - success - 2025-12-04 19:11:17.737243+00:00 3 17 3
+2799 2025-12-28 23:37:23.961159+00 323 generate_content - success - 2025-12-04 19:10:32.699568+00:00 3 17 3
+2800 2025-12-28 23:37:23.961167+00 322 generate_content - success - 2025-12-04 19:09:34.857809+00:00 3 17 3
+2801 2025-12-28 23:37:23.961176+00 321 generate_content - success - 2025-12-04 19:08:45.816523+00:00 3 17 3
+2802 2025-12-28 23:37:23.961185+00 320 generate_content - success - 2025-12-04 19:07:50.596687+00:00 3 17 3
+2803 2025-12-28 23:37:23.961194+00 319 generate_content - success - 2025-12-04 19:06:47.003192+00:00 3 17 3
+2804 2025-12-28 23:37:23.961202+00 318 generate_ideas - success - 2025-12-04 19:05:53.712503+00:00 3 17 3
+2805 2025-12-28 23:37:23.961211+00 317 generate_ideas - success - 2025-12-04 19:05:08.137034+00:00 3 17 3
+2806 2025-12-28 23:37:23.96122+00 316 generate_ideas - success - 2025-12-04 19:04:24.778547+00:00 3 17 3
+2807 2025-12-28 23:37:23.96123+00 315 generate_content - success - 2025-12-04 18:37:02.738280+00:00 3 17 3
+2808 2025-12-28 23:37:23.961239+00 314 generate_ideas - success - 2025-12-04 18:36:25.620045+00:00 3 17 3
+2809 2025-12-28 23:37:23.961261+00 313 generate_ideas - success - 2025-12-04 18:29:42.880412+00:00 3 17 3
+2810 2025-12-28 23:37:23.96127+00 312 generate_image_prompts - success - 2025-12-04 18:00:14.048760+00:00 3 17 3
+2811 2025-12-28 23:37:23.961279+00 311 generate_image_prompts - success - 2025-12-04 18:00:02.023216+00:00 3 17 3
+2812 2025-12-28 23:37:23.961288+00 310 generate_content - success - 2025-12-04 17:59:44.578571+00:00 3 17 3
+2813 2025-12-28 23:37:23.961296+00 309 generate_content - success - 2025-12-04 17:59:12.561947+00:00 3 17 3
+2814 2025-12-28 23:37:23.961305+00 308 generate_ideas - success - 2025-12-04 17:58:30.486178+00:00 3 17 3
+2815 2025-12-28 23:37:23.961313+00 307 generate_ideas - success - 2025-12-04 17:03:19.010591+00:00 3 17 3
+2816 2025-12-28 23:37:23.961321+00 306 auto_cluster - success - 2025-12-04 17:02:22.226938+00:00 3 17 3
+2817 2025-12-28 23:37:23.96133+00 305 generate_image_prompts - success - 2025-12-04 16:29:18.224731+00:00 3 17 3
+2818 2025-12-28 23:37:23.961339+00 304 generate_image_prompts - success - 2025-12-04 16:29:10.045096+00:00 3 17 3
+2819 2025-12-28 23:37:23.961347+00 303 generate_image_prompts - success - 2025-12-04 16:29:01.701885+00:00 3 17 3
+2820 2025-12-28 23:37:23.961356+00 302 generate_image_prompts - success - 2025-12-04 16:28:53.702825+00:00 3 17 3
+2821 2025-12-28 23:37:23.961367+00 301 generate_content - success - 2025-12-04 16:28:39.106758+00:00 3 17 3
+2822 2025-12-28 23:37:23.961377+00 300 generate_content - success - 2025-12-04 16:28:11.776549+00:00 3 17 3
+2823 2025-12-28 23:37:23.961387+00 299 generate_content - success - 2025-12-04 16:27:31.151322+00:00 3 17 3
+2824 2025-12-28 23:37:23.961403+00 298 generate_content - success - 2025-12-04 16:26:53.062879+00:00 3 17 3
+2825 2025-12-28 23:37:23.961412+00 297 generate_ideas - success - 2025-12-04 16:26:07.698742+00:00 3 17 3
+2826 2025-12-28 23:37:23.961421+00 296 generate_ideas - error - 2025-12-04 16:25:20.833878+00:00 3 17 3
+2827 2025-12-28 23:37:23.96143+00 295 generate_ideas - success - 2025-12-04 16:24:20.736470+00:00 3 17 3
+2828 2025-12-28 23:37:23.961452+00 294 auto_cluster - success - 2025-12-04 16:23:31.545057+00:00 3 17 3
+2829 2025-12-28 23:37:23.961471+00 293 generate_images - error - 2025-12-04 11:19:30.959844+00:00 3 17 3
+2830 2025-12-28 23:37:23.961484+00 292 generate_images - error - 2025-12-04 11:19:27.954383+00:00 3 17 3
+2831 2025-12-28 23:37:23.961523+00 291 generate_images - error - 2025-12-04 11:19:24.948880+00:00 3 17 3
+2832 2025-12-28 23:37:23.961533+00 290 generate_images - error - 2025-12-04 11:19:21.944333+00:00 3 17 3
+2833 2025-12-28 23:37:23.961543+00 289 generate_images - error - 2025-12-04 11:19:18.940054+00:00 3 17 3
+2834 2025-12-28 23:37:23.961553+00 288 generate_images - error - 2025-12-04 11:19:15.935837+00:00 3 17 3
+2835 2025-12-28 23:37:23.961562+00 287 generate_images - error - 2025-12-04 11:19:12.932113+00:00 3 17 3
+2836 2025-12-28 23:37:23.961571+00 286 generate_images - error - 2025-12-04 11:19:09.927555+00:00 3 17 3
+2837 2025-12-28 23:37:23.96158+00 285 generate_images - error - 2025-12-04 11:19:06.923062+00:00 3 17 3
+2838 2025-12-28 23:37:23.961589+00 284 generate_images - error - 2025-12-04 11:19:03.918980+00:00 3 17 3
+2839 2025-12-28 23:37:23.961598+00 283 generate_images - error - 2025-12-04 11:19:00.913426+00:00 3 17 3
+2840 2025-12-28 23:37:23.961607+00 282 generate_images - error - 2025-12-04 11:18:57.903445+00:00 3 17 3
+2841 2025-12-28 23:37:23.961616+00 281 generate_images - error - 2025-12-04 11:18:54.898848+00:00 3 17 3
+2842 2025-12-28 23:37:23.961625+00 280 generate_images - error - 2025-12-04 11:18:51.894313+00:00 3 17 3
+2843 2025-12-28 23:37:23.961635+00 279 generate_images - error - 2025-12-04 11:18:48.889151+00:00 3 17 3
+2844 2025-12-28 23:37:23.961644+00 278 generate_images - error - 2025-12-04 11:18:45.884461+00:00 3 17 3
+2845 2025-12-28 23:37:23.961653+00 277 generate_images - error - 2025-12-04 11:18:42.880230+00:00 3 17 3
+2846 2025-12-28 23:37:23.961663+00 276 generate_images - error - 2025-12-04 11:18:39.875274+00:00 3 17 3
+2847 2025-12-28 23:37:23.961672+00 275 generate_images - error - 2025-12-04 11:18:36.870996+00:00 3 17 3
+2848 2025-12-28 23:37:23.96168+00 274 generate_images - error - 2025-12-04 11:18:33.866443+00:00 3 17 3
+2849 2025-12-28 23:37:23.96169+00 273 generate_images - error - 2025-12-04 11:18:30.861882+00:00 3 17 3
+2850 2025-12-28 23:37:23.9617+00 272 generate_images - error - 2025-12-04 11:18:27.856862+00:00 3 17 3
+2851 2025-12-28 23:37:23.961709+00 271 generate_images - error - 2025-12-04 11:18:24.852338+00:00 3 17 3
+2852 2025-12-28 23:37:23.961717+00 270 generate_images - error - 2025-12-04 11:18:21.848290+00:00 3 17 3
+2853 2025-12-28 23:37:23.961726+00 269 generate_image_prompts - success - 2025-12-04 11:18:16.834456+00:00 3 17 3
+2854 2025-12-28 23:37:23.961736+00 268 generate_image_prompts - success - 2025-12-04 11:18:09.002278+00:00 3 17 3
+2855 2025-12-28 23:37:23.961745+00 267 generate_image_prompts - success - 2025-12-04 11:18:00.501002+00:00 3 17 3
+2856 2025-12-28 23:37:23.961755+00 266 generate_image_prompts - success - 2025-12-04 11:17:51.038633+00:00 3 17 3
+2857 2025-12-28 23:37:23.961764+00 265 generate_image_prompts - success - 2025-12-04 11:17:40.702652+00:00 3 17 3
+2858 2025-12-28 23:37:23.961773+00 264 generate_image_prompts - success - 2025-12-04 11:17:32.027548+00:00 3 17 3
+2859 2025-12-28 23:37:23.961782+00 263 generate_image_prompts - success - 2025-12-04 11:17:24.815814+00:00 3 17 3
+2860 2025-12-28 23:37:23.961792+00 262 generate_image_prompts - success - 2025-12-04 11:17:17.289663+00:00 3 17 3
+2861 2025-12-28 23:37:23.961801+00 261 generate_content - success - 2025-12-04 11:17:02.134285+00:00 3 17 3
+2862 2025-12-28 23:37:23.961811+00 260 generate_content - success - 2025-12-04 11:16:34.107032+00:00 3 17 3
+2863 2025-12-28 23:37:23.96182+00 259 generate_content - success - 2025-12-04 11:16:04.370326+00:00 3 17 3
+2864 2025-12-28 23:37:23.961829+00 258 generate_content - success - 2025-12-04 11:15:28.467981+00:00 3 17 3
+2865 2025-12-28 23:37:23.961838+00 257 generate_content - success - 2025-12-04 11:14:51.775367+00:00 3 17 3
+2866 2025-12-28 23:37:23.961847+00 256 generate_content - success - 2025-12-04 11:14:16.502172+00:00 3 17 3
+2867 2025-12-28 23:37:23.961856+00 255 generate_content - success - 2025-12-04 11:13:40.047966+00:00 3 17 3
+2868 2025-12-28 23:37:23.961865+00 254 generate_content - success - 2025-12-04 11:13:04.367668+00:00 3 17 3
+2869 2025-12-28 23:37:23.961876+00 253 generate_ideas - success - 2025-12-04 11:12:16.923052+00:00 3 17 3
+2870 2025-12-28 23:37:23.961888+00 252 generate_ideas - success - 2025-12-04 11:11:44.729684+00:00 3 17 3
+2871 2025-12-28 23:37:23.961902+00 251 generate_ideas - success - 2025-12-04 11:11:05.552635+00:00 3 17 3
+2872 2025-12-28 23:37:23.961928+00 250 generate_ideas - success - 2025-12-04 11:10:24.818822+00:00 3 17 3
+2873 2025-12-28 23:37:23.961945+00 249 auto_cluster - success - 2025-12-04 11:09:47.334775+00:00 3 17 3
+2874 2025-12-28 23:37:23.961956+00 248 auto_cluster - success - 2025-12-04 11:02:53.524033+00:00 3 17 3
+2875 2025-12-28 23:37:23.961965+00 247 auto_cluster - success - 2025-12-04 10:39:19.536250+00:00 3 17 3
+2876 2025-12-28 23:37:23.961974+00 246 auto_cluster - success - 2025-12-04 10:35:48.395396+00:00 3 17 3
+2877 2025-12-28 23:37:23.961983+00 245 generate_images - error - 2025-12-04 10:23:13.202720+00:00 3 17 3
+2878 2025-12-28 23:37:23.961992+00 244 generate_images - error - 2025-12-04 10:23:10.197857+00:00 3 17 3
+2879 2025-12-28 23:37:23.962001+00 243 generate_images - error - 2025-12-04 10:23:07.193600+00:00 3 17 3
+2880 2025-12-28 23:37:23.962009+00 242 generate_images - error - 2025-12-04 10:23:04.188947+00:00 3 17 3
+2881 2025-12-28 23:37:23.962018+00 241 generate_images - error - 2025-12-04 10:23:01.183238+00:00 3 17 3
+2882 2025-12-28 23:37:23.962027+00 240 generate_images - error - 2025-12-04 10:22:58.178143+00:00 3 17 3
+2883 2025-12-28 23:37:23.962036+00 239 generate_images - error - 2025-12-04 10:22:55.174017+00:00 3 17 3
+2884 2025-12-28 23:37:23.962045+00 238 generate_images - error - 2025-12-04 10:22:52.169695+00:00 3 17 3
+2885 2025-12-28 23:37:23.962053+00 237 generate_images - error - 2025-12-04 10:22:49.165261+00:00 3 17 3
+2886 2025-12-28 23:37:23.962062+00 236 generate_images - error - 2025-12-04 10:22:46.161113+00:00 3 17 3
+2887 2025-12-28 23:37:23.962072+00 235 generate_images - error - 2025-12-04 10:22:43.156437+00:00 3 17 3
+2888 2025-12-28 23:37:23.962082+00 234 generate_images - error - 2025-12-04 10:22:40.151057+00:00 3 17 3
+2889 2025-12-28 23:37:23.962092+00 233 generate_images - error - 2025-12-04 10:22:37.146744+00:00 3 17 3
+2890 2025-12-28 23:37:23.9621+00 232 generate_images - error - 2025-12-04 10:22:34.142620+00:00 3 17 3
+2891 2025-12-28 23:37:23.962109+00 231 generate_images - error - 2025-12-04 10:22:31.138043+00:00 3 17 3
+2892 2025-12-28 23:37:23.962118+00 230 generate_images - error - 2025-12-04 10:22:28.133817+00:00 3 17 3
+2893 2025-12-28 23:37:23.962127+00 229 generate_images - error - 2025-12-04 10:22:25.129125+00:00 3 17 3
+2894 2025-12-28 23:37:23.962135+00 228 generate_images - error - 2025-12-04 10:22:22.124724+00:00 3 17 3
+2895 2025-12-28 23:37:23.962144+00 227 generate_images - error - 2025-12-04 10:22:19.120628+00:00 3 17 3
+2896 2025-12-28 23:37:23.962153+00 226 generate_images - error - 2025-12-04 10:22:16.116122+00:00 3 17 3
+2897 2025-12-28 23:37:23.962162+00 225 generate_images - error - 2025-12-04 10:22:13.111374+00:00 3 17 3
+2898 2025-12-28 23:37:23.962171+00 224 generate_images - error - 2025-12-04 10:22:10.106690+00:00 3 17 3
+2899 2025-12-28 23:37:23.962179+00 223 generate_images - error - 2025-12-04 10:22:07.101620+00:00 3 17 3
+2900 2025-12-28 23:37:23.962189+00 222 generate_images - error - 2025-12-04 10:22:04.094398+00:00 3 17 3
+2901 2025-12-28 23:37:23.962198+00 221 generate_images - error - 2025-12-04 10:22:01.082181+00:00 3 17 3
+2902 2025-12-28 23:37:23.962208+00 220 generate_images - error - 2025-12-04 10:21:58.074763+00:00 3 17 3
+2903 2025-12-28 23:37:23.962217+00 219 generate_images - error - 2025-12-04 10:21:55.069994+00:00 3 17 3
+2904 2025-12-28 23:37:23.962225+00 218 generate_images - error - 2025-12-04 10:21:52.065782+00:00 3 17 3
+2905 2025-12-28 23:37:23.962234+00 217 generate_images - error - 2025-12-04 10:21:49.061258+00:00 3 17 3
+3363 2026-01-01 04:20:34.763201+00 16 Paid 2 - Massagers Mart 3 13 3
+2906 2025-12-28 23:37:23.96226+00 216 generate_images - error - 2025-12-04 10:21:46.056714+00:00 3 17 3
+2907 2025-12-28 23:37:23.962269+00 215 generate_images - error - 2025-12-04 10:21:43.052540+00:00 3 17 3
+2908 2025-12-28 23:37:23.962278+00 214 generate_images - error - 2025-12-04 10:21:40.046714+00:00 3 17 3
+2909 2025-12-28 23:37:23.962288+00 213 generate_images - error - 2025-12-04 10:21:37.042176+00:00 3 17 3
+2910 2025-12-28 23:37:23.962296+00 212 generate_images - error - 2025-12-04 10:21:34.035760+00:00 3 17 3
+2911 2025-12-28 23:37:23.962305+00 211 generate_images - error - 2025-12-04 10:21:31.029771+00:00 3 17 3
+2912 2025-12-28 23:37:23.962313+00 210 generate_images - error - 2025-12-04 10:21:28.025255+00:00 3 17 3
+2913 2025-12-28 23:37:23.962322+00 209 generate_images - error - 2025-12-04 10:21:25.020782+00:00 3 17 3
+2914 2025-12-28 23:37:23.962335+00 208 generate_images - error - 2025-12-04 10:21:22.016221+00:00 3 17 3
+2915 2025-12-28 23:37:23.962349+00 207 generate_images - error - 2025-12-04 10:21:19.009756+00:00 3 17 3
+2916 2025-12-28 23:37:23.962363+00 206 generate_images - error - 2025-12-04 10:21:15.989827+00:00 3 17 3
+2917 2025-12-28 23:37:23.962376+00 205 generate_images - error - 2025-12-04 10:21:12.984668+00:00 3 17 3
+2918 2025-12-28 23:37:23.962389+00 204 generate_images - error - 2025-12-04 10:21:09.980539+00:00 3 17 3
+2919 2025-12-28 23:37:23.96241+00 203 generate_images - error - 2025-12-04 10:21:06.976259+00:00 3 17 3
+2920 2025-12-28 23:37:23.96242+00 202 generate_images - error - 2025-12-04 10:21:03.969859+00:00 3 17 3
+2921 2025-12-28 23:37:23.962429+00 201 generate_images - error - 2025-12-04 10:21:00.962951+00:00 3 17 3
+2922 2025-12-28 23:37:23.962438+00 200 generate_images - error - 2025-12-04 10:20:57.957056+00:00 3 17 3
+2923 2025-12-28 23:37:23.962448+00 199 generate_images - error - 2025-12-04 10:20:54.952153+00:00 3 17 3
+2924 2025-12-28 23:37:23.962458+00 198 generate_images - error - 2025-12-04 10:20:51.947712+00:00 3 17 3
+2925 2025-12-28 23:37:23.962472+00 197 generate_images - error - 2025-12-04 10:20:48.943811+00:00 3 17 3
+2926 2025-12-28 23:37:23.962485+00 196 generate_images - error - 2025-12-04 10:20:45.939127+00:00 3 17 3
+2927 2025-12-28 23:37:23.962494+00 195 generate_images - error - 2025-12-04 10:20:42.934460+00:00 3 17 3
+2928 2025-12-28 23:37:23.962504+00 194 generate_image_prompts - success - 2025-12-04 10:20:37.918210+00:00 3 17 3
+2929 2025-12-28 23:37:23.962513+00 193 generate_image_prompts - success - 2025-12-04 10:20:30.351881+00:00 3 17 3
+2930 2025-12-28 23:37:23.962522+00 192 generate_image_prompts - success - 2025-12-04 10:20:22.287557+00:00 3 17 3
+2931 2025-12-28 23:37:23.962531+00 191 generate_image_prompts - success - 2025-12-04 10:20:14.572803+00:00 3 17 3
+2932 2025-12-28 23:37:23.96254+00 190 generate_image_prompts - success - 2025-12-04 10:20:03.678154+00:00 3 17 3
+2933 2025-12-28 23:37:23.962549+00 189 generate_image_prompts - success - 2025-12-04 10:19:55.260482+00:00 3 17 3
+2934 2025-12-28 23:37:23.962558+00 188 generate_image_prompts - success - 2025-12-04 10:19:46.994026+00:00 3 17 3
+2935 2025-12-28 23:37:23.962566+00 187 generate_image_prompts - success - 2025-12-04 10:19:39.060957+00:00 3 17 3
+2936 2025-12-28 23:37:23.962575+00 186 generate_image_prompts - success - 2025-12-04 10:19:31.167724+00:00 3 17 3
+2937 2025-12-28 23:37:23.962588+00 185 generate_image_prompts - success - 2025-12-04 10:19:23.343630+00:00 3 17 3
+2938 2025-12-28 23:37:23.962601+00 184 generate_image_prompts - success - 2025-12-04 10:19:13.399229+00:00 3 17 3
+2939 2025-12-28 23:37:23.962614+00 183 generate_image_prompts - success - 2025-12-04 10:19:04.502117+00:00 3 17 3
+2940 2025-12-28 23:37:23.962623+00 182 generate_image_prompts - success - 2025-12-04 10:18:57.046215+00:00 3 17 3
+2941 2025-12-28 23:37:23.962632+00 181 generate_image_prompts - success - 2025-12-04 10:18:49.873045+00:00 3 17 3
+2942 2025-12-28 23:37:23.962642+00 180 generate_image_prompts - success - 2025-12-04 10:18:41.352358+00:00 3 17 3
+2943 2025-12-28 23:37:23.962651+00 179 generate_image_prompts - success - 2025-12-04 10:18:33.574452+00:00 3 17 3
+2944 2025-12-28 23:37:23.96266+00 178 generate_image_prompts - success - 2025-12-04 10:18:25.207364+00:00 3 17 3
+2945 2025-12-28 23:37:23.962669+00 177 generate_content - success - 2025-12-04 10:18:10.054611+00:00 3 17 3
+2946 2025-12-28 23:37:23.962678+00 176 generate_content - success - 2025-12-04 10:17:38.123123+00:00 3 17 3
+2947 2025-12-28 23:37:23.962687+00 175 generate_content - success - 2025-12-04 10:17:04.170598+00:00 3 17 3
+2948 2025-12-28 23:37:23.962696+00 174 generate_content - success - 2025-12-04 10:16:29.332511+00:00 3 17 3
+2949 2025-12-28 23:37:23.962704+00 173 generate_content - success - 2025-12-04 10:15:50.891595+00:00 3 17 3
+2950 2025-12-28 23:37:23.962712+00 172 generate_content - success - 2025-12-04 10:15:13.041622+00:00 3 17 3
+2951 2025-12-28 23:37:23.962721+00 171 generate_content - success - 2025-12-04 10:14:37.914221+00:00 3 17 3
+2952 2025-12-28 23:37:23.96273+00 170 generate_content - success - 2025-12-04 10:14:01.392307+00:00 3 17 3
+2953 2025-12-28 23:37:23.962738+00 169 generate_content - success - 2025-12-04 10:13:23.118215+00:00 3 17 3
+2954 2025-12-28 23:37:23.962747+00 168 generate_content - success - 2025-12-04 10:12:49.888236+00:00 3 17 3
+2955 2025-12-28 23:37:23.962756+00 167 generate_content - success - 2025-12-04 10:12:08.831871+00:00 3 17 3
+2956 2025-12-28 23:37:23.962765+00 166 generate_content - success - 2025-12-04 10:11:36.065588+00:00 3 17 3
+2957 2025-12-28 23:37:23.962773+00 165 generate_content - success - 2025-12-04 10:11:02.251990+00:00 3 17 3
+2958 2025-12-28 23:37:23.962782+00 164 generate_images - error - 2025-12-04 02:01:02.579800+00:00 3 17 3
+2959 2025-12-28 23:37:23.96279+00 163 generate_images - error - 2025-12-04 02:00:59.570240+00:00 3 17 3
+2960 2025-12-28 23:37:23.962798+00 162 generate_images - error - 2025-12-04 02:00:56.564619+00:00 3 17 3
+2961 2025-12-28 23:37:23.962807+00 161 generate_images - error - 2025-12-04 02:00:53.559725+00:00 3 17 3
+2962 2025-12-28 23:37:23.962815+00 160 generate_images - error - 2025-12-04 02:00:50.554433+00:00 3 17 3
+2963 2025-12-28 23:37:23.962823+00 159 generate_images - error - 2025-12-04 02:00:47.548181+00:00 3 17 3
+2964 2025-12-28 23:37:23.962833+00 158 generate_images - error - 2025-12-04 02:00:44.540916+00:00 3 17 3
+2965 2025-12-28 23:37:23.962856+00 157 generate_images - error - 2025-12-04 02:00:41.535241+00:00 3 17 3
+2966 2025-12-28 23:37:23.962874+00 156 generate_images - error - 2025-12-04 02:00:38.526474+00:00 3 17 3
+2967 2025-12-28 23:37:23.962887+00 155 generate_images - error - 2025-12-04 02:00:35.520856+00:00 3 17 3
+2968 2025-12-28 23:37:23.962899+00 154 generate_images - error - 2025-12-04 02:00:32.515801+00:00 3 17 3
+3364 2026-01-01 04:28:25.916969+00 27 Paid 2 - massgers mart 3 13 3
+2969 2025-12-28 23:37:23.962911+00 153 generate_images - error - 2025-12-04 02:00:29.510733+00:00 3 17 3
+2970 2025-12-28 23:37:23.962922+00 152 generate_images - error - 2025-12-04 02:00:26.506113+00:00 3 17 3
+2971 2025-12-28 23:37:23.962933+00 151 generate_images - error - 2025-12-04 02:00:23.501199+00:00 3 17 3
+2972 2025-12-28 23:37:23.962944+00 150 generate_images - error - 2025-12-04 02:00:20.496260+00:00 3 17 3
+2973 2025-12-28 23:37:23.962956+00 149 generate_images - error - 2025-12-04 02:00:17.490379+00:00 3 17 3
+2974 2025-12-28 23:37:23.962968+00 148 generate_images - error - 2025-12-04 02:00:14.485680+00:00 3 17 3
+2975 2025-12-28 23:37:23.962981+00 147 generate_images - error - 2025-12-04 02:00:11.480453+00:00 3 17 3
+2976 2025-12-28 23:37:23.962993+00 146 generate_images - error - 2025-12-04 02:00:08.456926+00:00 3 17 3
+2977 2025-12-28 23:37:23.963001+00 145 generate_images - error - 2025-12-04 02:00:05.447752+00:00 3 17 3
+2978 2025-12-28 23:37:23.96301+00 144 generate_images - error - 2025-12-04 02:00:02.419361+00:00 3 17 3
+2979 2025-12-28 23:37:23.963018+00 143 generate_images - error - 2025-12-03 21:10:14.822019+00:00 3 17 3
+2980 2025-12-28 23:37:23.963027+00 142 generate_images - error - 2025-12-03 21:10:11.816793+00:00 3 17 3
+2981 2025-12-28 23:37:23.963035+00 141 generate_images - error - 2025-12-03 21:10:08.812206+00:00 3 17 3
+2982 2025-12-28 23:37:23.963048+00 140 generate_images - error - 2025-12-03 21:10:05.807930+00:00 3 17 3
+2983 2025-12-28 23:37:23.963073+00 139 generate_images - error - 2025-12-03 21:10:02.792428+00:00 3 17 3
+2984 2025-12-28 23:37:23.963089+00 138 generate_images - error - 2025-12-03 21:09:59.778335+00:00 3 17 3
+2985 2025-12-28 23:37:23.9631+00 137 generate_images - error - 2025-12-03 21:09:56.773854+00:00 3 17 3
+2986 2025-12-28 23:37:23.963109+00 136 generate_images - error - 2025-12-03 21:09:53.769769+00:00 3 17 3
+2987 2025-12-28 23:37:23.963117+00 135 generate_images - error - 2025-12-03 21:09:50.765537+00:00 3 17 3
+2988 2025-12-28 23:37:23.963126+00 134 generate_images - error - 2025-12-03 21:09:47.761844+00:00 3 17 3
+2989 2025-12-28 23:37:23.963136+00 133 generate_images - error - 2025-12-03 21:09:44.757403+00:00 3 17 3
+2990 2025-12-28 23:37:23.963145+00 132 generate_images - error - 2025-12-03 21:09:41.752187+00:00 3 17 3
+2991 2025-12-28 23:37:23.963153+00 131 generate_images - error - 2025-12-03 21:09:38.748249+00:00 3 17 3
+2992 2025-12-28 23:37:23.963162+00 130 generate_images - error - 2025-12-03 21:09:35.744168+00:00 3 17 3
+2993 2025-12-28 23:37:23.963171+00 129 generate_images - error - 2025-12-03 21:09:32.740326+00:00 3 17 3
+2994 2025-12-28 23:37:23.963181+00 128 generate_images - error - 2025-12-03 21:09:29.735422+00:00 3 17 3
+2995 2025-12-28 23:37:23.96319+00 127 generate_images - error - 2025-12-03 21:09:26.731281+00:00 3 17 3
+2996 2025-12-28 23:37:23.963199+00 126 generate_images - error - 2025-12-03 21:09:23.726862+00:00 3 17 3
+2997 2025-12-28 23:37:23.963208+00 125 generate_images - error - 2025-12-03 21:09:20.722317+00:00 3 17 3
+2998 2025-12-28 23:37:23.963216+00 124 generate_images - error - 2025-12-03 21:09:17.717683+00:00 3 17 3
+2999 2025-12-28 23:37:23.963224+00 123 generate_images - error - 2025-12-03 21:09:14.710819+00:00 3 17 3
+3000 2025-12-28 23:37:23.963232+00 122 generate_images - error - 2025-12-03 19:21:54.106053+00:00 3 17 3
+3001 2025-12-28 23:37:23.963255+00 121 generate_images - error - 2025-12-03 19:21:51.102316+00:00 3 17 3
+3002 2025-12-28 23:37:23.963264+00 120 generate_images - error - 2025-12-03 19:21:48.096119+00:00 3 17 3
+3003 2025-12-28 23:37:23.963273+00 119 generate_images - error - 2025-12-03 19:21:45.090842+00:00 3 17 3
+3004 2025-12-28 23:37:23.963281+00 118 generate_images - error - 2025-12-03 19:21:42.085753+00:00 3 17 3
+3005 2025-12-28 23:37:23.963314+00 117 generate_images - error - 2025-12-03 19:21:39.081473+00:00 3 17 3
+3006 2025-12-28 23:37:23.963323+00 116 generate_images - error - 2025-12-03 19:21:36.076826+00:00 3 17 3
+3007 2025-12-28 23:37:23.963332+00 115 generate_images - error - 2025-12-03 19:21:33.072072+00:00 3 17 3
+3008 2025-12-28 23:37:23.963341+00 114 generate_images - error - 2025-12-03 19:21:30.067774+00:00 3 17 3
+3009 2025-12-28 23:37:23.963349+00 113 generate_images - error - 2025-12-03 19:21:27.063251+00:00 3 17 3
+3010 2025-12-28 23:37:23.963358+00 112 generate_images - error - 2025-12-03 19:21:24.058493+00:00 3 17 3
+3011 2025-12-28 23:37:23.963367+00 111 generate_images - error - 2025-12-03 19:21:21.054080+00:00 3 17 3
+3012 2025-12-28 23:37:23.963375+00 110 generate_images - error - 2025-12-03 19:21:18.050157+00:00 3 17 3
+3013 2025-12-28 23:37:23.963383+00 109 generate_images - error - 2025-12-03 19:21:15.046078+00:00 3 17 3
+3014 2025-12-28 23:37:23.963392+00 108 generate_images - error - 2025-12-03 19:21:12.041129+00:00 3 17 3
+3015 2025-12-28 23:37:23.963407+00 107 generate_images - error - 2025-12-03 19:21:09.035699+00:00 3 17 3
+3016 2025-12-28 23:37:23.963415+00 106 generate_images - error - 2025-12-03 19:21:06.030993+00:00 3 17 3
+3017 2025-12-28 23:37:23.963425+00 105 generate_images - error - 2025-12-03 19:21:03.025841+00:00 3 17 3
+3018 2025-12-28 23:37:23.963435+00 104 generate_images - error - 2025-12-03 19:21:00.015426+00:00 3 17 3
+3019 2025-12-28 23:37:23.963443+00 103 generate_images - error - 2025-12-03 19:20:57.009827+00:00 3 17 3
+3020 2025-12-28 23:37:23.963452+00 102 generate_images - error - 2025-12-03 19:20:54.004851+00:00 3 17 3
+3021 2025-12-28 23:37:23.963462+00 101 generate_image_prompts - success - 2025-12-03 19:20:48.991238+00:00 3 17 3
+3022 2025-12-28 23:37:23.96347+00 100 generate_image_prompts - success - 2025-12-03 19:20:39.925686+00:00 3 17 3
+3023 2025-12-28 23:37:23.963478+00 99 generate_image_prompts - success - 2025-12-03 19:20:28.789552+00:00 3 17 3
+3024 2025-12-28 23:37:23.963486+00 98 generate_image_prompts - success - 2025-12-03 19:20:16.805065+00:00 3 17 3
+3025 2025-12-28 23:37:23.963494+00 97 generate_image_prompts - success - 2025-12-03 19:20:08.347530+00:00 3 17 3
+3026 2025-12-28 23:37:23.963502+00 96 generate_image_prompts - success - 2025-12-03 19:19:58.876069+00:00 3 17 3
+3027 2025-12-28 23:37:23.96351+00 95 generate_image_prompts - success - 2025-12-03 19:19:51.356565+00:00 3 17 3
+3028 2025-12-28 23:37:23.963519+00 94 generate_content - success - 2025-12-03 19:19:34.238415+00:00 3 17 3
+3029 2025-12-28 23:37:23.963527+00 93 generate_content - success - 2025-12-03 19:18:57.438514+00:00 3 17 3
+3030 2025-12-28 23:37:23.963536+00 92 generate_content - success - 2025-12-03 19:18:25.903489+00:00 3 17 3
+3031 2025-12-28 23:37:23.963545+00 91 generate_content - success - 2025-12-03 19:17:53.966633+00:00 3 17 3
+3032 2025-12-28 23:37:23.963554+00 90 generate_content - success - 2025-12-03 19:17:18.128106+00:00 3 17 3
+3033 2025-12-28 23:37:23.963563+00 89 generate_content - success - 2025-12-03 19:16:42.837879+00:00 3 17 3
+3034 2025-12-28 23:37:23.963573+00 88 generate_ideas - success - 2025-12-03 19:15:43.747276+00:00 3 17 3
+3035 2025-12-28 23:37:23.963581+00 87 generate_ideas - success - 2025-12-03 19:15:06.757759+00:00 3 17 3
+3036 2025-12-28 23:37:23.96359+00 86 auto_cluster - success - 2025-12-03 19:14:13.504364+00:00 3 17 3
+3037 2025-12-28 23:37:23.963599+00 85 generate_content - success - 2025-12-03 18:51:10.047731+00:00 3 17 3
+3038 2025-12-28 23:37:23.963608+00 84 generate_ideas - success - 2025-12-03 18:50:33.595458+00:00 3 17 3
+3039 2025-12-28 23:37:23.963616+00 83 auto_cluster - success - 2025-12-03 18:50:03.215208+00:00 3 17 3
+3040 2025-12-28 23:37:23.963625+00 82 auto_cluster - success - 2025-12-03 18:49:56.169047+00:00 3 17 3
+3041 2025-12-28 23:37:23.963634+00 81 generate_content - success - 2025-12-03 15:55:53.585478+00:00 3 17 3
+3042 2025-12-28 23:37:23.963643+00 80 generate_ideas - success - 2025-12-03 15:55:27.937348+00:00 3 17 3
+3043 2025-12-28 23:37:23.963652+00 79 auto_cluster - success - 2025-12-03 15:54:41.445336+00:00 3 17 3
+3044 2025-12-28 23:37:23.963666+00 78 auto_cluster - success - 2025-12-03 14:45:17.496616+00:00 3 17 3
+3045 2025-12-28 23:37:23.963677+00 77 auto_cluster - success - 2025-12-03 14:43:51.067390+00:00 3 17 3
+3046 2025-12-28 23:37:23.963686+00 76 auto_cluster - success - 2025-12-03 14:29:24.780538+00:00 3 17 3
+3047 2025-12-28 23:37:23.963695+00 75 auto_cluster - error - 2025-12-03 14:26:59.996713+00:00 3 17 3
+3048 2025-12-28 23:37:23.963704+00 74 auto_cluster - error - 2025-12-03 14:12:14.266983+00:00 3 17 3
+3049 2025-12-28 23:37:23.963714+00 73 generate_content - success - 2025-12-03 13:49:16.821197+00:00 3 17 3
+3050 2025-12-28 23:37:23.963727+00 72 auto_cluster - success - 2025-12-03 13:48:41.916841+00:00 3 17 3
+3051 2025-12-28 23:37:23.96374+00 71 generate_content - success - 2025-12-03 12:23:03.089323+00:00 3 17 3
+3052 2025-12-28 23:37:23.963753+00 70 auto_cluster - success - 2025-12-03 12:22:33.330818+00:00 3 17 3
+3053 2025-12-28 23:37:23.963765+00 69 generate_content - success - 2025-12-03 11:38:37.609176+00:00 3 17 3
+3054 2025-12-28 23:37:23.963774+00 68 generate_ideas - success - 2025-12-03 11:38:02.613164+00:00 3 17 3
+3055 2025-12-28 23:37:23.963783+00 67 generate_ideas - success - 2025-12-03 11:37:20.229474+00:00 3 17 3
+3056 2025-12-28 23:37:23.963792+00 66 generate_ideas - success - 2025-12-03 11:36:55.583317+00:00 3 17 3
+3057 2025-12-28 23:37:23.963801+00 65 generate_ideas - success - 2025-12-03 11:36:08.097370+00:00 3 17 3
+3058 2025-12-28 23:37:23.96381+00 64 generate_ideas - success - 2025-12-03 11:35:25.197292+00:00 3 17 3
+3059 2025-12-28 23:37:23.963818+00 63 auto_cluster - success - 2025-12-03 11:34:47.917625+00:00 3 17 3
+3060 2025-12-28 23:37:23.963827+00 62 generate_ideas - success - 2025-12-03 05:19:40.342293+00:00 3 17 3
+3061 2025-12-28 23:37:23.963836+00 61 auto_cluster - success - 2025-12-03 05:17:29.590340+00:00 3 17 3
+3062 2025-12-28 23:37:23.963845+00 60 generate_ideas - success - 2025-12-03 02:20:15.927709+00:00 3 17 3
+3063 2025-12-28 23:37:23.963853+00 59 auto_cluster - success - 2025-12-03 02:19:14.004446+00:00 3 17 3
+3064 2025-12-28 23:37:23.963862+00 58 auto_cluster - error - 2025-12-03 02:17:31.260084+00:00 3 17 3
+3065 2025-12-28 23:37:23.963871+00 57 auto_cluster - error - 2025-12-03 02:17:09.627245+00:00 3 17 3
+3066 2025-12-28 23:37:23.96388+00 56 auto_cluster - error - 2025-12-03 02:16:30.422361+00:00 3 17 3
+3067 2025-12-28 23:37:23.963888+00 55 generate_image_prompts - success - 2025-12-01 10:39:19.092749+00:00 3 17 3
+3068 2025-12-28 23:37:23.963897+00 54 generate_content - success - 2025-12-01 10:26:59.307305+00:00 3 17 3
+3069 2025-12-28 23:37:23.963906+00 53 generate_image_prompts - success - 2025-12-01 07:23:14.235392+00:00 3 17 3
+3070 2025-12-28 23:37:23.963915+00 52 generate_content - success - 2025-12-01 07:16:53.992409+00:00 3 17 3
+3071 2025-12-28 23:37:23.963923+00 51 generate_content - success - 2025-12-01 06:13:45.632630+00:00 3 17 3
+3072 2025-12-28 23:37:23.963932+00 50 generate_content - success - 2025-12-01 05:49:06.790606+00:00 3 17 3
+3073 2025-12-28 23:37:23.963941+00 49 generate_content - success - 2025-12-01 05:16:26.539813+00:00 3 17 3
+3074 2025-12-28 23:37:23.963949+00 48 generate_content - success - 2025-12-01 04:55:56.717836+00:00 3 17 3
+3075 2025-12-28 23:37:23.963958+00 47 generate_ideas - success - 2025-12-01 04:54:28.169368+00:00 3 17 3
+3076 2025-12-28 23:37:23.963966+00 46 auto_cluster - success - 2025-12-01 04:52:17.073074+00:00 3 17 3
+3077 2025-12-28 23:37:23.963975+00 45 generate_content - success - 2025-11-29 08:13:30.854467+00:00 3 17 3
+3078 2025-12-28 23:37:23.963984+00 44 generate_content - success - 2025-11-29 07:28:44.886000+00:00 3 17 3
+3079 2025-12-28 23:37:23.963993+00 43 generate_content - success - 2025-11-28 21:51:30.566883+00:00 3 17 3
+3080 2025-12-28 23:37:23.964002+00 42 generate_image_prompts - success - 2025-11-28 12:35:18.450883+00:00 3 17 3
+3081 2025-12-28 23:37:23.964011+00 41 generate_content - success - 2025-11-28 12:31:15.871855+00:00 3 17 3
+3082 2025-12-28 23:37:23.96402+00 40 generate_image_prompts - success - 2025-11-28 11:40:34.081859+00:00 3 17 3
+3083 2025-12-28 23:37:23.964028+00 39 generate_image_prompts - success - 2025-11-28 11:05:21.207374+00:00 3 17 3
+3084 2025-12-28 23:37:23.964036+00 38 generate_content - success - 2025-11-28 11:04:11.715620+00:00 3 17 3
+3085 2025-12-28 23:37:23.964045+00 37 generate_ideas - success - 2025-11-28 10:36:55.966879+00:00 3 17 3
+3086 2025-12-28 23:37:23.964054+00 36 generate_image_prompts - success - 2025-11-28 07:25:23.903638+00:00 3 17 3
+3087 2025-12-28 23:37:23.964062+00 35 generate_content - success - 2025-11-28 07:24:49.407693+00:00 3 17 3
+3088 2025-12-28 23:37:23.964071+00 34 generate_image_prompts - success - 2025-11-26 19:54:49.357613+00:00 3 17 3
+3089 2025-12-28 23:37:23.964079+00 33 generate_image_prompts - error - 2025-11-26 19:11:32.344313+00:00 3 17 3
+3090 2025-12-28 23:37:23.964088+00 32 generate_image_prompts - error - 2025-11-26 19:04:39.416420+00:00 3 17 3
+3091 2025-12-28 23:37:23.964097+00 31 generate_content - success - 2025-11-26 19:04:09.740472+00:00 3 17 3
+3092 2025-12-28 23:37:23.964106+00 30 generate_image_prompts - error - 2025-11-26 19:03:22.993941+00:00 3 17 3
+3093 2025-12-28 23:37:23.964115+00 29 generate_content - success - 2025-11-26 18:25:49.106572+00:00 3 17 3
+3094 2025-12-28 23:37:23.964124+00 28 generate_content - error - 2025-11-26 18:24:00.648596+00:00 3 17 3
+3095 2025-12-28 23:37:23.964132+00 27 generate_content - error - 2025-11-26 18:20:24.421536+00:00 3 17 3
+3096 2025-12-28 23:37:23.964141+00 26 generate_content - error - 2025-11-26 18:18:52.258056+00:00 3 17 3
+3097 2025-12-28 23:37:23.96415+00 25 generate_content - error - 2025-11-26 18:17:08.765440+00:00 3 17 3
+3098 2025-12-28 23:37:23.964158+00 24 generate_content - error - 2025-11-26 18:16:10.644592+00:00 3 17 3
+3099 2025-12-28 23:37:23.964167+00 23 generate_content - error - 2025-11-26 18:15:16.567013+00:00 3 17 3
+3100 2025-12-28 23:37:23.964175+00 22 generate_content - error - 2025-11-26 18:14:58.223196+00:00 3 17 3
+3101 2025-12-28 23:37:23.964184+00 21 generate_content - error - 2025-11-26 18:14:50.497090+00:00 3 17 3
+3102 2025-12-28 23:37:23.964193+00 20 generate_content - error - 2025-11-26 18:02:39.612905+00:00 3 17 3
+3103 2025-12-28 23:37:23.964202+00 19 generate_content - error - 2025-11-26 17:59:08.031485+00:00 3 17 3
+3104 2025-12-28 23:37:23.964211+00 18 generate_content - error - 2025-11-26 17:48:04.647085+00:00 3 17 3
+3105 2025-12-28 23:37:23.96422+00 17 generate_content - error - 2025-11-26 17:21:42.396223+00:00 3 17 3
+3106 2025-12-28 23:37:23.964229+00 16 generate_page_content - success - 2025-11-26 17:20:34.524430+00:00 3 17 3
+3107 2025-12-28 23:37:23.964238+00 15 generate_page_content - success - 2025-11-26 17:19:52.118121+00:00 3 17 3
+3108 2025-12-28 23:37:23.96426+00 14 generate_page_content - error - 2025-11-26 17:17:32.188395+00:00 3 17 3
+3109 2025-12-28 23:37:23.964269+00 13 generate_page_content - error - 2025-11-26 17:15:47.887312+00:00 3 17 3
+3110 2025-12-28 23:37:23.964279+00 12 generate_content - error - 2025-11-26 16:36:30.839949+00:00 3 17 3
+3111 2025-12-28 23:37:23.964288+00 11 generate_content - error - 2025-11-26 16:08:00.895933+00:00 3 17 3
+3112 2025-12-28 23:37:23.964296+00 10 generate_content - error - 2025-11-26 15:49:03.548062+00:00 3 17 3
+3113 2025-12-28 23:37:23.964305+00 9 generate_ideas - success - 2025-11-26 15:21:15.303166+00:00 3 17 3
+3114 2025-12-28 23:37:23.964314+00 8 generate_ideas - success - 2025-11-26 13:18:56.447729+00:00 3 17 3
+3115 2025-12-28 23:37:23.964323+00 7 generate_ideas - success - 2025-11-26 13:00:05.253574+00:00 3 17 3
+3116 2025-12-28 23:37:23.964332+00 6 generate_ideas - error - 2025-11-26 12:30:46.975377+00:00 3 17 3
+3117 2025-12-28 23:37:23.964341+00 5 generate_ideas - error - 2025-11-26 12:28:08.996747+00:00 3 17 3
+3118 2025-12-28 23:37:23.96435+00 4 generate_ideas - error - 2025-11-26 12:08:01.843018+00:00 3 17 3
+3119 2025-12-28 23:37:23.964358+00 3 auto_cluster - success - 2025-11-26 12:06:14.611293+00:00 3 17 3
+3120 2025-12-28 23:37:23.964367+00 2 generate_ideas - error - 2025-11-22 01:40:07.520471+00:00 3 17 3
+3121 2025-12-28 23:37:23.964378+00 1 generate_ideas - error - 2025-11-22 01:39:00.036950+00:00 3 17 3
+3123 2025-12-28 23:37:55.706547+00 646 3 70 3
+3124 2025-12-28 23:37:55.706559+00 645 3 70 3
+3125 2025-12-28 23:37:55.706572+00 644 3 70 3
+3126 2025-12-28 23:37:55.706585+00 643 3 70 3
+3127 2025-12-28 23:37:55.706597+00 642 3 70 3
+3128 2025-12-28 23:37:55.70661+00 641 3 70 3
+3129 2025-12-28 23:37:55.706623+00 640 3 70 3
+3130 2025-12-28 23:37:55.706635+00 639 3 70 3
+3131 2025-12-28 23:37:55.706645+00 638 3 70 3
+3132 2025-12-28 23:37:55.706653+00 637 3 70 3
+3133 2025-12-28 23:37:55.706661+00 636 3 70 3
+3134 2025-12-28 23:37:55.706669+00 635 3 70 3
+3135 2025-12-28 23:37:55.706677+00 634 3 70 3
+3136 2025-12-28 23:37:55.706685+00 633 3 70 3
+3137 2025-12-28 23:37:55.706693+00 632 3 70 3
+3138 2025-12-28 23:37:55.706701+00 631 3 70 3
+3139 2025-12-28 23:37:55.70671+00 630 3 70 3
+3140 2025-12-28 23:37:55.706731+00 629 3 70 3
+3141 2025-12-28 23:37:55.706753+00 628 3 70 3
+3142 2025-12-28 23:37:55.706767+00 627 3 70 3
+3143 2025-12-28 23:37:55.706777+00 626 3 70 3
+3144 2025-12-28 23:37:55.706785+00 625 3 70 3
+3145 2025-12-28 23:37:55.706793+00 624 3 70 3
+3146 2025-12-28 23:37:55.706801+00 623 3 70 3
+3147 2025-12-28 23:37:55.706809+00 622 3 70 3
+3148 2025-12-28 23:37:55.706817+00 621 3 70 3
+3149 2025-12-28 23:37:55.706826+00 620 3 70 3
+3150 2025-12-28 23:37:55.706834+00 619 3 70 3
+3151 2025-12-28 23:37:55.706841+00 618 3 70 3
+3152 2025-12-28 23:37:55.706849+00 617 3 70 3
+3153 2025-12-28 23:37:55.706857+00 616 3 70 3
+3154 2025-12-28 23:37:55.706865+00 615 3 70 3
+3155 2025-12-28 23:37:55.706873+00 614 3 70 3
+3156 2025-12-28 23:37:55.70688+00 613 3 70 3
+3157 2025-12-28 23:37:55.706888+00 612 3 70 3
+3158 2025-12-28 23:37:55.706895+00 611 3 70 3
+3159 2025-12-28 23:37:55.706903+00 610 3 70 3
+3160 2025-12-28 23:37:55.70691+00 609 3 70 3
+3161 2025-12-28 23:37:55.706918+00 608 3 70 3
+3162 2025-12-28 23:37:55.706926+00 607 3 70 3
+3163 2025-12-28 23:37:55.706933+00 606 3 70 3
+3164 2025-12-28 23:37:55.706941+00 605 3 70 3
+3165 2025-12-28 23:37:55.706949+00 604 3 70 3
+3166 2025-12-28 23:37:55.706957+00 603 3 70 3
+3167 2025-12-28 23:37:55.706965+00 602 3 70 3
+3168 2025-12-28 23:37:55.706973+00 601 3 70 3
+3169 2025-12-28 23:37:55.706981+00 600 3 70 3
+3170 2025-12-28 23:37:55.706991+00 599 3 70 3
+3171 2025-12-28 23:37:55.707013+00 598 3 70 3
+3172 2025-12-28 23:37:55.707034+00 597 3 70 3
+3173 2025-12-28 23:37:55.707047+00 596 3 70 3
+3174 2025-12-28 23:37:55.707057+00 595 3 70 3
+3175 2025-12-28 23:37:55.707066+00 594 3 70 3
+3176 2025-12-28 23:37:55.707074+00 593 3 70 3
+3177 2025-12-28 23:37:55.707082+00 592 3 70 3
+3178 2025-12-28 23:37:55.70709+00 591 3 70 3
+3179 2025-12-28 23:37:55.707097+00 590 3 70 3
+3180 2025-12-28 23:37:55.707105+00 589 3 70 3
+3181 2025-12-28 23:37:55.707112+00 588 3 70 3
+3182 2025-12-28 23:37:55.707119+00 587 3 70 3
+3183 2025-12-28 23:37:55.707127+00 586 3 70 3
+3184 2025-12-28 23:37:55.707135+00 585 3 70 3
+3185 2025-12-28 23:37:55.707143+00 584 3 70 3
+3186 2025-12-28 23:37:55.707151+00 583 3 70 3
+3187 2025-12-28 23:37:55.707159+00 582 3 70 3
+3188 2025-12-28 23:37:55.707167+00 581 3 70 3
+3189 2025-12-28 23:37:55.707174+00 580 3 70 3
+3190 2025-12-28 23:37:55.707186+00 579 3 70 3
+3191 2025-12-28 23:37:55.707194+00 578 3 70 3
+3192 2025-12-28 23:37:55.707201+00 577 3 70 3
+3193 2025-12-28 23:37:55.707208+00 576 3 70 3
+3194 2025-12-28 23:37:55.707216+00 575 3 70 3
+3195 2025-12-28 23:37:55.707223+00 574 3 70 3
+3196 2025-12-28 23:37:55.70723+00 573 3 70 3
+3197 2025-12-28 23:37:55.707237+00 572 3 70 3
+3198 2025-12-28 23:37:55.707292+00 571 3 70 3
+3199 2025-12-28 23:37:55.707309+00 570 3 70 3
+3200 2025-12-28 23:37:55.707321+00 569 3 70 3
+3201 2025-12-28 23:37:55.70733+00 568 3 70 3
+3202 2025-12-28 23:37:55.707338+00 567 3 70 3
+3203 2025-12-28 23:37:55.707346+00 566 3 70 3
+3204 2025-12-28 23:37:55.707354+00 565 3 70 3
+3205 2025-12-28 23:37:55.707362+00 564 3 70 3
+3206 2025-12-28 23:37:55.70737+00 563 3 70 3
+3207 2025-12-28 23:37:55.707377+00 562 3 70 3
+3208 2025-12-28 23:37:55.707385+00 561 3 70 3
+3209 2025-12-28 23:37:55.707393+00 560 3 70 3
+3210 2025-12-28 23:37:55.7074+00 559 3 70 3
+3211 2025-12-28 23:37:55.707417+00 558 3 70 3
+3212 2025-12-28 23:37:55.70743+00 557 3 70 3
+3213 2025-12-28 23:37:55.707441+00 556 3 70 3
+3214 2025-12-28 23:37:55.707453+00 555 3 70 3
+3215 2025-12-28 23:37:55.707463+00 554 3 70 3
+3216 2025-12-28 23:37:55.707471+00 553 3 70 3
+3217 2025-12-28 23:37:55.707478+00 552 3 70 3
+3218 2025-12-28 23:37:55.707485+00 551 3 70 3
+3219 2025-12-28 23:37:55.707492+00 550 3 70 3
+3220 2025-12-28 23:37:55.707499+00 549 3 70 3
+3221 2025-12-28 23:37:55.707506+00 548 3 70 3
+3222 2025-12-28 23:37:55.707514+00 547 3 70 3
+3223 2025-12-28 23:37:55.707521+00 546 3 70 3
+3224 2025-12-28 23:37:55.707529+00 545 3 70 3
+3225 2025-12-28 23:37:55.707536+00 544 3 70 3
+3226 2025-12-28 23:37:55.707545+00 543 3 70 3
+3227 2025-12-28 23:37:55.707595+00 542 3 70 3
+3228 2025-12-28 23:37:55.707604+00 541 3 70 3
+3334 2025-12-29 02:55:56.587795+00 12 image_generation - Paid 2 3 32 3
+3229 2025-12-28 23:37:55.707612+00 540 3 70 3
+3230 2025-12-28 23:37:55.707619+00 539 3 70 3
+3231 2025-12-28 23:37:55.707628+00 538 3 70 3
+3232 2025-12-28 23:37:55.707635+00 537 3 70 3
+3233 2025-12-28 23:37:55.707641+00 536 3 70 3
+3234 2025-12-28 23:37:55.707649+00 535 3 70 3
+3235 2025-12-28 23:37:55.707656+00 534 3 70 3
+3236 2025-12-28 23:37:55.707663+00 533 3 70 3
+3237 2025-12-28 23:37:55.707671+00 532 3 70 3
+3238 2025-12-28 23:37:55.707678+00 531 3 70 3
+3239 2025-12-28 23:37:55.707686+00 530 3 70 3
+3240 2025-12-28 23:37:55.707694+00 529 3 70 3
+3241 2025-12-28 23:37:55.707702+00 528 3 70 3
+3242 2025-12-28 23:37:55.707709+00 527 3 70 3
+3243 2025-12-28 23:37:55.707716+00 526 3 70 3
+3244 2025-12-28 23:37:55.707723+00 525 3 70 3
+3245 2025-12-28 23:37:55.70773+00 524 3 70 3
+3246 2025-12-28 23:37:55.707737+00 523 3 70 3
+3247 2025-12-28 23:37:55.707745+00 522 3 70 3
+3248 2025-12-28 23:37:55.707752+00 521 3 70 3
+3249 2025-12-28 23:37:55.70776+00 520 3 70 3
+3250 2025-12-28 23:37:55.707767+00 519 3 70 3
+3251 2025-12-28 23:37:55.707775+00 518 3 70 3
+3252 2025-12-28 23:37:55.707783+00 517 3 70 3
+3253 2025-12-28 23:37:55.70779+00 516 3 70 3
+3254 2025-12-28 23:37:55.707797+00 515 3 70 3
+3255 2025-12-28 23:37:55.707804+00 514 3 70 3
+3256 2025-12-28 23:37:55.707812+00 513 3 70 3
+3257 2025-12-28 23:37:55.707819+00 512 3 70 3
+3258 2025-12-28 23:37:55.707827+00 511 3 70 3
+3259 2025-12-28 23:37:55.707835+00 510 3 70 3
+3260 2025-12-28 23:37:55.707842+00 509 3 70 3
+3261 2025-12-28 23:37:55.707849+00 508 3 70 3
+3262 2025-12-28 23:37:55.707856+00 507 3 70 3
+3263 2025-12-28 23:37:55.707863+00 506 3 70 3
+3264 2025-12-28 23:37:55.707871+00 505 3 70 3
+3265 2025-12-28 23:37:55.707878+00 504 3 70 3
+3266 2025-12-28 23:37:55.707886+00 503 3 70 3
+3267 2025-12-28 23:37:55.707893+00 471 3 70 3
+3268 2025-12-28 23:37:55.7079+00 470 3 70 3
+3269 2025-12-28 23:37:55.707907+00 469 3 70 3
+3270 2025-12-28 23:37:55.707914+00 468 3 70 3
+3271 2025-12-28 23:37:55.707921+00 467 3 70 3
+3272 2025-12-28 23:37:55.707929+00 466 3 70 3
+3273 2025-12-28 23:37:55.707936+00 465 3 70 3
+3274 2025-12-28 23:37:55.707943+00 464 3 70 3
+3275 2025-12-28 23:37:55.70795+00 463 3 70 3
+3276 2025-12-28 23:37:55.707958+00 462 3 70 3
+3277 2025-12-28 23:38:24.473739+00 64 run_20251228_231029_manual - https://site2.com (completed) 3 61 3
+3278 2025-12-28 23:38:24.473769+00 63 run_20251228_205315_manual - https://site2.com (completed) 3 61 3
+3279 2025-12-28 23:38:24.47378+00 62 run_20251228_204025_manual - https://site2.com (cancelled) 3 61 3
+3280 2025-12-28 23:38:24.473789+00 61 run_20251228_201101_manual - https://site2.com (completed) 3 61 3
+3281 2025-12-28 23:38:24.473799+00 60 run_20251228_192347_manual - https://site2.com (completed) 3 61 3
+3282 2025-12-28 23:38:24.473807+00 59 run_20251228_022218_manual - https://site2.com (cancelled) 3 61 3
+3283 2025-12-28 23:38:24.473816+00 58 run_20251213_020000_scheduled - https://site3.com (completed) 3 61 3
+3284 2025-12-28 23:38:24.473825+00 55 run_20251212_020000_scheduled - https://massagersmart.com (completed) 3 61 3
+3285 2025-12-28 23:38:24.473834+00 52 run_20251211_020000_scheduled - https://homeg8.com (completed) 3 61 3
+3286 2025-12-28 23:38:24.473842+00 51 run_20251210_143648_manual - https://site3.com (completed) 3 61 3
+3287 2025-12-28 23:38:24.473851+00 50 run_20251210_081817_manual - https://site3.com (completed) 3 61 3
+3288 2025-12-28 23:38:24.473859+00 48 run_20251210_020000_scheduled - https://massagersmart.com (completed) 3 61 3
+3289 2025-12-28 23:38:24.473867+00 46 run_20251209_020000_scheduled - https://homeg8.com (completed) 3 61 3
+3290 2025-12-28 23:38:24.473875+00 44 run_20251208_020000_scheduled - https://massagersmart.com (completed) 3 61 3
+3291 2025-12-28 23:38:24.473883+00 42 run_20251207_020000_scheduled - https://homeg8.com (completed) 3 61 3
+3292 2025-12-28 23:38:24.473891+00 41 run_20251206_172508_manual - https://homeg8.com (completed) 3 61 3
+3293 2025-12-28 23:38:24.473899+00 39 run_20251206_020000_scheduled - https://massagersmart.com (completed) 3 61 3
+3294 2025-12-28 23:38:24.473908+00 37 run_20251205_020000_scheduled - https://homeg8.com (completed) 3 61 3
+3295 2025-12-28 23:38:24.473916+00 36 run_20251204_225515_manual - https://massagersmart.com (completed) 3 61 3
+3296 2025-12-28 23:38:24.473924+00 35 run_20251204_223140_manual - https://massagersmart.com (completed) 3 61 3
+3297 2025-12-28 23:38:24.473933+00 34 run_20251204_222749_manual - https://massagersmart.com (completed) 3 61 3
+3298 2025-12-28 23:38:24.47394+00 33 run_20251204_222704_manual - https://massagersmart.com (completed) 3 61 3
+3299 2025-12-28 23:38:24.473948+00 32 run_20251204_222151_manual - https://massagersmart.com (completed) 3 61 3
+3300 2025-12-28 23:38:24.473955+00 31 run_20251204_221247_manual - https://massagersmart.com (completed) 3 61 3
+3301 2025-12-28 23:38:24.473963+00 30 run_20251204_214932_manual - https://massagersmart.com (completed) 3 61 3
+3302 2025-12-28 23:38:24.473973+00 29 run_20251204_210125_manual - https://massagersmart.com (completed) 3 61 3
+3303 2025-12-28 23:38:24.473984+00 28 run_20251204_201240_manual - https://massagersmart.com (completed) 3 61 3
+3304 2025-12-28 23:38:24.473995+00 27 run_20251204_193731_manual - https://massagersmart.com (completed) 3 61 3
+3305 2025-12-28 23:38:24.474021+00 26 run_20251204_190332_manual - https://massagersmart.com (completed) 3 61 3
+3306 2025-12-28 23:38:24.474038+00 25 run_20251204_183544_manual - https://massagersmart.com (completed) 3 61 3
+3307 2025-12-28 23:38:24.474051+00 24 run_20251204_182857_manual - https://massagersmart.com (completed) 3 61 3
+3308 2025-12-28 23:38:24.474062+00 23 run_20251204_182756_manual - https://homeg8.com (completed) 3 61 3
+3309 2025-12-28 23:38:24.474074+00 22 run_20251204_175757_manual - https://homeg8.com (completed) 3 61 3
+3310 2025-12-28 23:38:24.474096+00 21 run_20251204_170218_manual - https://massagersmart.com (completed) 3 61 3
+3311 2025-12-28 23:38:24.474113+00 20 run_20251204_162324_manual - https://homeg8.com (completed) 3 61 3
+3312 2025-12-28 23:38:24.474125+00 19 run_20251204_155204_manual - https://homeg8.com (cancelled) 3 61 3
+3313 2025-12-28 23:38:24.474138+00 18 run_20251204_152338_manual - https://massagersmart.com (cancelled) 3 61 3
+3314 2025-12-28 23:38:24.474149+00 17 run_20251204_145103_manual - https://homeg8.com (completed) 3 61 3
+3315 2025-12-28 23:38:24.474161+00 16 run_20251204_110942_manual - https://homeg8.com (completed) 3 61 3
+3316 2025-12-28 23:38:24.474173+00 15 run_20251204_101041_manual - https://homeg8.com (completed) 3 61 3
+3317 2025-12-28 23:38:24.474184+00 13 run_20251204_020000_scheduled - https://massagersmart.com (completed) 3 61 3
+3318 2025-12-28 23:38:24.474194+00 12 run_20251203_210914_manual - https://massagersmart.com (completed) 3 61 3
+3319 2025-12-28 23:38:24.474202+00 11 run_20251203_191408_manual - https://massagersmart.com (completed) 3 61 3
+3320 2025-12-28 23:38:24.474211+00 10 run_20251203_184943_manual - https://massagersmart.com (failed) 3 61 3
+3321 2025-12-28 23:38:24.474219+00 9 run_20251203_155435_manual - https://homeg8.com (failed) 3 61 3
+3322 2025-12-28 23:38:24.474228+00 8 run_20251203_134835_manual - https://homeg8.com (failed) 3 61 3
+3323 2025-12-28 23:38:24.474236+00 7 run_20251203_122227_manual - https://homeg8.com (failed) 3 61 3
+3324 2025-12-28 23:38:24.474269+00 6 run_20251203_113441_manual - https://homeg8.com (failed) 3 61 3
+3325 2025-12-28 23:38:24.474277+00 5 run_20251203_113251_manual - https://homeg8.com (failed) 3 61 3
+3326 2025-12-28 23:38:24.474285+00 4 run_20251203_112550_manual - https://homeg8.com (failed) 3 61 3
+3327 2025-12-28 23:38:24.474293+00 2 run_20251203_110421_manual - https://homeg8.com (failed) 3 61 3
+3328 2025-12-28 23:38:24.474304+00 1 run_20251203_103615_manual - https://homeg8.com (failed) 3 61 3
+3329 2025-12-28 23:38:42.367444+00 4 Error - Exception publishing 'Creating the perfect outdoor 3 59 3
+3330 2025-12-28 23:38:42.367521+00 3 Error - Failed to publish content 'Creating the perfect ou 3 59 3
+3331 2025-12-28 23:38:42.367547+00 2 Error - Exception publishing 'Creating the perfect outdoor 3 59 3
+3332 2025-12-28 23:38:42.367573+00 1 Error - Exception publishing 'Creating the perfect outdoor 3 59 3
+3333 2025-12-28 23:40:00.378702+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model", "Openai max tokens"]}}] 77 3
+3335 2025-12-29 02:58:03.959781+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Desktop image size"]}}] 77 3
+3337 2025-12-29 02:59:06.661984+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Desktop image size"]}}] 77 3
+3339 2025-12-29 03:09:43.441133+00 1 Keyword Clustering - 1000 tokens/credit 2 [{"changed": {"fields": ["Price per credit usd"]}}] 62 3
+3340 2025-12-29 03:10:00.83989+00 3 Content Generation - 1000 tokens/credit 2 [{"changed": {"fields": ["Price per credit usd"]}}] 62 3
+3341 2025-12-29 03:10:18.183283+00 2 Content Ideas Generation - 1000 tokens/credit 2 [{"changed": {"fields": ["Price per credit usd"]}}] 62 3
+3342 2025-12-29 03:12:07.932024+00 5 Image Generation - 50 tokens/credit 2 [{"changed": {"fields": ["Price per credit usd"]}}] 62 3
+3343 2025-12-29 03:12:26.59208+00 4 Image Prompt Extraction - 1000 tokens/credit 2 [{"changed": {"fields": ["Price per credit usd"]}}] 62 3
+3344 2025-12-29 03:20:27.14115+00 4 Growth 2 [{"changed": {"fields": ["Included credits"]}}] 6 3
+3345 2025-12-29 03:21:58.128814+00 2 Starter 2 [{"changed": {"fields": ["Included credits"]}}] 6 3
+3346 2025-12-29 03:22:12.236016+00 5 Scale 2 [{"changed": {"fields": ["Included credits"]}}] 6 3
+3347 2025-12-29 03:22:49.995223+00 2 Starter 2 [{"changed": {"fields": ["Price", "Original price"]}}] 6 3
+3348 2025-12-29 03:23:10.709175+00 4 Growth 2 [{"changed": {"fields": ["Price", "Original price"]}}] 6 3
+3349 2025-12-29 03:24:15.092908+00 5 Scale 2 [{"changed": {"fields": ["Price", "Original price"]}}] 6 3
+3350 2025-12-29 03:42:39.395041+00 1 Billing Configuration (1 credit = 100 tokens) 2 [{"changed": {"fields": ["Default credit price usd"]}}] 76 3
+3351 2025-12-29 03:57:22.109862+00 1 Billing Configuration (1 credit = 1000 tokens) 2 [{"changed": {"fields": ["Default tokens per credit"]}}] 76 3
+3352 2025-12-30 07:18:52.58019+00 90 Paid 2 2 [{"changed": {"fields": ["Payment method"]}}] 8 3
+3353 2025-12-31 20:57:41.810181+00 25 90 - Mobile Wallet (Manual) (bank_transfer) 2 [{"changed": {"fields": ["Type"]}}] 67 3
+3354 2025-12-31 20:58:04.33065+00 25 90 - Bank Transfer (bank_transfer) 2 [{"changed": {"fields": ["Display name"]}}] 67 3
+3355 2025-12-31 21:03:27.810366+00 14 PK - Local Wallet (Manual) 2 [{"changed": {"fields": ["Country code"]}}] 66 3
+3356 2025-12-31 21:03:33.923599+00 14 PK - Local Wallet (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+3357 2025-12-31 21:05:02.737338+00 14 PK - Local Wallet (Manual) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+3358 2026-01-01 00:57:42.75763+00 16 Paid 2 - Massagers Mart 2 [{"changed": {"fields": ["Account"]}}] 13 3
+3359 2026-01-01 00:58:04.276601+00 16 Paid 2 - Massagers Mart 2 [{"changed": {"fields": ["Is active"]}}] 13 3
+3360 2026-01-01 01:50:07.876494+00 2 GPT-4.1 - Legacy Model 2 [{"changed": {"fields": ["Is active"]}}] 84 3
+3361 2026-01-01 02:11:28.543345+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model"]}}] 77 3
+3362 2026-01-01 03:00:14.790752+00 211 Top Places to Buy a Back Massager Nearby (Including Walmart) 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3365 2026-01-01 04:40:05.09721+00 21 Paid 2 - Test Site 2 2 [{"changed": {"fields": ["Domain"]}}] 13 3
+3366 2026-01-01 04:41:06.727935+00 21 Paid 2 - Massagers Mart 2 [{"changed": {"fields": ["Name"]}}] 13 3
+3367 2026-01-01 05:35:31.277024+00 210 Back Massager Walmart Shopping Guide: In-Store and Pickup 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3368 2026-01-01 05:35:42.397579+00 209 How to Find the Best Back Massager Near Me in Minutes 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3369 2026-01-01 05:35:55.277285+00 208 Complete Guide to Buying a Back Massager Near You 2 [{"changed": {"fields": ["Status", "Content html"]}}] 21 3
+3370 2026-01-01 05:36:04.759319+00 207 7 Best Back Massagers with Heat and Massage Gun Designs 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3371 2026-01-01 05:36:16.553946+00 206 Back Massager Handheld vs Gun: Which Is Better for You? 2 [{"changed": {"fields": ["Status", "Content html"]}}] 21 3
+3372 2026-01-01 05:36:30.310046+00 205 How to Use a Back Massager with Heat Safely and Effectively 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3373 2026-01-01 05:36:43.193396+00 204 Complete Guide to Back Massagers with Heat and Handheld Designs 2 [{"changed": {"fields": ["Status", "Content html"]}}] 21 3
+3374 2026-01-01 05:36:54.658861+00 203 7 Best Back Massager Sticks and Hooks for Shoulder Relief 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3375 2026-01-01 05:37:04.351041+00 202 Back Massager for Chair Guide: Turn Any Seat Into a Relaxation Zone 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3376 2026-01-01 05:37:14.075509+00 201 How to Use a Back Hook Massager for Neck and Shoulder Knots 2 [{"changed": {"fields": ["Status", "Content structure", "Content html"]}}] 21 3
+3377 2026-01-01 05:37:35.821861+00 200 Complete Guide to Back Massagers for Back, Neck, and Shoulders 2 [{"changed": {"fields": ["Status", "Content html"]}}] 21 3
+3378 2026-01-01 05:38:27.111819+00 210 Back Massager Walmart Shopping Guide: In-Store and Pickup 2 [{"changed": {"fields": ["Status"]}}] 21 3
+3379 2026-01-01 06:10:40.216389+00 90 Paid 2 2 [{"changed": {"fields": ["Credits"]}}] 8 3
+3482 2026-01-12 11:32:33.482988+00 42 Paid 2 - home site 3 13 3
+3484 2026-01-12 11:33:48.450599+00 145 tacbit 3 8 3
+3489 2026-01-12 11:36:24.072262+00 72 sadad - Dermatology Clinics 3 14 3
+3490 2026-01-12 11:36:24.072313+00 71 sadad - Fragrances 3 14 3
+3491 2026-01-12 11:36:24.072328+00 70 asdsad - Beauty Devices & Tools 3 14 3
+3492 2026-01-12 11:36:24.072342+00 69 asdsad - Spa & Salon Services 3 14 3
+3493 2026-01-12 11:36:24.072356+00 68 asdas - Sportswear & Activewear 3 14 3
+3496 2026-01-12 11:37:54.543989+00 143 Salman Sadiq 3 8 3
+3497 2026-01-12 11:37:54.544023+00 133 Tester 140 3 8 3
+3498 2026-01-12 11:37:54.544035+00 132 tester 130 3 8 3
+3502 2026-01-12 11:42:03.392407+00 51 Massagers Mart - Kidswear 3 14 3
+3503 2026-01-12 11:42:03.392484+00 50 Massagers Mart - Footwear 3 14 3
+3504 2026-01-12 11:42:03.392504+00 43 Massagers Mart - Physiotherapy & Rehabilitation 3 14 3
+3506 2026-01-12 11:42:52.790246+00 51 Massagers Mart - Kidswear 3 14 3
+3507 2026-01-12 11:42:52.790282+00 50 Massagers Mart - Footwear 3 14 3
+3509 2026-01-12 12:17:10.310556+00 41 Paid 2 - My Site 1 3 13 3
+3510 2026-01-12 12:17:10.310592+00 5 Paid 2 - Home & Garden Site 3 13 3
+3512 2026-01-12 16:02:17.024948+00 2 Massagers Mart - WordPress 3 52 3
+3536 2026-01-12 16:03:33.848746+00 445 electric massager for back pain 3 18 3
+3537 2026-01-12 16:03:33.848758+00 444 electric back massager 3 18 3
+3538 2026-01-12 16:03:33.84877+00 443 deep tissue back massager 3 18 3
+3539 2026-01-12 16:03:33.848777+00 442 chair back massager 3 18 3
+3540 2026-01-12 16:03:33.848785+00 441 car back massager 3 18 3
+3541 2026-01-12 16:03:33.848793+00 440 best neck and back massager 3 18 3
+3542 2026-01-12 16:03:33.8488+00 439 best massager for back 3 18 3
+3543 2026-01-12 16:03:33.848808+00 438 best lower back massager 3 18 3
+3544 2026-01-12 16:03:33.848815+00 437 best handheld back massager 3 18 3
+3545 2026-01-12 16:03:33.848823+00 436 best back massager for lower back pain 3 18 3
+3546 2026-01-12 16:03:33.848835+00 435 best back massager for knots 3 18 3
+3547 2026-01-12 16:03:33.848847+00 434 best back massager for chair 3 18 3
+3548 2026-01-12 16:03:33.848858+00 433 best back massager 3 18 3
+3549 2026-01-12 16:03:33.848866+00 432 best back and neck massager 3 18 3
+3550 2026-01-12 16:03:33.848873+00 431 back vibrating massager 3 18 3
+3551 2026-01-12 16:03:33.848881+00 430 back roller massager 3 18 3
+3552 2026-01-12 16:03:33.848889+00 429 back massager with heat 3 18 3
+3553 2026-01-12 16:03:33.848896+00 428 back massager walmart 3 18 3
+3554 2026-01-12 16:03:33.848904+00 427 back massager stick 3 18 3
+3555 2026-01-12 16:03:33.848911+00 426 back massager near me 3 18 3
+3556 2026-01-12 16:03:33.848923+00 425 back massager nearby 3 18 3
+3557 2026-01-12 16:03:33.848935+00 424 back massager handheld 3 18 3
+3558 2026-01-12 16:03:33.848947+00 423 back massager gun 3 18 3
+3559 2026-01-12 16:03:33.848954+00 422 back massager for chair 3 18 3
+3560 2026-01-12 16:03:33.848961+00 421 back massager 3 18 3
+3561 2026-01-12 16:03:33.848968+00 420 back hook massager 3 18 3
+3562 2026-01-12 16:03:33.848975+00 419 back and shoulder massager 3 18 3
+3563 2026-01-12 16:03:33.848982+00 418 back and neck massager 3 18 3
+3564 2026-01-12 16:06:52.352974+00 19 Home & Garden Site - Home Decor 2 [{"changed": {"fields": ["Account"]}}] 14 3
+3565 2026-01-12 16:07:10.46729+00 18 Home & Garden Site - Interior Design 2 [{"changed": {"fields": ["Account"]}}] 14 3
+3566 2026-01-12 16:08:46.408987+00 19 Home & Garden Site - Home Decor 3 14 3
+3567 2026-01-12 16:08:46.409026+00 18 Home & Garden Site - Interior Design 3 14 3
+3568 2026-01-12 16:08:46.409042+00 17 Home & Garden Site - Landscaping 3 14 3
+3380 2026-01-03 07:47:00.62782+00 31 Paid 2 - asdas 3 13 3
+3381 2026-01-03 07:47:00.627862+00 29 Paid 2 - abc 3 13 3
+3382 2026-01-03 07:47:00.627877+00 28 Paid 2 - addad 3 13 3
+3383 2026-01-03 16:43:31.040281+00 8 GPT Image 1 (Not compatible with OpenAI) 3 84 3
+3384 2026-01-03 16:43:31.040329+00 9 GPT Image 1 Mini (Not compatible with OpenAI) 3 84 3
+3385 2026-01-03 16:43:31.040344+00 2 GPT-4.1 - Legacy Model 3 84 3
+3386 2026-01-03 17:07:17.929768+00 4 GPT-5.1 - Premium 2 [{"changed": {"fields": ["Display name", "Description", "Context window", "Max output tokens", "Supports vision"]}}] 84 3
+3387 2026-01-03 17:07:57.707686+00 11 Bria 3.2 - Premium 2 [{"changed": {"fields": ["Cost per image"]}}] 84 3
+3388 2026-01-03 17:08:20.353529+00 10 Hi Dream Full - Standard 2 [{"changed": {"fields": ["Cost per image"]}}] 84 3
+3389 2026-01-03 17:08:49.361774+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model"]}}] 77 3
+3390 2026-01-03 17:09:53.107871+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Runware model"]}}] 77 3
+3391 2026-01-03 17:29:24.694012+00 14 image_generation - AWS Admin 3 32 3
+3392 2026-01-03 17:29:34.556945+00 13 image_generation - Paid 2 3 32 3
+3393 2026-01-03 17:42:56.822167+00 15 image_generation - AWS Admin 3 32 3
+3394 2026-01-03 17:49:04.057699+00 508 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 23 3
+3395 2026-01-03 17:49:04.057773+00 507 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 23 3
+3396 2026-01-03 17:49:04.057795+00 506 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 23 3
+3397 2026-01-03 17:49:04.057823+00 505 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 23 3
+3398 2026-01-03 17:49:04.057845+00 504 Back Massager Walmart Shopping Guide: In-Store and Pickup - featured 3 23 3
+3399 2026-01-03 17:50:11.090049+00 488 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 23 3
+3400 2026-01-03 17:50:11.090092+00 487 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 23 3
+3401 2026-01-03 17:50:11.090112+00 486 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 23 3
+3402 2026-01-03 17:50:11.090128+00 485 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 23 3
+3403 2026-01-03 17:50:11.09014+00 484 Back Massager Handheld vs Gun: Which Is Better for You? - featured 3 23 3
+3404 2026-01-03 18:01:44.051927+00 16 image_generation - AWS Admin 3 32 3
+3405 2026-01-03 18:09:54.329236+00 206 Back Massager Handheld vs Gun: Which Is Better for You? 2 [{"changed": {"fields": ["Status"]}}] 21 3
+3406 2026-01-03 18:14:02.988343+00 210 Back Massager Walmart Shopping Guide: In-Store and Pickup 2 [{"changed": {"fields": ["Status"]}}] 21 3
+3407 2026-01-03 18:15:46.540471+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service"]}}] 77 3
+3408 2026-01-03 18:19:58.709424+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Dalle size"]}}] 77 3
+3409 2026-01-03 18:27:37.104834+00 17 image_generation - Paid 2 3 32 3
+3410 2026-01-03 18:43:53.237809+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service", "Image quality"]}}] 77 3
+3411 2026-01-03 18:53:33.495373+00 11 Bria 3.2 - Premium 2 [{"changed": {"fields": ["Model name"]}}] 84 3
+3412 2026-01-03 19:03:03.504991+00 6 DALL-E 3 - High Quality Images 2 [{"changed": {"fields": ["Model name", "Provider"]}}] 84 3
+3413 2026-01-03 19:05:05.25293+00 11 Bria 3.2 - Premium 2 [{"changed": {"fields": ["Valid sizes"]}}] 84 3
+3414 2026-01-03 19:05:25.169511+00 7 DALL-E 2 - Standard Quality 3 84 3
+3415 2026-01-03 19:28:08.749895+00 6 Nano Banana Pro - High Accuracy & Quality 2 [{"changed": {"fields": ["Model name", "Display name"]}}] 84 3
+3416 2026-01-03 20:11:36.606188+00 11 Bria 3.2 - Quality 2 [{"changed": {"fields": ["Cost per image"]}}] 84 3
+3417 2026-01-03 20:12:02.774148+00 10 Hi Dream Full - Basic 2 [{"changed": {"fields": ["Cost per image"]}}] 84 3
+3418 2026-01-03 20:12:02.848353+00 10 Hi Dream Full - Basic 2 [] 84 3
+3419 2026-01-03 20:12:02.948516+00 10 Hi Dream Full - Basic 2 [] 84 3
+3420 2026-01-03 20:12:21.727313+00 6 Nano Banana - Premium 2 [{"changed": {"fields": ["Cost per image"]}}] 84 3
+3421 2026-01-03 20:28:57.888478+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Openai model", "Runware model"]}}] 77 3
+3422 2026-01-03 21:02:13.170483+00 18 image_generation - Paid 2 3 32 3
+3423 2026-01-03 21:30:21.030209+00 5 Dall-E-3 - Quality 2 2 [{"changed": {"fields": ["Model name", "Display name", "Model type", "Cost per image"]}}] 84 3
+3424 2026-01-03 21:33:16.993201+00 5 Dall-E-3 - Quality 2 2 [{"changed": {"fields": ["Input cost per 1m", "Output cost per 1m", "Context window", "Max output tokens"]}}] 84 3
+3425 2026-01-03 21:40:15.930391+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service"]}}] 77 3
+3426 2026-01-03 21:45:02.106039+00 19 image_generation - Paid 2 3 32 3
+3427 2026-01-03 21:53:16.599801+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service"]}}] 77 3
+3428 2026-01-03 21:54:01.914341+00 1 Global Integration Settings 2 [{"changed": {"fields": ["Default image service"]}}] 77 3
+3429 2026-01-03 23:04:24.323476+00 11 Bria 3.2 - Quality 3 84 3
+3430 2026-01-05 06:39:25.025136+00 33 Paid 2 - sadad 3 13 3
+3431 2026-01-05 06:39:25.025212+00 32 Paid 2 - asdsad 3 13 3
+3432 2026-01-05 07:00:03.117181+00 35 Paid 2 - new site 3 13 3
+3433 2026-01-05 07:06:44.312968+00 36 Paid 2 - Auto G8 3 13 3
+3434 2026-01-07 00:44:06.488206+00 12 * - Stripe (Credit/Debit Card) 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+3435 2026-01-07 00:44:06.499966+00 13 * - PayPal 2 [{"changed": {"fields": ["Is enabled"]}}] 66 3
+3436 2026-01-07 02:16:18.898929+00 stripe Stripe (Credit Cards, Apple Pay Google Pay) - Active (Sandbox) 2 [{"changed": {"fields": ["Display name", "Api key", "Api secret", "Webhook secret", "Api endpoint"]}}] 88 3
+3437 2026-01-07 02:20:19.895662+00 stripe Stripe (Credit Cards, Apple Pay Google Pay) - Active (Sandbox) 2 [{"changed": {"fields": ["Config"]}}] 88 3
+3438 2026-01-07 02:20:20.288875+00 stripe Stripe (Credit Cards, Apple Pay Google Pay) - Active (Sandbox) 2 [{"changed": {"fields": ["Config"]}}] 88 3
+3439 2026-01-07 02:21:52.508792+00 2 Starter 2 [{"changed": {"fields": ["Stripe product id", "Stripe price id"]}}] 6 3
+3440 2026-01-07 02:22:26.827672+00 4 Growth 2 [{"changed": {"fields": ["Stripe product id", "Stripe price id"]}}] 6 3
+3441 2026-01-07 02:23:13.669066+00 5 Scale 2 [{"changed": {"fields": ["Stripe product id", "Stripe price id"]}}] 6 3
+3442 2026-01-07 02:43:04.182237+00 10 pk - Bank Transfer (Manual) 2 [{"changed": {"fields": ["Country code", "Instructions"]}}] 66 3
+3443 2026-01-07 02:43:13.919824+00 10 PK - Bank Transfer (Manual) 2 [{"changed": {"fields": ["Country code"]}}] 66 3
+3444 2026-01-07 03:17:20.090869+00 stripe Stripe (Credit/Debit Cards) - Active (Sandbox) 2 [{"changed": {"fields": ["Display name", "Webhook secret"]}}] 88 3
+3445 2026-01-07 03:31:39.234894+00 32 104 - Credit/Debit Card (Stripe) (stripe) 3 67 3
+3446 2026-01-07 03:32:04.454047+00 15 Alorig - pending_payment 3 16 3
+3447 2026-01-07 03:32:04.45408+00 8 Paid 1 - active 3 16 3
+3448 2026-01-07 03:32:04.454092+00 1 Scale Account - active 3 16 3
+3449 2026-01-07 03:32:35.599694+00 17 Invoice INV-104-202601-0001 - Alorig 3 64 3
+3450 2026-01-07 03:32:35.599739+00 16 Invoice INV-100-202512-0001 - sdadiaosdaodn 3 64 3
+3451 2026-01-07 03:32:35.599751+00 10 Invoice INV-89-202512-0001 - Paid 1 3 64 3
+3452 2026-01-07 03:32:35.599766+00 3 Invoice INV-14-202512-0001 - Scale Account 3 64 3
+3453 2026-01-07 03:32:55.449657+00 104 Alorig 3 8 3
+3454 2026-01-07 03:33:59.820476+00 134 bluesalman@hotmail.con 3 7 3
+3455 2026-01-07 04:16:50.52728+00 135 bluesalman@hotmail.con 3 7 3
+3456 2026-01-07 04:16:50.527323+00 137 salman@alorig.com 3 7 3
+3457 2026-01-07 04:17:12.1491+00 107 Salman Alorig 3 8 3
+3458 2026-01-07 04:17:12.149141+00 105 Slaman Sadiq 3 8 3
+3459 2026-01-07 04:17:30.351236+00 17 Salman Alorig - pending_payment 3 16 3
+3460 2026-01-07 04:17:30.351274+00 16 Slaman Sadiq - pending_payment 3 16 3
+3461 2026-01-07 04:17:44.227824+00 19 Invoice INV-107-202601-0001 - Salman Alorig 3 64 3
+3462 2026-01-07 04:17:44.227852+00 18 Invoice INV-105-202601-0001 - Slaman Sadiq 3 64 3
+3463 2026-01-07 04:18:10.191101+00 33 105 - Credit/Debit Card (Stripe) (stripe) 3 67 3
+3464 2026-01-07 04:18:10.191138+00 34 107 - Credit/Debit Card (Stripe) (stripe) 3 67 3
+3465 2026-01-07 05:20:45.254666+00 139 test3@tester.com 3 7 3
+3466 2026-01-07 05:33:45.935451+00 13 Payment 13 - Stripe (Credit/Debit Card) - 99.00 USD 2 [{"changed": {"fields": ["Approved by"]}}] 65 3
+3467 2026-01-07 05:34:35.535471+00 13 Payment 13 - Stripe (Credit/Debit Card) - 99.00 USD 2 [{"changed": {"fields": ["Manual reference"]}}] 65 3
+3468 2026-01-07 05:37:20.46241+00 40 113 - Credit/Debit Card (Stripe) (stripe) 2 [{"changed": {"fields": ["Is verified"]}}] 67 3
+3469 2026-01-07 07:31:26.786827+00 paypal PayPal - Active (Sandbox) 2 [{"changed": {"fields": ["Api key", "Api secret", "Webhook secret", "Config"]}}] 88 3
+3470 2026-01-07 07:31:26.929996+00 paypal PayPal - Active (Sandbox) 2 [{"changed": {"fields": ["Config", "Updated by"]}}] 88 3
+3471 2026-01-07 14:42:09.677528+00 20 Payment 20 - Bank Transfer (Manual) - 27522.00 PKR 2 [{"changed": {"fields": ["Currency", "Status"]}}] 65 3
+3472 2026-01-07 14:49:55.205642+00 37 Invoice INV-26010008 - Tester 10 Paypal 2 [{"changed": {"fields": ["Currency"]}}] 64 3
+3473 2026-01-07 18:28:05.234935+00 43 Invoice INV-26010002 - Test 10 Stripe 2 [{"changed": {"fields": ["Currency"]}}] 64 3
+3474 2026-01-07 22:16:42.356355+00 37 Payment 37 - Bank Transfer (Manual) - 199.00 USD 2 [{"changed": {"fields": ["Status"]}}] 65 3
+3475 2026-01-08 00:55:49.912414+00 resend Resend - Active 2 [{"changed": {"fields": ["Api secret"]}}] 88 3
+3476 2026-01-08 00:57:00.324414+00 resend Resend - Active 2 [{"changed": {"fields": ["Config"]}}] 88 3
+3477 2026-01-08 01:09:02.097999+00 resend Resend - Active 2 [{"changed": {"fields": ["Api key", "Api secret"]}}] 88 3
+3478 2026-01-08 02:07:54.874486+00 1 Email Settings (from: support@igny8.com) 2 [{"changed": {"fields": ["From email"]}}] 93 3
+3479 2026-01-08 02:51:48.935571+00 1 Email Settings (from: support@igny8.com) 2 [{"changed": {"fields": ["Company name", "Company address", "Logo url", "Support url", "Unsubscribe url"]}}] 93 3
+3480 2026-01-08 03:16:27.806469+00 1 Email Settings (from: support@igny8.com) 2 [] 93 3
+3481 2026-01-08 04:16:43.523105+00 1 Email Settings (from: support@igny8.com) 2 [{"changed": {"fields": ["Logo url"]}}] 93 3
+3483 2026-01-12 11:33:34.690117+00 141 Tester 1000 3 8 3
+3485 2026-01-12 11:36:07.05718+00 67 asdas - Menswear 3 14 3
+3486 2026-01-12 11:36:07.05723+00 66 addad - Personal Hygiene 3 14 3
+3487 2026-01-12 11:36:07.057254+00 65 addad - Makeup & Cosmetics 3 14 3
+3488 2026-01-12 11:36:07.057273+00 64 addad - Dermatology Clinics 3 14 3
+3494 2026-01-12 11:37:20.892134+00 30 Payment 30 - Stripe (Credit/Debit Card) - 99.00 USD 3 65 3
+3495 2026-01-12 11:37:20.892203+00 29 Payment 29 - Stripe (Credit/Debit Card) - 99.00 USD 3 65 3
+3499 2026-01-12 11:39:13.261181+00 75 My Site 1 - Auto Parts 3 14 3
+3500 2026-01-12 11:39:13.261218+00 74 My Site 1 - Auto Parts & Accessories 3 14 3
+3501 2026-01-12 11:39:13.261229+00 73 new site - Auto Parts & Accessories 3 14 3
+3505 2026-01-12 11:42:41.834288+00 43 Massagers Mart - Physiotherapy & Rehabilitation 3 14 3
+3508 2026-01-12 12:02:04.231609+00 12 Test Plan - Low Limits 3 6 3
+3511 2026-01-12 12:48:27.289323+00 12 Seedream 4.5 - High Quality 2 [{"changed": {"fields": ["Landscape size"]}}] 84 3
+3513 2026-01-12 16:03:33.848464+00 498 wahl back massager 3 18 3
+3514 2026-01-12 16:03:33.848507+00 497 vibrating back massager 3 18 3
+3515 2026-01-12 16:03:33.848519+00 467 venom back massager 3 18 3
+3516 2026-01-12 16:03:33.84853+00 465 shop back massager 3 18 3
+3517 2026-01-12 16:03:33.848538+00 464 shiatsu neck and back massager 3 18 3
+3518 2026-01-12 16:03:33.84855+00 463 shiatsu back massager 3 18 3
+3519 2026-01-12 16:03:33.848564+00 462 shiatsu back and neck massager 3 18 3
+3520 2026-01-12 16:03:33.848578+00 461 self back massager 3 18 3
+3521 2026-01-12 16:03:33.848589+00 460 renpho back massager 3 18 3
+3522 2026-01-12 16:03:33.848598+00 459 python programming 3 18 3
+3523 2026-01-12 16:03:33.848606+00 458 portable back massager 3 18 3
+3524 2026-01-12 16:03:33.848614+00 457 neck and back massager 3 18 3
+3525 2026-01-12 16:03:33.848622+00 456 medical software 3 18 3
+3526 2026-01-12 16:03:33.848629+00 455 massager for back pain 3 18 3
+3527 2026-01-12 16:03:33.848637+00 454 massager for back 3 18 3
+3528 2026-01-12 16:03:33.848649+00 453 massager back 3 18 3
+3529 2026-01-12 16:03:33.848685+00 452 lower back massager 3 18 3
+3530 2026-01-12 16:03:33.848695+00 451 is it safe to use a vibrating back massager during pregnancy 3 18 3
+3531 2026-01-12 16:03:33.848703+00 450 hyperice back massager 3 18 3
+3532 2026-01-12 16:03:33.848711+00 449 homedics back massager 3 18 3
+3533 2026-01-12 16:03:33.848718+00 448 heated back massager 3 18 3
+3534 2026-01-12 16:03:33.848725+00 447 handheld back massager 3 18 3
+3535 2026-01-12 16:03:33.848734+00 446 hand held back massager 3 18 3
+3569 2026-01-12 16:08:46.409056+00 16 Home & Garden Site - Home Improvement 3 14 3
+3570 2026-01-12 16:08:46.409068+00 15 Home & Garden Site - Gardening 3 14 3
+3571 2026-01-12 16:33:09.411912+00 15 Home & Garden Site - Gardening 3 99 3
+3572 2026-01-12 16:33:09.411953+00 16 Home & Garden Site - Home Improvement 3 99 3
+3573 2026-01-12 16:33:09.411967+00 17 Home & Garden Site - Landscaping 3 99 3
+3574 2026-01-12 16:33:09.411979+00 18 Home & Garden Site - Interior Design 3 99 3
+3575 2026-01-12 16:33:09.411992+00 19 Home & Garden Site - Home Decor 3 99 3
+3576 2026-01-12 16:59:11.919384+00 51 Massagers Mart - Kidswear 3 14 3
+3577 2026-01-12 16:59:11.919431+00 50 Massagers Mart - Footwear 3 14 3
+3578 2026-01-12 17:00:19.3419+00 19 Home & Garden Site - Home Decor 3 14 3
+3579 2026-01-12 17:00:19.341943+00 18 Home & Garden Site - Interior Design 3 14 3
+3580 2026-01-12 17:00:19.341961+00 17 Home & Garden Site - Landscaping 3 14 3
+3581 2026-01-12 17:00:19.341977+00 16 Home & Garden Site - Home Improvement 3 14 3
+3582 2026-01-12 17:00:19.341993+00 15 Home & Garden Site - Gardening 3 14 3
+3583 2026-01-12 17:00:56.067983+00 133 test_seed_kw_3 (Home & Garden - Home Decor) 3 12 3
+3584 2026-01-12 17:00:56.068023+00 134 test_seed_kw_4 (Home & Garden - Home Decor) 3 12 3
+3585 2026-01-12 17:00:56.068035+00 135 test_seed_kw_5 (Home & Garden - Home Decor) 3 12 3
+3586 2026-01-12 17:01:12.131622+00 126 seed_keyword_1 (Home & Garden - Home Decor) 3 12 3
+3587 2026-01-12 17:01:12.131658+00 127 seed_keyword_2 (Home & Garden - Home Decor) 3 12 3
+3588 2026-01-12 17:01:12.131692+00 128 seed_keyword_3 (Home & Garden - Home Decor) 3 12 3
+3589 2026-01-12 17:01:12.131705+00 129 seed_keyword_4 (Home & Garden - Home Decor) 3 12 3
+3590 2026-01-12 17:01:12.131718+00 130 seed_keyword_5 (Home & Garden - Home Decor) 3 12 3
+3591 2026-01-12 17:01:12.13173+00 131 test_seed_kw_1 (Home & Garden - Home Decor) 3 12 3
+3592 2026-01-12 17:01:12.131742+00 132 test_seed_kw_2 (Home & Garden - Home Decor) 3 12 3
+3593 2026-01-12 17:02:01.914375+00 484 Back Massager Handheld vs Gun: Which Is Better for You? - featured 3 105 3
+3594 2026-01-12 17:02:01.914429+00 485 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3595 2026-01-12 17:02:01.914448+00 486 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3596 2026-01-12 17:02:01.914462+00 487 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3597 2026-01-12 17:02:01.914475+00 488 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3598 2026-01-12 17:02:01.914488+00 504 Back Massager Walmart Shopping Guide: In-Store and Pickup - featured 3 105 3
+3599 2026-01-12 17:02:01.914502+00 505 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3600 2026-01-12 17:02:01.914519+00 506 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3601 2026-01-12 17:02:01.914532+00 507 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3602 2026-01-12 17:02:01.915056+00 508 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3603 2026-01-12 17:02:02.064549+00 484 Back Massager Handheld vs Gun: Which Is Better for You? - featured 3 105 3
+3604 2026-01-12 17:02:02.064604+00 485 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3605 2026-01-12 17:02:02.064622+00 486 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3606 2026-01-12 17:02:02.064637+00 487 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3607 2026-01-12 17:02:02.06465+00 488 Back Massager Handheld vs Gun: Which Is Better for You? - in_article 3 105 3
+3608 2026-01-12 17:02:02.064727+00 504 Back Massager Walmart Shopping Guide: In-Store and Pickup - featured 3 105 3
+3609 2026-01-12 17:02:02.064764+00 505 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3610 2026-01-12 17:02:02.064787+00 506 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3611 2026-01-12 17:02:02.064802+00 507 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3612 2026-01-12 17:02:02.064817+00 508 Back Massager Walmart Shopping Guide: In-Store and Pickup - in_article 3 105 3
+3613 2026-01-12 17:42:43.577429+00 3 AccountSetting: Paid 2 - ai_settings 3 28 3
+3614 2026-01-12 17:44:05.74591+00 4 AccountSetting: Paid 2 - ai_settings 3 28 3
+3615 2026-01-12 17:44:05.745952+00 5 AccountSetting: Paid 2 - content_generation 3 28 3
+3616 2026-01-12 17:45:40.159562+00 10 Hi Dream Full - Basic 2 [{"changed": {"fields": ["Credits per image"]}}] 84 3
+3617 2026-01-12 17:45:50.655053+00 10 Hi Dream Full - Basic 2 [{"changed": {"fields": ["Credits per image"]}}] 84 3
+3618 2026-01-12 18:20:48.09586+00 1 System AI Settings 2 [{"changed": {"fields": ["Max images per article"]}}] 89 3
+3619 2026-01-12 18:20:48.189351+00 1 System AI Settings 2 [] 89 3
+3620 2026-01-12 19:58:49.974826+00 2 IGNY8 WordPress Bridge v1.3.5 1 [{"added": {}}] 95 3
+3621 2026-01-12 22:17:46.89561+00 4 Massagers Mart - WordPress 3 52 3
+3622 2026-01-12 22:39:02.803809+00 3 IGNY8 WordPress Bridge v1.3.6 1 [{"added": {}}] 95 3
+3623 2026-01-12 23:03:20.358502+00 4 IGNY8 WordPress Bridge v1.3.7 1 [{"added": {}}] 95 3
+3624 2026-01-12 23:18:14.470242+00 5 IGNY8 WordPress Bridge v1.3.8 1 [{"added": {}}] 95 3
+3625 2026-01-12 23:21:42.115101+00 5 Massagers Mart - WordPress 3 52 3
+3626 2026-01-12 23:35:03.646703+00 215 Back Massagers vs. Traditional Massage: Which Is Better? 2 [{"changed": {"fields": ["Site status", "Content html"]}}] 21 3
+3627 2026-01-12 23:36:08.43392+00 215 Back Massagers vs. Traditional Massage: Which Is Better? 3 21 3
+3628 2026-01-13 02:06:13.794887+00 1 Billing Configuration (1 credit = 1000 tokens) 2 [{"changed": {"fields": ["Default credit price usd"]}}] 76 3
+3629 2026-01-13 02:20:05.808869+00 1 Billing Configuration (1 credit = 1000 tokens) 2 [{"changed": {"fields": ["Default credit price usd"]}}] 76 3
+\.
+
+
+--
+-- Data for Name: django_celery_results_chordcounter; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_celery_results_chordcounter (id, group_id, sub_tasks, count) FROM stdin;
+\.
+
+
+--
+-- Data for Name: django_celery_results_groupresult; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_celery_results_groupresult (id, group_id, date_created, date_done, content_type, content_encoding, result) FROM stdin;
+\.
+
+
+--
+-- Data for Name: django_celery_results_taskresult; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_celery_results_taskresult (id, task_id, status, content_type, content_encoding, result, date_done, traceback, meta, task_args, task_kwargs, task_name, worker, date_created, periodic_task_name) FROM stdin;
+3278 ba932afc-9116-472f-a39e-35aafc981180 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:05:00.032052+00 \N {"children": []} \N \N \N \N 2026-01-08 04:05:00.025496+00 \N
+3425 74106cee-b328-4cab-be6b-3623d8bf7ae9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:35:00.036946+00 \N {"children": []} \N \N \N \N 2026-01-08 14:35:00.030747+00 \N
+3619 8d354a99-bc9a-4368-893e-e7531ae740ca SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:05:00.031432+00 \N {"children": []} \N \N \N \N 2026-01-09 04:05:00.025839+00 \N
+3334 575b1d2d-0fe2-4178-8a67-c8603d0fb856 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:05:00.038208+00 \N {"children": []} \N \N \N \N 2026-01-08 08:05:00.030959+00 \N
+3766 a74a5ae8-a2da-4ab5-9051-3c23c895ed32 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:35:00.038773+00 \N {"children": []} \N \N \N \N 2026-01-09 14:35:00.029129+00 \N
+3604 fc9f3af0-797f-477c-a271-7237703bf863 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:10:00.034001+00 \N {"children": []} \N \N \N \N 2026-01-09 03:10:00.026761+00 \N
+3369 1b04814d-9ac6-439f-aba6-c66136834bd6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:35:00.032584+00 \N {"children": []} \N \N \N \N 2026-01-08 10:35:00.025886+00 \N
+3460 985af85c-bae6-4610-a3eb-908d518d6229 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 17:00:00.064894+00 \N {"children": []} \N \N \N \N 2026-01-08 17:00:00.046193+00 \N
+3404 a692c10f-68ef-4180-9069-b888b1f532d2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:00:00.198077+00 \N {"children": []} \N \N \N \N 2026-01-08 13:00:00.167245+00 \N
+3654 ecfb4e7d-5b3e-40b0-abb3-227778e600d3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:40:00.033745+00 \N {"children": []} \N \N \N \N 2026-01-09 06:40:00.026242+00 \N
+3689 3bae6adf-4634-40cc-8223-6211ae57a7e7 SUCCESS application/json utf-8 {"warning_count": 1, "total_accounts": 13} 2026-01-09 09:00:00.678612+00 \N {"children": []} \N \N \N \N 2026-01-09 09:00:00.347745+00 \N
+3495 61544c56-999e-420a-b3dc-99430a684fd8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:35:00.036881+00 \N {"children": []} \N \N \N \N 2026-01-08 19:35:00.027816+00 \N
+3801 54b3d10c-717a-43eb-a97a-7db6654be384 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:00:00.050532+00 \N {"children": []} \N \N \N \N 2026-01-09 17:00:00.041564+00 \N
+3530 60eee579-b139-4f19-a485-da9c8a500032 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 22:00:00.090668+00 \N {"children": []} \N \N \N \N 2026-01-08 22:00:00.041397+00 \N
+3724 344647df-d053-43ce-9a6c-977eb8eecd0b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:35:00.032324+00 \N {"children": []} \N \N \N \N 2026-01-09 11:35:00.021265+00 \N
+3971 a783187c-a834-4725-a808-de14f4d9bece SUCCESS application/json utf-8 null 2026-01-12 11:55:14.990079+00 \N {"children": []} \N \N \N \N 2026-01-12 11:55:08.059138+00 \N
+3565 f35ee998-7c3e-4b2f-85c7-11da5a5ba7e0 SUCCESS application/json utf-8 {"reset_count": 0, "error_count": 0, "total_accounts": 12} 2026-01-09 00:30:00.145231+00 \N {"children": []} \N \N \N \N 2026-01-09 00:30:00.030065+00 \N
+3759 eec69a32-78be-41f2-b2ef-3fb8a3cab6b5 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 14:00:00.233242+00 \N {"children": []} \N \N \N \N 2026-01-09 14:00:00.183957+00 \N
+3836 97dbc458-d1b8-4bc8-9f24-eb78fe90f35b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:35:00.037071+00 \N {"children": []} \N \N \N \N 2026-01-09 19:35:00.025023+00 \N
+3599 086ac639-9d77-4dfc-9e8b-ae04ea6c2319 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:55:00.041633+00 \N {"children": []} \N \N \N \N 2026-01-09 02:55:00.029168+00 \N
+3873 26a74e1e-44d5-450f-b820-169bfc485ae6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:57:48.37665+00 \N {"children": []} \N \N \N \N 2026-01-09 19:57:48.366178+00 \N
+3906 697d3521-aa06-4a44-add6-4d21fd5d8dd4 FAILURE application/json utf-8 {"exc_type": "NotRegistered", "exc_message": ["igny8_core.purge_soft_deleted"], "exc_module": "celery.exceptions"} 2026-01-12 09:18:29.288507+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.28843+00 \N
+3907 5ef1c3c0-8689-4cfe-b884-642a84626410 SUCCESS application/json utf-8 null 2026-01-12 09:18:29.331497+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.283837+00 \N
+3917 073f308b-6512-4a89-9b65-25a7bb356149 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:35:00.059262+00 \N {"children": []} \N \N \N \N 2026-01-12 09:35:00.050941+00 \N
+3605 c041f0dd-3636-4cf9-a5ff-b1dbb7fbaa62 FAILURE application/json utf-8 {"exc_type": "NotRegistered", "exc_message": ["igny8_core.purge_soft_deleted"], "exc_module": "celery.exceptions"} 2026-01-09 03:15:00.56504+00 \N {"children": []} \N \N \N \N 2026-01-09 03:15:00.563427+00 \N
+3926 fba227a1-c619-4434-a919-52357d6e4c46 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:10:00.035896+00 \N {"children": []} \N \N \N \N 2026-01-12 10:10:00.027329+00 \N
+3620 814c5a33-6a62-4a81-92e3-cf5351d7e556 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:10:00.03192+00 \N {"children": []} \N \N \N \N 2026-01-09 04:10:00.024766+00 \N
+3279 9a2f6329-103a-4c15-8f3e-165496294edf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:10:00.030326+00 \N {"children": []} \N \N \N \N 2026-01-08 04:10:00.023252+00 \N
+3426 6368fe82-892c-4d51-99a2-cfa140aa30c8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:40:00.04097+00 \N {"children": []} \N \N \N \N 2026-01-08 14:40:00.025959+00 \N
+3767 d473576b-0797-459a-b2ea-1b38de185420 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:40:00.029153+00 \N {"children": []} \N \N \N \N 2026-01-09 14:40:00.02086+00 \N
+3300 eeab289f-b775-490a-b985-49808bc0dbae SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:45:00.076457+00 \N {"children": []} \N \N \N \N 2026-01-08 05:45:00.059881+00 \N
+3655 344354c4-19a0-4353-a349-37deaea8a108 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:45:00.039946+00 \N {"children": []} \N \N \N \N 2026-01-09 06:45:00.031393+00 \N
+3690 f258238f-5da5-49c3-96ee-02c70705f549 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:05:00.02897+00 \N {"children": []} \N \N \N \N 2026-01-09 09:05:00.021953+00 \N
+3335 9ccc4701-da78-4a4d-9936-0bdda6ec4108 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:10:00.030516+00 \N {"children": []} \N \N \N \N 2026-01-08 08:10:00.0221+00 \N
+3802 ff985b9c-cca1-4583-b179-4f1dd79ea9f0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:05:00.037243+00 \N {"children": []} \N \N \N \N 2026-01-09 17:05:00.026103+00 \N
+3461 f73b9cfc-db53-48d7-b730-c29c746f04cc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:05:00.036+00 \N {"children": []} \N \N \N \N 2026-01-08 17:05:00.026268+00 \N
+3370 b03f3b3c-b256-4a90-8a6e-fa3c121adf59 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:40:00.041077+00 \N {"children": []} \N \N \N \N 2026-01-08 10:40:00.028731+00 \N
+3725 a0f92972-d4d8-414c-b6fc-efd67477c7f2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:40:00.042203+00 \N {"children": []} \N \N \N \N 2026-01-09 11:40:00.030468+00 \N
+3405 75dfef1c-4d64-4e69-b988-07c65a2e5d1a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:05:00.032486+00 \N {"children": []} \N \N \N \N 2026-01-08 13:05:00.02248+00 \N
+3496 7a0fec52-bdb1-4f5d-8cc7-93a136e3471b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:40:00.029113+00 \N {"children": []} \N \N \N \N 2026-01-08 19:40:00.021922+00 \N
+3760 70e87783-5eab-41f1-b401-7dcb3ec8c3df SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:05:00.039622+00 \N {"children": []} \N \N \N \N 2026-01-09 14:05:00.028681+00 \N
+3837 79870158-e079-4b23-b642-dc2839bb58b9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:40:00.040112+00 \N {"children": []} \N \N \N \N 2026-01-09 19:40:00.030676+00 \N
+3531 0786e718-e2fe-4def-9b21-8783ddbad9be SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:05:00.036577+00 \N {"children": []} \N \N \N \N 2026-01-08 22:05:00.025838+00 \N
+3874 3f7f64cd-3124-4ad0-82dc-8172e0fba64e SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 20:00:00.057466+00 \N {"children": []} \N \N \N \N 2026-01-09 20:00:00.030779+00 \N
+3566 0e268374-6fed-4e5c-b661-dba9e3a393fc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:30:00.057072+00 \N {"children": []} \N \N \N \N 2026-01-09 00:30:00.037217+00 \N
+3908 2180f685-a6e7-413f-aec0-edd8d8c18fdb SUCCESS application/json utf-8 {"reset_count": 0, "error_count": 0, "total_accounts": 12} 2026-01-12 09:18:29.422199+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.365734+00 \N
+3600 0793e9fc-13db-47f1-9f0b-71536547a824 SUCCESS application/json utf-8 null 2026-01-09 03:00:00.072922+00 \N {"children": []} \N \N \N \N 2026-01-09 03:00:00.032716+00 \N
+3621 ae2ae467-1fc5-4078-97c5-67c1702fe97a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:15:00.034096+00 \N {"children": []} \N \N \N \N 2026-01-09 04:15:00.027416+00 \N
+3768 fece4c7b-19d6-4ab2-b6c7-87348f9d7e3e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:45:00.041386+00 \N {"children": []} \N \N \N \N 2026-01-09 14:45:00.03318+00 \N
+3656 464e875d-8db2-44c6-84a1-1eef71af0be3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:50:00.033855+00 \N {"children": []} \N \N \N \N 2026-01-09 06:50:00.02583+00 \N
+3280 74654b84-5243-4bb0-82d4-450d46215b36 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:15:00.040322+00 \N {"children": []} \N \N \N \N 2026-01-08 04:15:00.03283+00 \N
+3427 9078e2bd-3cd0-4cbf-b20d-3b7493de4b3b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:45:00.050893+00 \N {"children": []} \N \N \N \N 2026-01-08 14:45:00.039509+00 \N
+3301 45004f4d-9ecb-4f9d-b943-c8ef29d596aa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:50:00.028669+00 \N {"children": []} \N \N \N \N 2026-01-08 05:50:00.022455+00 \N
+3606 53406b60-713a-4bfd-8dad-815122722e39 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:15:00.614057+00 \N {"children": []} \N \N \N \N 2026-01-09 03:15:00.606139+00 \N
+3336 87e0eb01-3fd7-4e59-8cca-7117e87a1fdc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:15:00.03807+00 \N {"children": []} \N \N \N \N 2026-01-08 08:15:00.030356+00 \N
+3462 a3b3cf7b-7521-4b50-a902-cab004a08597 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:10:00.041835+00 \N {"children": []} \N \N \N \N 2026-01-08 17:10:00.033509+00 \N
+3371 14485769-7d8a-4f3e-8644-c7bd0818b365 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:45:00.036757+00 \N {"children": []} \N \N \N \N 2026-01-08 10:45:00.029042+00 \N
+3691 842015d6-27e4-4b34-89da-6abb05459af5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:10:00.029758+00 \N {"children": []} \N \N \N \N 2026-01-09 09:10:00.022442+00 \N
+3803 3e30f4f7-dbb6-4a26-a79a-3cc48d759ef8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:10:00.034267+00 \N {"children": []} \N \N \N \N 2026-01-09 17:10:00.021598+00 \N
+3726 b157033f-b5ff-4b8a-b388-27a685a84aaa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:45:00.039748+00 \N {"children": []} \N \N \N \N 2026-01-09 11:45:00.026344+00 \N
+3406 c48879a0-1b76-4be3-8f3c-dd815b0348d7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:10:00.027383+00 \N {"children": []} \N \N \N \N 2026-01-08 13:10:00.021518+00 \N
+3497 02747930-dc49-43df-bec4-9c43141990cc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:45:00.038178+00 \N {"children": []} \N \N \N \N 2026-01-08 19:45:00.026149+00 \N
+3761 6de23fb0-a664-41cb-a211-366e888d7e1f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:10:00.030897+00 \N {"children": []} \N \N \N \N 2026-01-09 14:10:00.021948+00 \N
+3532 244d783c-593a-441e-b6ff-dfe081dedef6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:10:00.033401+00 \N {"children": []} \N \N \N \N 2026-01-08 22:10:00.025314+00 \N
+3838 661294e6-4736-4f5c-85bf-5bbe820f1e48 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:45:00.048396+00 \N {"children": []} \N \N \N \N 2026-01-09 19:45:00.03273+00 \N
+3567 b3348291-bcf1-476c-9a91-0264a863b5eb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:35:00.041103+00 \N {"children": []} \N \N \N \N 2026-01-09 00:35:00.026674+00 \N
+3875 78b90a6c-4ce1-46b4-b870-7b0fd058ba7f SUCCESS application/json utf-8 null 2026-01-09 20:00:00.056892+00 \N {"children": []} \N \N \N \N 2026-01-09 20:00:00.039626+00 \N
+3601 17d75083-1ff9-45b9-96c6-51edbd42ed4a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:00:00.121527+00 \N {"children": []} \N \N \N \N 2026-01-09 03:00:00.09114+00 \N
+3909 15fa8993-d681-40f2-826a-e4f9405a7071 SUCCESS application/json utf-8 {"warning_count": 1, "total_accounts": 13} 2026-01-12 09:18:29.623981+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.415991+00 \N
+3281 3645daa2-6774-4916-8b4a-63307f56976b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:20:00.031491+00 \N {"children": []} \N \N \N \N 2026-01-08 04:20:00.024736+00 \N
+3428 16562b79-d1c2-40a3-bcd8-2e96d457acdf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:50:00.036489+00 \N {"children": []} \N \N \N \N 2026-01-08 14:50:00.028074+00 \N
+3302 6bcba3e0-6be5-445c-bb82-cdf0fb13ad16 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:55:00.040745+00 \N {"children": []} \N \N \N \N 2026-01-08 05:55:00.031955+00 \N
+3622 d90c1e8a-e3be-4aca-9ddb-caf82563e081 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:20:00.044964+00 \N {"children": []} \N \N \N \N 2026-01-09 04:20:00.036811+00 \N
+3769 e0d7d237-ce0a-46ff-aeb9-b7660e1d77f0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:50:00.038683+00 \N {"children": []} \N \N \N \N 2026-01-09 14:50:00.027462+00 \N
+3657 8d0e2def-eca3-4360-ac18-82fdd6c27a15 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:55:00.029011+00 \N {"children": []} \N \N \N \N 2026-01-09 06:55:00.022806+00 \N
+3337 c1e7f42c-541b-43a5-b7e6-53c77da703e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:20:00.029667+00 \N {"children": []} \N \N \N \N 2026-01-08 08:20:00.020972+00 \N
+3692 c3bedc0d-4ad7-4e2e-90eb-98f808b05f08 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:15:00.036171+00 \N {"children": []} \N \N \N \N 2026-01-09 09:15:00.027176+00 \N
+3804 215c38ed-0569-467a-96f7-725e744a4284 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:15:00.036457+00 \N {"children": []} \N \N \N \N 2026-01-09 17:15:00.024748+00 \N
+3727 6d5396f4-8a17-4408-a63f-8de70dea895f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:50:00.051254+00 \N {"children": []} \N \N \N \N 2026-01-09 11:50:00.033307+00 \N
+3463 69ec495b-fd33-4682-addf-f0831e4eb70b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:15:00.035796+00 \N {"children": []} \N \N \N \N 2026-01-08 17:15:00.027218+00 \N
+3372 35bd9a91-1f58-457d-bc43-0cb5b8c763d5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:50:00.034139+00 \N {"children": []} \N \N \N \N 2026-01-08 10:50:00.025658+00 \N
+3762 f2a6dae8-7782-4237-9fc4-1fa8a8fb3617 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:15:00.037215+00 \N {"children": []} \N \N \N \N 2026-01-09 14:15:00.025415+00 \N
+3839 4fe2c3db-0951-4ec7-abb9-aeb9d5b649f4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:50:00.031577+00 \N {"children": []} \N \N \N \N 2026-01-09 19:50:00.021389+00 \N
+3876 023cf0de-18bf-4d5c-982a-8864d03c3717 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 20:00:00.061234+00 \N {"children": []} \N \N \N \N 2026-01-09 20:00:00.049814+00 \N
+3407 259a0170-5c96-4a3d-aac3-37b45225337a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:15:00.040126+00 \N {"children": []} \N \N \N \N 2026-01-08 13:15:00.03032+00 \N
+3498 b55b03e4-9f29-4671-97c5-38814d7d1df1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:50:00.04202+00 \N {"children": []} \N \N \N \N 2026-01-08 19:50:00.030895+00 \N
+3910 3d17f761-dca0-44a1-85a1-666585caa6bc SUCCESS application/json utf-8 {"success": false, "error": "Packaging script failed with code 127", "stderr": "/data/app/igny8/scripts/package_app.sh: line 37: rsync: command not found\\n", "timestamp": "2026-01-12T09:18:29.483949"} 2026-01-12 09:18:29.485628+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.44491+00 \N
+3918 b2270cff-6baf-493c-93bb-9e98a8732e74 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:40:00.024864+00 \N {"children": []} \N \N \N \N 2026-01-12 09:40:00.019558+00 \N
+3533 328959dd-ae9b-40a7-b1b0-973e80643b04 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:15:00.031813+00 \N {"children": []} \N \N \N \N 2026-01-08 22:15:00.0215+00 \N
+3568 65c596f2-4a39-4d8e-9ac1-c06a64865d99 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:40:00.030045+00 \N {"children": []} \N \N \N \N 2026-01-09 00:40:00.023398+00 \N
+3607 7cae3e22-65fa-4413-97b1-1204c6aaf25c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:20:00.037619+00 \N {"children": []} \N \N \N \N 2026-01-09 03:20:00.029117+00 \N
+3927 a5eb8d19-2b4b-4358-8512-6906bf947bf3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:15:00.038822+00 \N {"children": []} \N \N \N \N 2026-01-12 10:15:00.032168+00 \N
+3282 5cd64a1b-9446-4287-a446-c5ab0a217967 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:25:00.034295+00 \N {"children": []} \N \N \N \N 2026-01-08 04:25:00.026137+00 \N
+3623 f1f9d5cc-cc48-4d87-96cf-5f8e332928a4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:25:00.034373+00 \N {"children": []} \N \N \N \N 2026-01-09 04:25:00.026433+00 \N
+3429 4fab6a0b-3276-44b1-9327-471fcdee4090 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:55:00.034277+00 \N {"children": []} \N \N \N \N 2026-01-08 14:55:00.022454+00 \N
+3303 715d67bc-7640-492e-a0b2-581caed14e42 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 06:00:00.060682+00 \N {"children": []} \N \N \N \N 2026-01-08 06:00:00.024409+00 \N
+3770 2d3f6a83-7c69-450b-ac8e-fb9ae866b401 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:55:00.029768+00 \N {"children": []} \N \N \N \N 2026-01-09 14:55:00.020586+00 \N
+3658 015f6d78-20fb-4b10-b76d-fce7ce8a4b18 SUCCESS application/json utf-8 null 2026-01-09 07:00:00.055117+00 \N {"children": []} \N \N \N \N 2026-01-09 07:00:00.031865+00 \N
+3693 c33e4587-efd7-40f7-a7aa-dd5b740f2514 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:20:00.041338+00 \N {"children": []} \N \N \N \N 2026-01-09 09:20:00.032141+00 \N
+3805 1bc9e26a-6cd7-4b68-bb60-0807a3cb1b19 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:20:00.040423+00 \N {"children": []} \N \N \N \N 2026-01-09 17:20:00.029656+00 \N
+3338 54cfc3e0-583b-43b1-b478-2e51e1da4b20 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:25:00.032871+00 \N {"children": []} \N \N \N \N 2026-01-08 08:25:00.025802+00 \N
+3464 923a2cf4-cf9c-47c6-82f0-36504f413ddd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:20:00.039846+00 \N {"children": []} \N \N \N \N 2026-01-08 17:20:00.029915+00 \N
+3373 97589718-9737-4336-8d95-d1e9e0f5ae34 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:55:00.029335+00 \N {"children": []} \N \N \N \N 2026-01-08 10:55:00.021844+00 \N
+3728 c8dfc538-5d30-4aba-b6f6-22fcfe306640 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:55:00.03079+00 \N {"children": []} \N \N \N \N 2026-01-09 11:55:00.022059+00 \N
+3763 c5985e5c-49aa-4696-84ec-5278207ec48c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:20:00.037894+00 \N {"children": []} \N \N \N \N 2026-01-09 14:20:00.027875+00 \N
+3408 270396ce-842a-48a5-9918-2e6d9c4d7af2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:20:00.037648+00 \N {"children": []} \N \N \N \N 2026-01-08 13:20:00.027235+00 \N
+3840 66354910-1890-4b9f-a9ce-caab93249685 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:55:00.04462+00 \N {"children": []} \N \N \N \N 2026-01-09 19:55:00.029399+00 \N
+3499 f80ade94-302e-49a4-8bdd-060922d5b6c8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:55:00.032104+00 \N {"children": []} \N \N \N \N 2026-01-08 19:55:00.020099+00 \N
+3534 69bd2e58-6cc6-4d0b-8e76-c4d6e45b6645 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:20:00.03005+00 \N {"children": []} \N \N \N \N 2026-01-08 22:20:00.021521+00 \N
+3911 968e4bd4-275d-4a7d-9666-d1aaf81d87db SUCCESS application/json utf-8 {"success": true, "message": "Old packages cleaned up (30+ days)", "timestamp": "2026-01-12T09:18:29.527185"} 2026-01-12 09:18:29.52994+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.447924+00 \N
+3569 eb1386da-8b5b-44e2-b897-b9ef2ebe86b7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:45:00.03101+00 \N {"children": []} \N \N \N \N 2026-01-09 00:45:00.023478+00 \N
+3602 ec6dbcc0-3903-41cc-9308-602c2d8a17a7 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 03:00:00.15991+00 \N {"children": []} \N \N \N \N 2026-01-09 03:00:00.093154+00 \N
+3919 708dc37d-4bcb-4d0f-8a94-661c4e13117b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:45:00.031015+00 \N {"children": []} \N \N \N \N 2026-01-12 09:45:00.02218+00 \N
+4033 3b831293-0e3f-4437-9a2d-d90ff4d53528 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:05:00.031118+00 \N {"children": []} \N \N \N \N 2026-01-12 16:05:00.024965+00 \N
+3283 3b3a29e2-8e54-4433-9dbc-cc16d456f90e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:30:00.050954+00 \N {"children": []} \N \N \N \N 2026-01-08 04:30:00.039261+00 \N
+3430 4fc36114-82da-45cb-85bb-e557c5c590d4 SUCCESS application/json utf-8 null 2026-01-08 15:00:00.069773+00 \N {"children": []} \N \N \N \N 2026-01-08 15:00:00.034284+00 \N
+3304 5114bef9-469f-4d6e-a729-1b9b461a9912 SUCCESS application/json utf-8 null 2026-01-08 06:00:00.060188+00 \N {"children": []} \N \N \N \N 2026-01-08 06:00:00.052347+00 \N
+3608 a3e9710c-8d5e-4a8a-985e-8edd30903c19 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:25:00.033595+00 \N {"children": []} \N \N \N \N 2026-01-09 03:25:00.026006+00 \N
+3624 83c0eceb-1b76-4815-8027-55b9a287657d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:30:00.028978+00 \N {"children": []} \N \N \N \N 2026-01-09 04:30:00.02213+00 \N
+3771 f13d3307-dacb-4370-82e8-061fdde7562b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:00:00.668822+00 \N {"children": []} \N \N \N \N 2026-01-09 15:00:00.649847+00 \N
+3339 e3cb44e5-58fa-4f70-bb00-4003c0a3280d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:30:00.035211+00 \N {"children": []} \N \N \N \N 2026-01-08 08:30:00.026331+00 \N
+3659 a06dc2ee-88f4-457a-be72-31c7e25f67e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:00:00.091049+00 \N {"children": []} \N \N \N \N 2026-01-09 07:00:00.044036+00 \N
+3465 d868f4dd-9c6b-46a1-a725-16d8f48019ef SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:25:00.036161+00 \N {"children": []} \N \N \N \N 2026-01-08 17:25:00.023596+00 \N
+3374 e94b877c-b223-4589-986e-e33a6ad35b79 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:00:00.033799+00 \N {"children": []} \N \N \N \N 2026-01-08 11:00:00.024054+00 \N
+3928 c35897a1-bd66-4b9b-8157-36793766333d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:20:00.043364+00 \N {"children": []} \N \N \N \N 2026-01-12 10:20:00.032795+00 \N
+3694 156a51d6-8d8d-49e6-b319-fb1cb9aa95bd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:25:00.035161+00 \N {"children": []} \N \N \N \N 2026-01-09 09:25:00.027037+00 \N
+3409 710a00c4-7725-4d5e-bdcc-7c21cfee8776 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:25:00.03413+00 \N {"children": []} \N \N \N \N 2026-01-08 13:25:00.02347+00 \N
+3500 d12e7a5f-e075-4448-aa53-73faae43de1b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:00:00.038082+00 \N {"children": []} \N \N \N \N 2026-01-08 20:00:00.028146+00 \N
+3806 e1517f99-fa72-4b4d-ab7d-27757f7779db SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:25:00.029593+00 \N {"children": []} \N \N \N \N 2026-01-09 17:25:00.020819+00 \N
+3729 56824636-258e-4734-bf03-8eed0637c377 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 12:00:00.135928+00 \N {"children": []} \N \N \N \N 2026-01-09 12:00:00.033247+00 \N
+3535 223ea6c8-0d99-46bd-8020-2eb0931f3381 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:25:00.032633+00 \N {"children": []} \N \N \N \N 2026-01-08 22:25:00.023811+00 \N
+3764 aa94ba8a-f559-4d36-b418-2ad676486414 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:25:00.045992+00 \N {"children": []} \N \N \N \N 2026-01-09 14:25:00.02829+00 \N
+3912 a7856054-65b4-4f2d-afba-d06c0deb8e4f SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 09:18:29.545302+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.461969+00 \N
+3920 8e8be5b6-7eb9-46a7-8b54-91f38870f261 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:50:00.030987+00 \N {"children": []} \N \N \N \N 2026-01-12 09:50:00.024682+00 \N
+3570 a6ff5235-43fc-4d4a-bef4-24b2ea15c024 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:50:00.039709+00 \N {"children": []} \N \N \N \N 2026-01-09 00:50:00.028675+00 \N
+3973 cdfc885f-43cf-41d5-81cf-e19454f78daa SUCCESS application/json utf-8 null 2026-01-12 12:00:00.049147+00 \N {"children": []} \N \N \N \N 2026-01-12 12:00:00.038259+00 \N
+3603 4596fe32-9ba4-4eca-b0e2-038c1e55da5f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:05:00.034659+00 \N {"children": []} \N \N \N \N 2026-01-09 03:05:00.023671+00 \N
+3625 08067527-1496-4e4c-a64a-102645fc2a4f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:35:00.033088+00 \N {"children": []} \N \N \N \N 2026-01-09 04:35:00.024411+00 \N
+3772 68dccbcd-ed81-499a-868f-689957dcac27 SUCCESS application/json utf-8 null 2026-01-09 15:00:00.693401+00 \N {"children": []} \N \N \N \N 2026-01-09 15:00:00.671798+00 \N
+3660 53c1f702-6147-428e-af74-685bcf6b1192 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 07:00:00.105087+00 \N {"children": []} \N \N \N \N 2026-01-09 07:00:00.044861+00 \N
+3284 6373a8fc-6743-4bd2-b9ac-8fdaa364af5b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:35:00.038698+00 \N {"children": []} \N \N \N \N 2026-01-08 04:35:00.029697+00 \N
+3431 8ccd8593-f927-444b-a27e-96a6e0090e23 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 15:00:00.326583+00 \N {"children": []} \N \N \N \N 2026-01-08 15:00:00.219307+00 \N
+3305 d12a66ab-252d-4a9b-9f30-b27acef10b02 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:00:00.061637+00 \N {"children": []} \N \N \N \N 2026-01-08 06:00:00.052389+00 \N
+3609 c42143f1-c233-4ce5-9716-16a69725f897 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:30:00.04415+00 \N {"children": []} \N \N \N \N 2026-01-09 03:30:00.030981+00 \N
+3929 f274c3eb-e198-49d7-8f8f-a1dce5b6df62 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:25:00.037594+00 \N {"children": []} \N \N \N \N 2026-01-12 10:25:00.027881+00 \N
+3340 13913853-311f-4331-adac-49a19c054f69 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:35:00.031309+00 \N {"children": []} \N \N \N \N 2026-01-08 08:35:00.022861+00 \N
+3695 d83bddfc-85d9-4f99-8988-a6f7b9a7dd82 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:30:00.04195+00 \N {"children": []} \N \N \N \N 2026-01-09 09:30:00.034222+00 \N
+3807 cf0d9a7a-bf58-4f6d-80d6-db1eeef45a49 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:30:00.03617+00 \N {"children": []} \N \N \N \N 2026-01-09 17:30:00.025018+00 \N
+3466 fd9d55bf-ba9a-4839-ae65-956d4bae1d4e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:30:00.037224+00 \N {"children": []} \N \N \N \N 2026-01-08 17:30:00.0271+00 \N
+3375 8c886799-e677-43ba-97e1-c0c592d17f9a SUCCESS application/json utf-8 null 2026-01-08 11:00:00.111596+00 \N {"children": []} \N \N \N \N 2026-01-08 11:00:00.083013+00 \N
+3730 1aa27809-a2cc-49a8-a6cc-981dbb8b5e6a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:00:00.06751+00 \N {"children": []} \N \N \N \N 2026-01-09 12:00:00.049928+00 \N
+3410 82d42aa3-1bf4-4848-9fdd-f8064c29c7fb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:30:00.040215+00 \N {"children": []} \N \N \N \N 2026-01-08 13:30:00.030582+00 \N
+3930 eafea8af-9e83-45db-8a1b-41a1d6a18a37 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:30:00.06732+00 \N {"children": []} \N \N \N \N 2026-01-12 10:30:00.054369+00 \N
+3501 5e2fae70-456a-464f-b0d7-6a612584c75c SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 20:00:00.051847+00 \N {"children": []} \N \N \N \N 2026-01-08 20:00:00.029091+00 \N
+3765 9c8f55c1-9f7d-4381-8d3b-a559ab8caab1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:30:00.039607+00 \N {"children": []} \N \N \N \N 2026-01-09 14:30:00.029762+00 \N
+3913 ea31b05f-5cba-4428-8d7a-e3a7e0ba293e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:18:29.519013+00 \N {"children": []} \N \N \N \N 2026-01-12 09:18:29.509559+00 \N
+3536 db78b563-3887-4807-9a7a-431d5de6cd6c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:30:00.033585+00 \N {"children": []} \N \N \N \N 2026-01-08 22:30:00.024395+00 \N
+3921 336eaf99-14e0-4889-98de-799679aa6c21 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:55:00.041432+00 \N {"children": []} \N \N \N \N 2026-01-12 09:55:00.030432+00 \N
+3571 e3f90f85-493f-4cb0-8083-46310764635d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:55:00.025778+00 \N {"children": []} \N \N \N \N 2026-01-09 00:55:00.019278+00 \N
+3974 4855d425-4ffa-47c9-8ac1-e38f748bf333 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:00:00.054079+00 \N {"children": []} \N \N \N \N 2026-01-12 12:00:00.045166+00 \N
+4034 eacce9be-f379-4bf9-ad8c-aaac71c196df SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:10:00.043583+00 \N {"children": []} \N \N \N \N 2026-01-12 16:10:00.033863+00 \N
+3626 fc14a6c9-f744-410e-a741-cd95463febe9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:40:00.031011+00 \N {"children": []} \N \N \N \N 2026-01-09 04:40:00.025603+00 \N
+3773 6a6b0b22-e5db-4488-ad06-e256871b2723 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 15:00:00.735674+00 \N {"children": []} \N \N \N \N 2026-01-09 15:00:00.682694+00 \N
+3661 9028d548-50c9-40f8-ae24-569ad328743f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:05:00.031105+00 \N {"children": []} \N \N \N \N 2026-01-09 07:05:00.024296+00 \N
+3285 5bbd5c6f-7471-48ee-8153-cc6990b31b1b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:40:00.031498+00 \N {"children": []} \N \N \N \N 2026-01-08 04:40:00.024136+00 \N
+3432 3e311c7b-d590-4d83-868e-82f1c7c8ee2f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:00:00.300013+00 \N {"children": []} \N \N \N \N 2026-01-08 15:00:00.214466+00 \N
+3931 82439f64-c5b5-4704-8b71-49450de9f702 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:35:00.028087+00 \N {"children": []} \N \N \N \N 2026-01-12 10:35:00.020663+00 \N
+3306 1cf8f5bf-3d6b-4d92-baf7-7b9ed128389a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:05:00.035477+00 \N {"children": []} \N \N \N \N 2026-01-08 06:05:00.025855+00 \N
+3696 90dc71ef-4bbc-4644-8092-e4f373ac9f2f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:35:00.031131+00 \N {"children": []} \N \N \N \N 2026-01-09 09:35:00.02243+00 \N
+3610 c24eb261-1074-4d2a-944a-0128b2c36b62 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:35:00.047808+00 \N {"children": []} \N \N \N \N 2026-01-09 03:35:00.038323+00 \N
+3341 04f11ceb-b128-4a41-a4c4-62c7e2dbb9fa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:40:00.030686+00 \N {"children": []} \N \N \N \N 2026-01-08 08:40:00.023163+00 \N
+3467 6288c867-234f-4ddc-8708-5dfcbe1ec490 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:35:00.032999+00 \N {"children": []} \N \N \N \N 2026-01-08 17:35:00.025224+00 \N
+3376 e5ecc1e8-8ad1-48be-b09f-53056aa2be78 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 11:00:00.149067+00 \N {"children": []} \N \N \N \N 2026-01-08 11:00:00.090639+00 \N
+3808 54f802e1-c6ba-4a3a-a61b-e8626fa17426 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:35:00.035756+00 \N {"children": []} \N \N \N \N 2026-01-09 17:35:00.023385+00 \N
+3731 6f379140-3e4e-4856-b4c8-7e7ffccd94a0 SUCCESS application/json utf-8 null 2026-01-09 12:00:00.099925+00 \N {"children": []} \N \N \N \N 2026-01-09 12:00:00.068882+00 \N
+3411 0e07ac33-14d7-4dde-a9cf-5cd7babeaf6a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:35:00.036446+00 \N {"children": []} \N \N \N \N 2026-01-08 13:35:00.026791+00 \N
+3502 6fc759fc-5e1d-48b6-b95c-876750ce340a SUCCESS application/json utf-8 null 2026-01-08 20:00:00.041616+00 \N {"children": []} \N \N \N \N 2026-01-08 20:00:00.034677+00 \N
+3914 cca4de93-9ec4-4845-b182-6001ee7956b5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:20:00.032595+00 \N {"children": []} \N \N \N \N 2026-01-12 09:20:00.024504+00 \N
+3935 f15fb0ea-dccb-43fb-bac5-508583b75ce6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:55:00.062464+00 \N {"children": []} \N \N \N \N 2026-01-12 10:55:00.056221+00 \N
+3537 8a0bb0f7-ab3f-47ed-9377-e8a7ca91ec30 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:35:00.028105+00 \N {"children": []} \N \N \N \N 2026-01-08 22:35:00.021963+00 \N
+3922 e054505c-e958-46f9-a5c2-b7c747c0f883 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 10:00:00.163427+00 \N {"children": []} \N \N \N \N 2026-01-12 10:00:00.070616+00 \N
+3572 bbd5ef5e-2e50-42ac-a9b6-4d9def03db3d SUCCESS application/json utf-8 null 2026-01-09 01:00:00.085106+00 \N {"children": []} \N \N \N \N 2026-01-09 01:00:00.056519+00 \N
+3942 bd534bb1-4643-4ce6-81b4-b81d28228643 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:20:00.0596+00 \N {"children": []} \N \N \N \N 2026-01-12 11:20:00.049876+00 \N
+3943 cbbfeb30-f3d8-4231-b837-21a2afd89745 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:25:00.066848+00 \N {"children": []} \N \N \N \N 2026-01-12 11:25:00.056724+00 \N
+3627 fba50642-9c66-423f-bd34-e9a88a7f9458 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:45:00.029041+00 \N {"children": []} \N \N \N \N 2026-01-09 04:45:00.022441+00 \N
+3774 743df04f-7056-4459-a2aa-67bfb9357a5c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:05:00.027378+00 \N {"children": []} \N \N \N \N 2026-01-09 15:05:00.019465+00 \N
+3662 0231926a-1fd9-4ab0-9d25-ca16b0934be7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:10:00.034079+00 \N {"children": []} \N \N \N \N 2026-01-09 07:10:00.026573+00 \N
+3286 89fecd77-85c9-4b7c-be0e-d5c4d534a069 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:45:00.035077+00 \N {"children": []} \N \N \N \N 2026-01-08 04:45:00.028376+00 \N
+3932 33664ee8-614a-4c7f-85a7-10b0910a3cd0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:40:00.033989+00 \N {"children": []} \N \N \N \N 2026-01-12 10:40:00.029036+00 \N
+3697 af84b097-bdef-4d18-8752-dfed1d33e66a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:40:00.028968+00 \N {"children": []} \N \N \N \N 2026-01-09 09:40:00.021461+00 \N
+3433 c43486a3-1a13-49fc-97ae-ce6987394402 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:05:00.036345+00 \N {"children": []} \N \N \N \N 2026-01-08 15:05:00.029001+00 \N
+3809 67c5698e-7096-48b8-8c5e-24801f97f0c7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:40:03.762851+00 \N {"children": []} \N \N \N \N 2026-01-09 17:40:03.755055+00 \N
+3307 9ed5be4d-6935-4df2-9d6c-3b8fa29caa74 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:10:00.048179+00 \N {"children": []} \N \N \N \N 2026-01-08 06:10:00.031404+00 \N
+3611 28b59833-0139-4063-9587-546e6f2161b2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:40:00.031831+00 \N {"children": []} \N \N \N \N 2026-01-09 03:40:00.025827+00 \N
+3342 8b802843-0d95-477e-9767-c289aec2a749 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:45:00.079197+00 \N {"children": []} \N \N \N \N 2026-01-08 08:45:00.066844+00 \N
+3468 b03910c0-532e-400c-871d-d7d3f113f788 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:40:00.031578+00 \N {"children": []} \N \N \N \N 2026-01-08 17:40:00.023821+00 \N
+3377 3e449433-abc0-44ee-b594-6ad8e99f0f75 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:05:00.033507+00 \N {"children": []} \N \N \N \N 2026-01-08 11:05:00.025405+00 \N
+3732 53490ced-decb-4494-98ed-3a05198414aa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:05:00.038672+00 \N {"children": []} \N \N \N \N 2026-01-09 12:05:00.025275+00 \N
+3412 d0b7018e-46d0-47f6-9607-023d4d0ebc18 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:40:00.037843+00 \N {"children": []} \N \N \N \N 2026-01-08 13:40:00.024094+00 \N
+3503 8387c2af-b9f5-4fda-afb3-52174a9544d1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:05:00.033098+00 \N {"children": []} \N \N \N \N 2026-01-08 20:05:00.024833+00 \N
+3915 5f1bdcc1-33b4-4ba9-b907-81a1a38bf69f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:25:00.030591+00 \N {"children": []} \N \N \N \N 2026-01-12 09:25:00.023159+00 \N
+3936 58c017c2-3921-4f4e-8b71-10d2eded55a4 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 11:00:00.040206+00 \N {"children": []} \N \N \N \N 2026-01-12 11:00:00.0223+00 \N
+3923 0111ec29-f6b0-483a-bd89-f6f342a149a0 SUCCESS application/json utf-8 null 2026-01-12 10:00:00.15005+00 \N {"children": []} \N \N \N \N 2026-01-12 10:00:00.109579+00 \N
+3538 a42c4a58-db3a-451c-a82a-6820e086dbbb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:40:00.028907+00 \N {"children": []} \N \N \N \N 2026-01-08 22:40:00.019451+00 \N
+3944 b372413c-762c-4977-9828-f7273f5c0cc5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:30:00.036944+00 \N {"children": []} \N \N \N \N 2026-01-12 11:30:00.029677+00 \N
+3573 a921e1a1-bd5c-4d67-b03e-a39ce15852c1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:00:00.083171+00 \N {"children": []} \N \N \N \N 2026-01-09 01:00:00.063174+00 \N
+4080 5692a420-151b-4ef1-80a4-84aa400294e8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:30:00.050071+00 \N {"children": []} \N \N \N \N 2026-01-12 19:30:00.0312+00 \N
+3628 6459d981-d7fb-44f2-a28b-14cc0b736253 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:50:00.03301+00 \N {"children": []} \N \N \N \N 2026-01-09 04:50:00.023193+00 \N
+3775 feba8731-1ced-49f4-a48b-48665c3a850b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:10:00.045786+00 \N {"children": []} \N \N \N \N 2026-01-09 15:10:00.029439+00 \N
+3663 62503ba5-2c3b-4a88-b21c-54548358595f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:15:00.035908+00 \N {"children": []} \N \N \N \N 2026-01-09 07:15:00.029098+00 \N
+3287 8d8870d6-b9c6-4ae2-ae1e-61a12b112dc0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:50:00.028602+00 \N {"children": []} \N \N \N \N 2026-01-08 04:50:00.019666+00 \N
+3434 af040faa-e67d-4584-ae16-5c8baca52ae0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:10:00.040436+00 \N {"children": []} \N \N \N \N 2026-01-08 15:10:00.03228+00 \N
+3933 540ddc2e-9c2e-4b65-b7c7-2cb49b8e9c5c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:45:00.026922+00 \N {"children": []} \N \N \N \N 2026-01-12 10:45:00.0216+00 \N
+3308 b6ff6be8-80c9-452e-9605-37fa1014ad83 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:15:00.032284+00 \N {"children": []} \N \N \N \N 2026-01-08 06:15:00.026299+00 \N
+3698 c7a23d73-aa4f-4145-bb82-9d077f8f4c3e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:45:00.035049+00 \N {"children": []} \N \N \N \N 2026-01-09 09:45:00.026716+00 \N
+3612 e62575fe-b2a5-4e26-ad8b-5a48d6627a8b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:45:00.031764+00 \N {"children": []} \N \N \N \N 2026-01-09 03:45:00.023194+00 \N
+3343 a7117d41-9a42-40fb-aad3-21d8b4cda929 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:50:00.035985+00 \N {"children": []} \N \N \N \N 2026-01-08 08:50:00.029485+00 \N
+3469 2001d98b-8050-4a9e-b862-2127d97e53e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:45:00.030081+00 \N {"children": []} \N \N \N \N 2026-01-08 17:45:00.023028+00 \N
+3810 14a30282-124d-4564-8b41-70337e7fa552 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:45:00.031809+00 \N {"children": []} \N \N \N \N 2026-01-09 17:45:00.022769+00 \N
+3378 53594b95-f457-4d4e-ae6d-141d56f7216c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:10:00.036971+00 \N {"children": []} \N \N \N \N 2026-01-08 11:10:00.027784+00 \N
+3733 0699bf05-4af7-42f5-9ae7-1fee129dbc88 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:10:00.041193+00 \N {"children": []} \N \N \N \N 2026-01-09 12:10:00.030085+00 \N
+3413 b327ddd0-f0c9-4ebc-b2b9-5b86e012d5be SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:45:00.055087+00 \N {"children": []} \N \N \N \N 2026-01-08 13:45:00.046284+00 \N
+3504 97581dd5-5ec8-40e6-b00f-711e5a0c3a46 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:10:00.03104+00 \N {"children": []} \N \N \N \N 2026-01-08 20:10:00.018844+00 \N
+3916 9e8644f2-6037-49d2-b538-4d583873345f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 09:30:00.041321+00 \N {"children": []} \N \N \N \N 2026-01-12 09:30:00.030316+00 \N
+3937 bb61bdc5-1472-406f-9153-666f4a3d3f0b SUCCESS application/json utf-8 null 2026-01-12 11:00:00.04322+00 \N {"children": []} \N \N \N \N 2026-01-12 11:00:00.036307+00 \N
+3924 3c5e48b8-4674-4741-ae47-2ef9865dae32 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:00:00.1477+00 \N {"children": []} \N \N \N \N 2026-01-12 10:00:00.116086+00 \N
+3539 22f8edfc-cf0a-41af-8843-67dbed02f282 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:45:00.03432+00 \N {"children": []} \N \N \N \N 2026-01-08 22:45:00.024868+00 \N
+3945 b9267b5a-22dd-4e3f-b924-25328b1bc362 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:35:00.033494+00 \N {"children": []} \N \N \N \N 2026-01-12 11:35:00.027865+00 \N
+3574 e93076d5-13a5-434c-8edd-5a8cd18191fc SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 01:00:00.135466+00 \N {"children": []} \N \N \N \N 2026-01-09 01:00:00.086333+00 \N
+3629 408c98fd-af37-4319-94f1-3568c1621f1a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:55:00.038787+00 \N {"children": []} \N \N \N \N 2026-01-09 04:55:00.02274+00 \N
+3776 2b7e4182-b2ac-4feb-834e-5ea02210971a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:15:00.031827+00 \N {"children": []} \N \N \N \N 2026-01-09 15:15:00.023384+00 \N
+3664 b495258a-6ce4-419e-883c-d17c5604593e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:20:00.044722+00 \N {"children": []} \N \N \N \N 2026-01-09 07:20:00.030259+00 \N
+3288 afe77287-2abd-462a-9cb3-23e4b32bb862 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:55:00.040349+00 \N {"children": []} \N \N \N \N 2026-01-08 04:55:00.035086+00 \N
+3435 21b948bd-c7ae-40b8-a8ea-a51ec1ca8090 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:15:00.033848+00 \N {"children": []} \N \N \N \N 2026-01-08 15:15:00.024875+00 \N
+3934 65a96f1b-e309-4de9-9f8c-27a96805c1c6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:50:00.027637+00 \N {"children": []} \N \N \N \N 2026-01-12 10:50:00.02105+00 \N
+3309 5f9b43e3-4c81-4bbf-ad9a-cea46927fdf1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:20:00.033664+00 \N {"children": []} \N \N \N \N 2026-01-08 06:20:00.027118+00 \N
+3613 65181d32-1038-42a7-ac18-b1f41a12073e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:50:00.031237+00 \N {"children": []} \N \N \N \N 2026-01-09 03:50:00.024435+00 \N
+3344 451dcf61-eecf-4f0d-b375-b0de1527368a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:55:00.032431+00 \N {"children": []} \N \N \N \N 2026-01-08 08:55:00.026928+00 \N
+3470 6d716546-af0a-4092-b423-73e48f13bbe4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:50:00.029983+00 \N {"children": []} \N \N \N \N 2026-01-08 17:50:00.023104+00 \N
+3379 5a4195a4-8636-444c-929d-c655fca0f8f2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:15:00.0307+00 \N {"children": []} \N \N \N \N 2026-01-08 11:15:00.024729+00 \N
+3699 3c474812-de29-43c4-8a46-bd13d6ab1980 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:50:00.0347+00 \N {"children": []} \N \N \N \N 2026-01-09 09:50:00.024711+00 \N
+3811 607d5056-a1b0-4584-9dd7-34ca372d9a32 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:50:00.033894+00 \N {"children": []} \N \N \N \N 2026-01-09 17:50:00.024679+00 \N
+3734 92203924-6445-4c7d-8527-65022a9d485a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:15:00.046794+00 \N {"children": []} \N \N \N \N 2026-01-09 12:15:00.029425+00 \N
+3414 49d32a8f-41bf-48ce-8ab4-be8645834ed7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:50:00.05216+00 \N {"children": []} \N \N \N \N 2026-01-08 13:50:00.041298+00 \N
+3505 f911828e-5fdd-4fbf-98cb-d846c544d1f0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:15:00.035993+00 \N {"children": []} \N \N \N \N 2026-01-08 20:15:00.027994+00 \N
+3925 62659665-0b7b-428d-8bb6-365dba5c5f37 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 10:05:00.033868+00 \N {"children": []} \N \N \N \N 2026-01-12 10:05:00.025492+00 \N
+3540 4e6c7a53-4ceb-4aa6-87ba-85e7af9c0994 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:50:00.031879+00 \N {"children": []} \N \N \N \N 2026-01-08 22:50:00.024688+00 \N
+3938 2bf700d0-bfda-409b-aca6-39e2cea0e707 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:00:00.050573+00 \N {"children": []} \N \N \N \N 2026-01-12 11:00:00.042399+00 \N
+3946 92185f24-604f-479a-a856-c3ccc6889291 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:40:00.029662+00 \N {"children": []} \N \N \N \N 2026-01-12 11:40:00.022897+00 \N
+3575 e5f043c4-452f-4aa2-acb4-b63e2fd0b508 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:05:00.035155+00 \N {"children": []} \N \N \N \N 2026-01-09 01:05:00.025343+00 \N
+4035 debb81d7-38cd-41ef-98d7-d2b973afceba SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:15:00.039652+00 \N {"children": []} \N \N \N \N 2026-01-12 16:15:00.030758+00 \N
+3630 b7ecb3f9-4fce-4cfa-8017-7cd959af261c SUCCESS application/json utf-8 null 2026-01-09 05:00:00.051513+00 \N {"children": []} \N \N \N \N 2026-01-09 05:00:00.026708+00 \N
+3777 97f7f99c-ec35-423a-8d0a-062ac6ee8b8e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:20:00.036322+00 \N {"children": []} \N \N \N \N 2026-01-09 15:20:00.026043+00 \N
+3665 5c1ca5a5-1ced-442c-b8f1-b954fb429ea4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:25:00.038023+00 \N {"children": []} \N \N \N \N 2026-01-09 07:25:00.029329+00 \N
+3289 c6afd2e9-a531-4112-9426-2a9db666a579 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 05:00:00.119521+00 \N {"children": []} \N \N \N \N 2026-01-08 05:00:00.040774+00 \N
+3436 2b70d08c-7988-4751-9baa-d246d4e39f52 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:20:00.035502+00 \N {"children": []} \N \N \N \N 2026-01-08 15:20:00.023246+00 \N
+3939 6b7bd9c7-f7da-4b0a-9d51-ed6dbc25a13d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:05:00.038199+00 \N {"children": []} \N \N \N \N 2026-01-12 11:05:00.029412+00 \N
+3700 f94cafae-185f-4085-9287-d65d56805cc4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:55:00.029084+00 \N {"children": []} \N \N \N \N 2026-01-09 09:55:00.020825+00 \N
+3812 9675ab83-17fc-44ea-9c12-9f43b4635027 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 17:55:00.032298+00 \N {"children": []} \N \N \N \N 2026-01-09 17:55:00.023703+00 \N
+3310 377df2f4-82f9-4401-8949-72c7e7ccdfc5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:25:00.057185+00 \N {"children": []} \N \N \N \N 2026-01-08 06:25:00.035707+00 \N
+3735 46f35285-6461-477c-825c-b32743e959e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:20:00.039735+00 \N {"children": []} \N \N \N \N 2026-01-09 12:20:00.02636+00 \N
+3345 634e6331-050c-437e-b2ac-5952c2624cf4 SUCCESS application/json utf-8 {"warning_count": 1, "total_accounts": 13} 2026-01-08 09:00:00.358016+00 \N {"children": []} \N \N \N \N 2026-01-08 09:00:00.031996+00 \N
+3471 198d4423-34a7-446a-b0d9-7154cef8199e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:55:00.034107+00 \N {"children": []} \N \N \N \N 2026-01-08 17:55:00.027207+00 \N
+3380 b599ecb4-a663-44f6-8a39-6d0f9a8bfaf9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:20:00.050374+00 \N {"children": []} \N \N \N \N 2026-01-08 11:20:00.035364+00 \N
+4081 aa46c2b1-6120-4b4b-ba43-273ec8e4cb28 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:35:00.072061+00 \N {"children": []} \N \N \N \N 2026-01-12 19:35:00.046976+00 \N
+3415 4101c66d-c142-4690-a3f4-05c38ecb7cac SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 13:55:00.034245+00 \N {"children": []} \N \N \N \N 2026-01-08 13:55:00.026955+00 \N
+3947 760cd9c6-5d38-4a22-bf37-dee4fae16d58 SUCCESS application/json utf-8 null 2026-01-12 11:52:38.028238+00 \N {"children": [[["81fa4d8b-17c0-4b1a-9a6f-725996993589", null], null], [["05935e34-db50-4eec-863d-00d15c5f5787", null], null], [["03ba5172-338b-4660-bab0-c1f23cf1179d", null], null], [["c9bdb7a6-f046-4d88-8a65-ebf73179882a", null], null], [["f45fce03-a38e-4bea-a2ad-a8c666363b8d", null], null], [["93c5f90d-53f1-4ef1-ba42-c45b78a003be", null], null], [["2c9dee43-7007-496f-9faf-6605566d5f89", null], null], [["4ce545fd-7113-4c5a-91c7-85a625c1a016", null], null], [["14fefee2-5f2c-4479-8463-758167387831", null], null], [["de072cc8-e53c-46c4-8013-0271ee15ba03", null], null], [["a119a3cb-0a7d-4368-8455-217e16caf5eb", null], null], [["89905c62-368e-4c7e-85fb-84641aefa94c", null], null], [["f655277a-5b7d-46c8-aae5-5729ce894727", null], null], [["5b3d0086-6ff5-4042-8220-ce121dbb9e8d", null], null], [["36f2ebe4-1913-4e70-845f-f838ef8a64a9", null], null], [["d7052835-c783-428b-859b-e5fd7db06a7a", null], null], [["f84d51cd-03e8-43b7-989b-072135b4516b", null], null], [["2e576a44-6161-42eb-90d9-16275a06cab6", null], null], [["ebd11ecf-bb45-4c61-9d24-305d3f19c0e3", null], null], [["1d3454cf-d2ae-4c5a-9645-e38ad06795e9", null], null]]} \N \N \N \N 2026-01-12 11:43:52.176607+00 \N
+3506 9f4d25f6-9ae4-4985-940b-bfe62fe36ee1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:20:00.031778+00 \N {"children": []} \N \N \N \N 2026-01-08 20:20:00.023661+00 \N
+3972 3f35360c-6745-4d8e-8767-784fbc1e5a12 SUCCESS application/json utf-8 {"sites_processed": 2, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}, {"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 12:00:00.055417+00 \N {"children": []} \N \N \N \N 2026-01-12 12:00:00.029951+00 \N
+3541 44d2ffe6-8092-455e-b06e-543c724d67cb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:55:00.033161+00 \N {"children": []} \N \N \N \N 2026-01-08 22:55:00.024975+00 \N
+3576 9ff71efb-6617-464f-8ffe-a034718385ec SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:10:00.042219+00 \N {"children": []} \N \N \N \N 2026-01-09 01:10:00.033294+00 \N
+3614 0d7a381d-ecaa-46b4-a2f1-b3b1d749b6bf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 03:55:00.031481+00 \N {"children": []} \N \N \N \N 2026-01-09 03:55:00.022351+00 \N
+3631 184bd695-f048-4a85-8a58-33ec909dcb7c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:00:00.087967+00 \N {"children": []} \N \N \N \N 2026-01-09 05:00:00.058411+00 \N
+3778 dcb4eb0b-b61e-40b1-b660-ae83c994f06f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:25:00.030711+00 \N {"children": []} \N \N \N \N 2026-01-09 15:25:00.02283+00 \N
+3290 cde50c37-69af-48bd-adf6-6031fe7a190d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:00:00.121987+00 \N {"children": []} \N \N \N \N 2026-01-08 05:00:00.075815+00 \N
+3437 9a19501f-5261-4643-a4db-c6fd51ed4319 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:25:00.035326+00 \N {"children": []} \N \N \N \N 2026-01-08 15:25:00.024448+00 \N
+3666 1d91aea6-5f39-4f37-bf52-805111117266 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:30:00.031116+00 \N {"children": []} \N \N \N \N 2026-01-09 07:30:00.023165+00 \N
+3940 290a3fe9-465c-4146-927b-6838789d9ccc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:10:00.042226+00 \N {"children": []} \N \N \N \N 2026-01-12 11:10:00.032649+00 \N
+3311 6ac76457-a099-485d-af71-5536c90b2659 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:30:00.033263+00 \N {"children": []} \N \N \N \N 2026-01-08 06:30:00.025929+00 \N
+3701 97551cec-555f-4d69-bb51-a91d35489c8f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:00:00.041508+00 \N {"children": []} \N \N \N \N 2026-01-09 10:00:00.028093+00 \N
+3813 bac86628-a45a-4b61-81a7-8fb096d618a1 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 18:00:00.098683+00 \N {"children": []} \N \N \N \N 2026-01-09 18:00:00.037978+00 \N
+3346 f37dd212-7cb4-4503-af4d-1dc88820e93e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:00:00.073938+00 \N {"children": []} \N \N \N \N 2026-01-08 09:00:00.038343+00 \N
+3472 1ced5cae-1f1d-4f0c-9102-f106d96e8322 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 18:00:00.099356+00 \N {"children": []} \N \N \N \N 2026-01-08 18:00:00.034186+00 \N
+3381 82fd0bea-5b5a-4de6-963f-1d5eb5462a98 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:25:00.028653+00 \N {"children": []} \N \N \N \N 2026-01-08 11:25:00.021359+00 \N
+3736 440fc110-fa62-4505-bf92-3e0e31157a0b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:25:00.061379+00 \N {"children": []} \N \N \N \N 2026-01-09 12:25:00.044423+00 \N
+3416 f7326274-a2b7-486d-a785-27b5c1e49804 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:00:00.043385+00 \N {"children": []} \N \N \N \N 2026-01-08 14:00:00.03128+00 \N
+3507 b0b89f9f-5267-46a9-8664-8d76144b4fde SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:25:00.028469+00 \N {"children": []} \N \N \N \N 2026-01-08 20:25:00.021054+00 \N
+3948 22d41a2e-c203-4361-b4b4-1168f63393fe SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:45:00.041274+00 \N {"children": []} \N \N \N \N 2026-01-12 11:45:00.03397+00 \N
+4082 c0896805-33af-4f4e-aeae-bb28da5722a9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:40:00.045923+00 \N {"children": []} \N \N \N \N 2026-01-12 19:40:00.027762+00 \N
+3542 738674d5-0be4-42b0-b0d1-e8bebd82f979 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:00:00.033087+00 \N {"children": []} \N \N \N \N 2026-01-08 23:00:00.021723+00 \N
+3975 4d05af96-3577-4b92-a2e0-97fd8d311146 SUCCESS application/json utf-8 {"sites_processed": 2, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}, {"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 12:05:33.099794+00 \N {"children": []} \N \N \N \N 2026-01-12 12:05:32.998923+00 \N
+3998 39d983ef-f20a-4902-8ad9-d23ecb4eacde SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:40:00.033127+00 \N {"children": []} \N \N \N \N 2026-01-12 13:40:00.026118+00 \N
+3577 14a49796-0265-48e2-a4c7-072328b26e85 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:15:00.035619+00 \N {"children": []} \N \N \N \N 2026-01-09 01:15:00.02776+00 \N
+4036 156f1227-83b5-4bd7-9e2b-2e77948ac9cf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:20:00.031205+00 \N {"children": []} \N \N \N \N 2026-01-12 16:20:00.023893+00 \N
+3632 5db1d742-07df-43b7-8c5a-438a90957067 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 05:00:00.130751+00 \N {"children": []} \N \N \N \N 2026-01-09 05:00:00.060348+00 \N
+3779 bae449ea-71cb-403e-8582-2437dec65bed SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:30:00.037193+00 \N {"children": []} \N \N \N \N 2026-01-09 15:30:00.027095+00 \N
+3667 6af5e90c-f825-40d8-823d-d29dad117425 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:35:00.03661+00 \N {"children": []} \N \N \N \N 2026-01-09 07:35:00.029342+00 \N
+3291 04e94889-3662-469c-8b50-3679507a08b2 SUCCESS application/json utf-8 null 2026-01-08 05:00:00.148898+00 \N {"children": []} \N \N \N \N 2026-01-08 05:00:00.115817+00 \N
+3438 4643ab4f-98f8-4374-b75a-44b889c5c6f8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:30:00.028861+00 \N {"children": []} \N \N \N \N 2026-01-08 15:30:00.022211+00 \N
+3941 39600c74-f9df-4d67-8efb-60ded1129ee2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:15:00.029889+00 \N {"children": []} \N \N \N \N 2026-01-12 11:15:00.023919+00 \N
+3312 8ed12a55-8c06-448f-a1c5-bb367bf047b1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:35:00.034737+00 \N {"children": []} \N \N \N \N 2026-01-08 06:35:00.025341+00 \N
+3702 2886afb5-2337-437d-b20f-33685edb5fa6 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 10:00:00.392929+00 \N {"children": []} \N \N \N \N 2026-01-09 10:00:00.261123+00 \N
+3615 f8169924-ec51-479a-b021-35ca50e16a70 SUCCESS application/json utf-8 null 2026-01-09 04:00:00.099461+00 \N {"children": []} \N \N \N \N 2026-01-09 04:00:00.045439+00 \N
+3814 e02c8dee-2e03-40c0-a173-df6b838ca901 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:00:00.206338+00 \N {"children": []} \N \N \N \N 2026-01-09 18:00:00.170606+00 \N
+3737 da6cb6e3-afd8-4dc3-9bcf-8b967ff14014 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:30:00.043337+00 \N {"children": []} \N \N \N \N 2026-01-09 12:30:00.028366+00 \N
+3347 080dbd3c-ba72-4d98-9331-aec327ec8c52 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 09:00:00.158683+00 \N {"children": []} \N \N \N \N 2026-01-08 09:00:00.046353+00 \N
+3473 baa266c3-1cf6-409a-adc6-dd37b62bedb4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:00:00.098327+00 \N {"children": []} \N \N \N \N 2026-01-08 18:00:00.077532+00 \N
+3382 84397a6d-d90d-4aa5-b0ce-de6f4231f2a4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:30:00.051649+00 \N {"children": []} \N \N \N \N 2026-01-08 11:30:00.037066+00 \N
+4060 35ddc143-bf12-44b1-8076-3ebb5d79041b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 18:00:00.059449+00 \N {"children": []} \N \N \N \N 2026-01-12 18:00:00.043403+00 \N
+3417 95575492-8799-445c-b2ec-74b10fcde1ca SUCCESS application/json utf-8 null 2026-01-08 14:00:00.059532+00 \N {"children": []} \N \N \N \N 2026-01-08 14:00:00.049672+00 \N
+3508 48553005-b7ef-4030-b150-64bfbb3efca9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:30:00.037489+00 \N {"children": []} \N \N \N \N 2026-01-08 20:30:00.026501+00 \N
+3543 ccb6192d-dbf3-4d9d-800f-fdfb30dc4248 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 23:00:00.049812+00 \N {"children": []} \N \N \N \N 2026-01-08 23:00:00.030309+00 \N
+3578 0e3a9c5c-894b-4610-8d7f-5f414a89ca29 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:20:00.034685+00 \N {"children": []} \N \N \N \N 2026-01-09 01:20:00.027077+00 \N
+3949 81fa4d8b-17c0-4b1a-9a6f-725996993589 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 545, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/27279c94-3ee9-4377-80a5-017180788166.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_545_1768218485.webp", "revised_prompt": null}]} 2026-01-12 11:48:06.388345+00 \N {"children": []} \N \N \N \N 2026-01-12 11:47:52.532132+00 \N
+3977 bbd453fc-7d7b-4ace-9ebf-e5075090d084 SUCCESS application/json utf-8 null 2026-01-12 12:05:33.042294+00 \N {"children": []} \N \N \N \N 2026-01-12 12:05:33.007587+00 \N
+3999 affdedaf-81d5-4dbd-b861-e187e6de8de0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:45:00.049551+00 \N {"children": []} \N \N \N \N 2026-01-12 13:45:00.03759+00 \N
+4021 c8ef963f-2ce6-4b90-b708-a2c0e2042696 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:15:00.02849+00 \N {"children": []} \N \N \N \N 2026-01-12 15:15:00.021081+00 \N
+3633 f8bb5e32-07e4-4c4a-a00b-03e7de790e44 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:05:00.028051+00 \N {"children": []} \N \N \N \N 2026-01-09 05:05:00.02082+00 \N
+3780 6c6fb769-9c8f-44f0-951b-44ede9d212f0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:35:00.037776+00 \N {"children": []} \N \N \N \N 2026-01-09 15:35:00.024233+00 \N
+3668 3d071060-7294-49ad-b62d-08a997885013 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:40:00.027478+00 \N {"children": []} \N \N \N \N 2026-01-09 07:40:00.021833+00 \N
+3292 9574acb2-fdff-4b8d-823e-457c0fbed289 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:05:00.035078+00 \N {"children": []} \N \N \N \N 2026-01-08 05:05:00.027154+00 \N
+3439 46924e44-a5db-4c3c-9e3c-c58f7177e682 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:35:00.03099+00 \N {"children": []} \N \N \N \N 2026-01-08 15:35:00.024192+00 \N
+4037 2baf2f1a-5aba-4003-981f-efb91a2ee2c7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:25:00.035913+00 \N {"children": []} \N \N \N \N 2026-01-12 16:25:00.028556+00 \N
+3703 4fbb5e52-6397-40d8-bde8-af828f95a977 SUCCESS application/json utf-8 null 2026-01-09 10:00:00.338798+00 \N {"children": []} \N \N \N \N 2026-01-09 10:00:00.282924+00 \N
+3313 1a6de99b-99cd-4a29-8e28-5c610e297928 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:40:00.035061+00 \N {"children": []} \N \N \N \N 2026-01-08 06:40:00.024422+00 \N
+3815 d2fc1109-866a-4154-bf18-cccfdc4bf134 SUCCESS application/json utf-8 null 2026-01-09 18:00:00.204964+00 \N {"children": []} \N \N \N \N 2026-01-09 18:00:00.172266+00 \N
+3348 d97acc68-b4b1-4844-b7ea-506d8c1c375a SUCCESS application/json utf-8 null 2026-01-08 09:00:00.735899+00 \N {"children": []} \N \N \N \N 2026-01-08 09:00:00.678883+00 \N
+3738 3021fb6f-f1d8-43e0-b1e1-2c9830e015fe SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:35:00.052673+00 \N {"children": []} \N \N \N \N 2026-01-09 12:35:00.038903+00 \N
+3474 c8debe3e-c48e-4489-a3e7-3643af0f9f25 SUCCESS application/json utf-8 null 2026-01-08 18:00:00.12838+00 \N {"children": []} \N \N \N \N 2026-01-08 18:00:00.095313+00 \N
+3383 0a237bdf-1f7e-49f9-8de0-6574e5332146 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:35:00.042225+00 \N {"children": []} \N \N \N \N 2026-01-08 11:35:00.028233+00 \N
+4061 e1469f57-7193-4ad7-8440-3a079bb74aaa SUCCESS application/json utf-8 {"processed": 4, "published": 0, "failed": 4, "errors": ["No active WordPress integration for site 21", "No active WordPress integration for site 21", "No active WordPress integration for site 21", "No active WordPress integration for site 21"]} 2026-01-12 18:05:03.182232+00 \N {"children": []} \N \N \N \N 2026-01-12 18:05:02.768302+00 \N
+3418 22111e5a-34a8-4c2d-a2cf-c08ccaada86e SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 14:00:00.102689+00 \N {"children": []} \N \N \N \N 2026-01-08 14:00:00.059938+00 \N
+3509 c4e01470-c6b9-45cf-b687-29c2e1ba7a01 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:35:00.030104+00 \N {"children": []} \N \N \N \N 2026-01-08 20:35:00.022106+00 \N
+4083 20f72e7f-07f0-4ea7-b313-a6abd8fb3db3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:45:00.045343+00 \N {"children": []} \N \N \N \N 2026-01-12 19:45:00.026525+00 \N
+3544 aaab11bd-276b-4137-aecb-07d9a597a339 SUCCESS application/json utf-8 null 2026-01-08 23:00:00.048001+00 \N {"children": []} \N \N \N \N 2026-01-08 23:00:00.033713+00 \N
+3950 05935e34-db50-4eec-863d-00d15c5f5787 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 544, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/da3ed683-f6c6-4e74-ba24-758a7fd72e6d.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_544_1768218499.webp", "revised_prompt": null}]} 2026-01-12 11:48:20.282473+00 \N {"children": []} \N \N \N \N 2026-01-12 11:48:08.558432+00 \N
+3579 d3d8b76f-ece1-4023-990c-e4b346f86202 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:25:00.040165+00 \N {"children": []} \N \N \N \N 2026-01-09 01:25:00.032532+00 \N
+3976 22e46f23-f801-42bd-825d-241f1cdae7a9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:05:33.028818+00 \N {"children": []} \N \N \N \N 2026-01-12 12:05:33.004153+00 \N
+4000 a7d05f4a-fd2a-4077-9a89-f1b62fe25f7a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:50:00.029065+00 \N {"children": []} \N \N \N \N 2026-01-12 13:50:00.021437+00 \N
+4022 445601cf-71d3-4ac7-81c5-efc24c0de210 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:20:00.029039+00 \N {"children": []} \N \N \N \N 2026-01-12 15:20:00.022213+00 \N
+4025 cc1d5e25-a843-443d-a102-bbbb1fb906d3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:35:00.060206+00 \N {"children": []} \N \N \N \N 2026-01-12 15:35:00.047283+00 \N
+3616 7fd2f9d0-85fc-4a31-af51-9d61671dbbf8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 04:00:00.058291+00 \N {"children": []} \N \N \N \N 2026-01-09 04:00:00.052853+00 \N
+3634 7de5db50-d8d8-4981-b9c5-2ec249985f5c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:10:00.035304+00 \N {"children": []} \N \N \N \N 2026-01-09 05:10:00.026536+00 \N
+3781 a6b10144-bad2-4e53-9e0b-2ceb2f650ce5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:40:00.040419+00 \N {"children": []} \N \N \N \N 2026-01-09 15:40:00.025765+00 \N
+3293 1d58755c-be93-4d20-b50a-04cf87d5ea44 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:10:00.040863+00 \N {"children": []} \N \N \N \N 2026-01-08 05:10:00.03082+00 \N
+3440 c13d145f-563c-4672-a57c-29af2a5e95f3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:40:00.029788+00 \N {"children": []} \N \N \N \N 2026-01-08 15:40:00.021852+00 \N
+3314 024c14ec-dac0-424c-a07b-fd4c5c8ff674 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:45:00.035013+00 \N {"children": []} \N \N \N \N 2026-01-08 06:45:00.027514+00 \N
+3669 b54e94f0-f52d-453f-93e5-d37fa036bbfe SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:45:00.040029+00 \N {"children": []} \N \N \N \N 2026-01-09 07:45:00.028662+00 \N
+3349 d9e935d2-c7d7-4335-9be8-1f4f6be765a8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:05:00.034365+00 \N {"children": []} \N \N \N \N 2026-01-08 09:05:00.026307+00 \N
+3704 0d0694dd-40e6-4f0f-833a-73eb85334d1a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:05:00.033265+00 \N {"children": []} \N \N \N \N 2026-01-09 10:05:00.025002+00 \N
+3816 2f1276b8-f4bb-4fd9-8ac3-ddb919f34d22 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:05:00.038237+00 \N {"children": []} \N \N \N \N 2026-01-09 18:05:00.024697+00 \N
+3475 e0b34c65-ccaa-4ae3-b2ce-a7fde6c1bdf5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:05:00.041237+00 \N {"children": []} \N \N \N \N 2026-01-08 18:05:00.032475+00 \N
+3384 1326aef8-a29e-4955-9e33-cc142929e7cb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:40:00.031222+00 \N {"children": []} \N \N \N \N 2026-01-08 11:40:00.025613+00 \N
+3739 7b317c94-7b72-4808-833d-648212216e6a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:40:00.055466+00 \N {"children": []} \N \N \N \N 2026-01-09 12:40:00.037077+00 \N
+3419 0fc3cc93-b8d5-4e9a-b452-604d6e517e95 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:05:00.032177+00 \N {"children": []} \N \N \N \N 2026-01-08 14:05:00.026275+00 \N
+3510 72110a8a-a21a-49d1-b8af-48c3b5419e0b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:40:00.030044+00 \N {"children": []} \N \N \N \N 2026-01-08 20:40:00.023082+00 \N
+3545 11fb9ca3-7d6b-4557-b87b-6dd0c424cc18 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:05:00.041602+00 \N {"children": []} \N \N \N \N 2026-01-08 23:05:00.034827+00 \N
+3951 03ba5172-338b-4660-bab0-c1f23cf1179d SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 546, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/ba8df9ec-68e1-42ed-a0f1-c67b26f333cd.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_546_1768218512.webp", "revised_prompt": null}]} 2026-01-12 11:48:32.945672+00 \N {"children": []} \N \N \N \N 2026-01-12 11:48:21.577431+00 \N
+3978 69ae6762-b54d-4fdc-a047-845d23577498 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:10:00.046507+00 \N {"children": []} \N \N \N \N 2026-01-12 12:10:00.035893+00 \N
+4001 97cbe9f0-0cae-45a4-9959-2c8ad31170ac SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:55:00.029037+00 \N {"children": []} \N \N \N \N 2026-01-12 13:55:00.021642+00 \N
+4023 fa4e953c-c045-40c5-a79d-468682979d98 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:25:00.036057+00 \N {"children": []} \N \N \N \N 2026-01-12 15:25:00.025632+00 \N
+4026 6fc7d529-811e-44ee-9105-08d392746d39 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:40:00.031473+00 \N {"children": []} \N \N \N \N 2026-01-12 15:40:00.025534+00 \N
+3635 8296ecd1-836c-4cfa-b9c6-939fb95a1833 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:15:00.033283+00 \N {"children": []} \N \N \N \N 2026-01-09 05:15:00.026013+00 \N
+3782 61ffdee9-6ce4-4ab6-b4ac-d88e85d54b41 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:45:00.038653+00 \N {"children": []} \N \N \N \N 2026-01-09 15:45:00.028017+00 \N
+3670 31898f52-817f-449a-87f0-fad877aa66fa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:50:00.032393+00 \N {"children": []} \N \N \N \N 2026-01-09 07:50:00.026905+00 \N
+3294 37c53845-09dc-47d5-965d-01b8969d7360 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:15:00.038106+00 \N {"children": []} \N \N \N \N 2026-01-08 05:15:00.029914+00 \N
+3441 bf53cb38-23a8-4355-b2d0-198fe55d1f82 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:45:00.034976+00 \N {"children": []} \N \N \N \N 2026-01-08 15:45:00.026517+00 \N
+3315 02dfebd4-9a6d-46af-bef1-65dd73d83ae0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:50:00.058262+00 \N {"children": []} \N \N \N \N 2026-01-08 06:50:00.046925+00 \N
+3705 53c4b386-da78-47b6-8c89-4e7a35f0bc81 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:10:00.03541+00 \N {"children": []} \N \N \N \N 2026-01-09 10:10:00.024042+00 \N
+3350 68e52c0b-7bfd-4915-b1e3-0566b73ff047 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:10:00.0373+00 \N {"children": []} \N \N \N \N 2026-01-08 09:10:00.028533+00 \N
+3817 9dbf0e0f-5eac-47aa-93a4-f2801c038066 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:10:00.032563+00 \N {"children": []} \N \N \N \N 2026-01-09 18:10:00.021355+00 \N
+3476 780e988d-f495-4dbe-b7a3-c1e4fd4e5bf5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:10:00.038042+00 \N {"children": []} \N \N \N \N 2026-01-08 18:10:00.027258+00 \N
+3740 db8c00bc-3517-4d16-9606-8e1bffd18974 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:45:00.042416+00 \N {"children": []} \N \N \N \N 2026-01-09 12:45:00.032166+00 \N
+3385 aaa62a89-2f5e-443e-b2c8-b329a6a9fd24 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:45:00.037523+00 \N {"children": []} \N \N \N \N 2026-01-08 11:45:00.02709+00 \N
+3420 1c687cd1-865c-49b4-be1d-3a9c4276c8fa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:10:00.050621+00 \N {"children": []} \N \N \N \N 2026-01-08 14:10:00.039448+00 \N
+3511 57071e28-d6bb-44a2-916d-3510720f6158 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:45:00.037991+00 \N {"children": []} \N \N \N \N 2026-01-08 20:45:00.029765+00 \N
+3546 bc341428-327f-488f-802d-0457d2af4a21 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:10:00.034289+00 \N {"children": []} \N \N \N \N 2026-01-08 23:10:00.027039+00 \N
+3580 fb39eeea-d350-41c9-a06d-06200b49a770 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:30:00.033626+00 \N {"children": []} \N \N \N \N 2026-01-09 01:30:00.027317+00 \N
+3952 c9bdb7a6-f046-4d88-8a65-ebf73179882a SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 547, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/2f375927-288b-45b6-acf1-9b8a55131d26.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_547_1768218525.webp", "revised_prompt": null}]} 2026-01-12 11:48:45.98301+00 \N {"children": []} \N \N \N \N 2026-01-12 11:48:34.601009+00 \N
+3979 78693e4b-befe-495f-9333-8a74950ce0f9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:15:00.059609+00 \N {"children": []} \N \N \N \N 2026-01-12 12:15:00.03861+00 \N
+4002 c8c03894-859c-4208-91d3-e63a71584f8c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:00:00.052352+00 \N {"children": []} \N \N \N \N 2026-01-12 14:00:00.038507+00 \N
+4024 9738862d-dc33-49a1-804b-be27b681e8e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:30:00.031252+00 \N {"children": []} \N \N \N \N 2026-01-12 15:30:00.024537+00 \N
+4027 3e226dd3-dc6b-43dd-b7f7-82b8ad2219fe SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:45:00.03148+00 \N {"children": []} \N \N \N \N 2026-01-12 15:45:00.025275+00 \N
+3617 b82ed6b3-7388-487d-82e7-0041724f4cc7 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 04:00:00.080409+00 \N {"children": []} \N \N \N \N 2026-01-09 04:00:00.061948+00 \N
+4062 3fc23a3a-39bd-4be0-a5b7-5fc973d3a6f8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:10:00.043005+00 \N {"children": []} \N \N \N \N 2026-01-12 18:10:00.026854+00 \N
+3636 baea1f05-d792-48a3-abeb-52bdc55259f9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:20:00.031141+00 \N {"children": []} \N \N \N \N 2026-01-09 05:20:00.022133+00 \N
+3783 ce78c63e-6d6f-49e3-9b6a-429852eae276 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:50:00.038801+00 \N {"children": []} \N \N \N \N 2026-01-09 15:50:00.025485+00 \N
+3295 961566d6-e24b-43e3-bd6d-59d717095891 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:20:00.031341+00 \N {"children": []} \N \N \N \N 2026-01-08 05:20:00.022534+00 \N
+3442 46c61283-c868-41e2-a80f-6787290e81bc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:50:00.033327+00 \N {"children": []} \N \N \N \N 2026-01-08 15:50:00.026337+00 \N
+3316 f1ca2793-d300-4959-b7a9-eeb22e483e3a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 06:55:00.036804+00 \N {"children": []} \N \N \N \N 2026-01-08 06:55:00.028352+00 \N
+3671 6b91a1d9-dd28-4f1d-b37f-b694b228ed49 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 07:55:00.031442+00 \N {"children": []} \N \N \N \N 2026-01-09 07:55:00.025122+00 \N
+3351 b04dac2b-8c24-4663-a497-bc71c51752ef SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:15:00.03167+00 \N {"children": []} \N \N \N \N 2026-01-08 09:15:00.024683+00 \N
+3706 4603c106-9569-4d7d-9530-3f50dad777d8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:15:00.039239+00 \N {"children": []} \N \N \N \N 2026-01-09 10:15:00.028403+00 \N
+3477 f67816ef-ad6f-47ec-ac7c-673ea5d3337f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:15:00.035689+00 \N {"children": []} \N \N \N \N 2026-01-08 18:15:00.024923+00 \N
+3386 d0d7822d-a943-44b2-bb36-b92a401e802f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:50:00.030959+00 \N {"children": []} \N \N \N \N 2026-01-08 11:50:00.023342+00 \N
+3818 508f3658-63cc-4dd3-b5a6-b983ba306608 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:15:00.039482+00 \N {"children": []} \N \N \N \N 2026-01-09 18:15:00.025051+00 \N
+3421 83dcfe30-14e1-41b8-93c7-ab8f1586605b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:15:00.042716+00 \N {"children": []} \N \N \N \N 2026-01-08 14:15:00.030919+00 \N
+3741 88f6c634-ff51-4314-b969-32c2fcd28d5f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:50:00.04984+00 \N {"children": []} \N \N \N \N 2026-01-09 12:50:00.030241+00 \N
+3512 d495c3df-f261-4923-a1df-c82ad88e1074 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:50:00.035159+00 \N {"children": []} \N \N \N \N 2026-01-08 20:50:00.02562+00 \N
+3547 fa832cc0-267e-443e-92b7-87bea2b8c6a6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:15:00.042289+00 \N {"children": []} \N \N \N \N 2026-01-08 23:15:00.033718+00 \N
+3581 de84cdf8-c1e3-430b-84a4-577e7fd23ff7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:35:00.038725+00 \N {"children": []} \N \N \N \N 2026-01-09 01:35:00.028886+00 \N
+3953 f45fce03-a38e-4bea-a2ad-a8c666363b8d SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 548, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/a584d1e8-5971-4047-86aa-c40bb5aa05d4.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_548_1768218538.webp", "revised_prompt": null}]} 2026-01-12 11:48:58.712731+00 \N {"children": []} \N \N \N \N 2026-01-12 11:48:47.618189+00 \N
+3980 d8eda615-4e0c-4c41-9167-3de1d2bc82cd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:20:00.034257+00 \N {"children": []} \N \N \N \N 2026-01-12 12:20:00.025125+00 \N
+4003 1ebec170-06a4-4a47-994a-45b737102f87 SUCCESS application/json utf-8 {"sites_processed": 2, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}, {"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 14:00:00.102614+00 \N {"children": []} \N \N \N \N 2026-01-12 14:00:00.051386+00 \N
+4028 6c67a7d8-104f-454c-8cee-98a9799bec87 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:50:00.044501+00 \N {"children": []} \N \N \N \N 2026-01-12 15:50:00.03372+00 \N
+4038 3e63c211-f8b7-4601-b7da-80d99e391325 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:30:00.027462+00 \N {"children": []} \N \N \N \N 2026-01-12 16:30:00.02143+00 \N
+3637 bfbeb581-f81c-4bae-b541-bcba75234550 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:25:00.029386+00 \N {"children": []} \N \N \N \N 2026-01-09 05:25:00.023726+00 \N
+3784 374e0c8a-b737-4160-8d23-c67c6e595976 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 15:55:00.0303+00 \N {"children": []} \N \N \N \N 2026-01-09 15:55:00.021241+00 \N
+3672 10f4042b-4a53-4567-ba69-e343be7aee4f SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 08:00:00.072011+00 \N {"children": []} \N \N \N \N 2026-01-09 08:00:00.025123+00 \N
+3296 da8c67a3-d664-46b8-b52b-93d80e7a0fd8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:25:00.033721+00 \N {"children": []} \N \N \N \N 2026-01-08 05:25:00.026268+00 \N
+3443 d5b18934-ff89-4d20-b518-e42f62f720fc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 15:55:00.037065+00 \N {"children": []} \N \N \N \N 2026-01-08 15:55:00.028447+00 \N
+3317 bb313b09-c5d8-498c-b4f5-ba1ce24d1690 SUCCESS application/json utf-8 null 2026-01-08 07:00:00.050698+00 \N {"children": []} \N \N \N \N 2026-01-08 07:00:00.026676+00 \N
+3618 7c46dfe3-e618-4515-ad8c-0884886f0f5f SUCCESS application/json utf-8 null 2026-01-09 04:00:00.366349+00 \N {"children": []} \N \N \N \N 2026-01-09 04:00:00.31046+00 \N
+3352 37836e63-4cca-4629-b7dc-abeb65f69784 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:20:00.033265+00 \N {"children": []} \N \N \N \N 2026-01-08 09:20:00.023533+00 \N
+3707 20a410d2-2f80-4031-a73b-c38087e946c1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:20:00.042179+00 \N {"children": []} \N \N \N \N 2026-01-09 10:20:00.034766+00 \N
+3478 ebc34901-4e6c-4070-a28f-e2b33d6b75ae SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:20:00.041428+00 \N {"children": []} \N \N \N \N 2026-01-08 18:20:00.03233+00 \N
+3387 45dd1949-b19d-446a-acd2-8448daf784bb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 11:55:00.037076+00 \N {"children": []} \N \N \N \N 2026-01-08 11:55:00.025156+00 \N
+3819 93d9d7fc-ae41-4048-afb4-23a896fbab22 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:20:00.034582+00 \N {"children": []} \N \N \N \N 2026-01-09 18:20:00.024419+00 \N
+3422 af46f6a3-bccc-4b74-aeb5-d32ca4a10a98 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:20:00.09811+00 \N {"children": []} \N \N \N \N 2026-01-08 14:20:00.080176+00 \N
+3742 47fdfa01-3663-4838-9a18-b0f97858cf04 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 12:55:00.044114+00 \N {"children": []} \N \N \N \N 2026-01-09 12:55:00.03134+00 \N
+3513 15613de1-fc4b-4dd7-bdc9-6208dad586b5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 20:55:00.032003+00 \N {"children": []} \N \N \N \N 2026-01-08 20:55:00.021138+00 \N
+4063 ef185d14-adba-4afa-a637-da9d0b528861 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:15:00.046476+00 \N {"children": []} \N \N \N \N 2026-01-12 18:15:00.024153+00 \N
+3548 fa3b8e65-3a23-4607-9968-d6c2e23d90ff SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:20:00.031675+00 \N {"children": []} \N \N \N \N 2026-01-08 23:20:00.023199+00 \N
+3582 9f6fd239-5c88-4d67-b69b-32b49e713654 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:40:00.036033+00 \N {"children": []} \N \N \N \N 2026-01-09 01:40:00.027446+00 \N
+3954 93c5f90d-53f1-4ef1-ba42-c45b78a003be SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 540, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/75046912-dfc5-4875-b299-ebaf4bc2dfb1.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_540_1768218553.webp", "revised_prompt": null}]} 2026-01-12 11:49:14.462306+00 \N {"children": []} \N \N \N \N 2026-01-12 11:49:00.656813+00 \N
+3981 5bddc4e6-dd6d-4be2-9919-9afc83f9f586 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:25:00.026419+00 \N {"children": []} \N \N \N \N 2026-01-12 12:25:00.020009+00 \N
+4004 0fb2a60a-6c09-4b15-9884-bf5c98614bb7 SUCCESS application/json utf-8 null 2026-01-12 14:00:00.067715+00 \N {"children": []} \N \N \N \N 2026-01-12 14:00:00.056493+00 \N
+4029 0466f212-27af-48bd-9929-4d44c3ee3f6c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:55:00.032123+00 \N {"children": []} \N \N \N \N 2026-01-12 15:55:00.023832+00 \N
+3638 a4ac4c69-5571-4de1-a745-ff1e817ffa40 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:30:00.031093+00 \N {"children": []} \N \N \N \N 2026-01-09 05:30:00.022886+00 \N
+3785 68f314c4-62c0-4bec-b787-071a9585f1a2 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 16:00:00.076206+00 \N {"children": []} \N \N \N \N 2026-01-09 16:00:00.033702+00 \N
+3673 83cd1516-efbf-405a-9e9b-91b999f29361 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:00:00.04253+00 \N {"children": []} \N \N \N \N 2026-01-09 08:00:00.034895+00 \N
+3297 0b052378-7e91-4248-ae2f-8d040ea1fb67 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:30:00.045309+00 \N {"children": []} \N \N \N \N 2026-01-08 05:30:00.035395+00 \N
+3444 7125a128-ec65-4776-bc22-e61d3043fc39 SUCCESS application/json utf-8 null 2026-01-08 16:00:00.080254+00 \N {"children": []} \N \N \N \N 2026-01-08 16:00:00.049955+00 \N
+3318 62daed0f-e79f-4421-85aa-07a719665772 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 07:00:00.349725+00 \N {"children": []} \N \N \N \N 2026-01-08 07:00:00.214422+00 \N
+4039 c8c265b0-0d9c-4659-9c7a-36c13cdf0429 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:35:00.035614+00 \N {"children": []} \N \N \N \N 2026-01-12 16:35:00.028884+00 \N
+3708 2fc7ff79-2a3c-4c99-b42a-208ad4309a3c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:25:00.032762+00 \N {"children": []} \N \N \N \N 2026-01-09 10:25:00.023412+00 \N
+3353 848a5706-f4c6-4fcb-bdea-8a08f7e081f4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:25:00.042532+00 \N {"children": []} \N \N \N \N 2026-01-08 09:25:00.031037+00 \N
+3820 e28f216a-8680-44bb-96b5-e734bcc6c1dc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:25:00.034212+00 \N {"children": []} \N \N \N \N 2026-01-09 18:25:00.023076+00 \N
+3479 eb325ba2-c84e-42f7-937b-4462b104c0ad SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:25:00.027956+00 \N {"children": []} \N \N \N \N 2026-01-08 18:25:00.021055+00 \N
+3388 8e8fc71d-bb85-4628-9b6a-e3059cee6c3a SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 12:00:00.087784+00 \N {"children": []} \N \N \N \N 2026-01-08 12:00:00.031336+00 \N
+3743 97194520-6194-4569-a4ad-9af87f1f649f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:00:00.057442+00 \N {"children": []} \N \N \N \N 2026-01-09 13:00:00.040453+00 \N
+3423 d4d18127-c499-4871-9d73-1aa60c190bc0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:25:00.035302+00 \N {"children": []} \N \N \N \N 2026-01-08 14:25:00.023648+00 \N
+3514 4f5cbf25-450e-47a8-8b71-e44ac5f38cc2 SUCCESS application/json utf-8 null 2026-01-08 21:00:00.052916+00 \N {"children": []} \N \N \N \N 2026-01-08 21:00:00.025668+00 \N
+4044 ba7e4b02-790a-4188-b676-e6c236945bb0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:00:00.073801+00 \N {"children": []} \N \N \N \N 2026-01-12 17:00:00.062059+00 \N
+3549 56895e50-8bc1-4ce3-af6c-855b60425a78 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:25:00.033807+00 \N {"children": []} \N \N \N \N 2026-01-08 23:25:00.025533+00 \N
+4064 539b34b3-4ffa-45cb-b48a-1dd02fb6fba6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:20:00.097943+00 \N {"children": []} \N \N \N \N 2026-01-12 18:20:00.033612+00 \N
+3583 a13bb328-24d5-4bee-af19-7e354b2b9e55 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:45:00.054216+00 \N {"children": []} \N \N \N \N 2026-01-09 01:45:00.034936+00 \N
+3955 2c9dee43-7007-496f-9faf-6605566d5f89 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 539, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/bfd412e6-e5f7-45eb-9a6a-947555b58caa.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_539_1768218567.webp", "revised_prompt": null}]} 2026-01-12 11:49:27.802628+00 \N {"children": []} \N \N \N \N 2026-01-12 11:49:16.673089+00 \N
+3982 4fde7b6e-a2d3-4ef0-b482-5bff831c8c9a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:30:00.049643+00 \N {"children": []} \N \N \N \N 2026-01-12 12:30:00.038208+00 \N
+4005 b41ea816-d7fd-4b27-971f-897f95234a56 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:05:00.041722+00 \N {"children": []} \N \N \N \N 2026-01-12 14:05:00.032911+00 \N
+4030 66788bd3-d3d8-49f1-bb1a-4c045de91629 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 16:00:00.065443+00 \N {"children": []} \N \N \N \N 2026-01-12 16:00:00.026945+00 \N
+3639 55f5c022-90c9-4047-ad57-a831f725c2ff SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:35:00.031404+00 \N {"children": []} \N \N \N \N 2026-01-09 05:35:00.023684+00 \N
+3786 7b1f8d94-93e1-42de-97a4-5ed300aff1e0 SUCCESS application/json utf-8 null 2026-01-09 16:00:00.059682+00 \N {"children": []} \N \N \N \N 2026-01-09 16:00:00.050132+00 \N
+3298 8b36f3fa-c8a8-4af5-963d-e34e6699e2a7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:35:00.036307+00 \N {"children": []} \N \N \N \N 2026-01-08 05:35:00.028243+00 \N
+3445 4660c715-917d-452c-bd37-272bb5b64aed SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:00:00.082968+00 \N {"children": []} \N \N \N \N 2026-01-08 16:00:00.052594+00 \N
+3319 d197041c-9529-4e7a-b4af-d601e2697d8e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:00:00.28114+00 \N {"children": []} \N \N \N \N 2026-01-08 07:00:00.224386+00 \N
+3674 25b3958a-493b-48a3-b137-d6b535413fcc SUCCESS application/json utf-8 null 2026-01-09 08:00:00.061867+00 \N {"children": []} \N \N \N \N 2026-01-09 08:00:00.04605+00 \N
+4040 5fa3c6cd-13f2-48a5-ae6b-3d660fda445b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:40:00.036609+00 \N {"children": []} \N \N \N \N 2026-01-12 16:40:00.029316+00 \N
+3354 37eeaf73-4083-409f-b069-315c19276491 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:30:00.030166+00 \N {"children": []} \N \N \N \N 2026-01-08 09:30:00.02247+00 \N
+3480 e35be0cf-ded5-4d87-aca0-da234a706ec9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:30:00.043201+00 \N {"children": []} \N \N \N \N 2026-01-08 18:30:00.034929+00 \N
+3389 add31bee-e7b0-483f-beaf-a8a1255962ad SUCCESS application/json utf-8 null 2026-01-08 12:00:00.056699+00 \N {"children": []} \N \N \N \N 2026-01-08 12:00:00.041019+00 \N
+3709 11d4cf46-3110-4a2e-9e44-50bbd8c0c309 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:30:00.035734+00 \N {"children": []} \N \N \N \N 2026-01-09 10:30:00.026492+00 \N
+3821 89a6c010-3205-4082-b573-da00c5db7566 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:30:00.037397+00 \N {"children": []} \N \N \N \N 2026-01-09 18:30:00.026445+00 \N
+3744 35ab171e-0a69-4908-b536-ad43aa3ebb60 SUCCESS application/json utf-8 null 2026-01-09 13:00:00.085184+00 \N {"children": []} \N \N \N \N 2026-01-09 13:00:00.059395+00 \N
+3424 9f12e06b-c51e-4738-8e04-bfb2959d1f93 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 14:30:00.035682+00 \N {"children": []} \N \N \N \N 2026-01-08 14:30:00.0251+00 \N
+3515 928dd8f8-d0a0-4238-b9fc-62fa74cf6f8a SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 21:00:00.078148+00 \N {"children": []} \N \N \N \N 2026-01-08 21:00:00.051991+00 \N
+4045 4e467348-730a-4083-8190-e16673b87afa SUCCESS application/json utf-8 null 2026-01-12 17:00:00.074615+00 \N {"children": []} \N \N \N \N 2026-01-12 17:00:00.064633+00 \N
+3550 f1dc123a-1e1b-414e-b28c-6237a0431ed1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:30:00.046272+00 \N {"children": []} \N \N \N \N 2026-01-08 23:30:00.029006+00 \N
+4065 340295b8-070a-41ac-9659-392b0f3f5f03 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:25:00.03888+00 \N {"children": []} \N \N \N \N 2026-01-12 18:25:00.020068+00 \N
+3584 4b9914ec-68e4-4fff-81ed-25ca798f6ddc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:50:00.036929+00 \N {"children": []} \N \N \N \N 2026-01-09 01:50:00.028092+00 \N
+3956 4ce545fd-7113-4c5a-91c7-85a625c1a016 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 541, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/970d8fee-ca34-45b5-b1de-41c49e0f5c16.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_541_1768218581.webp", "revised_prompt": null}]} 2026-01-12 11:49:41.915652+00 \N {"children": []} \N \N \N \N 2026-01-12 11:49:29.696612+00 \N
+4084 a51685ac-60ec-47be-8741-ddc9e890900d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:50:00.045104+00 \N {"children": []} \N \N \N \N 2026-01-12 19:50:00.027695+00 \N
+3983 a725df11-0f91-40ea-ab46-5165f81c6396 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:35:00.02871+00 \N {"children": []} \N \N \N \N 2026-01-12 12:35:00.021222+00 \N
+4006 42ba6260-7a47-4083-b322-5a841eeed447 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:10:00.037292+00 \N {"children": []} \N \N \N \N 2026-01-12 14:10:00.028105+00 \N
+4101 526a3165-7d88-46ec-874a-07b6908f5ca4 SUCCESS application/json utf-8 null 2026-01-12 21:00:00.074024+00 \N {"children": []} \N \N \N \N 2026-01-12 21:00:00.06114+00 \N
+4031 f99b9d98-15bf-4f0a-8f7b-9b8b8b0bce0d SUCCESS application/json utf-8 null 2026-01-12 16:00:00.108522+00 \N {"children": []} \N \N \N \N 2026-01-12 16:00:00.092387+00 \N
+4113 bbab16ed-9e4c-4e68-9f28-32b8bc35f67c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:55:00.035935+00 \N {"children": []} \N \N \N \N 2026-01-12 21:55:00.021978+00 \N
+4131 6493fafc-0ac4-4efc-91b6-0e2486ac842e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:05:00.040038+00 \N {"children": []} \N \N \N \N 2026-01-12 23:05:00.024022+00 \N
+3640 f425d77c-1688-45a5-99c3-df638c471d84 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:40:00.029712+00 \N {"children": []} \N \N \N \N 2026-01-09 05:40:00.022099+00 \N
+3787 9e8027f2-70b9-4277-9ec4-debe9f6a221e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:00:00.077399+00 \N {"children": []} \N \N \N \N 2026-01-09 16:00:00.054566+00 \N
+3299 b20b79e5-d9e4-4b99-b75d-64c01a3fb388 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 05:40:00.030826+00 \N {"children": []} \N \N \N \N 2026-01-08 05:40:00.024104+00 \N
+3446 aff0fa04-c523-4bc9-a52d-cf6d0a812044 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 16:00:00.113246+00 \N {"children": []} \N \N \N \N 2026-01-08 16:00:00.07589+00 \N
+3320 a83474f2-ad64-462a-9762-761e62245ecf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:05:00.028742+00 \N {"children": []} \N \N \N \N 2026-01-08 07:05:00.022062+00 \N
+3675 648cdce4-b758-4d38-a718-a5e6543773a1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:05:00.039478+00 \N {"children": []} \N \N \N \N 2026-01-09 08:05:00.030651+00 \N
+4041 071b22cc-fd8b-4dbb-9042-0b9fad08c946 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:45:00.033195+00 \N {"children": []} \N \N \N \N 2026-01-12 16:45:00.02711+00 \N
+3355 a8cac55f-c239-44b9-af55-a67ffeab05ab SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:35:00.034264+00 \N {"children": []} \N \N \N \N 2026-01-08 09:35:00.024526+00 \N
+3481 f1abff1e-dedd-4177-9cc7-469b8925d665 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:35:00.038813+00 \N {"children": []} \N \N \N \N 2026-01-08 18:35:00.029203+00 \N
+3390 d07a3d42-79e0-4fad-bdba-7936afdf32aa SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:00:00.077005+00 \N {"children": []} \N \N \N \N 2026-01-08 12:00:00.052119+00 \N
+3710 e13bd085-010c-4b42-9904-bde84806bbd7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:35:00.032353+00 \N {"children": []} \N \N \N \N 2026-01-09 10:35:00.026429+00 \N
+3822 07bc6bdc-8bc1-4c3d-a2f5-cb38c078fa9a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:35:00.036487+00 \N {"children": []} \N \N \N \N 2026-01-09 18:35:00.028618+00 \N
+3745 a6eed4b9-4740-447e-82f9-3521cca81c29 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 13:00:00.140119+00 \N {"children": []} \N \N \N \N 2026-01-09 13:00:00.059118+00 \N
+3516 2bcf0acc-4973-45d4-bb43-da93e9f4d21d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:00:00.088581+00 \N {"children": []} \N \N \N \N 2026-01-08 21:00:00.056705+00 \N
+4046 2c622ed6-1795-4cf0-b250-c99627d15132 SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 17:00:00.077988+00 \N {"children": []} \N \N \N \N 2026-01-12 17:00:00.068683+00 \N
+3551 8b91f8f2-a58c-4beb-a817-aa742a92026a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:35:00.035578+00 \N {"children": []} \N \N \N \N 2026-01-08 23:35:00.024883+00 \N
+4066 bdbdddf4-ce0b-4624-b365-1632e3c172bb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:30:00.03876+00 \N {"children": []} \N \N \N \N 2026-01-12 18:30:00.022257+00 \N
+3585 0a60ba51-a0db-4e29-9040-38c4adf91729 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 01:55:00.036844+00 \N {"children": []} \N \N \N \N 2026-01-09 01:55:00.028795+00 \N
+3957 14fefee2-5f2c-4479-8463-758167387831 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 542, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/c517dc6f-bc38-4457-9ae5-83d5aea8b75d.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_542_1768218595.webp", "revised_prompt": null}]} 2026-01-12 11:49:56.795078+00 \N {"children": []} \N \N \N \N 2026-01-12 11:49:45.719207+00 \N
+3984 247814b8-6c47-491c-9311-e5efbfb73ac9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:40:00.04673+00 \N {"children": []} \N \N \N \N 2026-01-12 12:40:00.037783+00 \N
+4007 31e68653-badd-4c0a-91ad-baa4ed83b8e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:15:00.039188+00 \N {"children": []} \N \N \N \N 2026-01-12 14:15:00.030729+00 \N
+4032 47004b64-3a21-4190-b578-7df00bf81041 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:00:00.1081+00 \N {"children": []} \N \N \N \N 2026-01-12 16:00:00.094022+00 \N
+3321 fd5b4532-c11b-4345-800c-3be0206da97e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:10:00.036091+00 \N {"children": []} \N \N \N \N 2026-01-08 07:10:00.026049+00 \N
+3447 f5202c9f-215a-4b73-8c16-e73b1e8ea071 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:05:00.044353+00 \N {"children": []} \N \N \N \N 2026-01-08 16:05:00.032233+00 \N
+3356 4b308936-ca7f-4e9b-86d4-bef36b3d5ac7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:40:00.033175+00 \N {"children": []} \N \N \N \N 2026-01-08 09:40:00.025064+00 \N
+3641 0f071c76-9cfe-45a4-9218-fb5f8605c49e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:45:00.050295+00 \N {"children": []} \N \N \N \N 2026-01-09 05:45:00.040992+00 \N
+3788 13515746-75d6-47c0-92c2-ab823ac0fa33 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:05:00.04849+00 \N {"children": []} \N \N \N \N 2026-01-09 16:05:00.035334+00 \N
+3676 faf1ba66-b5d5-4c23-bc63-23d73783b648 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:10:00.03419+00 \N {"children": []} \N \N \N \N 2026-01-09 08:10:00.02409+00 \N
+4042 019ec47b-1f71-4d6e-b8f3-cbb8d8c961e6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:50:00.041044+00 \N {"children": []} \N \N \N \N 2026-01-12 16:50:00.030181+00 \N
+3391 f9c76c0a-e209-4b57-9f8c-9741478e5c32 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:05:00.034477+00 \N {"children": []} \N \N \N \N 2026-01-08 12:05:00.026107+00 \N
+3482 4a2a0e75-1503-41d6-b376-51b2a7e51f0f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:40:00.044709+00 \N {"children": []} \N \N \N \N 2026-01-08 18:40:00.030806+00 \N
+3711 c0df224b-46f1-413c-a5e6-9f6d82bc6bdd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:40:00.035803+00 \N {"children": []} \N \N \N \N 2026-01-09 10:40:00.024021+00 \N
+3823 69eccdb9-85bb-40d2-9b84-6ba136843bc1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:40:00.037925+00 \N {"children": []} \N \N \N \N 2026-01-09 18:40:00.025613+00 \N
+3517 52daeb5d-8061-497e-afed-6ee97f3c9a31 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:05:00.041041+00 \N {"children": []} \N \N \N \N 2026-01-08 21:05:00.031888+00 \N
+3746 2337f5ef-4b4c-4ac8-8d49-967a5f3fe209 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:05:00.04978+00 \N {"children": []} \N \N \N \N 2026-01-09 13:05:00.031974+00 \N
+4047 ba7e8e3b-1c47-4605-8371-6988826aafba SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:05:00.037062+00 \N {"children": []} \N \N \N \N 2026-01-12 17:05:00.031013+00 \N
+3552 e01df69b-737d-4d35-ac8a-8bf6a5497637 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:40:00.044078+00 \N {"children": []} \N \N \N \N 2026-01-08 23:40:00.034389+00 \N
+4067 23324586-ce94-413e-8010-27988b5da206 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:35:00.05918+00 \N {"children": []} \N \N \N \N 2026-01-12 18:35:00.035888+00 \N
+3586 4586b071-8287-45a6-b3d9-94edb088cbc5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:00:00.03597+00 \N {"children": []} \N \N \N \N 2026-01-09 02:00:00.026753+00 \N
+3958 de072cc8-e53c-46c4-8013-0271ee15ba03 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 543, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/2fdacbb5-2787-47db-a07b-dfaebbb8f573.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_543_1768218611.webp", "revised_prompt": null}]} 2026-01-12 11:50:12.804463+00 \N {"children": []} \N \N \N \N 2026-01-12 11:49:58.742789+00 \N
+4085 e2f2cf4e-3674-4e2b-963f-658d10f16f4e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:55:00.043582+00 \N {"children": []} \N \N \N \N 2026-01-12 19:55:00.028303+00 \N
+3985 3ccc9771-0a9c-4426-b9a4-ba001ee38880 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:45:00.035721+00 \N {"children": []} \N \N \N \N 2026-01-12 12:45:00.025652+00 \N
+4008 be0a8ab1-7441-4888-a741-35b488aa13d7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:20:00.032907+00 \N {"children": []} \N \N \N \N 2026-01-12 14:20:00.025526+00 \N
+3274 9e80464e-8ff8-49c8-ad2e-b8d3758195b8 SUCCESS application/json utf-8 null 2026-01-08 04:00:00.060265+00 \N {"children": []} \N \N \N \N 2026-01-08 04:00:00.025964+00 \N
+3642 c82a3c6f-8b7b-46bc-b998-9120039a24a7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:50:00.034498+00 \N {"children": []} \N \N \N \N 2026-01-09 05:50:00.027006+00 \N
+3789 80dd20b2-2290-41d4-9da7-cb3a4f38f94c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:10:00.033821+00 \N {"children": []} \N \N \N \N 2026-01-09 16:10:00.024085+00 \N
+3322 c76c971b-d28e-4bb9-8afb-136fe146bc6b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:15:00.030176+00 \N {"children": []} \N \N \N \N 2026-01-08 07:15:00.022622+00 \N
+3677 00863cff-78fc-40f8-945d-2a97e87f92f6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:15:00.042088+00 \N {"children": []} \N \N \N \N 2026-01-09 08:15:00.032672+00 \N
+3448 d409f840-4a59-4e5c-a375-5f5c7efe70fb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:10:00.047205+00 \N {"children": []} \N \N \N \N 2026-01-08 16:10:00.034062+00 \N
+3357 8f8da96e-4a8e-4f1b-989f-8e1d9eb71fdf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:45:00.032908+00 \N {"children": []} \N \N \N \N 2026-01-08 09:45:00.024165+00 \N
+3959 d49453a2-bbeb-451b-901e-faae4f1cbaf8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:50:00.042932+00 \N {"children": []} \N \N \N \N 2026-01-12 11:50:00.035556+00 \N
+3712 b6d2dc5b-02ba-4b5f-a11c-d14eb34f9a5d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:45:00.036383+00 \N {"children": []} \N \N \N \N 2026-01-09 10:45:00.027645+00 \N
+3392 d1bd4c07-339e-4033-9a95-496c75c7138e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:10:00.041075+00 \N {"children": []} \N \N \N \N 2026-01-08 12:10:00.034903+00 \N
+3483 4cae33d7-d6c1-4222-9377-a5a6a0a76f42 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:45:00.036948+00 \N {"children": []} \N \N \N \N 2026-01-08 18:45:00.023703+00 \N
+3824 69fe4c70-eb65-4309-b9d8-4943d20a0842 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:45:00.038092+00 \N {"children": []} \N \N \N \N 2026-01-09 18:45:00.026457+00 \N
+3747 be173a70-4842-4b91-80ed-d6e16cefdfb9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:10:00.04118+00 \N {"children": []} \N \N \N \N 2026-01-09 13:10:00.02736+00 \N
+3518 bfe6c543-6b50-4240-b6ad-65989ee86000 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:10:00.032085+00 \N {"children": []} \N \N \N \N 2026-01-08 21:10:00.025115+00 \N
+4043 d3b34b18-2fbc-49cb-a8f2-623c3213994b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 16:55:00.045218+00 \N {"children": []} \N \N \N \N 2026-01-12 16:55:00.035054+00 \N
+3986 68c4a2d5-205e-4b77-a42e-faceae7f170e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:50:00.050536+00 \N {"children": []} \N \N \N \N 2026-01-12 12:50:00.035046+00 \N
+3553 ed188e8a-0550-487b-a2a4-e43258dabd8d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:45:00.030407+00 \N {"children": []} \N \N \N \N 2026-01-08 23:45:00.022167+00 \N
+4009 7eb1cec3-854d-4c70-9dee-43c755a521af SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:25:00.0365+00 \N {"children": []} \N \N \N \N 2026-01-12 14:25:00.028357+00 \N
+3587 33d80a9e-edc6-47f8-9d74-76ba99cdc82f SUCCESS application/json utf-8 null 2026-01-09 02:00:00.371225+00 \N {"children": []} \N \N \N \N 2026-01-09 02:00:00.280387+00 \N
+4048 89a99da2-34cd-4106-9e66-88db87b0be49 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:10:00.041864+00 \N {"children": []} \N \N \N \N 2026-01-12 17:10:00.025297+00 \N
+4068 126057d1-5dc4-49a7-b5dd-bc2e0a19886d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:40:00.051064+00 \N {"children": []} \N \N \N \N 2026-01-12 18:40:00.029471+00 \N
+4086 7b79df58-bbec-4d0c-ae30-8e0e2afcba61 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:00:00.064246+00 \N {"children": []} \N \N \N \N 2026-01-12 20:00:00.045628+00 \N
+4089 807232f0-6d80-4376-a197-fe6751bd4790 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:05:00.075555+00 \N {"children": []} \N \N \N \N 2026-01-12 20:05:00.052045+00 \N
+3275 cdf8d2ac-91f5-409b-bace-19e0444e132d SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 04:00:00.100907+00 \N {"children": []} \N \N \N \N 2026-01-08 04:00:00.075399+00 \N
+3643 e6048c44-43b4-43b4-a7f5-73ba08e7c935 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 05:55:00.036916+00 \N {"children": []} \N \N \N \N 2026-01-09 05:55:00.027269+00 \N
+3323 c4c89f1c-fc19-42ff-8c6a-ce920ad21eab SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:20:00.060879+00 \N {"children": []} \N \N \N \N 2026-01-08 07:20:00.054624+00 \N
+3790 42530e1a-e895-420f-ae3e-4a13aba3ee31 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:15:00.041286+00 \N {"children": []} \N \N \N \N 2026-01-09 16:15:00.027595+00 \N
+3449 8a520fd4-27a6-48c5-a7e2-506fd5372e74 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:15:00.036431+00 \N {"children": []} \N \N \N \N 2026-01-08 16:15:00.027303+00 \N
+3358 bbcb9185-b180-4375-9333-ad8300184d0c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:50:00.036664+00 \N {"children": []} \N \N \N \N 2026-01-08 09:50:00.028435+00 \N
+3678 de0f74fa-3638-4ef1-b222-c185a8f6033b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:20:00.034632+00 \N {"children": []} \N \N \N \N 2026-01-09 08:20:00.02515+00 \N
+4049 125ac944-c145-4dda-875f-22ea4a41b033 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:15:00.031293+00 \N {"children": []} \N \N \N \N 2026-01-12 17:15:00.024102+00 \N
+3393 a470a32f-5324-4e81-9cd6-99aed31d3ab8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:15:00.038468+00 \N {"children": []} \N \N \N \N 2026-01-08 12:15:00.029889+00 \N
+3484 608d33a8-09ed-4d57-aa3f-f74d89481f94 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:50:00.05146+00 \N {"children": []} \N \N \N \N 2026-01-08 18:50:00.036463+00 \N
+3713 e9832c00-41e7-4cca-9a8c-18a89ffd3fce SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:50:00.042417+00 \N {"children": []} \N \N \N \N 2026-01-09 10:50:00.033473+00 \N
+3825 773e8569-95d5-45a0-944f-ca0ebcaec6c9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:50:00.039275+00 \N {"children": []} \N \N \N \N 2026-01-09 18:50:00.025541+00 \N
+3519 25d80ff7-3e60-43d2-847e-e40081c3db05 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:15:00.038817+00 \N {"children": []} \N \N \N \N 2026-01-08 21:15:00.028897+00 \N
+3748 3c022c0c-84e2-4d4b-bf09-edfe8efe2ffc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:15:00.033201+00 \N {"children": []} \N \N \N \N 2026-01-09 13:15:00.021204+00 \N
+3554 17acc889-96c8-47a2-913c-e8a6ffdec12d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:50:00.034831+00 \N {"children": []} \N \N \N \N 2026-01-08 23:50:00.025091+00 \N
+4069 6c6b014a-4cf7-4695-84ba-9a79fb4dcf40 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:45:00.037895+00 \N {"children": []} \N \N \N \N 2026-01-12 18:45:00.020747+00 \N
+3588 66273119-3edc-4f30-8b5a-1bdc9d1d759f SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 02:00:00.450616+00 \N {"children": []} \N \N \N \N 2026-01-09 02:00:00.301801+00 \N
+4088 0bae00d4-4786-4af3-81d6-64403c91a3d4 SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 20:00:00.058344+00 \N {"children": []} \N \N \N \N 2026-01-12 20:00:00.051944+00 \N
+3960 a119a3cb-0a7d-4368-8455-217e16caf5eb SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 535, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/ac941219-4591-402f-9e86-130583b7b61b.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_535_1768218626.webp", "revised_prompt": null}]} 2026-01-12 11:50:27.250606+00 \N {"children": []} \N \N \N \N 2026-01-12 11:50:14.787106+00 \N
+4087 6887c091-0f5b-47a1-9679-e871270869e2 SUCCESS application/json utf-8 null 2026-01-12 20:00:00.058543+00 \N {"children": []} \N \N \N \N 2026-01-12 20:00:00.05197+00 \N
+3987 534bff4b-6204-424c-b0fa-fcad6c0de7e0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 12:55:00.030615+00 \N {"children": []} \N \N \N \N 2026-01-12 12:55:00.023386+00 \N
+4010 aa0e2e00-c612-444a-8174-812c26f65549 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:30:00.042349+00 \N {"children": []} \N \N \N \N 2026-01-12 14:30:00.025469+00 \N
+3276 33aa218b-bf8f-49e9-994d-85a6fc996465 SUCCESS application/json utf-8 null 2026-01-08 04:00:00.093878+00 \N {"children": []} \N \N \N \N 2026-01-08 04:00:00.081166+00 \N
+4090 058c5550-a17b-40c4-a66e-edc020cc2cda SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:10:00.049968+00 \N {"children": []} \N \N \N \N 2026-01-12 20:10:00.031574+00 \N
+4102 cf4bb777-7292-4a8d-a6c9-13dc3307be83 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:00:00.090741+00 \N {"children": []} \N \N \N \N 2026-01-12 21:00:00.064094+00 \N
+3644 cb794c12-687b-4481-a492-df8f34d62228 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 06:00:00.121993+00 \N {"children": []} \N \N \N \N 2026-01-09 06:00:00.031528+00 \N
+3791 908952d2-35e6-4064-be67-465da9330c9d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:20:00.040443+00 \N {"children": []} \N \N \N \N 2026-01-09 16:20:00.03122+00 \N
+3679 826501fc-c238-4ca7-ae62-451112692eb5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:25:00.030796+00 \N {"children": []} \N \N \N \N 2026-01-09 08:25:00.022356+00 \N
+3324 cc505ba6-0419-47d9-bc23-04f6c94772f3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:25:00.033052+00 \N {"children": []} \N \N \N \N 2026-01-08 07:25:00.024305+00 \N
+3450 a6a6c450-76fd-4d82-b79e-06fe574ba521 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:20:00.037839+00 \N {"children": []} \N \N \N \N 2026-01-08 16:20:00.030136+00 \N
+3359 70e51de5-7b89-4095-b333-b19a843270d2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 09:55:00.030174+00 \N {"children": []} \N \N \N \N 2026-01-08 09:55:00.023403+00 \N
+4050 e1373429-7f51-4733-b1c8-64ec16634fef SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:20:00.036975+00 \N {"children": []} \N \N \N \N 2026-01-12 17:20:00.029121+00 \N
+3394 9ba4ccfb-40ca-4721-9f5b-4c49a6b92ed3 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:20:00.048156+00 \N {"children": []} \N \N \N \N 2026-01-08 12:20:00.037173+00 \N
+3485 014f15d0-4198-472b-b4b9-25d5a124c08a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 18:55:00.033639+00 \N {"children": []} \N \N \N \N 2026-01-08 18:55:00.02282+00 \N
+3714 6d574d32-1508-4465-af25-b90cc8b30395 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 10:55:00.030107+00 \N {"children": []} \N \N \N \N 2026-01-09 10:55:00.021491+00 \N
+3826 8bfdad27-baab-4102-ad3d-9d666c330bd2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 18:55:00.033922+00 \N {"children": []} \N \N \N \N 2026-01-09 18:55:00.023465+00 \N
+3520 f908aa20-66b6-43c7-9acf-4bc9a6e41067 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:20:00.029983+00 \N {"children": []} \N \N \N \N 2026-01-08 21:20:00.01987+00 \N
+3749 ec1be5db-666d-44a4-b7da-f9f61541dc80 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:20:00.032015+00 \N {"children": []} \N \N \N \N 2026-01-09 13:20:00.021681+00 \N
+3555 7f92e89e-38af-4657-947f-cb7e25555e49 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 23:55:00.030998+00 \N {"children": []} \N \N \N \N 2026-01-08 23:55:00.022119+00 \N
+4070 aab7f1f0-3be1-4f83-843d-4abb9497cd38 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:50:00.040465+00 \N {"children": []} \N \N \N \N 2026-01-12 18:50:00.024869+00 \N
+3589 bad243d9-6c07-4362-8a7f-f9896a612caf SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:05:00.035145+00 \N {"children": []} \N \N \N \N 2026-01-09 02:05:00.024352+00 \N
+4091 e20908a0-6bed-442b-ad6e-87deddc00d91 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:15:00.046151+00 \N {"children": []} \N \N \N \N 2026-01-12 20:15:00.02992+00 \N
+3961 89905c62-368e-4c7e-85fb-84641aefa94c SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 534, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/f01bc427-75e4-449a-b3ac-36da3bd6973b.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_534_1768218641.webp", "revised_prompt": null}]} 2026-01-12 11:50:42.2001+00 \N {"children": []} \N \N \N \N 2026-01-12 11:50:30.815347+00 \N
+4103 02cd507e-e45e-423e-8b87-f96c153d17ba SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:05:00.042963+00 \N {"children": []} \N \N \N \N 2026-01-12 21:05:00.021783+00 \N
+3988 aebd79cb-ce4b-48b5-8ae6-7d5ca88195e4 SUCCESS application/json utf-8 {"sites_processed": 2, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}, {"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 13:00:00.129405+00 \N {"children": []} \N \N \N \N 2026-01-12 13:00:00.06521+00 \N
+3277 9a327da2-f328-4993-9863-70b3c749a86c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 04:00:00.116653+00 \N {"children": []} \N \N \N \N 2026-01-08 04:00:00.102814+00 \N
+4011 e222a16a-edbc-4b05-96c7-f0302f85ba56 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:35:00.031187+00 \N {"children": []} \N \N \N \N 2026-01-12 14:35:00.024655+00 \N
+4114 f4fbbaa3-7e4d-44f5-af4e-288d26ecbcdf SUCCESS application/json utf-8 null 2026-01-12 22:00:00.033497+00 \N {"children": []} \N \N \N \N 2026-01-12 22:00:00.025002+00 \N
+3645 bef51605-f2a0-4902-8a21-0fa06e607ca5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:00:00.270925+00 \N {"children": []} \N \N \N \N 2026-01-09 06:00:00.228229+00 \N
+3792 a8214760-a38f-40d7-aaf7-c746a3c58c1d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:25:00.032373+00 \N {"children": []} \N \N \N \N 2026-01-09 16:25:00.021011+00 \N
+3325 4b685bf6-c2c2-45ec-acef-803b99fbfa61 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:30:00.035068+00 \N {"children": []} \N \N \N \N 2026-01-08 07:30:00.027316+00 \N
+3451 22bcc227-dc2e-4b6a-aaf6-5bf1a9f7823c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:25:00.059624+00 \N {"children": []} \N \N \N \N 2026-01-08 16:25:00.049625+00 \N
+3360 e8bc4164-8110-4036-8752-b4493a6c4f03 SUCCESS application/json utf-8 null 2026-01-08 10:00:00.058195+00 \N {"children": []} \N \N \N \N 2026-01-08 10:00:00.037751+00 \N
+3680 98782919-2578-40e7-b3fd-ca836cd87d49 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:30:00.03229+00 \N {"children": []} \N \N \N \N 2026-01-09 08:30:00.025182+00 \N
+4051 a6948bbf-1681-436b-b053-ce4407558287 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:25:00.032269+00 \N {"children": []} \N \N \N \N 2026-01-12 17:25:00.02341+00 \N
+3395 74454114-6edf-4129-b264-1967ecc7ff7b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:25:00.038034+00 \N {"children": []} \N \N \N \N 2026-01-08 12:25:00.028335+00 \N
+3486 3c7b1f46-e239-4e53-9c77-d62a97e6746b SUCCESS application/json utf-8 null 2026-01-08 19:00:00.060007+00 \N {"children": []} \N \N \N \N 2026-01-08 19:00:00.040873+00 \N
+3715 26a1be99-792d-48cb-a870-95f80ea17142 SUCCESS application/json utf-8 null 2026-01-09 11:00:00.064284+00 \N {"children": []} \N \N \N \N 2026-01-09 11:00:00.035466+00 \N
+3827 2ac44a8f-9f8e-480c-af4d-5dc612c048df SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 19:00:00.082628+00 \N {"children": []} \N \N \N \N 2026-01-09 19:00:00.042412+00 \N
+3521 2c2dd47a-14d9-426a-9fe5-627303ed6b8b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:25:00.02824+00 \N {"children": []} \N \N \N \N 2026-01-08 21:25:00.021241+00 \N
+3750 3645626f-2980-43aa-9a29-38eecbc546a0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:25:00.032297+00 \N {"children": []} \N \N \N \N 2026-01-09 13:25:00.023991+00 \N
+3556 0cf6ae1f-d81b-4d22-b551-09b6a8b27266 SUCCESS application/json utf-8 {"success": false, "error": "Packaging script failed with code 127", "stderr": "/data/app/igny8/scripts/package_app.sh: line 37: rsync: command not found\\n", "timestamp": "2026-01-09T00:00:00.243211"} 2026-01-09 00:00:00.247239+00 \N {"children": []} \N \N \N \N 2026-01-09 00:00:00.090803+00 \N
+4071 7cc11454-ffd2-4c8c-b5d6-72da2841efb8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 18:55:00.044217+00 \N {"children": []} \N \N \N \N 2026-01-12 18:55:00.024051+00 \N
+3590 8f6b09e5-a855-4fe3-8197-cd9a738350f4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:10:00.036465+00 \N {"children": []} \N \N \N \N 2026-01-09 02:10:00.027261+00 \N
+4092 b4b216b3-b202-44c4-a93b-ae1c03ae1b96 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:20:00.034446+00 \N {"children": []} \N \N \N \N 2026-01-12 20:20:00.0202+00 \N
+3962 f655277a-5b7d-46c8-aae5-5729ce894727 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 536, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/8fb8c23a-59a8-4796-9e66-928da74c0e89.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_536_1768218655.webp", "revised_prompt": null}]} 2026-01-12 11:50:55.367301+00 \N {"children": []} \N \N \N \N 2026-01-12 11:50:43.841607+00 \N
+4104 101a4ba0-da88-4b09-a794-30659cfd1c81 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:10:00.03909+00 \N {"children": []} \N \N \N \N 2026-01-12 21:10:00.02462+00 \N
+3989 853d25d4-09b7-4784-b07e-3309e973c6df SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:00:00.121035+00 \N {"children": []} \N \N \N \N 2026-01-12 13:00:00.078849+00 \N
+4012 dfb6db48-374b-4b70-93c4-ab7e0f23a426 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:40:00.034923+00 \N {"children": []} \N \N \N \N 2026-01-12 14:40:00.028133+00 \N
+4115 c9c133c4-4b91-4eca-aac4-43c06c49c0ab SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 22:00:00.039449+00 \N {"children": []} \N \N \N \N 2026-01-12 22:00:00.030818+00 \N
+4132 de81e1c5-3376-44dd-a7d5-7c350ccdb9b2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:10:00.039481+00 \N {"children": []} \N \N \N \N 2026-01-12 23:10:00.023773+00 \N
+4145 5aa6508c-85c8-4965-9e53-1f2116795cd5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:50:00.042501+00 \N {"children": []} \N \N \N \N 2026-01-12 23:50:00.024039+00 \N
+4148 5dc20c2d-757f-4d48-ae74-8b6c711b7b27 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}]} 2026-01-13 00:00:00.062104+00 \N {"children": []} \N \N \N \N 2026-01-13 00:00:00.038287+00 \N
+4149 2b2c65d6-638d-4aaa-afdd-09638a1c9b2b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:00:00.131316+00 \N {"children": []} \N \N \N \N 2026-01-13 00:00:00.084833+00 \N
+3646 5f760156-e976-48f1-b918-3b71ff4efb7b SUCCESS application/json utf-8 null 2026-01-09 06:00:00.275028+00 \N {"children": []} \N \N \N \N 2026-01-09 06:00:00.235752+00 \N
+3793 6ca06b72-6821-4409-a8b2-b356109b8b41 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:30:00.057209+00 \N {"children": []} \N \N \N \N 2026-01-09 16:30:00.039338+00 \N
+3326 fa98c973-dfec-4215-9a44-bcd2be0d6657 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:35:00.033055+00 \N {"children": []} \N \N \N \N 2026-01-08 07:35:00.026499+00 \N
+3681 0ab236d4-27af-487f-ac8a-3ccf6cf0b22b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:35:00.035173+00 \N {"children": []} \N \N \N \N 2026-01-09 08:35:00.026194+00 \N
+3452 c6438cb4-42c0-4036-a949-bc23d8bcc109 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:30:00.032055+00 \N {"children": []} \N \N \N \N 2026-01-08 16:30:00.023901+00 \N
+3361 dc72e74a-41f4-40b1-9651-5c5cf421c3d7 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 10:00:00.088822+00 \N {"children": []} \N \N \N \N 2026-01-08 10:00:00.041283+00 \N
+4052 e5552f1c-bc99-431a-b47f-0d44e6feaf1c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:30:00.032607+00 \N {"children": []} \N \N \N \N 2026-01-12 17:30:00.026231+00 \N
+3396 7d5282f9-5ed3-40c9-a058-c2818b6ae4ad SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:30:00.033608+00 \N {"children": []} \N \N \N \N 2026-01-08 12:30:00.025188+00 \N
+3716 dc755792-8f36-4a75-9b8a-2e708abd4e48 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:00:00.111244+00 \N {"children": []} \N \N \N \N 2026-01-09 11:00:00.042027+00 \N
+3487 da014c1f-a74e-45df-b1d9-0ffbef7a5020 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 19:00:00.113642+00 \N {"children": []} \N \N \N \N 2026-01-08 19:00:00.054634+00 \N
+3828 615097a2-85a7-4d48-96d1-1c3fc65901e2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:00:00.116711+00 \N {"children": []} \N \N \N \N 2026-01-09 19:00:00.050716+00 \N
+3522 560aec83-7187-4a38-bea9-12676624eb90 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:30:00.038739+00 \N {"children": []} \N \N \N \N 2026-01-08 21:30:00.028177+00 \N
+3751 026e4654-43d2-4387-b380-24599f47e9b5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:30:00.032535+00 \N {"children": []} \N \N \N \N 2026-01-09 13:30:00.021635+00 \N
+3557 5148587b-4ad7-4713-ae77-91e5718fe971 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 00:00:00.210005+00 \N {"children": []} \N \N \N \N 2026-01-09 00:00:00.09627+00 \N
+4072 91927475-c145-495c-9394-5e1c7506ec6e SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 19:00:00.031571+00 \N {"children": []} \N \N \N \N 2026-01-12 19:00:00.019464+00 \N
+3591 d6c0bea9-604d-4294-8dce-53fead7f2e74 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:15:00.029762+00 \N {"children": []} \N \N \N \N 2026-01-09 02:15:00.022888+00 \N
+4093 eec5f910-a232-4a27-915e-2d7753876e08 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:25:00.043478+00 \N {"children": []} \N \N \N \N 2026-01-12 20:25:00.024789+00 \N
+3963 5b3d0086-6ff5-4042-8220-ce121dbb9e8d SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 537, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/be0052ee-46d4-4ca6-9f37-2f49a7516110.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_537_1768218666.webp", "revised_prompt": null}]} 2026-01-12 11:51:07.245167+00 \N {"children": []} \N \N \N \N 2026-01-12 11:50:56.866583+00 \N
+4105 363ccfc5-c29e-441c-a77d-2da84e544810 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:15:00.044015+00 \N {"children": []} \N \N \N \N 2026-01-12 21:15:00.025242+00 \N
+3990 b627c6ef-6d60-4c9c-b571-2cff4cd0826c SUCCESS application/json utf-8 null 2026-01-12 13:00:00.112714+00 \N {"children": []} \N \N \N \N 2026-01-12 13:00:00.094305+00 \N
+4013 44ede889-c36e-4f65-bdc3-aad1b1834e66 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:45:00.044114+00 \N {"children": []} \N \N \N \N 2026-01-12 14:45:00.034044+00 \N
+4116 a7c33e83-0ddd-4988-9809-fbe016a8fe20 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:00:00.060306+00 \N {"children": []} \N \N \N \N 2026-01-12 22:00:00.039726+00 \N
+4133 c075f723-55f2-4906-9efd-1d3ba9354996 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:15:00.036883+00 \N {"children": []} \N \N \N \N 2026-01-12 23:15:00.021971+00 \N
+4135 bb734229-d54a-4604-98f9-b788ea5ee9a4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:25:00.083123+00 \N {"children": []} \N \N \N \N 2026-01-12 23:25:00.058947+00 \N
+4140 2b3fee53-ffb5-4e79-ad15-b44c078f098a SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 550, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/2a7abf4d-04ba-443e-aced-2e984b1007cc.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_550_1768261272.webp", "revised_prompt": null}]} 2026-01-12 23:41:13.541019+00 \N {"children": []} \N \N \N \N 2026-01-12 23:41:02.670181+00 \N
+3327 1ccbb3e6-78a4-4fb4-9c3a-d89814aa14ff SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:40:00.034335+00 \N {"children": []} \N \N \N \N 2026-01-08 07:40:00.028819+00 \N
+3453 984d1301-2896-4ea3-83b4-9dfb62397be1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:35:00.026617+00 \N {"children": []} \N \N \N \N 2026-01-08 16:35:00.020499+00 \N
+3362 e885db80-42b8-4ee7-a239-fccbe1ec9b98 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:00:00.068736+00 \N {"children": []} \N \N \N \N 2026-01-08 10:00:00.046602+00 \N
+3647 8fc38483-85fb-4885-b35e-23c4db6a5c22 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:05:00.045685+00 \N {"children": []} \N \N \N \N 2026-01-09 06:05:00.029783+00 \N
+3794 2fc27666-498a-4637-9188-e409bf9741c0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:35:00.035945+00 \N {"children": []} \N \N \N \N 2026-01-09 16:35:00.026093+00 \N
+3682 b84d2cbd-c303-48c5-a07b-9c1687916d86 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:40:00.031843+00 \N {"children": []} \N \N \N \N 2026-01-09 08:40:00.02415+00 \N
+3397 b5be95a7-d64e-4397-93b9-3024d5d2825e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:35:00.037718+00 \N {"children": []} \N \N \N \N 2026-01-08 12:35:00.02831+00 \N
+3488 7ae9da7a-0b77-4f5f-9628-426dc57e2e93 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:00:00.104458+00 \N {"children": []} \N \N \N \N 2026-01-08 19:00:00.065277+00 \N
+4053 1e6c8329-5d0f-4b6f-bd12-db281e6a475d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:35:00.047223+00 \N {"children": []} \N \N \N \N 2026-01-12 17:35:00.039082+00 \N
+3717 7cb00f9c-3e9c-4b7b-89de-983769c00b17 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 11:00:00.073064+00 \N {"children": []} \N \N \N \N 2026-01-09 11:00:00.043102+00 \N
+3829 c52ad5d4-efd0-4545-8236-d6490603b876 SUCCESS application/json utf-8 null 2026-01-09 19:00:00.111916+00 \N {"children": []} \N \N \N \N 2026-01-09 19:00:00.050768+00 \N
+3523 120741b7-b2f2-40a2-856f-93aabe8dd4d0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:35:00.032807+00 \N {"children": []} \N \N \N \N 2026-01-08 21:35:00.024023+00 \N
+3752 8e91c7cd-4b8d-4130-9b0e-caf36b86f3d9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:35:00.041938+00 \N {"children": []} \N \N \N \N 2026-01-09 13:35:00.025502+00 \N
+3558 755de1b6-3151-4c9e-9a85-67c675624baa SUCCESS application/json utf-8 null 2026-01-09 00:00:00.144366+00 \N {"children": []} \N \N \N \N 2026-01-09 00:00:00.122255+00 \N
+4073 aa97e160-c93f-495d-ab8a-66ab721effce SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:00:00.108179+00 \N {"children": []} \N \N \N \N 2026-01-12 19:00:00.07515+00 \N
+3592 01634ded-71ef-4543-98fa-525beeab1bd2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:20:00.04423+00 \N {"children": []} \N \N \N \N 2026-01-09 02:20:00.033812+00 \N
+4094 0bf2a9db-71db-45c7-ab5a-c7bf46b40761 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:30:00.039219+00 \N {"children": []} \N \N \N \N 2026-01-12 20:30:00.022543+00 \N
+3964 36f2ebe4-1913-4e70-845f-f838ef8a64a9 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 538, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/2dd75ee8-24b5-40ce-86e1-b407ae89bab0.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_538_1768218680.webp", "revised_prompt": null}]} 2026-01-12 11:51:20.93517+00 \N {"children": []} \N \N \N \N 2026-01-12 11:51:09.886299+00 \N
+4106 c90155c9-f90d-474e-a70c-80ecf657e309 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:20:00.044602+00 \N {"children": []} \N \N \N \N 2026-01-12 21:20:00.028635+00 \N
+3991 e9031072-acfe-47b1-a13c-ec7df9ea077a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:05:00.037622+00 \N {"children": []} \N \N \N \N 2026-01-12 13:05:00.027907+00 \N
+4014 c1060739-5720-4261-910c-e635760203e9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:50:00.031588+00 \N {"children": []} \N \N \N \N 2026-01-12 14:50:00.023437+00 \N
+4117 5101f5a4-df65-4e03-9678-680174225205 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:05:00.039914+00 \N {"children": []} \N \N \N \N 2026-01-12 22:05:00.023396+00 \N
+4124 dbce04c4-afdc-4ef6-8109-a081388acff6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:40:00.047126+00 \N {"children": []} \N \N \N \N 2026-01-12 22:40:00.032969+00 \N
+4134 e21dc0c3-8f58-4475-8796-f4ec93fd5e88 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:20:00.040516+00 \N {"children": []} \N \N \N \N 2026-01-12 23:20:00.024369+00 \N
+4136 e295d195-9b1c-4d16-bb67-8646192ed5e6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:30:00.039944+00 \N {"children": []} \N \N \N \N 2026-01-12 23:30:00.024732+00 \N
+3648 5a004e28-857c-419c-a241-d2bfee7f0508 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:10:00.043855+00 \N {"children": []} \N \N \N \N 2026-01-09 06:10:00.031783+00 \N
+3328 acee518f-832b-49ef-a282-4916aaa7d40b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:45:00.028464+00 \N {"children": []} \N \N \N \N 2026-01-08 07:45:00.02173+00 \N
+3795 a61137b3-cc44-4adf-8845-c047ac870a46 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:40:00.031539+00 \N {"children": []} \N \N \N \N 2026-01-09 16:40:00.022616+00 \N
+3454 9efa9ff1-8f6f-4979-ae41-78cfe9407a50 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:40:00.039926+00 \N {"children": []} \N \N \N \N 2026-01-08 16:40:00.030877+00 \N
+3363 03325bc7-4730-4ae4-8643-8d4f13ea642f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:05:00.031637+00 \N {"children": []} \N \N \N \N 2026-01-08 10:05:00.023253+00 \N
+3683 d267abf4-c2cb-42d7-b9a4-3141b23f384b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:45:00.027237+00 \N {"children": []} \N \N \N \N 2026-01-09 08:45:00.019739+00 \N
+4054 1ca2455c-7c73-4dc2-bf99-481f9645c817 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:40:00.031289+00 \N {"children": []} \N \N \N \N 2026-01-12 17:40:00.023189+00 \N
+3398 bdbebdcc-0596-4808-b259-eb900ce18f24 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:40:00.038243+00 \N {"children": []} \N \N \N \N 2026-01-08 12:40:00.02923+00 \N
+3489 364a2b2b-16ea-4a39-b9f0-e2932d0c241f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:05:00.031508+00 \N {"children": []} \N \N \N \N 2026-01-08 19:05:00.023056+00 \N
+3718 1eee6534-0687-47e7-b052-e05b7b46ec72 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:05:00.0476+00 \N {"children": []} \N \N \N \N 2026-01-09 11:05:00.035445+00 \N
+3830 82578066-3a5c-4b00-a202-939f6c66a292 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:05:00.03294+00 \N {"children": []} \N \N \N \N 2026-01-09 19:05:00.022092+00 \N
+3524 f5ceef12-0cb6-4738-bfdf-94ebf8311671 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:40:00.037731+00 \N {"children": []} \N \N \N \N 2026-01-08 21:40:00.026714+00 \N
+3753 b369e51b-4af8-4bfc-98ea-a9202785d59a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:40:00.04328+00 \N {"children": []} \N \N \N \N 2026-01-09 13:40:00.032317+00 \N
+3559 fa614c9f-1bcc-4f5f-b30a-01088df7e220 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:00:00.775814+00 \N {"children": []} \N \N \N \N 2026-01-09 00:00:00.644868+00 \N
+4074 3194b0c4-a973-45ac-9cb6-8e51d61a2e60 SUCCESS application/json utf-8 null 2026-01-12 19:00:00.092533+00 \N {"children": []} \N \N \N \N 2026-01-12 19:00:00.077631+00 \N
+3593 5de80b29-f133-4b9b-846e-8d17d23fb86b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:25:00.038355+00 \N {"children": []} \N \N \N \N 2026-01-09 02:25:00.028326+00 \N
+4095 92270550-60b8-4a6f-a475-ff403db0f9ce SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:35:00.037301+00 \N {"children": []} \N \N \N \N 2026-01-12 20:35:00.020876+00 \N
+3965 d7052835-c783-428b-859b-e5fd7db06a7a SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 530, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/fe77f4b0-998b-473b-ae4e-f0cf927528e2.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_530_1768218695.webp", "revised_prompt": null}]} 2026-01-12 11:51:36.249952+00 \N {"children": []} \N \N \N \N 2026-01-12 11:51:22.912827+00 \N
+4107 dd56a2db-2d22-409f-978f-d18a35b251fd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:25:00.040796+00 \N {"children": []} \N \N \N \N 2026-01-12 21:25:00.024811+00 \N
+3992 c8e4997e-4c89-45c2-84a7-b53c633899e4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:10:00.025248+00 \N {"children": []} \N \N \N \N 2026-01-12 13:10:00.019072+00 \N
+4015 ae5cdbf4-93f3-4934-a395-8998f910d45e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 14:55:00.034528+00 \N {"children": []} \N \N \N \N 2026-01-12 14:55:00.027114+00 \N
+4118 1bd1f8db-aad0-4887-af7d-18ee78ab2b3d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:10:00.038052+00 \N {"children": []} \N \N \N \N 2026-01-12 22:10:00.021929+00 \N
+4125 645e4f31-6574-48ac-9401-b99790d8205a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:45:00.039516+00 \N {"children": []} \N \N \N \N 2026-01-12 22:45:00.024205+00 \N
+3649 879411df-94d5-4151-bce8-bc2701b0f462 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:15:00.041834+00 \N {"children": []} \N \N \N \N 2026-01-09 06:15:00.034475+00 \N
+3329 92b1fb3c-5202-4143-b90a-54bdfca85aa9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:50:00.03304+00 \N {"children": []} \N \N \N \N 2026-01-08 07:50:00.025111+00 \N
+3796 c2c56f80-cef8-4a1c-82be-38c171db9a2e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:45:00.03861+00 \N {"children": []} \N \N \N \N 2026-01-09 16:45:00.029101+00 \N
+3455 ff8da290-8151-4815-b1ed-bf75fc2932b1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:45:00.049119+00 \N {"children": []} \N \N \N \N 2026-01-08 16:45:00.033193+00 \N
+3364 d874f703-9187-46e9-adea-3db08a9c07a6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:10:00.037007+00 \N {"children": []} \N \N \N \N 2026-01-08 10:10:00.028517+00 \N
+3684 c339abd5-d302-4f84-a18e-5f4d0b85c589 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:50:00.035919+00 \N {"children": []} \N \N \N \N 2026-01-09 08:50:00.027761+00 \N
+4055 5c13a5e6-71b5-46a8-bd48-6e3797383c04 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:45:00.034058+00 \N {"children": []} \N \N \N \N 2026-01-12 17:45:00.025328+00 \N
+3399 42a927f3-f50d-419a-927e-d0df83d52338 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:45:00.034767+00 \N {"children": []} \N \N \N \N 2026-01-08 12:45:00.025469+00 \N
+3490 984ca02d-889b-4d3e-afe3-fd8b6e6087fd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:10:00.036793+00 \N {"children": []} \N \N \N \N 2026-01-08 19:10:00.029414+00 \N
+3719 802baa68-5cf7-4486-938d-188333752eb7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:10:00.028411+00 \N {"children": []} \N \N \N \N 2026-01-09 11:10:00.021957+00 \N
+3831 a0710ddd-d75c-4c72-b60f-0c4d0f4c5981 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:10:00.0423+00 \N {"children": []} \N \N \N \N 2026-01-09 19:10:00.025005+00 \N
+3525 7e3dad6a-5ecf-46d6-9511-956cb8c974a4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:45:00.030206+00 \N {"children": []} \N \N \N \N 2026-01-08 21:45:00.022721+00 \N
+3754 221ed25b-8989-4fd8-84e9-119050272150 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:45:00.035374+00 \N {"children": []} \N \N \N \N 2026-01-09 13:45:00.025475+00 \N
+3560 b3ceb288-76dd-4aee-bdc8-4b9521c9956a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:05:00.031404+00 \N {"children": []} \N \N \N \N 2026-01-09 00:05:00.023701+00 \N
+4075 cf79cdee-7d42-4b61-a23e-24e53f2a7f63 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:05:00.039514+00 \N {"children": []} \N \N \N \N 2026-01-12 19:05:00.021576+00 \N
+3594 7f52870b-8eb0-44b0-b6ad-1bb6802707d7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:30:00.038183+00 \N {"children": []} \N \N \N \N 2026-01-09 02:30:00.024731+00 \N
+4096 a56bbd7b-8ad1-4d81-b925-932a58c867dc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:40:00.045171+00 \N {"children": []} \N \N \N \N 2026-01-12 20:40:00.026803+00 \N
+3966 f84d51cd-03e8-43b7-989b-072135b4516b SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 529, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/b221b67d-4c9b-4b00-a498-e9ab1b82c6c6.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_529_1768218709.webp", "revised_prompt": null}]} 2026-01-12 11:51:50.206584+00 \N {"children": []} \N \N \N \N 2026-01-12 11:51:38.93531+00 \N
+4108 6d66843c-1d67-4058-907c-2d0bff944b71 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:30:00.036708+00 \N {"children": []} \N \N \N \N 2026-01-12 21:30:00.022029+00 \N
+3993 f3d60a91-9f8c-457b-b402-5e815619072a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:15:00.031614+00 \N {"children": []} \N \N \N \N 2026-01-12 13:15:00.024903+00 \N
+4016 936bf494-1509-4411-afcb-a62711c95afd SUCCESS application/json utf-8 null 2026-01-12 15:00:00.055191+00 \N {"children": []} \N \N \N \N 2026-01-12 15:00:00.03118+00 \N
+4119 e2d5df2b-0ffb-4c66-b569-2a487d4295bd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:15:00.036847+00 \N {"children": []} \N \N \N \N 2026-01-12 22:15:00.022032+00 \N
+4126 9a227d92-e637-4aac-8e9c-e946c04b4907 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:50:00.037089+00 \N {"children": []} \N \N \N \N 2026-01-12 22:50:00.022756+00 \N
+4137 34374eec-d82e-4d4d-9241-83b45b80d467 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:35:00.051695+00 \N {"children": []} \N \N \N \N 2026-01-12 23:35:00.027481+00 \N
+3650 3175db3b-bf6c-45ac-95f9-fcb4bbeb89c4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:20:00.033923+00 \N {"children": []} \N \N \N \N 2026-01-09 06:20:00.025671+00 \N
+3797 540533ce-81ee-492f-81f2-c2579405b5cd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:50:00.033401+00 \N {"children": []} \N \N \N \N 2026-01-09 16:50:00.023266+00 \N
+3330 acda64d3-b5b5-46e9-9d24-2d85772b930a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 07:55:00.045956+00 \N {"children": []} \N \N \N \N 2026-01-08 07:55:00.031854+00 \N
+3456 6dff22a5-b779-4d3c-836e-ebc9cbd08430 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:50:00.033506+00 \N {"children": []} \N \N \N \N 2026-01-08 16:50:00.026046+00 \N
+3365 32669035-6449-4723-905f-5240b15106f9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:15:00.029436+00 \N {"children": []} \N \N \N \N 2026-01-08 10:15:00.021146+00 \N
+3685 c1437127-517d-4b58-af52-e27df7389818 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 08:55:00.033337+00 \N {"children": []} \N \N \N \N 2026-01-09 08:55:00.024977+00 \N
+4056 4055a9c3-8501-45ba-a311-4b2802b2aa0e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:50:00.028639+00 \N {"children": []} \N \N \N \N 2026-01-12 17:50:00.023451+00 \N
+3400 05e55059-bffc-407e-bbce-cfcb8674ed09 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:50:00.044291+00 \N {"children": []} \N \N \N \N 2026-01-08 12:50:00.028343+00 \N
+3491 3ce3c937-39d2-43fe-816f-48b8c5c0e6ff SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:15:00.03197+00 \N {"children": []} \N \N \N \N 2026-01-08 19:15:00.02348+00 \N
+3720 bb5bbb88-51dc-4099-8163-3596d51ef1d0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:15:00.037712+00 \N {"children": []} \N \N \N \N 2026-01-09 11:15:00.025833+00 \N
+3832 5e783640-0a08-4d76-b2e9-9bb68bcb9cc8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:15:00.032852+00 \N {"children": []} \N \N \N \N 2026-01-09 19:15:00.023802+00 \N
+3526 8a0edf42-41e5-4009-9d1c-bbdb7719f9a8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:50:00.035413+00 \N {"children": []} \N \N \N \N 2026-01-08 21:50:00.027186+00 \N
+3755 28b47af5-a9bf-4abe-8c3e-bb0ab03cec19 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:50:00.044739+00 \N {"children": []} \N \N \N \N 2026-01-09 13:50:00.032721+00 \N
+3561 ec0866e6-4a41-4a27-b47d-2d7869677710 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:10:00.036241+00 \N {"children": []} \N \N \N \N 2026-01-09 00:10:00.02608+00 \N
+4076 7cdde621-a20c-4c4b-bdbd-d6c598a41e1d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:10:00.049933+00 \N {"children": []} \N \N \N \N 2026-01-12 19:10:00.031643+00 \N
+3595 f6bb1865-3567-47ba-9cbc-1e148e84306c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:35:00.035924+00 \N {"children": []} \N \N \N \N 2026-01-09 02:35:00.025793+00 \N
+4097 cbb954f8-153c-47d8-a347-61fbd719aa9a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:45:00.044294+00 \N {"children": []} \N \N \N \N 2026-01-12 20:45:00.025336+00 \N
+3967 2e576a44-6161-42eb-90d9-16275a06cab6 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 531, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/0857c7c6-3db0-47e2-983c-bcd2a4ad3081.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_531_1768218722.webp", "revised_prompt": null}]} 2026-01-12 11:52:03.039865+00 \N {"children": []} \N \N \N \N 2026-01-12 11:51:51.958275+00 \N
+4109 1a21ce52-53bc-4694-8d20-3ee426c755c7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:35:00.04016+00 \N {"children": []} \N \N \N \N 2026-01-12 21:35:00.02404+00 \N
+3994 39d26d0a-8176-4529-a89b-dc18682bc268 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:20:00.04582+00 \N {"children": []} \N \N \N \N 2026-01-12 13:20:00.036724+00 \N
+4017 b0e82226-893c-44ec-8565-2f8ba1fd0a64 SUCCESS application/json utf-8 {"sites_processed": 2, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}, {"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-12 15:00:00.323166+00 \N {"children": []} \N \N \N \N 2026-01-12 15:00:00.225079+00 \N
+4120 dc86eb3d-d076-4145-a242-6a2595611dee SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:20:00.040295+00 \N {"children": []} \N \N \N \N 2026-01-12 22:20:00.026432+00 \N
+4127 7750d58b-cf73-4f60-966e-30ef0e18509a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:55:00.043735+00 \N {"children": []} \N \N \N \N 2026-01-12 22:55:00.027765+00 \N
+3331 ff2475dc-0e96-4dbc-9e89-a251d2b4ff8a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 08:00:00.047717+00 \N {"children": []} \N \N \N \N 2026-01-08 08:00:00.031152+00 \N
+3651 6d0736fc-f266-41d7-bcfe-0c0b6bbadbae SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:25:00.028222+00 \N {"children": []} \N \N \N \N 2026-01-09 06:25:00.021503+00 \N
+3798 f3b15eb8-5cd2-40d1-bd4a-d08743a158e1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 16:55:00.034963+00 \N {"children": []} \N \N \N \N 2026-01-09 16:55:00.024806+00 \N
+3457 1b54633a-5a90-4d97-8640-9094079dfb3f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 16:55:00.036724+00 \N {"children": []} \N \N \N \N 2026-01-08 16:55:00.025921+00 \N
+3366 59d31e9f-0b8f-45c9-b0af-4436af09b1e9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:20:00.031746+00 \N {"children": []} \N \N \N \N 2026-01-08 10:20:00.025267+00 \N
+3686 daadb4bf-2799-4deb-830e-f8d19e9afb51 SUCCESS application/json utf-8 null 2026-01-09 09:00:00.054873+00 \N {"children": []} \N \N \N \N 2026-01-09 09:00:00.032877+00 \N
+4057 8b7406aa-5eaa-4b06-99cd-158691e5ac85 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 17:55:00.029802+00 \N {"children": []} \N \N \N \N 2026-01-12 17:55:00.022121+00 \N
+3401 7c24eaba-b4a6-4b67-9654-98683bf78a41 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 12:55:00.02923+00 \N {"children": []} \N \N \N \N 2026-01-08 12:55:00.022598+00 \N
+3492 78ad8cee-9770-49e6-8c29-9d25dd693d98 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:20:00.031958+00 \N {"children": []} \N \N \N \N 2026-01-08 19:20:00.022881+00 \N
+3721 d267f6c6-08dc-4bb6-aa46-873ba99e7b0f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:20:00.042052+00 \N {"children": []} \N \N \N \N 2026-01-09 11:20:00.031365+00 \N
+3833 536a491a-20e9-4ccf-ae38-02d862f606dc SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:20:00.035249+00 \N {"children": []} \N \N \N \N 2026-01-09 19:20:00.02476+00 \N
+3527 17cbc009-7155-45ae-94ee-d3d09d2669e7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 21:55:00.029412+00 \N {"children": []} \N \N \N \N 2026-01-08 21:55:00.02264+00 \N
+3756 c0f2466c-2dcc-40ca-b2ad-eb67caed758c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 13:55:00.032364+00 \N {"children": []} \N \N \N \N 2026-01-09 13:55:00.022736+00 \N
+3562 f5123309-e54e-42d1-a10c-2a8cf74a334c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:15:00.03246+00 \N {"children": []} \N \N \N \N 2026-01-09 00:15:00.025054+00 \N
+4077 561108a5-15e0-4726-843e-638ebe74f162 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:15:00.059218+00 \N {"children": []} \N \N \N \N 2026-01-12 19:15:00.02791+00 \N
+3596 f44cf38b-4bad-46a3-9bd9-dc68c2ecf598 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:40:00.037561+00 \N {"children": []} \N \N \N \N 2026-01-09 02:40:00.025914+00 \N
+4098 5ad940be-6af5-4879-b513-5630c48341cd SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:50:00.037527+00 \N {"children": []} \N \N \N \N 2026-01-12 20:50:00.021268+00 \N
+3968 ebd11ecf-bb45-4c61-9d24-305d3f19c0e3 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 532, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/d070dce9-a1fd-4f34-b105-407564fecb72.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_532_1768218737.webp", "revised_prompt": null}]} 2026-01-12 11:52:18.596582+00 \N {"children": []} \N \N \N \N 2026-01-12 11:52:04.982048+00 \N
+4110 5dabd7a5-a4a7-45f9-b3cd-dc14b6e75d81 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:40:00.04059+00 \N {"children": []} \N \N \N \N 2026-01-12 21:40:00.02452+00 \N
+3995 f457095d-fd16-4f32-9ee6-c6dc678dfba8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:25:00.031719+00 \N {"children": []} \N \N \N \N 2026-01-12 13:25:00.02488+00 \N
+4018 d74c15a1-fda5-4eba-95c1-496d2db1aef8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:00:00.28621+00 \N {"children": []} \N \N \N \N 2026-01-12 15:00:00.229+00 \N
+4121 ba12c2b9-f1f6-48c7-9d95-3db06f18ae30 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:25:00.041324+00 \N {"children": []} \N \N \N \N 2026-01-12 22:25:00.022817+00 \N
+4128 e451a477-3e49-444c-ab31-12be723bc005 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}]} 2026-01-12 23:00:00.038053+00 \N {"children": []} \N \N \N \N 2026-01-12 23:00:00.024576+00 \N
+3652 9e6554ca-4b0a-4ae2-a959-9416bd41ceb6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:30:00.047873+00 \N {"children": []} \N \N \N \N 2026-01-09 06:30:00.038448+00 \N
+3799 b0e575d3-84fa-49be-809f-802343c0c7be SUCCESS application/json utf-8 null 2026-01-09 17:00:00.05194+00 \N {"children": []} \N \N \N \N 2026-01-09 17:00:00.031263+00 \N
+3332 ca0870ee-d179-4a7d-acb5-84e3497c6a87 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 08:00:00.068528+00 \N {"children": []} \N \N \N \N 2026-01-08 08:00:00.038923+00 \N
+3458 dbc7cba9-ddb6-4fab-b4ef-3c93aceaaf88 SUCCESS application/json utf-8 null 2026-01-08 17:00:00.041897+00 \N {"children": []} \N \N \N \N 2026-01-08 17:00:00.027797+00 \N
+3367 8d9acfe9-862f-448e-82f1-6a20a605c307 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:25:00.033044+00 \N {"children": []} \N \N \N \N 2026-01-08 10:25:00.025846+00 \N
+3687 dbc2702b-aecc-465d-addc-a5be32c5a69a SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 09:00:00.109008+00 \N {"children": []} \N \N \N \N 2026-01-09 09:00:00.04673+00 \N
+4058 b126de08-eb4d-45bd-9843-1d9eae52f88d SUCCESS application/json utf-8 null 2026-01-12 18:00:00.047629+00 \N {"children": []} \N \N \N \N 2026-01-12 18:00:00.032757+00 \N
+3402 c1a69214-c891-4552-8b48-07eebb9dae73 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-08 13:00:00.079891+00 \N {"children": []} \N \N \N \N 2026-01-08 13:00:00.038479+00 \N
+3493 686581f2-5101-4ac0-b270-8bb8015daa72 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:25:00.035418+00 \N {"children": []} \N \N \N \N 2026-01-08 19:25:00.027778+00 \N
+3722 350c9429-dbc7-4df1-9b0b-c3df8dd0915b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:25:00.030717+00 \N {"children": []} \N \N \N \N 2026-01-09 11:25:00.022383+00 \N
+3834 8e209787-292c-4733-8a3d-4d2219e9a6a0 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:25:00.040861+00 \N {"children": []} \N \N \N \N 2026-01-09 19:25:00.027779+00 \N
+3528 827f463c-b949-4273-9b90-8766dc1f682b SUCCESS application/json utf-8 null 2026-01-08 22:00:00.04068+00 \N {"children": []} \N \N \N \N 2026-01-08 22:00:00.029583+00 \N
+3757 e7b0e93f-1a74-4733-831b-bd50906ab629 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 14:00:00.036033+00 \N {"children": []} \N \N \N \N 2026-01-09 14:00:00.027118+00 \N
+3563 f8ae2436-c172-4d22-8cc3-a5ebd7b0181c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:20:00.035489+00 \N {"children": []} \N \N \N \N 2026-01-09 00:20:00.02752+00 \N
+4078 25423dfc-edb8-4a67-9e5f-81f3f5000995 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:20:00.039816+00 \N {"children": []} \N \N \N \N 2026-01-12 19:20:00.024939+00 \N
+3597 862f67e0-03f5-4b6d-b88b-d5607cae78ae SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:45:00.031445+00 \N {"children": []} \N \N \N \N 2026-01-09 02:45:00.022898+00 \N
+4099 7a9d6138-da88-4909-a405-c1169ec94bc9 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 20:55:00.052301+00 \N {"children": []} \N \N \N \N 2026-01-12 20:55:00.030542+00 \N
+3969 1d3454cf-d2ae-4c5a-9645-e38ad06795e9 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 533, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/cec91754-e369-4481-aebe-35c3eb36740d.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_533_1768218752.webp", "revised_prompt": null}]} 2026-01-12 11:52:32.693497+00 \N {"children": []} \N \N \N \N 2026-01-12 11:52:21.00741+00 \N
+4111 2bd6d435-c864-43bc-9af9-a7f67aa95e63 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:45:00.037895+00 \N {"children": []} \N \N \N \N 2026-01-12 21:45:00.020297+00 \N
+3996 e541704f-cab9-4d76-b8c8-f01eae7f881e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:30:00.027902+00 \N {"children": []} \N \N \N \N 2026-01-12 13:30:00.020003+00 \N
+4019 c105403f-fcde-443e-990d-094080990373 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:05:00.033105+00 \N {"children": []} \N \N \N \N 2026-01-12 15:05:00.022794+00 \N
+4122 592cb1a1-dc68-40db-8a40-e986e636fb5c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:30:00.046158+00 \N {"children": []} \N \N \N \N 2026-01-12 22:30:00.028166+00 \N
+4129 84f1a02d-721b-4770-bcf8-e73562b3c0bb SUCCESS application/json utf-8 null 2026-01-12 23:00:00.04531+00 \N {"children": []} \N \N \N \N 2026-01-12 23:00:00.039025+00 \N
+4138 fd13e9ca-e41b-4581-849c-2991d868ff7c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:40:00.039841+00 \N {"children": []} \N \N \N \N 2026-01-12 23:40:00.023241+00 \N
+4141 7f732fad-c365-493f-875d-497ecd68eba7 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 549, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/50986f53-f385-4b27-800e-e6b492c02932.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_549_1768261287.webp", "revised_prompt": null}]} 2026-01-12 23:41:28.661385+00 \N {"children": []} \N \N \N \N 2026-01-12 23:41:17.665859+00 \N
+4142 09de2a41-6823-4525-9ad4-9903b2d31b19 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 551, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/be54ae7c-c3ee-478d-9736-c65d8be90225.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_551_1768261302.webp", "revised_prompt": null}]} 2026-01-12 23:41:43.883528+00 \N {"children": []} \N \N \N \N 2026-01-12 23:41:32.684482+00 \N
+4146 91719f7a-fb88-4372-8817-b0f801054e7e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:55:00.034582+00 \N {"children": []} \N \N \N \N 2026-01-12 23:55:00.020769+00 \N
+3653 776396a8-241a-43b9-99c5-b16b02d3db5c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 06:35:00.032528+00 \N {"children": []} \N \N \N \N 2026-01-09 06:35:00.023228+00 \N
+3800 5be4dba3-1f93-4ad8-83a8-34b59f5dbb96 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 28, "site_name": "addad", "scheduled_count": 0}]} 2026-01-09 17:00:00.084579+00 \N {"children": []} \N \N \N \N 2026-01-09 17:00:00.036484+00 \N
+3333 1e6ac894-b8dd-4144-9f5f-d57a6d1da71f SUCCESS application/json utf-8 null 2026-01-08 08:00:00.094183+00 \N {"children": []} \N \N \N \N 2026-01-08 08:00:00.057294+00 \N
+3459 93cd1921-b4cb-404d-b33a-936af5eb24d5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 17:00:00.055261+00 \N {"children": []} \N \N \N \N 2026-01-08 17:00:00.046173+00 \N
+3368 706fd668-fd44-4750-bc28-ec5d3d0d62a6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 10:30:00.047399+00 \N {"children": []} \N \N \N \N 2026-01-08 10:30:00.037758+00 \N
+3688 22303858-540b-47de-9621-246bf617c05f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 09:00:00.109282+00 \N {"children": []} \N \N \N \N 2026-01-09 09:00:00.059523+00 \N
+3970 63991291-564d-46bf-bc19-a172fe54cfa6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 11:55:00.04049+00 \N {"children": []} \N \N \N \N 2026-01-12 11:55:00.032307+00 \N
+3403 a81beeb2-de69-4e7c-9b61-83515d4cbcd0 SUCCESS application/json utf-8 null 2026-01-08 13:00:00.186716+00 \N {"children": []} \N \N \N \N 2026-01-08 13:00:00.16138+00 \N
+3494 d503587f-4313-4c8f-8abe-d9a61528c96c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 19:30:00.032963+00 \N {"children": []} \N \N \N \N 2026-01-08 19:30:00.025267+00 \N
+3723 9d15d138-c754-42c7-b4d9-862d534f3ab2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 11:30:00.034784+00 \N {"children": []} \N \N \N \N 2026-01-09 11:30:00.023327+00 \N
+3835 82951b5d-250b-4c4c-823d-e276cd2f441a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 19:30:00.035325+00 \N {"children": []} \N \N \N \N 2026-01-09 19:30:00.023787+00 \N
+3529 8816969d-af71-400c-b781-fae32598ac07 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-08 22:00:00.060506+00 \N {"children": []} \N \N \N \N 2026-01-08 22:00:00.037655+00 \N
+3758 74fec52f-a394-431d-a614-69d91c144494 SUCCESS application/json utf-8 null 2026-01-09 14:00:00.180875+00 \N {"children": []} \N \N \N \N 2026-01-09 14:00:00.148259+00 \N
+4059 69c0141c-dfec-4c41-bba2-f4164bf030ef SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 18:00:00.051348+00 \N {"children": []} \N \N \N \N 2026-01-12 18:00:00.04158+00 \N
+3564 a9ae6c79-7303-4c92-a820-e0caebc0b009 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 00:25:00.044735+00 \N {"children": []} \N \N \N \N 2026-01-09 00:25:00.034877+00 \N
+3997 f5a4abd0-0595-4104-8e49-f60e8b9ed84e SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 13:35:00.032739+00 \N {"children": []} \N \N \N \N 2026-01-12 13:35:00.023254+00 \N
+3598 48fd12b8-9ae2-496e-a0ec-8415075e8578 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-09 02:50:00.046806+00 \N {"children": []} \N \N \N \N 2026-01-09 02:50:00.031461+00 \N
+4020 7f17006d-7fbb-4de8-a0b6-22e60d0fd5d8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": ["Fatal error in process_scheduled_publications: Invalid field name(s) given in select_related: 'task'. Choices are: deleted_by, account, site, sector, cluster"]} 2026-01-12 15:10:00.035172+00 \N {"children": []} \N \N \N \N 2026-01-12 15:10:00.025811+00 \N
+4079 4f46d0c7-9b63-481e-9a8d-d970fc46fc51 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 19:25:00.04523+00 \N {"children": []} \N \N \N \N 2026-01-12 19:25:00.024919+00 \N
+4100 65b851cc-fe46-4028-ac13-01f5708b6d62 SUCCESS application/json utf-8 {"sites_processed": 0, "content_scheduled": 0, "errors": [], "details": []} 2026-01-12 21:00:00.034997+00 \N {"children": []} \N \N \N \N 2026-01-12 21:00:00.026064+00 \N
+4112 91729767-d452-459e-abc0-bccdc51e16a1 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 21:50:00.04886+00 \N {"children": []} \N \N \N \N 2026-01-12 21:50:00.030696+00 \N
+4123 bcd6604a-2392-48c9-8dea-9886d12a38bb SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 22:35:10.685683+00 \N {"children": []} \N \N \N \N 2026-01-12 22:35:10.664319+00 \N
+4130 b22a49ef-08d0-4ac9-8f73-8215de05b093 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:00:00.058046+00 \N {"children": []} \N \N \N \N 2026-01-12 23:00:00.041107+00 \N
+4139 97caec13-68f5-4a0e-8e35-d89c5197678c SUCCESS application/json utf-8 null 2026-01-12 23:42:04.739409+00 \N {"children": [[["2b3fee53-ffb5-4e79-ad15-b44c078f098a", null], null], [["7f732fad-c365-493f-875d-497ecd68eba7", null], null], [["09de2a41-6823-4525-9ad4-9903b2d31b19", null], null], [["d66e6f51-01d2-4bae-a80b-c5b8e3727a76", null], null]]} \N \N \N \N 2026-01-12 23:40:07.495492+00 \N
+4144 0275ee0b-18a6-45fc-a057-710203054c0d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-12 23:45:00.037911+00 \N {"children": []} \N \N \N \N 2026-01-12 23:45:00.021037+00 \N
+4150 eedf70c7-3e10-41b7-85ff-58edb1cfe6ea SUCCESS application/json utf-8 null 2026-01-13 00:00:00.142185+00 \N {"children": []} \N \N \N \N 2026-01-13 00:00:00.121864+00 \N
+4143 d66e6f51-01d2-4bae-a80b-c5b8e3727a76 SUCCESS application/json utf-8 {"success": true, "total_images": 1, "completed": 1, "failed": 0, "results": [{"image_id": 552, "status": "completed", "image_url": "https://im.runware.ai/image/ws/2/ii/1f0b50f1-395a-41ba-be26-17f232303a2d.webp", "image_path": "/data/app/igny8/frontend/public/images/ai-images/image_552_1768261317.webp", "revised_prompt": null}]} 2026-01-12 23:41:58.177956+00 \N {"children": []} \N \N \N \N 2026-01-12 23:41:47.707294+00 \N
+4147 47fdd3ed-46e9-4196-9ab7-2190296f0332 SUCCESS application/json utf-8 {"success": false, "error": "Packaging script failed with code 127", "stderr": "/data/app/igny8/scripts/package_app.sh: line 37: rsync: command not found\\n", "timestamp": "2026-01-13T00:00:00.145154"} 2026-01-13 00:00:00.147122+00 \N {"children": []} \N \N \N \N 2026-01-13 00:00:00.034901+00 \N
+4151 d03da35d-21c4-4fd1-a322-b827b3360b9f FAILURE application/json utf-8 {"exc_type": "NotRegistered", "exc_message": ["billing.process_subscription_renewals"], "exc_module": "celery.exceptions"} 2026-01-13 00:05:00.034112+00 \N {"children": []} \N \N \N \N 2026-01-13 00:05:00.034048+00 \N
+4154 9213b66e-15f0-4cb6-95f2-14b9dfe2b8cb FAILURE application/json utf-8 {"exc_type": "NotRegistered", "exc_message": ["billing.check_expired_renewals"], "exc_module": "celery.exceptions"} 2026-01-13 00:15:00.010047+00 \N {"children": []} \N \N \N \N 2026-01-13 00:15:00.010027+00 \N
+4152 1f7bbe65-bb3b-4e6f-a2ed-b9897aeb9583 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:05:00.075001+00 \N {"children": []} \N \N \N \N 2026-01-13 00:05:00.056932+00 \N
+4153 e8011aee-4a0c-43e3-8484-de4fb154bd24 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:10:00.061889+00 \N {"children": []} \N \N \N \N 2026-01-13 00:10:00.033857+00 \N
+4155 e2607e01-e75c-441b-89e6-949480e328e5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:15:00.054846+00 \N {"children": []} \N \N \N \N 2026-01-13 00:15:00.037023+00 \N
+4156 b67dadc6-1c76-48db-8f4e-269c312bb462 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:20:00.04137+00 \N {"children": []} \N \N \N \N 2026-01-13 00:20:00.026316+00 \N
+4157 a9f4ca3f-e6fa-4617-a7c4-6b1fe2d68df7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:25:00.045745+00 \N {"children": []} \N \N \N \N 2026-01-13 00:25:00.026399+00 \N
+4158 02937ee3-78fd-4e08-9388-5afad5d837b8 SUCCESS application/json utf-8 {"reset_count": 0, "error_count": 0, "total_accounts": 1} 2026-01-13 00:30:00.0433+00 \N {"children": []} \N \N \N \N 2026-01-13 00:30:00.021748+00 \N
+4159 612e12d6-07cb-482b-bce4-e00bca6a362c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:30:00.070374+00 \N {"children": []} \N \N \N \N 2026-01-13 00:30:00.040521+00 \N
+4160 01543ec2-3927-4d4c-a2f5-97666c9bf885 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:35:00.042521+00 \N {"children": []} \N \N \N \N 2026-01-13 00:35:00.022569+00 \N
+4161 43c99535-acee-4983-ad0b-dcccfe29b966 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:40:00.047178+00 \N {"children": []} \N \N \N \N 2026-01-13 00:40:00.027223+00 \N
+4162 9ae54fc6-a73b-44f4-9e3d-a927765ea5f7 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:45:00.035821+00 \N {"children": []} \N \N \N \N 2026-01-13 00:45:00.021352+00 \N
+4163 73747a80-7839-4c81-a31d-10580d0aceb2 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:50:00.040001+00 \N {"children": []} \N \N \N \N 2026-01-13 00:50:00.024228+00 \N
+4164 21224fbc-efbe-4ab7-a401-1c42dbaf6eed SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 00:55:00.032205+00 \N {"children": []} \N \N \N \N 2026-01-13 00:55:00.019648+00 \N
+4165 9fddfdd6-cbf2-4576-9519-9d37c07356b0 SUCCESS application/json utf-8 null 2026-01-13 01:00:00.040095+00 \N {"children": []} \N \N \N \N 2026-01-13 01:00:00.02835+00 \N
+4166 1f95a0b6-0b5d-41db-a746-79457a8e0c24 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:00:00.047378+00 \N {"children": []} \N \N \N \N 2026-01-13 01:00:00.03127+00 \N
+4167 a0a717b6-46b3-4b69-8f39-9c005cd057ee SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}]} 2026-01-13 01:00:00.154089+00 \N {"children": []} \N \N \N \N 2026-01-13 01:00:00.07306+00 \N
+4168 0e24e04b-d3fc-4b22-ba0e-3f63c7b7a959 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:05:00.076609+00 \N {"children": []} \N \N \N \N 2026-01-13 01:05:00.037495+00 \N
+4169 e1ec6143-2e62-4ef1-b272-3a11bdb4c2a6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:10:00.065413+00 \N {"children": []} \N \N \N \N 2026-01-13 01:10:00.041182+00 \N
+4170 dd4e790e-49d4-4599-928a-f19e33f78f74 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:15:00.043634+00 \N {"children": []} \N \N \N \N 2026-01-13 01:15:00.022513+00 \N
+4171 c8709ff9-407e-4a0c-bfa1-1192b6e7b07f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:20:00.138543+00 \N {"children": []} \N \N \N \N 2026-01-13 01:20:00.052603+00 \N
+4172 db7a547e-f7ff-436b-87fb-59a977165e4c SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:25:00.039765+00 \N {"children": []} \N \N \N \N 2026-01-13 01:25:00.021976+00 \N
+4173 307111dd-323d-4c7e-a269-e2935bc86036 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:30:00.047763+00 \N {"children": []} \N \N \N \N 2026-01-13 01:30:00.027626+00 \N
+4174 53539928-88fe-4c57-883c-d4a0835ded06 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:35:00.045851+00 \N {"children": []} \N \N \N \N 2026-01-13 01:35:00.026466+00 \N
+4175 912ac51b-7179-4763-b6ed-63d2a0b67251 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:40:00.045345+00 \N {"children": []} \N \N \N \N 2026-01-13 01:40:00.024618+00 \N
+4176 c0934fac-5b20-4303-98ca-2c664d4e49ea SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:45:00.040385+00 \N {"children": []} \N \N \N \N 2026-01-13 01:45:00.021695+00 \N
+4177 a1962911-ced5-4b74-ac76-8bf41f02861b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:50:00.05498+00 \N {"children": []} \N \N \N \N 2026-01-13 01:50:00.035609+00 \N
+4178 2e27b380-cdd7-454d-bbd4-3738da66fbd8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 01:55:00.039468+00 \N {"children": []} \N \N \N \N 2026-01-13 01:55:00.024467+00 \N
+4179 961c2e1c-5666-41b2-8b32-623e775779d5 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:00:00.083894+00 \N {"children": []} \N \N \N \N 2026-01-13 02:00:00.048496+00 \N
+4180 8c4bb294-ff06-4839-a730-6de61b38d7c2 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}]} 2026-01-13 02:00:00.112338+00 \N {"children": []} \N \N \N \N 2026-01-13 02:00:00.062519+00 \N
+4181 de7dd55c-1e70-48c4-8c70-9bd23b7ff50c SUCCESS application/json utf-8 null 2026-01-13 02:00:00.303139+00 \N {"children": []} \N \N \N \N 2026-01-13 02:00:00.084929+00 \N
+4182 a3510c49-be95-4b16-b5cb-9f3040708b38 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:05:00.04776+00 \N {"children": []} \N \N \N \N 2026-01-13 02:05:00.026431+00 \N
+4183 b94c6637-867c-4d3b-bcde-fd1b7b853cd4 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:10:00.043752+00 \N {"children": []} \N \N \N \N 2026-01-13 02:10:00.024792+00 \N
+4184 abf441ec-4f7a-4e64-a2e2-09cd24dc518a SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:15:00.048559+00 \N {"children": []} \N \N \N \N 2026-01-13 02:15:00.022818+00 \N
+4185 42e2da8f-81d9-444a-ab3f-208b8bdda48f SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:20:00.046635+00 \N {"children": []} \N \N \N \N 2026-01-13 02:20:00.025913+00 \N
+4186 89ba4efc-9f29-4092-acd0-c5666a0298f8 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:25:00.04065+00 \N {"children": []} \N \N \N \N 2026-01-13 02:25:00.022069+00 \N
+4187 091d4659-03a6-49f4-8941-f243747c4d43 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:30:00.059971+00 \N {"children": []} \N \N \N \N 2026-01-13 02:30:00.034548+00 \N
+4188 79c30ce9-ea3c-4217-b0c4-828e0ac5d7b6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:35:00.04934+00 \N {"children": []} \N \N \N \N 2026-01-13 02:35:00.027843+00 \N
+4189 2acd59ec-17a9-4701-a2f5-ffcab8b41e7b SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:40:00.046586+00 \N {"children": []} \N \N \N \N 2026-01-13 02:40:00.024469+00 \N
+4190 84aa2d5e-5366-43a3-be1c-bf8f0164495d SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:45:00.039545+00 \N {"children": []} \N \N \N \N 2026-01-13 02:45:00.020384+00 \N
+4191 302942e7-1b4a-4c53-acca-a580bc8b8278 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:50:00.045878+00 \N {"children": []} \N \N \N \N 2026-01-13 02:50:00.028437+00 \N
+4192 2d01bff5-a09f-4236-bd2b-7fa0e68605ff SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 02:55:00.071189+00 \N {"children": []} \N \N \N \N 2026-01-13 02:55:00.043295+00 \N
+4193 122a2b23-7791-44d3-9d38-373a49edea84 SUCCESS application/json utf-8 {"sites_processed": 1, "content_scheduled": 0, "errors": [], "details": [{"site_id": 21, "site_name": "Massagers Mart", "scheduled_count": 0}]} 2026-01-13 03:00:00.068643+00 \N {"children": []} \N \N \N \N 2026-01-13 03:00:00.027101+00 \N
+4195 2781dab2-f979-45e9-bffa-7d5e2017354b SUCCESS application/json utf-8 null 2026-01-13 03:00:00.069794+00 \N {"children": []} \N \N \N \N 2026-01-13 03:00:00.043509+00 \N
+4194 b3b50ebb-5215-417b-85ea-6ce8f25e7ed6 SUCCESS application/json utf-8 {"processed": 0, "published": 0, "failed": 0, "errors": []} 2026-01-13 03:00:00.09964+00 \N {"children": []} \N \N \N \N 2026-01-13 03:00:00.043344+00 \N
+\.
+
+
+--
+-- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_content_type (id, app_label, model) FROM stdin;
+1 admin logentry
+2 auth permission
+3 auth group
+4 contenttypes contenttype
+5 sessions session
+6 igny8_core_auth plan
+7 igny8_core_auth user
+8 igny8_core_auth account
+9 igny8_core_auth industry
+10 igny8_core_auth industrysector
+11 igny8_core_auth passwordresettoken
+12 igny8_core_auth seedkeyword
+13 igny8_core_auth site
+14 igny8_core_auth sector
+15 igny8_core_auth siteuseraccess
+16 igny8_core_auth subscription
+17 ai aitasklog
+18 planner keywords
+19 planner clusters
+20 planner contentideas
+21 writer content
+22 writer tasks
+23 writer images
+24 writer contenttaxonomymap
+25 writer contentclustermap
+26 writer contentattributemap
+27 system systemsettings
+28 system accountsettings
+29 system aiprompt
+30 system aisettings
+31 system authorprofile
+32 system integrationsettings
+33 system moduleenablesettings
+34 system modulesettings
+35 system strategy
+36 system usersettings
+37 billing credittransaction
+38 billing creditusagelog
+39 automation automationrule
+40 automation scheduledtask
+41 site_building audienceprofile
+42 site_building brandpersonality
+43 site_building businesstype
+44 site_building heroimagerydirection
+45 site_building siteblueprint
+46 site_building pageblueprint
+47 site_building siteblueprintcluster
+48 site_building siteblueprinttaxonomy
+49 optimization optimizationtask
+50 publishing deploymentrecord
+51 publishing publishingrecord
+52 integration siteintegration
+56 writer contentattribute
+57 writer contenttaxonomy
+58 writer contenttaxonomyrelation
+59 integration syncevent
+60 automation automationconfig
+61 automation automationrun
+62 billing creditcostconfig
+63 billing creditpackage
+64 billing invoice
+65 billing payment
+66 billing paymentmethodconfig
+67 billing accountpaymentmethod
+68 billing planlimitusage
+69 admin_interface theme
+70 django_celery_results taskresult
+71 django_celery_results chordcounter
+72 django_celery_results groupresult
+73 igny8_core_auth historicalaccount
+74 billing historicalpayment
+75 billing historicalcreditcostconfig
+76 billing billingconfiguration
+77 system globalintegrationsettings
+78 system accountintegrationoverride
+79 system globalaiprompt
+80 system globalauthorprofile
+81 system globalstrategy
+82 system globalmodulesettings
+83 billing historicalaimodelconfig
+84 billing aimodelconfig
+85 notifications notification
+86 writer imageprompts
+87 integration publishingsettings
+88 system integrationprovider
+89 system systemaisettings
+90 billing webhookevent
+91 system emailtemplate
+92 system emaillog
+93 system emailsettings
+94 plugins plugin
+95 plugins pluginversion
+96 plugins plugininstallation
+97 plugins plugindownload
+98 igny8_core_auth accounttrash
+99 igny8_core_auth sectortrash
+100 igny8_core_auth sitetrash
+101 planner clusterstrash
+102 planner contentideastrash
+103 planner keywordstrash
+104 writer contenttrash
+105 writer imagestrash
+106 writer taskstrash
+107 writer contenttaxonomytrash
+\.
+
+
+--
+-- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_migrations (id, app, name, applied) FROM stdin;
+1 contenttypes 0001_initial 2025-10-29 10:28:55.122452+00
+2 auth 0001_initial 2025-10-29 10:28:55.180661+00
+3 admin 0001_initial 2025-10-29 10:28:55.194009+00
+4 admin 0002_logentry_remove_auto_add 2025-10-29 10:28:55.19911+00
+5 admin 0003_logentry_add_action_flag_choices 2025-10-29 10:28:55.205464+00
+6 contenttypes 0002_remove_content_type_name 2025-10-29 10:28:55.215913+00
+7 auth 0002_alter_permission_name_max_length 2025-10-29 10:28:55.220755+00
+8 auth 0003_alter_user_email_max_length 2025-10-29 10:28:55.225479+00
+9 auth 0004_alter_user_username_opts 2025-10-29 10:28:55.229685+00
+10 auth 0005_alter_user_last_login_null 2025-10-29 10:28:55.235278+00
+11 auth 0006_require_contenttypes_0002 2025-10-29 10:28:55.236115+00
+12 auth 0007_alter_validators_add_error_messages 2025-10-29 10:28:55.239629+00
+13 auth 0008_alter_user_username_max_length 2025-10-29 10:28:55.246263+00
+14 auth 0009_alter_user_last_name_max_length 2025-10-29 10:28:55.250925+00
+15 auth 0010_alter_group_name_max_length 2025-10-29 10:28:55.25608+00
+16 auth 0011_update_proxy_permissions 2025-10-29 10:28:55.260198+00
+17 auth 0012_alter_user_first_name_max_length 2025-10-29 10:28:55.264889+00
+18 sessions 0001_initial 2025-10-29 10:28:55.274112+00
+21 igny8_core_auth 0001_initial 2025-10-29 10:27:55.194009+00
+22 planner 0001_initial 2025-11-02 21:44:37.370662+00
+23 system 0001_initial 2025-11-02 21:44:40.130706+00
+24 planner 0002_add_site_sector_tenant 2025-11-02 21:59:05.123792+00
+25 igny8_core_auth 0002_add_developer_role 2025-11-03 13:21:55.889967+00
+26 igny8_core_auth 0003_alter_user_role 2025-11-03 13:22:06.704563+00
+27 planner 0003_alter_clusters_sector_alter_clusters_site_and_more 2025-11-03 13:22:06.859462+00
+28 writer 0001_initial 2025-11-03 13:22:07.031296+00
+29 system 0002_integration_settings_ai_prompts 2025-11-03 18:26:09.091939+00
+30 igny8_core_auth 0004_add_industry_models 2025-11-04 14:55:07.052936+00
+31 igny8_core_auth 0005_populate_industries 2025-11-04 14:55:33.316718+00
+32 igny8_core_auth 0006_add_industry_to_site 2025-11-04 14:55:33.355372+00
+33 igny8_core_auth 0007_seed_initial_plans 2025-11-04 14:55:33.385875+00
+34 igny8_core_auth 0008_seed_test_user_data 2025-11-04 14:55:33.407435+00
+35 igny8_core_auth 0009_populate_minimal_industries 2025-11-04 14:56:39.112274+00
+37 planner 0004_add_keyword_objects_to_contentideas 2025-11-07 09:49:19.678491+00
+38 writer 0002_rename_taskimages_add_content_and_keywords 2025-11-07 09:49:37.785505+00
+39 system 0003_add_image_generation_integration_type 2025-11-07 09:49:57.330623+00
+41 planner 0005_alter_clusters_options_alter_contentideas_options_and_more 2025-11-07 10:22:20.048424+00
+44 igny8_core_auth 0007_expand_plan_limits 2025-11-07 10:28:52.290948+00
+45 igny8_core_auth 0008_passwordresettoken_alter_industry_options_and_more 2025-11-07 10:29:00.354819+00
+46 system 0004_aisettings_modulesettings_systemsettings_and_more 2025-11-07 10:29:27.6659+00
+47 writer 0003_alter_content_options_alter_images_options_and_more 2025-11-07 10:29:36.857254+00
+48 billing 0001_initial 2025-11-07 10:37:29.425115+00
+49 igny8_core_auth 0009_fix_admin_log_user_fk 2025-11-07 10:45:15.476621+00
+50 igny8_core_auth 0010_add_seed_keyword 2025-11-07 11:38:20.850865+00
+51 system 0005_add_author_profile_strategy 2025-11-07 11:38:25.213376+00
+52 igny8_core_auth 0011_add_plan_fields_and_fix_constraints 2025-11-07 11:46:23.738704+00
+53 igny8_core_auth 0012_allow_blank_json_fields 2025-11-07 11:57:04.294464+00
+54 igny8_core_auth 0013_remove_ai_cost_per_request 2025-11-07 12:01:25.383162+00
+55 planner 0006_add_seed_keyword_to_keywords 2025-11-09 00:12:00.203965+00
+56 writer 0004_add_content_seo_fields 2025-11-09 21:38:52.46702+00
+57 planner 0004_add_seed_keyword_to_keywords 2025-11-10 13:14:23.48611+00
+58 planner 0006_add_seed_keyword_to_keywords 2025-11-10 13:15:17.881801+00
+59 planner 0007_merge_20251109_2138 2025-11-10 13:15:17.884706+00
+60 planner 0004_add_seed_keyword_to_keywords 2025-11-10 13:15:45.94197+00
+91 writer 0005_move_content_fields_to_content 2025-11-10 13:59:05.488015+00
+92 writer 0006_update_status_choices 2025-11-11 18:09:48.140756+00
+93 writer 0007_add_content_to_images 2025-11-11 18:09:48.40359+00
+125 writer 0008_change_image_url_to_charfield 2025-11-12 00:44:31.664144+00
+126 system 0006_alter_systemstatus_unique_together_and_more 2025-11-14 18:50:28.066233+00
+127 system 0007_rename_tenant_settings_to_account_settings 2025-11-14 18:50:28.069656+00
+128 system 0007_add_module_enable_settings 2025-11-16 21:13:59.413193+00
+318 igny8_core_auth 0021_accounttrash_sectortrash_sitetrash 2026-01-12 13:36:48.38509+00
+130 writer 0009_add_content_site_source_fields 2025-11-17 13:13:27.422428+00
+132 igny8_core_auth 0014_remove_plan_operation_limits_phase0 2025-11-17 19:59:27.44694+00
+133 site_building 0001_initial 2025-11-17 20:01:08.79499+00
+134 optimization 0001_initial 2025-11-17 20:02:25.999261+00
+135 writer 0010_make_content_task_nullable 2025-11-17 20:25:06.878326+00
+136 publishing 0001_initial 2025-11-18 00:21:14.439717+00
+137 igny8_core_auth 0015_add_site_type_hosting_type 2025-11-18 00:40:22.106131+00
+138 integration 0001_initial 2025-11-18 00:56:03.086648+00
+139 system 0008_add_site_structure_generation_prompt_type 2025-11-18 00:56:19.950159+00
+140 igny8_core_auth 0016_add_site_seo_metadata 2025-11-18 01:45:39.179711+00
+141 writer 0011_add_universal_content_types 2025-11-18 02:17:08.063811+00
+142 system 0009_add_universal_content_type_prompts 2025-11-18 02:17:11.451329+00
+143 site_building 0002_sitebuilder_metadata 2025-11-18 12:50:27.398692+00
+144 billing 0002_rename_tenant_to_account 2025-11-18 16:26:54.50005+00
+145 site_building 0003_workflow_and_taxonomies 2025-11-19 18:06:10.767559+00
+146 planner 0008_stage1_site_builder_fields 2025-11-19 18:06:11.263809+00
+147 billing 0003_fix_tenant_id_column 2025-11-19 18:16:49.571217+00
+148 writer 0012_metadata_mapping_tables 2025-11-19 18:51:55.638469+00
+149 writer 0013_stage3_add_task_metadata 2025-11-19 18:51:55.980405+00
+150 ai 0001_initial 2025-11-20 23:27:48.958456+00
+151 ai 0002_initial 2025-11-20 23:27:49.10363+00
+156 igny8_core_auth 0002_add_wp_api_key_to_site 2025-11-21 13:14:43.738113+00
+157 writer 0002_phase1_add_unified_taxonomy_and_attributes 2025-11-21 17:48:22.52898+00
+159 writer 0004_phase2_migrate_data_to_unified_structure 2025-11-21 17:51:19.220451+00
+161 planner 0003_cleanup_remove_deprecated_fields 2025-11-22 01:06:01.010155+00
+163 planner 0004_remove_clusters_igny8_clust_context_0d6bd7_idx_and_more 2025-11-25 15:59:29.38966+00
+166 planner 0005_field_rename_implementation 2025-11-26 14:32:04.744265+00
+168 writer 0009_add_word_count_to_tasks 2025-11-26 18:02:21.528849+00
+169 writer 0010_add_review_status_to_content 2025-11-28 12:02:48.681415+00
+170 igny8_core_auth 0003_add_sync_event_model 2025-12-01 00:11:03.715876+00
+158 writer 0003_phase1b_fix_taxonomy_relation 2025-11-21 17:50:35.4765+00
+160 writer 0005_phase3_mark_deprecated_fields 2025-11-21 17:53:33.042513+00
+162 writer 0006_cleanup_migrate_and_drop_deprecated_fields 2025-11-22 01:06:47.999883+00
+164 writer 0007_alter_contenttaxonomyrelation_unique_together_and_more 2025-11-25 16:01:11.316312+00
+167 writer 0008_field_rename_implementation 2025-11-26 14:32:49.913755+00
+171 integration 0002_add_sync_event_model 2025-12-01 00:11:03.895127+00
+172 writer 0011_content_external_metadata_content_external_type_and_more 2025-12-01 09:28:53.615752+00
+173 publishing 0002_alter_publishingrecord_content_and_more 2025-12-01 09:28:53.622454+00
+174 planner 0006_unified_status_refactor 2025-12-03 05:11:27.426589+00
+319 planner 0009_clusterstrash_contentideastrash_keywordstrash 2026-01-12 13:36:48.394117+00
+176 automation 0001_initial 2025-12-03 09:11:03.931119+00
+177 automation 0002_add_delay_configuration 2025-12-03 15:54:07.033366+00
+178 planner 0007_fix_cluster_unique_constraint 2025-12-03 15:56:29.029634+00
+179 automation 0003_alter_automationconfig_options_and_more 2025-12-03 16:06:41.668232+00
+180 billing 0003_creditcostconfig 2025-12-04 14:39:27.417209+00
+181 automation 0004_add_pause_resume_cancel_fields 2025-12-04 15:34:12.972423+00
+182 igny8_core_auth 0004_add_invoice_payment_models 2025-12-04 23:39:46.192789+00
+183 billing 0004_add_invoice_payment_models 2025-12-04 23:40:02.357338+00
+184 billing 0005_credittransaction_reference_id_invoice_billing_email_and_more 2025-12-05 07:59:27.552446+00
+185 billing 0006_accountpaymentmethod 2025-12-05 17:21:26.040571+00
+186 igny8_core_auth 0005_account_owner_nullable 2025-12-06 15:46:52.223052+00
+187 igny8_core_auth 0006_soft_delete_and_retention 2025-12-06 16:13:40.758083+00
+188 planner 0008_soft_delete 2025-12-06 16:13:46.648385+00
+189 writer 0012_soft_delete 2025-12-06 16:13:52.437424+00
+321 writer 0017_contenttrash_imagestrash_taskstrash 2026-01-12 13:37:00.150284+00
+193 igny8_core_auth 0010_add_subscription_plan_field 2025-12-08 17:30:19.844276+00
+194 igny8_core_auth 0011_make_site_industry_required 2025-12-08 17:31:33.459791+00
+195 billing 0007_add_invoice_pdf_field 2025-12-08 17:32:31.955632+00
+196 igny8_core_auth 0012_remove_subscription_payment_method 2025-12-08 18:46:35.761156+00
+197 billing 0008_remove_invoice_billing_email_and_more 2025-12-08 18:47:20.641164+00
+198 igny8_core_auth 0013_alter_account_payment_method 2025-12-08 18:47:20.768929+00
+199 igny8_core_auth 0007_add_payment_method_fields 2025-12-08 19:52:21.40516+00
+200 igny8_core_auth 0008_add_plan_is_internal 2025-12-08 19:52:21.407607+00
+201 igny8_core_auth 0009_add_plan_annual_discount_and_featured 2025-12-08 19:52:21.408946+00
+202 igny8_core_auth 0010_add_subscription_plan_and_require_site_industry 2025-12-08 22:42:26.101366+00
+203 igny8_core_auth 0011_remove_subscription_payment_method 2025-12-08 22:52:24.062185+00
+204 billing 0007_simplify_payment_statuses 2025-12-09 02:12:04.200372+00
+205 billing 0008_add_invoice_subscription_fk 2025-12-09 03:15:18.460634+00
+206 billing 0009_add_missing_payment_methods 2025-12-09 03:15:18.528782+00
+207 billing 0010_add_database_constraints 2025-12-09 03:19:59.919946+00
+208 igny8_core_auth 0012_fix_subscription_constraints 2025-12-09 03:31:37.497955+00
+209 billing 0011_add_manual_reference_constraint 2025-12-09 03:32:08.8097+00
+210 billing 0012_add_payment_fk_to_credit_transaction 2025-12-09 04:41:42.626447+00
+211 billing 0013_add_webhook_config 2025-12-09 04:41:42.646671+00
+212 igny8_core_auth 0013_plan_max_clusters_plan_max_content_ideas_and_more 2025-12-12 11:26:44.807642+00
+213 billing 0015_planlimitusage 2025-12-12 11:29:33.495172+00
+214 igny8_core_auth 0014_add_usage_tracking_to_account 2025-12-12 12:24:54.089614+00
+215 igny8_core_auth 0015_add_plan_original_price 2025-12-13 19:13:44.147823+00
+216 igny8_core_auth 0016_alter_plan_annual_discount_percent 2025-12-13 20:32:10.121818+00
+217 admin_interface 0001_initial 2025-12-13 22:28:50.312571+00
+218 admin_interface 0002_add_related_modal 2025-12-13 22:28:50.337297+00
+219 admin_interface 0003_add_logo_color 2025-12-13 22:28:50.346828+00
+220 admin_interface 0004_rename_title_color 2025-12-13 22:28:50.352075+00
+221 admin_interface 0005_add_recent_actions_visible 2025-12-13 22:28:50.357458+00
+222 admin_interface 0006_bytes_to_str 2025-12-13 22:28:50.42594+00
+223 admin_interface 0007_add_favicon 2025-12-13 22:28:50.43222+00
+224 admin_interface 0008_change_related_modal_background_opacity_type 2025-12-13 22:28:50.441146+00
+225 admin_interface 0009_add_enviroment 2025-12-13 22:28:50.450692+00
+226 admin_interface 0010_add_localization 2025-12-13 22:28:50.469851+00
+227 admin_interface 0011_add_environment_options 2025-12-13 22:28:50.491189+00
+228 admin_interface 0012_update_verbose_names 2025-12-13 22:28:50.49849+00
+229 admin_interface 0013_add_related_modal_close_button 2025-12-13 22:28:50.503958+00
+230 admin_interface 0014_name_unique 2025-12-13 22:28:50.520289+00
+231 admin_interface 0015_add_language_chooser_active 2025-12-13 22:28:50.527837+00
+232 admin_interface 0016_add_language_chooser_display 2025-12-13 22:28:50.533454+00
+233 admin_interface 0017_change_list_filter_dropdown 2025-12-13 22:28:50.540629+00
+234 admin_interface 0018_theme_list_filter_sticky 2025-12-13 22:28:50.54652+00
+235 admin_interface 0019_add_form_sticky 2025-12-13 22:28:50.556926+00
+236 admin_interface 0020_module_selected_colors 2025-12-13 22:28:50.620976+00
+152 automation 0002_initial 2025-11-20 23:32:46.441853+00
+153 billing 0002_initial 2025-11-20 23:32:46.443407+00
+154 optimization 0002_initial 2025-11-20 23:32:46.444293+00
+155 planner 0002_initial 2025-11-20 23:32:46.444965+00
+247 billing 0016_remove_payment_payment_account_status_created_idx_and_more 2025-12-13 22:29:24.935683+00
+248 django_celery_results 0001_initial 2025-12-13 22:29:33.653439+00
+249 django_celery_results 0002_add_task_name_args_kwargs 2025-12-13 22:29:33.662917+00
+250 django_celery_results 0003_auto_20181106_1101 2025-12-13 22:29:33.666539+00
+251 django_celery_results 0004_auto_20190516_0412 2025-12-13 22:29:33.705701+00
+252 django_celery_results 0005_taskresult_worker 2025-12-13 22:29:33.714314+00
+253 django_celery_results 0006_taskresult_date_created 2025-12-13 22:29:33.76993+00
+254 django_celery_results 0007_remove_taskresult_hidden 2025-12-13 22:29:33.77358+00
+255 django_celery_results 0008_chordcounter 2025-12-13 22:29:33.785313+00
+256 django_celery_results 0009_groupresult 2025-12-13 22:29:33.875631+00
+257 django_celery_results 0010_remove_duplicate_indices 2025-12-13 22:29:33.884342+00
+258 django_celery_results 0011_taskresult_periodic_task_name 2025-12-13 22:29:33.888401+00
+259 igny8_core_auth 0017_add_history_tracking 2025-12-15 01:28:35.877567+00
+260 billing 0017_add_history_tracking 2025-12-15 01:28:36.01944+00
+261 igny8_core_auth 0018_add_country_remove_intent_seedkeyword 2025-12-17 06:04:50.196075+00
+262 billing 0018_remove_creditcostconfig_credits_cost_and_more 2025-12-19 18:20:33.624122+00
+263 billing 0019_populate_token_based_config 2025-12-19 18:29:25.528813+00
+264 system 0002_add_global_settings_models 2025-12-20 12:01:13.508264+00
+265 system 0003_fix_global_settings_architecture 2025-12-20 12:29:23.896838+00
+266 system 0004_fix_global_settings_remove_override 2025-12-20 12:30:05.656279+00
+267 system 0005_add_model_choices 2025-12-20 14:44:34.624631+00
+268 system 0006_fix_image_settings 2025-12-20 14:52:14.161556+00
+269 system 0007_add_image_defaults 2025-12-20 15:05:56.551097+00
+270 system 0008_add_default_image_service 2025-12-20 15:14:11.203911+00
+271 automation 0005_add_default_image_service 2025-12-20 15:14:14.348821+00
+272 system 0009_fix_variables_optional 2025-12-20 19:33:58.732893+00
+273 writer 0013_add_caption_to_images 2025-12-20 20:39:32.324767+00
+274 system 0010_globalmodulesettings_and_more 2025-12-20 21:12:21.132269+00
+275 billing 0020_add_flexible_credit_calculation 2025-12-23 23:28:55.853596+00
+276 billing 0020_create_ai_model_config 2025-12-24 01:21:08.41259+00
+277 billing 0021_alter_creditcostconfig_operation_type_and_more 2025-12-26 01:13:55.994352+00
+278 billing 0022_fix_historical_calculation_mode_null 2025-12-26 01:19:03.860687+00
+279 notifications 0001_initial 2025-12-27 22:02:47.496798+00
+280 automation 0006_automationrun_initial_snapshot 2025-12-28 01:55:43.723232+00
+281 system 0011_disable_phase2_modules 2025-12-31 20:53:07.787995+00
+282 system 0011_disable_phase2_modules 2025-12-31 20:53:07.803341+00
+283 system 0011_disable_phase2_modules 2025-12-31 20:53:07.905329+00
+284 system 0012_add_bria_integration 2025-12-31 20:53:08.030391+00
+285 system 0013_add_anthropic_integration 2025-12-31 20:53:08.350102+00
+286 writer 0014_add_approved_status 2026-01-01 06:14:00.641557+00
+287 integration 0003_add_publishing_settings 2026-01-01 06:37:17.521669+00
+288 writer 0015_add_publishing_scheduler_fields 2026-01-01 06:46:08.790896+00
+289 billing 0023_update_runware_models 2026-01-03 16:54:17.249717+00
+290 billing 0024_update_image_models_v2 2026-01-03 20:06:18.38822+00
+291 system 0014_update_runware_models 2026-01-03 20:06:18.493767+00
+292 writer 0016_images_unique_position_constraint 2026-01-03 20:06:18.559821+00
+293 billing 0025_add_aimodel_credit_fields 2026-01-04 06:12:05.589838+00
+294 billing 0026_populate_aimodel_credits 2026-01-04 06:12:05.66813+00
+295 system 0015_add_integration_provider 2026-01-04 06:13:54.934919+00
+296 system 0016_populate_integration_providers 2026-01-04 06:13:55.122638+00
+297 system 0017_create_ai_settings 2026-01-04 08:44:24.145423+00
+298 system 0018_create_ai_settings_table 2026-01-04 08:44:42.74007+00
+299 billing 0027_model_schema_update 2026-01-04 10:41:13.839823+00
+300 system 0019_model_schema_update 2026-01-04 10:41:54.693057+00
+301 igny8_core_auth 0019_simplify_credits_limits 2026-01-05 13:47:40.871839+00
+302 igny8_core_auth 0020_fix_historical_account 2026-01-06 00:11:25.299735+00
+303 billing 0028_cleanup_payment_method_config 2026-01-07 03:20:16.818048+00
+304 billing 0029_add_webhook_event_and_manual_reference_constraint 2026-01-07 12:27:55.723889+00
+305 system 0020_add_email_models 2026-01-08 01:23:38.883011+00
+306 system 0021_add_smtp_email_settings 2026-01-08 06:41:26.090528+00
+307 billing 0030_add_aimodel_image_sizes 2026-01-12 09:29:55.648039+00
+308 billing 0031_add_seedream_model 2026-01-12 09:31:14.19861+00
+309 billing 0032_historicalaimodelconfig_landscape_size_and_more 2026-01-12 09:31:14.331647+00
+310 billing 0033_add_site_to_credit_usage_log 2026-01-12 09:31:14.614781+00
+311 billing 0034_backfill_credit_usage_log_site 2026-01-12 09:31:14.70705+00
+312 plugins 0001_initial 2026-01-12 09:31:14.910404+00
+313 plugins 0002_allow_blank_autogenerated_fields 2026-01-12 09:31:14.925929+00
+314 plugins 0003_simplify_status_choices 2026-01-12 09:31:14.934086+00
+315 system 0022_systemaisettings_default_quality_tier_and_more 2026-01-12 09:31:14.999719+00
+316 system 0023_systemaisettings_max_allowed_images_and_more 2026-01-12 09:31:15.194094+00
+317 system 0024_alter_systemaisettings_default_quality_tier_and_more 2026-01-12 09:31:15.225286+00
+320 system 0025_delete_accountintegrationoverride 2026-01-12 13:36:57.756308+00
+322 planner 0010_add_taxonomy_soft_delete_and_keyword_fk_cascade 2026-01-12 16:50:13.669378+00
+323 writer 0018_add_taxonomy_soft_delete_and_keyword_fk_cascade 2026-01-12 16:50:14.131887+00
+324 plugins 0004_add_wordpress_plugin_data 2026-01-12 19:55:09.920129+00
+\.
+
+
+--
+-- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.django_session (session_key, session_data, expire_date) FROM stdin;
+2f90g621gtey3kg404164dg1dys3y5fe e30:1vVCDg:yZe-d4OHRyU2VBdUiyNRtgur4kM6HA234mYdRdZ5zCs 2025-12-15 18:18:48.901925+00
+mccipzroze47282c69uum3cr9cly1f5g .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSb2V:yO5VWo3QR7OTMFKDDQmk9fn-llAGeqe2ePJKqCSeV60 2025-12-09 13:12:31.365232+00
+tt2fopda9ofh82on0rbnqsswpmj730ia .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSbQo:ddtWqHHoAemagT6cCjzyoZKojCj960HIckHgsy7joK0 2025-12-09 13:37:38.97253+00
+z3ol66h6zqldwf233dhncqt8gatevhc9 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSc01:sEg1rsJrffLJYDoR4AbOpdIEq1Z8E99lOS-vbeWTOHQ 2025-12-09 14:14:01.401519+00
+evx22kocmni5t1a7odx9vb4c1pjxpjcx .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSc0X:9SlhShExjlrAaumYmqYg77V9KPGhNTLfOL9HcXXLAV8 2025-12-09 14:14:33.13882+00
+g31bkipqdyncxtx1obwnkvwgkaqvbmp2 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vScd8:BXlWQ_ajSQ4nVZ42m6ti6hbjLMg3_ESMTd6-LrZr5f0 2025-12-09 14:54:26.441513+00
+xgi76y5bwwjpez427r8jh5sa7loh8wp2 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSdcE:29TE5ChNq_HctR1r7AVKeScBEhWH86KTocLNCebOD0g 2025-12-09 15:57:34.826261+00
+dp6gup5uf9b20fpesi3ar2o6j3ujz9ju .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSddH:_PkIP8wi7UKweJnguYYhhQl9C0NwDuPoPQtupQHx03E 2025-12-09 15:58:39.714403+00
+tsyiikck7i16ayz18ukfmyfu1yqfh60y .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSe44:RXUfiBzpaKLXAkt2HW7aQ7CzHgIYUCpM8C8vfiYYHFE 2025-12-09 16:26:20.809986+00
+bvj175gpofvdyyloczwy0dexttpewrf5 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSeKc:N071Zq1X_2WF9dCLH_HqZpo_mqw4wklZEWwGiNG4Hzg 2025-12-09 16:43:26.178041+00
+hftevykmz8wunlbnfrw0ocfa2sntnbt9 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSerA:tnsMhsRunP9-_xUn3Na6jnZQyu8qniQ8g4yl6tO2leU 2025-12-09 17:17:04.402199+00
+sxpvo05ghn5tu6to8kwweinzt4ngytcd .eJxVjMsOwiAQRf-FtSEgjyku3fcbyDADUjU0Ke3K-O_apAvd3nPOfYmI21rj1vMSJxYX4Y04_Y4J6ZHbTviO7TZLmtu6TEnuijxol-PM-Xk93L-Dir1-a4RgTVCMTKxZI4WSOAWniTl7IG0MKOdMMWjLOQEMyikYLPlUALGI9wcrTjjH:1vSfbk:69fHQBGDyFYMYU6ri4b4xFrADL6dbci9pUwKEm2GRWk 2025-12-09 18:05:12.478625+00
+67gnjf8fz6e5bn90f513ziws1bjxr2dq .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSgqB:mex5v5AJw5rU-RGntKdwj7nVaiDy_aHVnMsZXjczW0s 2025-12-09 19:24:11.665552+00
+jq11l2z8vqnctg5p5elxe28po34aw0ky .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSgqb:5C-_Mj3S47M9hZ-vUUqJZNJoZPE0l5QPEJ9BDfKIZ70 2025-12-09 19:24:37.716435+00
+8u3pjut8h35ior7to8j2o22pzo6t28i0 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSgx0:ew_YEGivgEVGV-PTru3mT_lmEHEMqe58kVDu9AZUtiQ 2025-12-09 19:31:14.48181+00
+simtirmzslko4urry878lhlr1swb5ud3 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vShUU:b3ZUNF3Wu5cMyEqz3DFdL3MRNzfvz9vM3DCDuZsfv38 2025-12-09 20:05:50.730075+00
+jdgav9rv0hps8mfsfo5ce4y6c8a325hp .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vShUj:LNQcp8cD6Osw5hpe_Zr-By-RSb1v9MNhkRnFlZiPidQ 2025-12-09 20:06:05.207289+00
+xagxxpp6lmaawobc0isye3nzw7urd066 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSjl5:qtoHWy1lVGUFacvaQ_iVuNLysINtOJxu8DIrr4-mp0Q 2025-12-09 22:31:07.547829+00
+gp87565v2lp6ty5rhdwrijs0582mk8j9 .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSkne:R4VeDE6qRnFtEDOAAZ-ADwcHnm4Vo_ioSQvbKI2rJeo 2025-12-09 23:37:50.45356+00
+4yiugp4jf3df6sbyq9j0q7vcbho0nwij .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSm3h:i6FfJyqBYvsiETvOS4ffGiT6uhdUwwKF8nNO1JmRrME 2025-12-10 00:58:29.045955+00
+f5j12cjsdj460ez6yi3glqbuue19v5la .eJxVjEEOwiAQRe_C2hAoMA4u3fcMBJipVA0kpV0Z765NutDtf-_9lwhxW0vYOi9hJnER1ojT75hifnDdCd1jvTWZW12XOcldkQftcmzEz-vh_h2U2Mu3Zk6QIEdWyjidkIAwn8mgZ8t2mpwdnGcDjiKiAZ-NRlB5ALaKUCvx_gAgsTfo:1vSm46:o0t1Sjb5Kkh70f0vNfNRH12zmnv2elQz0a9AZ732WQ4 2025-12-10 00:58:54.978709+00
+0k6iq7hcln3rttm6np2rdl1e9xfltuyz .eJxVjEEOwiAQRe_C2hCgDFCX7nsGwjBTqRqalHZlvLtt0oVu33v_v0VM21ri1niJE4mr0DqIyy_FlJ9cD0WPVO-zzHNdlwnlkcjTNjnMxK_b2f4dlNTKvnbWWcSgwSnsiZTCbiQLO1ZguFdsgjcGNeRsQmcpwagdA3vN5C0m8fkCDuo30A:1vSmd6:hHFQIrtiAZy4ZJgjdU7fMW3olLjzoiJ4A0VkN27XUTk 2025-12-10 01:35:04.01823+00
+qhwo25ygkx2xsq7fbgo5g4rc0rz9sdwl .eJxVjEEOwiAQRe_C2hCgDFCX7nsGwjBTqRqalHZlvLtt0oVu33v_v0VM21ri1niJE4mr0DqIyy_FlJ9cD0WPVO-zzHNdlwnlkcjTNjnMxK_b2f4dlNTKvnbWWcSgwSnsiZTCbiQLO1ZguFdsgjcGNeRsQmcpwagdA3vN5C0m8fkCDuo30A:1vSmth:tXJEvlAY9_1TtCAwUkHJd6_GIaUC7kvjl3tOOxpW0i8 2025-12-10 01:52:13.762325+00
+c2s29ne0wlls97h00fod4nsr3trk2t87 .eJxVjMsOwiAQRf-FtSE8R3Dpvt9AhgGkaiAp7cr479qkC93ec859sYDbWsM28hLmxC5MSs9Ov2tEeuS2o3THduuceluXOfJd4QcdfOopP6-H-3dQcdRvDdolXSwUmaVTBDKisaQFFS0ygkavKAqHBPFsJAEUZckSCa9BFGfY-wMulzgt:1vSn4P:ZTy4Nq8nsV58UYB9MtY5_qAJOMEoBtfWWskYiZU9o7o 2025-12-10 02:03:17.558165+00
+ycor0h83jkrdz8ou4mcm5p8qyg5nu37o .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSnDb:XF_UIFzGYmIuEwzGVbhuGVr0k-NluRtQfSdbKLg54SM 2025-12-10 02:12:47.269509+00
+dk42bkvghdmmy35vhary2o8zs9w43210 .eJxVjMsOwiAQRf-FtSE8R3Dpvt9AhgGkaiAp7cr479qkC93ec859sYDbWsM28hLmxC5MSs9Ov2tEeuS2o3THduuceluXOfJd4QcdfOopP6-H-3dQcdRvDdolXSwUmaVTBDKisaQFFS0ygkavKAqHBPFsJAEUZckSCa9BFGfY-wMulzgt:1vSnKf:E97dSxV1HRVo9qs59UnaRstWi5SqgRlOvCDcqJbciis 2025-12-10 02:20:05.24838+00
+w8sttzc0p4pekwscnp2ng0nlvoycglij .eJxVjMsOwiAQRf-FtSE8R3Dpvt9AhgGkaiAp7cr479qkC93ec859sYDbWsM28hLmxC5MSs9Ov2tEeuS2o3THduuceluXOfJd4QcdfOopP6-H-3dQcdRvDdolXSwUmaVTBDKisaQFFS0ygkavKAqHBPFsJAEUZckSCa9BFGfY-wMulzgt:1vSnam:7_ScmFKN76oNnv-FDfAeGRVeyLXBhvyZETHXF4GJnaM 2025-12-10 02:36:44.318117+00
+8zz9487tlnyode5gvnv1r1lec5r5dzsa .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTFnA:UpTaWKtzin7MBGbfw-OabVY4CBtHin_-3xtV0S5RMHo 2025-12-11 08:43:24.777299+00
+2lz99muue0j7l1f5oayjhsdtcsl8sti3 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSota:Swby-9lMULCQt9TW8ztLlfsCKHzakCnRnpN64dCcZlE 2025-12-10 04:00:14.522036+00
+uzgx6bg8y327cu43zpsnyn66zbxwzy6p .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTHNW:f87n0B_gFRrLac560vMZkxzeT4FDqypUmGjXmSXuFJY 2025-12-11 10:25:02.817202+00
+3mxd3yjod1fiqo0b9cs7dpz6wtgeidf3 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSpcZ:3JZNehcwNInFtMMFMRb7IpUxK0kQ41MSCVJotIKlqj8 2025-12-10 04:46:43.455392+00
+pdb0r2zjo0zcs0hdby1nupx5hrone6mn .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTHsh:TwjrtnZulLfRjZuHA9JbEJQVarr7dCRQT2-MMSY8Dzw 2025-12-11 10:57:15.33457+00
+1f141xerkuh0buo2ck5nvxi3m88t2m7c .eJxVjEEOgjAQRe_StWlK6xTHpXvOQGbaGUFNSSisjHcXEha6_e-9_zY9rcvQr1XmfszmahrvzOl3ZUpPKTvKDyr3yaapLPPIdlfsQavtpiyv2-H-HQxUh61mCuLapMHFNgaPIkrASsgRPKKgJuaLJt-iO4NCEwE2GmIQDNo48_kCRCQ4fg:1vSpwx:Xy6WeqokklS6zQ8t4GNNg1dus7hTyWfAC_A93FLJA1A 2025-12-10 05:07:47.164339+00
+4hnfcrb1xxenenkiuflhznatuqudxw70 e30:1vVCHu:UvMOz6-KPUykTO-YXyjEWcan3gqLmdYJCjUHr3wL2xg 2025-12-15 18:23:10.102358+00
+yhydeydmmim26og8xttn8qxwun6anvy0 .eJxVjEEOgjAQRe_StWlK6xTHpXvOQGbaGUFNSSisjHcXEha6_e-9_zY9rcvQr1XmfszmahrvzOl3ZUpPKTvKDyr3yaapLPPIdlfsQavtpiyv2-H-HQxUh61mCuLapMHFNgaPIkrASsgRPKKgJuaLJt-iO4NCEwE2GmIQDNo48_kCRCQ4fg:1vSqB7:WkXoOrHGK2CK9r9o7e3uLdQKhnmcPYzfTRbAKB59wrM 2025-12-10 05:22:25.488004+00
+wo06i7otd12g8qzkb2d166xc367e0i7s .eJxVjDkOwjAUBe_iGln2t-WFkp4zWH-xSQAlUpxUiLtDpBTQvpl5L1VwW4ey9bqUUdRZWWfU6Xcl5EeddiR3nG6z5nlal5H0ruiDdn2dpT4vh_t3MGAfvjVH7yW7ljEBmGDBJSIkIUnZmhAZvAeG7EOVgETCMdUWExNUbs6p9wco-TjI:1vSqmD:pG78HmqiopkYaRug9xEHJlgfgZHAg1LSuhGf5s6wumw 2025-12-10 06:00:45.936926+00
+oo5ywn468k9sckezv3plq7lt2p3iqibq .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSr5v:ExlD8RpapmbY7VopfffyIfZ1lkzQwuaqU7ZxoPtWY7U 2025-12-10 06:21:07.974495+00
+0zk0im9k8dtgm5yhpf14pj8bn00xa1yg .eJxVjDsOwjAQBe_iGln-RjYlPWew1rtrHEC2FCcV4u4QKQW0b2beSyTY1pq2wUuaSZyF1kGcftcM-OC2I7pDu3WJva3LnOWuyIMOee3Ez8vh_h1UGPVbRzSuKBcJWAcIruiYmRiNIbJaO4U-ZHRsi_VsHDMEPwFkjJayVZN4fwBKDzkd:1vSr6Y:-XlaVuaHzIITseB3-P8u-An7l8E4BG30k-rW6mByPzc 2025-12-10 06:21:46.453381+00
+coxruusafv4twltlyl4lrgz387u9g250 .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSwU9:fQbGZzIrp_qVZPe-blOSH3YkpePfFGTHUwxXS21yl0c 2025-12-10 12:06:29.296592+00
+v0sndxexz0sd08gnzn9uc19rvn4q6m9q .eJxVjMsOwiAQRf-FtSGV8hhcuu83kGEGpGogKe3K-O_apAvd3nPOfYmA21rC1tMSZhYXMYrT7xaRHqnugO9Yb01Sq-syR7kr8qBdTo3T83q4fwcFe_nWCNqhswDozWBzNGZMekRF2sSc7UDMWekzsFcONLJnpkwalcpAYKJ4fwDmojh3:1vSy4m:QiMwhQlZTjXtQkqRnptFLre3Wq1TCK-Wx5WLS_t3aPM 2025-12-10 13:48:24.257504+00
+gi2fmgeecdug10f9cvvljdoc2ljt0931 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vSygj:hQfRpDWdJVzfpRHMUOD4KYfOGiORUnnJM_3IcZlGsoc 2025-12-10 14:27:37.238745+00
+7n76u6oc4r0sgqa09jxhh5ew1uf5ellx .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTEfH:fF_IiVJgSU2qaC0ewgEArhjt6WzU1RGW7f2XV4cXySE 2025-12-11 07:31:11.796584+00
+i2x08rtqtjkvfshtwuukuf5jmocjr1ta .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTEwS:HUtYba8xuihcexu7yOKX4OSioaYO4PuQNZ4OLzE43BA 2025-12-11 07:48:56.298274+00
+4t0rh5b84w2t5vk4ghkazilzwlljr35r .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTEy3:SECSPcFj4gmHvCqmX1D4ypGjuMz3mJmdT5Pd1YEQ_ZE 2025-12-11 07:50:35.774812+00
+vlro8r4lhtwo7za9fngnuj2h2gz7tidl .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTFNG:qNa8-zMxDBVqYJUAiQLTG3EOplFgT57B_4V0R-orTJo 2025-12-11 08:16:38.699079+00
+t8newo87a8l32avwt2sjcxxpou6hj2fr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTFkM:KXz3WNFwND2tpbGjINtUYDAujNcAvIYsQvfRqWX5r6w 2025-12-11 08:40:30.222146+00
+oh0y0yadn1jg3f82xssqjd77u4yggnin .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTGsO:YPpQG-Xey1-SBaldAU0FkBiq2n6-G3uJ7bi9XAAk7rE 2025-12-11 09:52:52.792827+00
+yxq21lwlv4xe7cij1nrwj4k8gn0g6ut7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTH7D:s9Zq1wh0iQ81gd4KgQRgKH0_gJg753HICiGrEg1tsE0 2025-12-11 10:08:11.315399+00
+iv33o472zazvrr7lnf8o7drurc1ka0sv .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTGDz:U-_GeypxRUJP4MgRPlvjgIHEZqnjPAi583WILXZXUCg 2025-12-11 09:11:07.679137+00
+b5g5p45c0p4xdaczyuz37v6otekgy2a9 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTFz6:pqEE_wkXBxAzC2BEX8HfAJKZlhMGxDpiOBuVNEXbrjI 2025-12-11 08:55:44.45764+00
+5juzy8asq1oasudm56utjst929den3qb .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTGUL:KhAJCycr1Pm7VXv5vJXsQ8SvaYuzxZ6re3VxNq16U58 2025-12-11 09:28:01.588994+00
+4a12n6ts5cnk44y4gbf0dm52bza4cfpl .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTGY4:kD37t90n1yU2ufk3Ozo42zoGekC-FJN-4780qfVi1YM 2025-12-11 09:31:52.934312+00
+fd3lzavebl74mvvhodatx16n113eesml .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTHEK:adbwkzxpgN9oslNTJhyqcTDMIjK8knWIlY13ZjSl2J0 2025-12-11 10:15:32.520125+00
+wc5se3nctpzzkcne46c74t1kfa705fkk .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTISK:CRWpjA7tcjmptlHfDXSMGh35GXDKrJ0-JEAYortYTyQ 2025-12-11 11:34:04.880641+00
+kygx2aleu2zkk333oyb47eqcp58mjm5j .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTImF:Jyr6hz8Y62obB0bjsi6b0MHGs28KbprQSFVD06vfqlk 2025-12-11 11:54:39.722489+00
+qqssjqxt6gds362xpznt8wwpu2msytjz .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTLNs:PsS9xrfPDpaw5W6Dnl5guzVMVf4h7ukFQ-GTVZHuvdE 2025-12-11 14:41:40.879294+00
+lim64gw6qdnu9tq2q3uvbimuy38u33xr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTM2R:9tTOIN5SWE1Vc8no_W4FCuGMsLqDrJHDQYim_0qfFbo 2025-12-11 15:23:35.357382+00
+0mpfiuaobkd6bj1oo5ny603ygq9rmscj .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTMLK:XQBDMB736yKZ6CEpyLkqz8YYzU1EHsG_RYQLbMFCN6s 2025-12-11 15:43:06.033856+00
+gphdb95g7ht8wa7afzzloce86hxgmo68 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTMTc:UKtohytU17-W6jLKdio9XVi6vXgMf7_FWkiYc6iOUC0 2025-12-11 15:51:40.816446+00
+wuh9twgn0ugi9gux658tsbtln6ai19n1 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTNF9:yUoDFkKWz8_aRw6WFKRmPHUmfq6otZK3UOF53s1edII 2025-12-11 16:40:47.549205+00
+7jpvn4yjqcqzw1ygh4gb22gbnm6nj6s0 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTKt9:E2-fNfymFNFqln_TW4h8jzlzcqwhxda4aXTyKJUNAZA 2025-12-11 14:09:55.082455+00
+pz3rhc35rtwbqgzymbxbeziodkmy2n6x .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTK1b:vpu_MjAOh7jFa2Go1gsP5SR6InfYiLoCx_-p8LWmPd0 2025-12-11 13:14:35.914418+00
+j6yb2s9vg2aq6m5xfzl2m2anvnegkyo8 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTHd8:nc5vpk07x0W71Lg_RHhKM8OHDMF80DOc0UlXJSnVnrw 2025-12-11 10:41:10.074853+00
+7fnjfacuyl845mibkxxppzass59xdp2h .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTHyy:H4ZkRCXL6yh3q84Qr-11HyrIbg0LuX4QG_BKUXfeieE 2025-12-11 11:03:44.109006+00
+ufvpfhabz4g80bw29uyqa54va0km4470 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTIdw:doovLWFud6NOS_qbGRTnBCHMWT_5adCN26qozPBlh0k 2025-12-11 11:46:04.264371+00
+5v34hgjkh0sruhsckwu0xehj8ei18e3j .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTImm:34VD1DwacNFaQPw9o_xW2PehEaUKM-5houRS29K8-kE 2025-12-11 11:55:12.472683+00
+ald6ps7cdefsk6ta4wq9tob2gv9i2wp9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTI7Y:htLn1-CMz2siowRmcbSXulL1niWRPXlqA5047Xr--xk 2025-12-11 11:12:36.087536+00
+3a2rp26qie9wvkww8iyqyib4t0y8w2is .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTII4:uFQYVzM9MXmtmpHq8xBbQjAsr4xAPhpEQzhTMOn0CtQ 2025-12-11 11:23:28.773352+00
+dbe2k7eh8nzoeupypqefrdg6l48lzcm9 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTJmk:4N3iF7REL_hN-hU3KOdODMfG6rlVU2z2vukOuiSP1bM 2025-12-11 12:59:14.924657+00
+sx40zey79z75f7ainrw14ivajfzbccom .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTKWF:rdNFAW3qinmM3vSrH5DUgQbkv8NfiEGACL5-tbiHNa8 2025-12-11 13:46:15.452055+00
+ivmxyjj0qokvndtx0bw23ku3ypdmj6os .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTIIR:SFsQGfrY2wYeTSjBAMC78TnIM85AvcBXHn-jA-0y2HE 2025-12-11 11:23:51.832015+00
+hm6y3w70wd0p0vwrn03165kgkeaz9jfe .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTL8o:ZFJwy3mGKIxsVRMN0ja20PzAx_sW6fhOZiC2621cbDI 2025-12-11 14:26:06.009337+00
+k33azhkidn8ion4gnfe86m41uds7elvk .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTIhl:GHwzapI9d2sVwry6x8qduah__Qu48fvj55km-b-vQ84 2025-12-11 11:50:01.746145+00
+meu6ppbibuhydv8ksz5uyy00sxvp4t70 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTJPl:66tDoyOaja77GbtW9590oTP-DKkDM0CklCoEFBIAcwE 2025-12-11 12:35:29.7683+00
+zipo1klm2zuvtqvow1qmr5yxglu8qen8 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTJ2O:9lBMJOvAOLsvTILbBr-106Jeyg1dWeOk3rZATh1Nm-I 2025-12-11 12:11:20.071158+00
+jw0oaoqwe926ewh4ai298sa75fbskc6c .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTJ2u:Z9tsF3ghbZ1OGXqOp-exIPGW524lieOl5UFJMyItDzk 2025-12-11 12:11:52.169462+00
+bk6baemlhh5epn4xlyeou03cop4uxopp .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTUYT:hKU2G1fmaTFEXYbGjAaBASewlFjm6kHDokpwBaDkuPY 2025-12-12 00:29:13.706524+00
+3592wdbj6bgzj5zroh2q4fu2zuh5l2sn .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU1Vu:fQRiJfUpwIdPmjpc18ld3oPETz6PKKHco_hN-diaxPY 2025-12-13 11:40:46.101004+00
+wjcm9vp44zuzimnbz9hgfqn29ip18iu3 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU3Oi:v7Vu6s4d4HcIz0pXdDZEKhBST94ypWmg1PypcstXRfU 2025-12-13 13:41:28.342869+00
+4dbkhxxcxndagblr0l866qe3f5n5pcpb .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU40x:hiMzZDiEdXchYHXT73QA2yhz6qhVfNEO8FOhuFUFEGs 2025-12-13 14:20:59.692004+00
+8i4g5ksnaqsqwds47vp8jeseriuudljl .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTevB:NU_OzQ5HkVfGJKTPGOdJyXZazWgJmjYIBOtjpOupcF4 2025-12-12 11:33:21.232412+00
+neadmrakj5y7od79l9wdf478b2qbwse6 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU4IX:xu7RuC41SDIifkfzDdPgbflI94Z1J7UuRWWown5CqMA 2025-12-13 14:39:09.577049+00
+yiyojjf3ixs7kc48sdhbjx7h3lf68eet .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU3dv:l3czK3lW38weVOg1JCFWmUFAl3nRa1cU6GPyU4XPG4Y 2025-12-13 13:57:11.443626+00
+nm07y218wehor91lfbsp8nmn8ouu7s84 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTYFc:C2vKG_Nx1EcgQuiDk3x-fGAQFUu195GH0hsYPtbs__o 2025-12-12 04:26:00.77321+00
+2q6da0acoi8zodycyx9p9j4jtwffymtk .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU2M5:lidxtI4rFZkuawF-oIvds4mijx4erKBDWiFS-DGOGx0 2025-12-13 12:34:41.235342+00
+x6tm0xpch9cjz16uyxwibcjd90v0scs6 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTScH:SMpeydlNkIMemKyuof8o8jqDej23SYh73OTfp112994 2025-12-11 22:25:01.819122+00
+9g5redtq3thlzwugaku3r3ygjvw4t6u1 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTScf:OFOwGCvnApZSrcANH2Lmj72n6VD9Kkf-OhwAcJbkA9E 2025-12-11 22:25:25.820916+00
+7ozpbl09lmgifn17si0g5oqfcqnxxoka .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU3qd:bmY51tMgCwEqeqsQQHmRaQ8DXmEBQb0v-1nIholPSxo 2025-12-13 14:10:19.166508+00
+bbie45qlr8srb4yxi6lcz0j6njrsqq2w .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTziD:HpVXFfQBEfCq2kGtdIygDOS3-3khbPDajhk_AdKLLr4 2025-12-13 09:45:21.344452+00
+t2i3tsrk40feaytuivlg741h2fdwluln .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTMPp:32jiS5yjpq7kMV1o7JSocxgUw7QCS4CwFQwBDaaL9A4 2025-12-11 15:47:45.099043+00
+ri8vxoduzh6p0ycdh32yry4ek2jw561w .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTfTB:fko7lUO3yZw7UGJ9fonUmoXJ54BGyaoVPHsFZTQkBG4 2025-12-12 12:08:29.032455+00
+xl14534rbp1wxytleribe7socblf8cjj .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTYGG:p6Fy_QuP31QzKijUcBvDE0FBlil-2dnByk4413tbdzk 2025-12-12 04:26:40.308309+00
+5nl4aeqgheq2tl0x87hxc6j2tj7050mv .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTPwH:ZOUD5Z7LaiScOPzuvVz1T9SKGKsWldhfoZ0EGGxUvAA 2025-12-11 19:33:29.904442+00
+87cbbu8efo4xg5kw894fiaj7o7dk8r2r .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU3gf:wivAuLtczEfFT1A4HhaXhUKXuboyZ31DLRtpXxW-2vI 2025-12-13 14:00:01.948268+00
+cxv621v9hjgv9uzp45ftgevwdufaudri .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTSu5:no1p7lgwBUD_V4VwYMVDrQG5nBz6hXajSpNIo67y5so 2025-12-11 22:43:25.679648+00
+zfi0nbjbsssb6kyaxm1bw3a6wkkyorb0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTOX2:A7zYJFp_717DUGIcFajiCbGtqM-lWZPFN48MbsGOWMY 2025-12-11 18:03:20.612573+00
+7b6zhuqh9nc32xb8rmfe03fx7te430lv .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU2iA:7ANY8t8kTe5dsJeFihKaoKnF1YjCi5EmopLrCgdD9U0 2025-12-13 12:57:30.032192+00
+kpwzr361vgwtvql1wlaq4442qslqv59f .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vTw0q:OxMuAI7Pz3JbLatJo_9k20JLMWLI4QoPcIvVs8O3a2E 2025-12-13 05:48:20.646574+00
+r04gurcdklenniesxgc5urkukhqdm5eg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vU1U1:SgNi9hm8zDtmQTXQTyadBAr4vIBv7iQM43qmAYo5i5U 2025-12-13 11:38:49.942969+00
+rf05n6u8v9k326dv77zqm23b7ld08lcs .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vTYV3:aV7I0-U6F9gN4aIp2A6YCPaPk2hibCT7d4ygcIUvgN8 2025-12-12 04:41:57.741044+00
+91uf3vwrntuzdg2c4nbiyjyuezqogtz9 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU1sb:QGX_geug__ysmiWS3YxiVnwusRhF5Y4pl1hE6erUSrs 2025-12-13 12:04:13.46375+00
+t77h8o943dbpklt6zj1llznz0malwigr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU82l:7kdlTtgju3YrODr_EauBlkwGLPK9c_c6SHatRhNM2gU 2025-12-13 18:39:07.901945+00
+ik7n48h95jcxqwkzu5qgbgk4zy5kxjc1 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUPp6:FAW4zOYVIU6RDH27jxV4FVtClQpNgx6Ks3i1OPSMSxY 2025-12-14 13:38:12.742634+00
+s3016px0bgh0ei4f2yzrhdyz23p21kle .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUQR4:j6YWQq5YtReF6tsBLGDa7bdWJwgbJRdJolxLZsgNfu4 2025-12-14 14:17:26.445262+00
+bsj3z0cw2t1z0d3am9avcq6p2oaak7y1 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUQy2:4duqudtXVY7ia-mPIPpfhcP3B81UF6Bdg4KWlsFIJy8 2025-12-14 14:51:30.235493+00
+fir8neea730o73lvxlmq91jwhqpw8p01 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU8Ni:H1iVFhtJ_CqCWW7b3AVdCVCq4Jwot1sETltUseOf48U 2025-12-13 19:00:46.510398+00
+bg2tfqt9hha8c359yu6bvr7q86m8qp08 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU9by:2LxcvjaNzojWdm36gmi4xnR6_rbAVY4KExXWLyb9Da0 2025-12-13 20:19:34.793029+00
+49k0ofzbtbwvdm4xa7bt98msmax77lcq .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU5Ae:Q3a3pA0lZ_DrEbnUCfiaVhlKlFL7-5cjDeK7S4mDEIY 2025-12-13 15:35:04.753916+00
+y6z907ebahp0lcvetgpybinjtlfkagmf .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUPEs:b71O6JuhKBgCYR1WtDDktdml8EiT7J2gn8_oluqig2k 2025-12-14 13:00:46.923843+00
+yvsnob3bdcetl1jiq12dufje8709qeq6 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU8Ix:8e4LoBTQZ7eCWElFRTTcNdFD8DxMn1OmB9JNcMo5Cmw 2025-12-13 18:55:51.790717+00
+mabrhe32rb6g7fvqr9ug8c20ubxl2vb2 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUAAQ:72suhdvBNJ8tX3XFAD0twdFi-Bk-FbnXltGnugzuwTs 2025-12-13 20:55:10.114511+00
+m2fmkh18h6yzqk2iixu6bduf6oddblzz .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU8h8:ZOjN6mnEki75U9IX_VNVazHUpZYHup_alzDTVwgc-9I 2025-12-13 19:20:50.917327+00
+rtrazx76zquuwirp8t98uqyuyq6ylrkg .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU7Pn:0msULi4b8IkatqeD3hZS-rZWU0yerEsVQ0rToBiEad8 2025-12-13 17:58:51.014896+00
+5jfvuyygbbp1zd1bnm57l0lj138xepud .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU4U3:sAaVAkxCkMxQyOKZ2WeFeqcvi9VPTLjIsRciZhPPcEc 2025-12-13 14:51:03.810216+00
+i9b4qkpd5jnehwdscgg17jc80e5w6kz5 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUACA:AYCmXF-SYq4tM6gaS35iIfXPwl0jPoPpavhQQ__U2Zk 2025-12-13 20:56:58.700623+00
+s1gr11g15ybszzxelthesylkokb7xnjp .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUACZ:JaVdIcvWZqn0dvOxhyJnpdUVw7_QK_feejfGX5pttII 2025-12-13 20:57:23.795957+00
+lo66xobfu8y2vsm8o5ldo1gbzy0qxlpr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUAQt:sLT5kusIl7qrnxryeJOcqukD6xeuFLni2d1YaVfyqxY 2025-12-13 21:12:11.378596+00
+z707tuunejfee3hjkjoxkojf57iqpmcd .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUAgR:XJTjxd8FvItuZOUgBE70yaDw2ducBth5Yt28B2dw19w 2025-12-13 21:28:15.632118+00
+qt8hasim763qr6q1uf18f4jnokfftoq4 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUAgd:fh478e9AX5BA9j9ekufEPxhHw8JQDxP5SUTOuR8Q7h4 2025-12-13 21:28:27.8657+00
+1lux11q18wid36tn4m2slpsdhtrlgoje .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUAj7:uooOaDyN4EIXUPZOxDH6_i6thpRAxH8IKGpTLQTYNDs 2025-12-13 21:31:01.719372+00
+2bdkt5lmvsi6oeclzxniad763ywqrkee .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUKCa:TbVQ8iLJrxW-coDSqLpNkFpUt9W5zMBmJIc1Bqoojvc 2025-12-14 07:38:04.782993+00
+b23sos6robl2ebhbj458dcen6mkhifip .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUNkG:9MlYOzyx2fr5FploFNLxFbMACjRcPhgNsQg0APxOsHI 2025-12-14 11:25:04.07601+00
+o0fgi7s52oh48ui61y980tdfaabnelhe .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU4s9:UIkx07t_yjU6y8sWSt4QfyiVFNRurpxQvDl4UCEVxP4 2025-12-13 15:15:57.492473+00
+rvq51l8i14ryjs3lc8qi7ac2ydq7urqb .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUOgl:WTzUitQo94PDxbOT0kE2cVMZvTqBez9Rpd8a8fRzewE 2025-12-14 12:25:31.01831+00
+ytloyo9dmek7rya1c45vgecyinjv5fua .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU9vf:YHRZD0BR_tzjPnhksrDxPyNQxjQRkPVXpILmVzHapMg 2025-12-13 20:39:55.812657+00
+xi208gavhv4fau70hiwbjarxjxa92nhj .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vU4FQ:ADY_jb649CfbdkeScVAZ2PaQ8UWB4dt-IYjskmkxRqw 2025-12-13 14:35:56.718281+00
+vn0xzraopoa8l7zcwnj82933j5m56yc7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvBS:qntX3qvgI2dyrR4Iag9v9aACGVDkmV9PzlAENIXp7jw 2025-12-15 23:07:22.949888+00
+oeoe1unlsjvpamas3w6sobi8qn5f1j1b .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUT30:cXEoJDODQvbIQaLJ8KzORkkD-TP-7i3QtLoUIRsEJDs 2025-12-14 17:04:46.704895+00
+je0qo6ek18xwgcn6zwtewc8k5acbyg66 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUn1B:TdrkafPpoKcf9Mpiz5u3lXNpyfSpVISQf5OWflDyCiY 2025-12-15 14:24:13.312805+00
+4i003lgwfe71dqvplyaqsom6gtm417vb .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUspR:qja0p0Qme0Aegn1G4eupEs4JdwbiIFSCvWyk21N5f-E 2025-12-15 20:36:29.651834+00
+mu3u07ta4clweozdi8ivtdac02omduhc .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUWr6:acH0yvOdQnzWb7AX2FjEEltprrRGqaDy5A8vlQyP0aY 2025-12-14 21:08:44.535284+00
+aw497b63dok3t7fsihx4l6e65u2aoaw3 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUtGd:Th3QtsPXDq4q4Md1RZ5leDJsRMzRm9rGX9mdHjT3Zgw 2025-12-15 21:04:35.629234+00
+7c4488z1z2f1spjl2tsuc6zbt1ydy6g8 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUtL3:kXYfxTAB8rHPnZ7PS7Dw8nBEfNFK-zlcknjACl3szGs 2025-12-15 21:09:09.809326+00
+oyhzbz0xm3mz3fke2e8hvvu1j8h8g651 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUPw2:ZsLD-cfs0BFqsKyJ2V2V69mW6WGntjrF-T4Fv7_v_0I 2025-12-14 13:45:22.379944+00
+4k9sli7lzbp92ctq6ufex75us0thph2w .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUtM5:3HZTCSFm-uuAFkPQF8jV0pAPxYDuENiYIu-_zOu0_Lw 2025-12-15 21:10:13.898697+00
+7kx5noib6822mb7f7lza7yuoq3gozkxr .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUQzG:YE-OQFN-jie31WTDHYJi-Bx0OvlPwotdzPwuWRgVnRM 2025-12-14 14:52:46.47578+00
+vzz8mu5bdzj7myjhnighhwsnus597zis .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUtRQ:n2B9jMhI2epTZTq4c_VGTqGuubiEtDBWyxOrxpwARqE 2025-12-15 21:15:44.55408+00
+s0q32h02u78csw165kbkp9vv83uz9x1w .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUtSq:tHe8OvrbxzKkYj0wiG_H1jBOuZijEv0j4sGoCVrqz8s 2025-12-15 21:17:12.630769+00
+tclqm00e12osixzwkmb6pg9fp8s46yen .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUnEZ:FYSu2MQYRpPUj5FwiaUq7KG_BlLYT-Y3GGiePxPGNlM 2025-12-15 14:38:03.194645+00
+xtsc13ssbbkgqlbshh20e4lgz7sediez .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUnJq:CXni_keYBTSAgwCk2n2A0JUFzHlgy7uhwF3ICwDu9vo 2025-12-15 14:43:30.410488+00
+ohdfyxwfremw6c5ic9ackq4jq2tc7d8l .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUnLc:pct-1kn8p_4tuEG3GXx2l3EmEvz_gY8T3pONIcVKiwM 2025-12-15 14:45:20.706792+00
+c109wx1tq57zihisamoz0dl94cygsvqz .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUod4:tBgZU59ZpKeueaz2lKDOH3OGICw4rO6oM6c-A-kY80A 2025-12-15 16:07:26.013879+00
+s6mhw7ysk3h5ouadtxp250hnla1crxpj .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUTyE:0Qu9sDjEdQ3a5FLkJ9YV0xwCjcf66SSVZwYJhueY2VM 2025-12-14 18:03:54.580606+00
+7xzkrxo3slphk4jpil01nh2t6azlyot9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUW1a:3u0MD3f8GagQXk8fyi_d3IInkDsae5VLaRcoWuubTpY 2025-12-14 20:15:30.326915+00
+pf3kerdkkw2rmjsi8f78zfsdew6yjp7d .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUVPm:o2cOKgYTQwt18TaGJUhGUvIiMDtkIHzzxdhfRVMEL9g 2025-12-14 19:36:26.572222+00
+fn4llrgs0g55ii8pz641clw994hm1lcs .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUphP:vDNV1pMkgc44MMU4irrmDiSHMAfNVm-2xV6Xicelxvc 2025-12-15 17:15:59.997523+00
+15ahklboqqofb6xho9ri4eauf6vtk129 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUqq6:-E2yUJ_OUEXyrmMkQpxMKNATtfeuhqIsR_ue79mhaAc 2025-12-15 18:29:02.376323+00
+mkwrkew95yywffc995cur078paya7gqw .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUqui:9zHH46ZgX2_1njTHACa0JFwVL6rALcyN63rAwfq0M8k 2025-12-15 18:33:48.51038+00
+vp7m2q0zev4a1lyl3l6p5idnerx0j8tc .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUUJL:TL19CLVJzcIoYJJD2IXDiqCB-DLYfIu-DgPTxqlJh_0 2025-12-14 18:25:43.475137+00
+lj9fogbgjno8y4o6ruowefua9ld6s9sq .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUX1u:eqXWzATp6EztxO1MAjywOkisrxRWdy1Dsp10ARoabUE 2025-12-14 21:19:54.945665+00
+7sb8ieqtj7qbuefomx3eyc11uj0blf45 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUWhU:OjmtRGJCdC2FwfCbyUpVtXIn0I3Pqs1_dStOLIDmuSU 2025-12-14 20:58:48.156412+00
+5cxlvciizi68qyfudt2maebcdzweos2g .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUPUk:FcUkUGADc1wwmZSz5YTGcd0XsHTUbvm2PKx7Z4uo5qc 2025-12-14 13:17:10.099113+00
+5js0tbub449evk63uhdfb1ijghohqjvz .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUQBt:w56Ct90tPvJUu4D0JJ2S5PM59lof6gdOCdjL2-FBM4w 2025-12-14 14:01:45.434409+00
+1z4kli0xz3qivc6qiamb63i1ow2siwv4 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUTMV:M7LeRzDAnl66_MQbJ-rL8fm-taWE9tAtbBTfNVSsshE 2025-12-14 17:24:55.298445+00
+umrcmy3fn6dlikzlxlbkk8yl4yd50b6a .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUVAO:z0GudCfFsSSZ-XeaUTzhjoUs2EblwqLnNs-BnZ_bmhw 2025-12-14 19:20:32.26625+00
+67qem97fyf95n7s4nuu3weunue8aj5k9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUUVe:qdFz-mAqeFESXQbbTq1IgVsEdMwCzYFjm34U1jOeaO4 2025-12-14 18:38:26.659403+00
+2rblzeib6zz2mrdiyy65zlozlv8x0a49 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUWQz:oUjMmi-Gzjh4vgDrNmsv1AUy10DiLt1A0XV6lv25QWw 2025-12-14 20:41:45.581097+00
+a9r4egim7mzjyhtxogperq8bz8xl7j2v .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUUvV:lD1MUb8P2yEgZ_0YW5eKbUCKjfi7tYVMsJhYdhYPf7g 2025-12-14 19:05:09.9938+00
+mmjuzazhkmont545cplf1p8jtda0fkfr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUVX7:0ByuKu9DhihJ7d6qcaFFNtmA80y9I6UEBTbg9EMkQAI 2025-12-14 19:44:01.102227+00
+i7qk1pfpnjrh4e8pt1yugzch9o9zxo3v .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUWsV:PkemEByHFuZ_3KpvDxdRO83A0MSeYIXitLHrs08Jorc 2025-12-14 21:10:11.610906+00
+vbhclo1j2qm8op6f4iqvxhu6pupm37h7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUYc0:vl6AMMFO-cFHJbMbh3U3H3GEauNCC_6MbXziC9gp1UM 2025-12-14 23:01:16.706094+00
+gf7bl35k91rupu52sbqoov25xu40yig0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUkaP:lj0K28gmipXMXR77FELlYkv_Zo_djH9XvxdEcnXuJwQ 2025-12-15 11:48:25.68724+00
+58nercu8ykt43i9u6dp4ckp0l69kwspt .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUnKs:TA0OVTjol3tDo3QzdKW5-b-w67M1hmZSsq5zvoWcM5w 2025-12-15 14:44:34.841353+00
+k16jnmuijn2qyvfnpftl7139g9wsho5a .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUneU:saO0uAScYkDXmRYy3JijAokMNFVhPxxnTAdeCDO_Ozs 2025-12-15 15:04:50.288051+00
+8nqmvsjjtljkclwegum7rytvsbokgcyc .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUo3b:ve-CUJoH4XTL5_liTuANGEoJxnUL9OMOCdKhGZSL73w 2025-12-15 15:30:47.536929+00
+l9viu7fn35q92xswrzo04pp02olilmd4 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUp1E:2wWz6kK5FAQzs1DdJQrtlrm52O5n3SIvF8pG2_P52Yc 2025-12-15 16:32:24.451234+00
+3v9p44itj8jq5atm6h0rl7w765s3jjrg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUpNc:yfoADvY9MZXu8XfVNcCK1uJGEenV6Nv8F71DYaMc3VU 2025-12-15 16:55:32.386736+00
+wvmvpboejf2g1n9dy116atyfial5u3r9 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUq35:cUU49nZttUTq9MFGibaI5Un_ASjRtIkH0_Q_z-M5BrI 2025-12-15 17:38:23.414627+00
+z0b90e7x35lmdz3rpu9srnrt8dcavgw0 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUq88:SXi8oTnwWId98jTX8MIb9RI2JTZJseQc94WNxbU-xhU 2025-12-15 17:43:36.284266+00
+sa4d29grmwjf7eedfx23zpcp9hf8xxk2 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUrrC:pXBGtbwlOt521Lrg9zHdZvJsV8Yb-xa_VHJkhHrM5PU 2025-12-15 19:34:14.42683+00
+cu467575qnc21v74mybjqqfsvi7u2ze5 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUsdx:YO-EnHkonvz1oyVJkpxi0SP3PsEsHcLqP4-a8l3nlrU 2025-12-15 20:24:37.039647+00
+8426v9e9utvw0gr4d2ryit9yeyiyrggi .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUsqY:h07Hf5cN-If3DCYcLrDKZ7tjygSqjAa7O9SRSxtbP4A 2025-12-15 20:37:38.466941+00
+urhwjbf1wm4abjzl3fr2orv1saoxtpvt .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUsut:lV2hV_NWon_IbFu0d1bZya07iW5WGj5jV0JNeOdobwA 2025-12-15 20:42:07.134001+00
+y3m70nmgi93xgykub3yjcwxvjto962af .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUt1S:WJE5UtbK3uPcZylMHQwmtwHk5sVBjdYFTxrRnj4tTnA 2025-12-15 20:48:54.272036+00
+josb64sn8bfshehpabr71i9986b9ujkq .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUt2L:p8VhWpB4nuwgWTZEx6sjl-X9sk7fFYR2EjH3S1tLs6M 2025-12-15 20:49:49.089586+00
+n912qjysrkj8ztm49905133eoyimxef0 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUzNt:HmpxykZcFUy0tsiLR69fZU3ObzCy1UqgL58eScTphAE 2025-12-16 03:36:29.593491+00
+p3gq5s5c395u8nc87cqjdb9oqvt2lfl7 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV0rq:7-TsK-yQLrdwloNeVHo6I8bFTuvIiuq62UFeQMn8JOc 2025-12-16 05:11:30.989216+00
+4qvvxdw7fgu0dfs54gn1a1083dxwt0nq .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV19x:-_-dFVAUWg5s6_Kw13cWLSALHpw1fSqKkRbYqTaOZ2c 2025-12-16 05:30:13.614624+00
+99o7g0ikjczm28ziotedvjbgs5o78h3g .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUvHw:3UCsUWWoTIOA-cVhGbddcnqzU-6tUUpukZu37G0FJ9Y 2025-12-15 23:14:04.876241+00
+s7fu67dt0tzv5c1tv803npcqus0zcn3n .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvMI:_uLyfAob0rG-z4ezsfzRuTBrF0xln77xxPdM1BYOwC4 2025-12-15 23:18:34.477592+00
+u9lhh5kemfoe9xw1jmr8v8j7ww1lfev4 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV1uE:HW5WDxijXp61arecFA5fu0C_1epuvTAo-ccKcLvvvME 2025-12-16 06:18:02.54228+00
+19uxmieyl2bfoe3ich3c9jpmqz19od30 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV2BA:Q-E98BArr4A551ZgFg9YzksQjBTpyv94tGGaQN5ntW8 2025-12-16 06:35:32.388469+00
+5se2byy9lcinhd33mzprjxb2nqtpdd4a .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV2Sa:dT-w7KmWBSHDn-od1XW8uTYCfdLm5yLKZwEaRdhKh6Q 2025-12-16 06:53:32.780224+00
+ecgj56q4inks4udo0ue7bc1chssoc7p2 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV3Y1:cd1T3eBL_u2eUqgigC8NOysik_SF4ZT4_NMLuk3tXlM 2025-12-16 08:03:13.690201+00
+lyvuk670ye5klsrgehu9k38hruvrlywd .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUuLO:T03b-MBOFE4MB6tUGxR-A8lM-Utn04nUBtNRkhWKulM 2025-12-15 22:13:34.733089+00
+voa45falg1z5tciq2bmaygrxe2z4u9wt .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV4JX:h4vH6vg-fvydYkSpDBUWEBkPubWLxXYNndh63aXx-E8 2025-12-16 08:52:19.31161+00
+2setzyku2dkp6ibhkuoo0qthjtdffulh .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV4Ye:Df5jHyW5V8bzIZLvj0iWqpMyOmK3QCpTTKsPE5-6-3w 2025-12-16 09:07:56.509218+00
+srkgpw1w6nfob5vzm7o545th7zo6ot7p .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV4r4:HzK5j2UZYiYKVFMtmLGicxctUgIc5k6QEPja3sUfUKU 2025-12-16 09:26:58.718512+00
+tvwvykfhl3h6i9e1ij1ucjhac3ddsia1 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV5M0:Zo20BlKdagqu0VzdlQ8NjXEOtL9PiGbW42ZRRtQ8ucY 2025-12-16 09:58:56.841456+00
+v2yi15j0f2yw8yfns2o06l8z2ecdd0p6 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV5ek:pDiyDZGVeWrfzEC0cPWq5w-rdDVd30pfOOlSCD7U0AY 2025-12-16 10:18:18.587278+00
+cpmk7s5y75wd4lascy9cjl8ek5dpnbad .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV7NC:m5_RUx9IUPynehn2Fla8_O5hobj57slJOVjB6Y9z294 2025-12-16 12:08:18.510209+00
+61naz8oym2kdxl13keboucxeeolllmo3 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vV8fA:47dkLwDQKCKMvkkYeUz4i-wULvVQhaM2KoeNWsjedo8 2025-12-16 13:30:56.024048+00
+l7iosuliq8agogm2ke8qh4q4h2yaruht .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV9SQ:OckcveyMH29x4k2ODkj7VQkF2pyB9sohOdtrWCffdJM 2025-12-16 14:21:50.700205+00
+66ge8g140bqmefxchihszicf5j5t2o60 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVAGP:TFAlVN3BDzUTz1PLivwini6LX_rT14clkAWm9YbX0JU 2025-12-16 15:13:29.837666+00
+5z4o2j6p6mjula7jgeuw5s6of403jq3l .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVB8S:keipieGswl_ERnsYfJNMzoIMFP28vTeHvVHbYlptBF8 2025-12-16 16:09:20.113271+00
+3eib1c1jdf0guixkl71cp4txpes39mr9 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVCO0:9xIcb4umxiOLFYkVqO2DNDKcBC59-eLSOKAfa33qsGQ 2025-12-15 18:29:28.41859+00
+xtbvlsq0igubfxx6xdn2yjnssq0maq8g .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVkCY:TnVCoxpMQH_87GGhxFzJ3kdDdHSAKA-YUAIqr1i7KMs 2025-12-17 06:35:54.975856+00
+sz1h8j5f34ayjibrjzjq6k4dpzidttdg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVCnD:4BhrplWPqkNdVyfVqcZTm_KEmu5ZNhGqB0J8yEWNOM4 2025-12-15 18:55:31.73816+00
+70vh3hbvp6ipqaot5xo3d76ud94zqw4a .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVjEC:P2Nle0_M1MZuBMgiQ6WTnvjkdmhz2H0L84YMbe6-sJM 2025-12-17 05:33:32.71025+00
+3s628lm0dzp43vbe4b2cc5gd9kymlxnq .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUtgG:H7bN-ED_Hdki0kGkkqt1Y1Sz90_wcwZm26fSI6eHV5M 2025-12-15 21:31:04.085653+00
+849a3oletlkp64t5f9b2ltohw6ojfo0i .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX5hj:X-beVKJCY_qfQY3kaV_VTZX8Tmki70kT1ulc1SpmJrk 2025-12-20 23:45:39.709571+00
+f3thbgnpj9e8patopr23bmxj2a2u4mhr .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vUzyR:FHabpRxIZGkUzNoo3qVzE5HJiTspWH3ieYPZcbUrmB0 2025-12-16 04:14:15.498246+00
+fv5e3m7vrb5abqvz7e1whcoe6zxwu0yh .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvES:rTXk-fRBoQdX4rUqliJdaik_0lvN19p4jpr6m4xVYxU 2025-12-15 23:10:28.10189+00
+f1q4el6ngrrzhicn0smkz3bontkxp36e .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV18Q:LushCzzPX7PAds6ujj1xH90bKI34x4zLYIm67uJC_Fg 2025-12-16 05:28:38.186857+00
+8snqgi9rnflgws0oznv49swaw7mlxlme .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV1P7:aCMsYnoIIfKnVFthd-2etzhPdF91dFKW45mlyfVnoV4 2025-12-16 05:45:53.355926+00
+2bs1vyumem2eb6g1f0fr4oz6d34shqj6 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvyF:5WnHfuEsogxVSZUvKNbc8Oo_rQtuYZUgpY_AGp-F0GM 2025-12-15 23:57:47.857081+00
+i3u5x9h5eakpc2hftop2s5drf55xfvkv .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV2lV:Y5HjyAGSyWf8DTYWyDKrwEJqnerJELzyZrUR0TbCyyg 2025-12-16 07:13:05.12631+00
+8fpia2pxtfmx1pkrn7v4gfog1ljpreu2 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV3nE:S-7vGPgk7pnsBMJF4CbM7uV4kXIEfMrvsAa30_KweCA 2025-12-16 08:18:56.436946+00
+lstr00j9k8k8loz4qwfvigt0mcgp1erq .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV5tq:-XElVSXm19s0-PNO0gEqmOiGJN_0JWmQOvOcjv_7XLo 2025-12-16 10:33:54.895454+00
+7e9lxst5a7r2926ivbdtwr7whqht0xp1 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vV8ft:VAkfB3937QSeSHX1OTepMrLkJ4Pk1XCBeO0exyrGWQc 2025-12-16 13:31:41.951846+00
+bi1mkw8hvwr9gbnxim6r44pi6jgdr0zx .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV7nZ:LnpM0lKdGJT4laWPA3mu8e4FpSbhi5FZ5dihJCPa6UA 2025-12-16 12:35:33.00587+00
+lxr9wuwd31278a0yhnk7476o0fkg119z .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX0YG:gL9ZeE2gu0qnHvp0h6H2x0-oNnWZM5QuoFCI-jbAPH4 2025-12-20 18:15:32.193885+00
+ml6k8b57a6a42hxnicmxzbj3bfrdb9hq .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVscH:0P-3WHcVOQ_08rS43EYI7YuF5rZfvFKeJaYexdBVZx8 2025-12-17 15:35:01.080125+00
+0y3o0fypsjobmidefdk2xb9pym0va5yu .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVmfp:D0ktivMti2vjqJ8wtVEdisimm5Q0ozZR315G8idvmpc 2025-12-17 09:14:17.029505+00
+udvm8ltva0kf5ibrpx1kwhi195qci60i .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVB8i:QfxtnvLW8vBFWcwYmKPOUssk9tEFl3ywSI0AZO4okXo 2025-12-16 16:09:36.366937+00
+15iexrx7y33zma552nxusjg6zoo1d0ir .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVeQO:pcW-5sht72f8J782p0O9T0pDqGSdT5IpDYpV4fFib4g 2025-12-17 00:25:48.602891+00
+e9r7ko4i0dmkxavsl22s1r2dcu0lhc19 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVkEq:ZFGCUJdLmxQVWvRwiDpKS070s8SSiITBZ90CMFLX3Os 2025-12-17 06:38:16.052003+00
+vnaw2qppovofw12oo11yz84cw19m8mge .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVjyF:N1nEjrsIr3XSlENCgcuXLOHzhKP8FMoiaHmCFKF8W8s 2025-12-17 06:21:07.028387+00
+nr28wyadamiazwxekt0b2gkbkgvp8gl5 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVEdl:3fKdGgRd_sTZ8mWcXBeiKSrDsDGkX2qOZbMM2xwGwDc 2025-12-15 20:53:53.895072+00
+sj5ou91gjvrg89pge44jxdf5n118gftx .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWh0J:zOYT9PV9APWaUk9DKanJPdATTtundKrtSOUkXfzaSR4 2025-12-19 21:23:11.214368+00
+27uf4m8o8qcylwy74a5pr3b38oq8mvq5 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vW33k:njTXayHNnco2xIuYUJ11tlOsP3tQ1HX1cHcv-jsRxzg 2025-12-18 02:44:04.833306+00
+i76eksxqcm9gs8kd9fx2v800zc5mijgh .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vVCm0:SkOIRKDSP8jc09ivgWLYqjMeWGMs6X_EvHBLWcKgxyI 2025-12-15 18:54:16.143024+00
+dwv6t2nakllrtwy5rdm925co781kzq5k .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVn2v:xMudz0GU3vZUcM1vn12hXx4UomOhT5Si6ETg9fhjOYs 2025-12-17 09:38:09.785841+00
+usmy914zd59zchrf667o6m03bxrw8743 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUthi:JmXbMkPHp4lxt2rBWl41VAYgdfG68vSS_4Z1CvDD66E 2025-12-15 21:32:34.842637+00
+2ay1et2v0dlf0itgqty5l4sidg9lz1fu e30:1vVBry:hm7VKsPlfYwNYATL16yG4qEheu63Xn2OxzPqQC5vUxU 2025-12-15 17:56:22.420955+00
+jkdfv38gz9it7wh90rlwm0bkai24fai5 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV0NY:iNyliQfEiiQHiMeZUy5u4ILgVQHuoGcoLhv13VK2jMM 2025-12-16 04:40:12.50835+00
+36bcoqbkr2p2dm1br0ac57sekq0s54go .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvFU:skTG-XlDe_K0_-sQ0WEoz6I3RueoeXHpe-bPxafVFI0 2025-12-15 23:11:32.475584+00
+1n0get0bdsosw8rvssg0td0x2e838rtk .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV1fF:EUDDKW-2DgVeKouKvuvoBd4zv7Lsldtp9q6m6BxGPCE 2025-12-16 06:02:33.106588+00
+9wsz63sza8vjsj3q0c3xze3ine4em02x .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvyh:DIkHLlWWqvhG8TBLCfMSmNGG3B8eM1J9EdpLdVdnM-I 2025-12-15 23:58:15.501077+00
+8287qlglnsltnhxjhkdvbu95p17xtkbs .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV44s:PKA-b4SRK8wEnkqW6tbDVAIFtExCXTc5pkwHOVScFhg 2025-12-16 08:37:10.104378+00
+tjrc6jjtab4fze05dq4qp1etxkkvlfci .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vV62r:V74-r2En-N9_eNDAMZ2QHJ6BfbyfW1tErY36cGBJTnw 2025-12-16 10:43:13.379583+00
+tc1zozasz0fth1g7kirlw8baym4ye5re .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV9o3:c0q-5CXfQg1X4GAO48Ij46KnbkQOhkXA5BUufADkssg 2025-12-16 14:44:11.726732+00
+htgbks6lujws455wz6e8vsagiywx5xrz .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vV8PO:GlMIhzOxVv7-RukMrQcOXjS-bVdDICv1d_KDIN1pqcg 2025-12-16 13:14:38.833045+00
+cj769n1dxrsyd061ud2w5q6jy32zesne e30:1vVC9U:8ddVy8XgrG5Z8ms2GnSVGBX6uZQwetugHth5TqPncfs 2025-12-15 18:14:28.62752+00
+t9h3rkeftqnnwg0wc2vcujb0y7ifwga5 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZwnB:UAZbn98CdIWZD6T9whBtA_2KdKc9DJvFoBEIHrRx3og 2025-12-28 20:51:05.041298+00
+s3yqiz56qlp5bte07bc5wz92skyggnnt .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWC15:6Vw9eNoeB8ByKFAw8X79cMFV_BDPS-lJaloIufmcWA4 2025-12-18 12:17:55.050948+00
+0ygjwwa6jkd6gsk1pjvjfr50znq1nwto .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYwHc:Et076GkiiNBDMKsv09q-OS6W9cHoYdslyVgA2v4jWyE 2025-12-26 02:06:20.286641+00
+jw0xl97hj6lad2juh9f4ubzq85jlbuqh .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWpmX:z5CeJRMlbTJUSgRv4_5X8l02ZqVivw0wBcn2CNV1Qmk 2025-12-20 06:45:33.93346+00
+4n5r9ewl56pg79frf2u3ood795nmfryu .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX5iY:TEtSQ6ylkVFcpoSMSKDBeOb7bSWIYSm5dwyk-RpVK_E 2025-12-20 23:46:30.503484+00
+0uy6qudy1evjoliol1yk6pv0d4u2pfv4 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWmzE:UlTwy5zDoqKWFuadpkU0bza-U4oWS6Ql9nSPM7H0WRA 2025-12-20 03:46:28.639629+00
+46wb7yc696zel2vja7gdtwgviej5s01d .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVjxX:zZ7h0GWjWUkUc45SDnrvmVJObRmSOjFfY6kqKOovVZY 2025-12-17 06:20:23.051403+00
+4sg9cjv7el615avqo357afg2amj9hieg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWypW:lAMy8hd73G0ZnV1Up5dzkSYoztmksNs7v35SUrWAoZk 2025-12-20 16:25:14.858211+00
+oiqllvuviqcuqlvfmeg1oll797mip6yz .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vX5Rf:LYsJJfxg86tNAO2q61u8RXXwVHKoivfs3XF8AV-Tvco 2025-12-20 23:29:03.374359+00
+1hs2x5i9ntmnbvgco47bdm8ghjhsw5ln .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX5Sk:xeOaLi7x7aR4b2s1HleOnYenx0c8bkv5JG_Wcicw01w 2025-12-20 23:30:10.722605+00
+7n1tmmnz5omqncgflco1jd62vh8v7jlp .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vX5T4:KqA-ecdaKByIwNCX8-U_11huL07RfDtxqnfz3FMpJBU 2025-12-20 23:30:30.531835+00
+77zsdjv3drvtk1nmrk8e7n2mqiogd6hv .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYwWs:ScZxHv0hfE8sAUO3YSmTaku1OUXb_DqF6WRsSN8KhKQ 2025-12-26 02:22:06.23249+00
+6d3d9y1r16eijtxrg44tkpdbm89y8ved .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vVrEZ:mxLkFUbzmZneY8t87XQRR-ZSsZyxQwLY7BrIT6j6BgU 2025-12-17 14:06:27.648918+00
+7r3krzeq1rc0kf30yhqvjy9efpfhaz6h .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVpce:6SMGMnh-Yq-5fkWfHw5oqEVivFTrTCy04zNUTS00aWk 2025-12-17 12:23:12.349146+00
+545cpci3x52s1237wnpn479nh3broqto .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYQrk:vrN2w6MGqcajd3nIvdzuMAnmsp08LntJyBHl8JFnT2c 2025-12-24 16:33:32.69054+00
+xg658vl7qxnwygmdka92lsqrek745f8u e30:1vVBsF:q9-s4Sp25w80RyENjzSl7STiqr3QQVznBIzWxPlSz10 2025-12-15 17:56:39.704185+00
+x0omd15lmw05zi6cqh5caq6k0ezhoc8d .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUuP6:Rv6Efy8atxguYrpy4Whgs0eoLCch9yV7l1LroytnDXk 2025-12-15 22:17:24.281807+00
+5qh3rkeypslp1xhdkau89eryesulce42 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV0ca:d5_-k6seebeKmJi2t6M7f4KbBtZkNBzzsNsTxpld4n8 2025-12-16 04:55:44.739586+00
+9q1osdww61yt2pebi53a5t8zt8yxj4oe .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvGu:0nwt6NvhFmZCvT8Q48b7_bVTEaR1fHBbwA8RpDXo2HM 2025-12-15 23:13:00.735491+00
+z0kz8nnkohjqym5qi5c9dkc8cwlamqhb .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV63A:P-zUiTpsvy-rkQ_3fr9SnBvryp8FkopWUXEaYfg4TrM 2025-12-16 10:43:32.073041+00
+ycuvzv1800qtit389f22cbzjcmfu9caq e30:1vVCA6:aycK-PyYd_Gg3Tanw6je0h0S2DOr-ox46x_QXSaB3Mw 2025-12-15 18:15:06.462933+00
+xccb0j1tp5stgzlc3ekjfpft0r6gggjr .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvyo:FoXT19pVWSX-ced5hz6oYQM24enHqYSi4iWK4fmKB6A 2025-12-15 23:58:22.746048+00
+kbcnhk7c4os6inttuggflu79aj5vccsl .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGPF:pIps4q190oBI0sqXywsD-t0kdkV9pDEf0yWD8v8fJQQ 2026-01-04 06:11:57.714674+00
+fscdofzlwgm6owb6mk90jed64dx9eh34 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZIjD:O1AcqL0h-sxpoOq6zNE7a-Xhe16MJg2A4YoJ74kg4oI 2025-12-27 02:04:19.431601+00
+opm0dwur2lqn8q3mkjwd5orr1p0pr7si .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZOvr:sVxvJI2mljxPvyp-OVLPhqDFKA3IFOJAxDUh9SDGwZI 2025-12-27 08:41:47.117004+00
+qtzlof7mn6omdimqxupd5rf877eatv79 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vVrGJ:3n8Ij-iNLCLRxeMK-dP7c2-HkTn1CJpuBRbuvWPryEg 2025-12-17 14:08:15.563277+00
+sb2w4mzedicd8kdyywrnhgnh27iw65x8 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX6UL:qrm4m-lbmcBdldao-jhMlE3GZQOPFyKsWL3mnNdliVw 2025-12-21 00:35:53.016571+00
+d0u1avhpih5fx4n2x6kayxfnj0jtml3b .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYCrp:PjTDmH9gQhtYwDxPchDuE9erbeHU55meKxRhBkDbCyg 2025-12-24 01:36:41.769536+00
+e36xrvp10wygwblni8i1r64qnwnovxz9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWC7h:8bPRRcZICA5vlEckA0tLDw8gMfSf8SZPmKVqQ_HKLjU 2025-12-18 12:24:45.357825+00
+wu0qwgpjw72u52lmzcoprl9sastmmhcs .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vV9Ck:xBpIt118tuCytumCy9Le4-jwTbcY2i33VHSC7UU9VaY 2025-12-16 14:05:38.272483+00
+40ajokhj88l8hlzhlymfzz5jp5c8s0lh .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV9ow:R1s3VgPtRD2LulogtPygfN_K00amEm7aCYYdjlt9Wws 2025-12-16 14:45:06.496583+00
+4miyhk7wvfjc7k2jncxw7ecisrb4x23a .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYbPg:QXexLf9JhLoh6xbJ_-Lu291GYxLVHM1u2weD9NZnn5A 2025-12-25 03:49:16.68577+00
+qguwjq6zp97uktp2udhmqzwxb5v09z6m .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZEKu:Xkmmr_LOv0wFDqgje9OOzoEmYGi7OKLCycqgszBNczM 2025-12-26 21:22:56.227547+00
+tzgnhyxalbbm0xf0k918px330vm9mi6m .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vWwkp:IRIf7-KCGJGpB5nx3U9hCZpOp9ZOpR045pcU6a5q-DM 2025-12-20 14:12:15.681077+00
+0f3p3f69mazm0t646fkd8kffl7pnkveo .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYl7N:j8mda726GxZCkA0nUdluqwNpzXTfpS3SnxT_PKhQN_I 2025-12-25 14:11:01.950627+00
+09zawa0tp4f2ogpbz9djt0bkeh0gl5hx .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZQC2:HvMW1kkDL7KqkOJ7_Bb0e6nbJo0t32IkURaplBJH14Q 2025-12-27 10:02:34.293409+00
+81yi770sgvf4ih3o921trbkiwfkpkz3c .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZRL9:86UC3wj7xLG4TDr8GTrQgSXW4hlT1Yea2V1K2hUvJAw 2025-12-27 11:16:03.784587+00
+h9uyss5au3qwqbi9s89pa39nmmtj3i0w .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYCVC:_FfpFy3zZ17T95A7Y6WqspROc95mc9Cgtim0sZQWuQw 2025-12-24 01:13:18.641884+00
+474lby8l6qww4o1s7eat4yg5zbunv4ff .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZXGE:n0OlG4J5GXW1llX6wzUJAWzOMYUIuZGz1kWDMLrSqk8 2025-12-27 17:35:22.411874+00
+q2lgb5m19vix06z0ab4uqp3w03qgnyxl .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZXg2:2erd1Ys_IkFBmnJLbS6xBsuHP1fZt2Kxov2utl5nKrY 2025-12-27 18:02:02.467848+00
+0ou5jqakv7k02k9sxrj7u6gr7ydk72uo .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV6gs:DlKOit6ODDL7ssoCOCk74WiCnKVJWtLL8XZ_G8_DhP4 2025-12-16 11:24:34.176577+00
+km2j2eg44ts121ctwkryajk6sm2xad29 .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUumn:zekct6BwSe0WKnOBVskOlKjIeKHSwtL7h1vXLnaNZPk 2025-12-15 22:41:53.863096+00
+9hj62cn0h99b6ihlciagy0p3vufpipne .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vV8e2:cRuoXxxmcvUxbarbHX28B0rGPOsUkskaeX3xH5ZGKZE 2025-12-16 13:29:46.442291+00
+lq9f59swa3e8eax06rulin02g3xef16y .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vYFEk:mBHKAjrcOVKmEvKeCwQizxLI3HT8F3xK3_kuU75OCvs 2025-12-24 04:08:30.953107+00
+8tyr9ofx156sc97g479hjot6cwgjgetb .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZXKJ:UJZ_HvcPx5GLdpyRF6t8wOqzFrwV8B2TAYUiQ0ARWKI 2025-12-27 17:39:35.257469+00
+8oy65sl3ss0rcwtufwqve62euiwloqt7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGPo:PjTJfKhngKcYeUK9uAak4SGUbWQlqWx1vXazcObhA8M 2026-01-04 06:12:32.82431+00
+28d0uqubsq52u9yugvui44jtiy628a80 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vbSld:x_DKlVtL9xvW7amOUrzHDQO0OOgMcnWr37m3udBwBjw 2026-01-02 01:11:45.441115+00
+ju6wxfwcogktltq35kpbu64mp2x05b58 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZXop:7ApP6v0u8eeTEPiL9jCeHvqoF17Xx1sGXjOFUuZkCcg 2025-12-27 18:11:07.157744+00
+ei4n07e2vs3gg3ata6qt3wgrd6f0tjmn .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZknn:jU4MRSX24-_gNJE9jEZV8QQfX-eFHoxW0cKpkgrDOXU 2025-12-28 08:02:55.73192+00
+34xuwsoqg5wz8cv6z3m58nj0k2n80ojw .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZFHf:2kN037CMPqF3TNKQvwwiIjsu2AdxcbxsrUNPkyLaslY 2025-12-26 22:23:39.026527+00
+7lkpejabp7ba4jwr5bzp009aglgbr9my .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vWv3s:0xA17LfDPaOxIl2JYkC7guk3PS9boa4JmubeV4mdrAY 2025-12-20 12:23:48.227667+00
+n0q6dmvpyw535dwzuhh46vt827hqoecc .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUwFu:N5k6Qho5f_NfhAbr6GSUjE9esTO5YffZlpqTGAGN0sg 2025-12-16 00:16:02.264728+00
+g8m2ddqjx432u81u3pebqe8qiptjsedc .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vb3V7:zNx6w_QgxKYJzVboEVcjf1J7z7L9uA_DdN4z-vY6_5Q 2025-12-31 22:13:01.760416+00
+9zw5q2hu84afp98m2aiq6cd664dcmd99 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1va4D8:sGUeiwtXgGS068WR5iAfn_eF4yu2TlUtp6gTANhphJ4 2025-12-29 04:46:22.316509+00
+7l4bmzvf55of3m5din0m4iyscxmwdhch .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vaghX:IMkh8_o1pSGuqy-EGyQpreZvt2x-os9fzF8phS17Q_4 2025-12-30 21:52:19.017955+00
+xix2b5wkhr12awc34hip8zhexvrg4h3h .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZOtU:QTbpCkHclYde-DDWFSSdZGGDosDjs9Im5tfxwn7QkY4 2025-12-27 08:39:20.630581+00
+u8xlj5khxli95o4x7bekdey9gpp08wra .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZJYt:og7Xf6PcrDQhJlY4E2IBdu7Ofkvcu6YMAPPWfI3LF4o 2025-12-27 02:57:43.824037+00
+b1t5glqus0j2fxx5f8zz891vb0wj5ezr .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZxkA:4BrPd0Wibk9Q8Zg3Ofip9cFDCr90y2CpuzOdhfS81Yk 2025-12-28 21:52:02.704165+00
+avy7v5mq4124ceew83n6raljnsrazcjc .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZZD7:aMgHggOYj0dkyEKmT0mj4B98AxE9VBzzq66b4QXHoFU 2025-12-27 19:40:17.835749+00
+g5cefh93rs87gjlxxbxazh79oz17yers .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1va788:Xn_Y_bCZK4XIuZFIuLDEHYXqh8E8xts6LkKcLiUPM7g 2025-12-29 07:53:24.167532+00
+gflb4xa4eijtnswaxmxrxxffuu1blj4h .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vb3HI:baRqCd6K3-f_WSBXQN1PTKzVhh7k7qG7Be00k7ADZjE 2025-12-31 21:58:44.118153+00
+kiy22oqf6vfilfsqlv36pjwi49t6wfj6 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1va0Fk:4_Ds1qKL_hYOGhmQvOznHGhSA3KfOzIBZb9vUqi2Tu8 2025-12-29 00:32:48.365269+00
+3xgweketukxz9r1p5evwjj5wtlffgcg0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vX5fz:6omPAxKHWbj1OM3Nw70kBh2czwqJ-kp6i9YtTi7cEPc 2025-12-20 23:43:51.059398+00
+3g6yiei1aohizpfgtdpzsktvbftgghln .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vV5MQ:NMhrJLnCUClXOu-KStBOpuUHoBXSt8USoXWQaDEEsi4 2025-12-16 09:59:22.267869+00
+vjcyeektvmlwqtzg1n3z0wske7bjdedn .eJxVzEEOwiAQheG7sDakdIChLu1ar0CmM1QaTUmKXRjj3bVJF7p938v_UpHWR45rTUucRB2VAasOv-tAfEvzRtN1fobIZUl6Y71L1ZfSE-d0LpLup_3-18hU8zfgUVwDo6AxDYJzAS1KBz5YM7LxHHyLSL51zIMD8QQItkFqOyvIwOr9AaCYN-0:1vdJGB:lAQwe01ewuVwzJsac-zT9WyiY7UwLNHPrXBeJuNJMQI 2026-01-07 03:26:55.552872+00
+eblckubrd7kh5hwq418qhqq4tve91bat .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV7F7:4YVjRfd4H9zPQ8bSsbc6G4duDc3VY0Dfd-lF12hO6GA 2025-12-16 11:59:57.217364+00
+upsxqbf9ejln70wdr0soylbvvjo3g70v .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUv2n:JZ5y9aTlR5C4hHXGZRqLF-G3EESeDk6bAsPi7cncSkI 2025-12-15 22:58:25.70325+00
+fqq0fava8w5nra59uir0zuc4u3ihvuxg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvK3:ikL0Y3vA30JjLFIe6gR6E8VLkyVHalfXPBAmiOlzJRM 2025-12-15 23:16:15.189395+00
+l2zp93fgvnhjoxrlndpzst7xrrtrqe8c .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vc5YF:2bGTV9K0gT44POl7o07qL8Q7CWk-HIoWCepF8WQwtf4 2026-01-03 18:36:31.325928+00
+z9wwcb5l0c0ohfu4g5seu26n4a1r038o .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUxtW:2NlfG-eCNnbqc1SilP3ZIRzWsSR_59yzG0ZMHeJ36LI 2025-12-16 02:01:02.887491+00
+eidqo7zzcv821dhh8vb4yvc2oettpw71 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vc5iN:RGQ8xKmvkfLsYdYakJrNlUnY8lVWuCcoRa0n1l0OmZ4 2026-01-03 18:46:59.472009+00
+xewnz9736n3q3dqaqmjaoqn815jxhpnf .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZXpc:uMhBDooBL5s1RNDejLmfNkLRGwzfHdzHhuZISsOE4Fw 2025-12-27 18:11:56.449792+00
+w13fvt2fardyp4cob05g2z5zz4i4fz1m .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGQ6:2jWvyZbhNaEx0dwI9a6s819i9cZGY1AYEAp9Bqvw2kA 2026-01-04 06:12:50.200596+00
+52wdre0isx08fljo51oqjvhrf4hxxk7u .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGSi:gw1zasudEC89P-WllhCGTWBBNRn8-_IgQ1jaAhL98TM 2026-01-04 06:15:32.540209+00
+3lk289enc3t82tyxx1dja8ra0fmhknhh .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vb3Ie:WPrES94hgHy3eDFKLvtk8tA9egWcfSPJx6scR_G2aR0 2025-12-31 22:00:08.925796+00
+zo7exgk9n7s20cgbizwsxnpedip1jlmx .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZZ96:bNKHxTpCtjxZflZdwOXytlAM7MpTIOc-pCRozLG8elg 2025-12-27 19:36:08.734518+00
+5r3o5n78xnp8gxlm1onz3tadllbcjqz3 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1va39G:i6tPCm4ZokEdDIWv3ivqUme6TbgbNpGSD9qMDdfL7p8 2025-12-29 03:38:18.355176+00
+0j1r9hu0zpbqd5y7x9x20yfha3fiw0w3 .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vbaNS:Nhs0k30u0ImJZnOMl2O3zPZiPpY7QhJetDwbZnKvUOo 2026-01-02 09:19:18.09414+00
+s296zlbr058j84gloavf8qlu8u351h9a .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vbwFs:vU3fDkxKShMOiUtvtuONc1aJJi1N2XWmbVWW5A7xeFs 2026-01-03 08:40:56.032319+00
+noegfcrx35fvuxy612z4slz2jvmyxkhv .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcCAf:qblwJv8pOxcrkqp1OK8Se7mlMzsxLmWBdeIGhEJit5Q 2026-01-04 01:40:37.510952+00
+xc3p9nttmgtep5j48otqkolo06bjhlo1 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vc5F5:L3NJ5h11dlkKKCdwvzOA2yBsFMWOBF4ZadhsKPJdFQE 2026-01-03 18:16:43.957853+00
+z0q6f3mye7378fews1otj7b8gsfm917g .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcFhx:GYE_86_nJb1r_ryf2niH2ljK5MpcuooNp1RqjcxdAV0 2026-01-04 05:27:13.298238+00
+lxyypm2l1jgkiirri4f70p5ji06jvwsc .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vZcwV:YVgxurZgsjKBTTzYcNLt760nVYFm2PlkZY8TnIeZG7o 2025-12-27 23:39:23.896026+00
+7nsa0mcncrx3wv9ifkjc8azij75ir1r7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vb9rw:UDqW2MlnLmTQOILb3q6RDpXNS9vxLAnyQtVfOdRiGpU 2026-01-01 05:01:00.27835+00
+tforzqmjrafc4hnd3wpk68npm1w9oqv7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vb9oN:oAAD6-d7K-H18zxIEjfXT5LO-UZ9c_gJvXTKQ0ltpgE 2026-01-01 04:57:19.28785+00
+op58td81i6btnmsqs3e9jp7e5t0cbbd7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vbwfK:U3090Yij64b7IeRL8C5l3PMwbgZ7wwCPJpqVcnT5MIs 2026-01-03 09:07:14.256835+00
+1bmxs00wwk8n497z985ytmv9irqepue0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vbtO5:Bbjx-Z8a5ulgUG9g2sfH6Ps717INyDvJA1bCjLtG1XU 2026-01-03 05:37:13.950451+00
+ffu91m7i07js44x0ib5ja78ci2d7zo8m .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdJum:MB11s0pd36pr_M8eCwnDG6ogzz3lQ7N8mrYklBUoQ9E 2026-01-07 04:08:52.204326+00
+oqu3by82d877m190c7mvnefwr8v5n6ri .eJxVjs0KwjAQhN8lZyk1P-3Goz3rK4TNbmKK0kDbHER8d9tSRI8z3_AxL-GwzMmVKYyuZ3ESShx-O490D8MK-tvwBEd5DNWKq51M1TV3SClcMofHeZ__ORJOaREg6BbbBgCtqZvojVFBK5SkjY-xqYk5Sn0EtrIFjWyZKZJGKSMQGL9JiXIZ5u2qWfL3t3p_AKDZQus:1vUvCr:oTZfuZN8pQmcc4rszm7dSSLNXBqHU_5cfS2s_cxkC6U 2025-12-15 23:08:49.196321+00
+jn2j9g6muk5jfknx5wjwrontt93qb9ld .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vV7Ho:rNprORChSdklbQ79bkDvN48_XDNZYEHJVvhM3A6pLOI 2025-12-16 12:02:44.51396+00
+p16dpz6sn8mxnvbq6c11pcguo6ouo23m .eJxVzEsOwiAUheG9MDYEKE-HdqxbIJfLRRpNSYodGOPetUkHOj3fyf9iEdZHjWunJU6ZHZnUlh1-1wR4o3mj6To_fcS2EN-Y79L5pY2Alc4t0_203_8aFXr9BrCkEJQQVhfp0JAcSDuZiidwUqG30mQBaLR1afBBQ7ZJKZtTQHSkPHt_ANhOOTc:1vdMt9:9mcOJhAEZArDX8llf2cTM_Z59qCCInkC4pHOK_uA5e4 2026-01-07 07:19:23.643149+00
+cgts8ndm2w712rf1eenuxg0uogppv0zo .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vUvKq:0XpsVQcfTOtOl8y3xo0KAR5jvSOHHCX2oJk_cWuA0Cs 2025-12-15 23:17:04.50306+00
+xvss7ovt37107j8n2j7dcaiitjtz5qm5 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdKte:jz8QO623F37erC2owOQbvyAqV8LCk1aVXesOlppYY2Y 2026-01-07 05:11:46.827039+00
+6ryecrluatzwq058oiosyp4o7q54o5xn .eJxVjEEKwjAQAP-Ss4RslrSJRz3rF8J2szFFaaCxBxH_bgs96HVmmLeKtDxLXJrMcUzqqAB7dfilA_Fdpk2Nt-nlI9dZ9Kb1bpq-1jNxkUtN8jjt-d-jUCvrIAmyD5140w0BrWWHJjjkTOgNA0ifIGWbJQSyYJNxCMIUYK0MEKjPF9P6OL8:1vdKwM:jc1mSPiN_ft2Sip5OmKHNbiwLYZGlERJxAQZlhggTTg 2026-01-07 05:14:34.837551+00
+2ygqr52rw6q4ft0xptt0zh1aqblyxgcs .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdJER:OrwAf1jcnlaOJAesFhOsWC15Ir9pvI0kLPODRuwfs8s 2026-01-07 03:25:07.479503+00
+xqnlx1fyvpvr4402qkrpnrf9x1xpf54s .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vZXcH:6Q3jQ1-F-rIMvKL-RfDLKKyYcNmq2E6IU2OUoHYYXF0 2025-12-27 17:58:09.73143+00
+16noafvze6ub02zcsqvybgtv2t9mzsux .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdNKu:zaR2ip_j04s5j2zSxZqjxGZvlTdlzQQVvoT5MpxjKNs 2026-01-07 07:48:04.24504+00
+3jtt3ljp6ht80hueuxkqgj4u9wrzhh99 .eJxVzLEOwjAMBNB_yYyqNImbhBFm-IUodm1SgRqppQNC_Dut1AGGW-6d7q1SXp4lLTNPaejVUbXOq8Nvi5nuPG403MZXSFQnbjZudpmbaz1nKnypPT9O-_zvo-S5rAceImSBGHwIpDvTatTAFkWMR6sNQB-5dW4NUUSNK6G4zokWFgvq8wXE1Tk3:1vdNTP:7T4GlxE_oWxkVUJK6wx7lBehTraNb8fPEhAngu7sBE8 2026-01-07 07:56:51.640842+00
+jl0w916z769x0vmlqla41w30szw2r03z .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vbwss:9ez5DKwoYu4dsRYMCWTHpVURibjwukglPeFxy38rGr8 2026-01-03 09:21:14.220365+00
+b698sedrsdw3stnj2oygcsdte2obwe1r .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vb3Kv:wY6fftwD3-Hbtt40OJtUezvWYbqFXOVg4wBGt80yq4Y 2025-12-31 22:02:29.763413+00
+8f7clxeovb8jfg2961nwlt0qz5tbisbi .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGj2:dWXJP2JmIL2OhIn5aYpjM0JLLMsXWpMY6oa2Uy7_wtM 2026-01-04 06:32:24.546805+00
+xgxedfgihfwcc2may8lhg5x1cexmcvey .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGjB:eAM6c-rG8DI80-qwLYJQzmN9bkWbJj5WSYx7kBRLRKg 2026-01-04 06:32:33.741834+00
+jxhppq9zjg1v4n53n8fzv7tw7ussuwwn .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcMgX:ds6O6Exp76IpicaYSdaI21FhNfDLDkJ_G47tAo94TGU 2026-01-04 12:54:13.230823+00
+aepkia1e5irac8jrnx8qalzz17nhcas7 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdLz1:gJS8p9P9ehZpZR41eJaCRUYWBdJYlIvUCPcPU0phEnM 2026-01-07 06:21:23.135395+00
+rfumrsng08nxr04bl6pyomavxzvr2mjx .eJxVjMsKwjAQAP8lZynZuHnUo571F8Jms5qiNNDYg4j_bgs96HVmmLeKND9LnJtMccjqoACN2v3SRHyXcVXDbXyFyHWSbtXdZlp3qSfiIuea5XHc8r9HoVaWAWedU0iSNTtD4h1aIAwWcOG9A3DB9cB7c_Upo2ZvCBDJs7WI2mj1-QLeZziB:1vdLzy:M8_8ueMSb2PYRpjqnbuZb7FK93Pc_MwaC5OTuSMb560 2026-01-07 06:22:22.180005+00
+x9smidd2h1hybmubhw8j0vw3e0bvb307 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdJYV:cq9b4_CGYRkTkitDPAcvJqgWJkESS3k4ilhBIYUqRAw 2026-01-07 03:45:51.004732+00
+yi8a3ks8cwwdpqvasl3r6zc9iudcbyb4 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcww7:RtZMqkF72Iddf0eBdXy15NtoksjDwzh7eGCTjAR02fU 2026-01-06 03:36:43.139865+00
+gmjqgxt45w9md1vdmblmxfh8yb5oxdnd .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcGSY:hGaBjdr92_QWz0C_8gob95xy7apV1WAQaEh4IeO1cq0 2026-01-04 06:15:22.876095+00
+arvtvncih70yvmi4pmmc8bkaibc1bsln .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdLUT:Rslc9uPzm_TcFRCVxB-YrIqekOYQ_RHOgDWD4QUu86Y 2026-01-07 05:49:49.416821+00
+nm0hfvrywcgy5dwexty023smb72ulmdn .eJxVzEEKwjAQheG7ZC1h0jYh41LX9QphnMyYojTQ2oWId5dAF7p93-N_m0Tbs6RtlSVN2RyNG8Acftcr8V3mRtNtfsXEdRHb2O6y2ks9ExcZa5bHab__NQqtpbXdgKQgWVACYYw5dkjkGTuNXjz0IKQMHINXZs1OPANmUu2DBzSfL_YkOi8:1vdLW9:6Kf5Nmnje5iI6Fuhe9ZQaP9kNf2hrUkJD9gxviiZ8gw 2026-01-07 05:51:33.501312+00
+0wf5k0636d49v7pgyij2671y3wijl50l .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcLS5:7aIuZCGRH3DgSeAj-yTm5CKuwj40O1JR4gbFHzaijDk 2026-01-04 11:35:13.283497+00
+oyb1o2zyhayo4xigmv9sn0ue8om2kgn9 .eJxVjMsOwiAQAP-Fs2nYpeXhUc_6C2SBRRpNSYo9GOO_2yY96HVmMm_haXkWvzSe_ZjEUcAgxeGXBop3njY13qaX9bHO3G26203rrvVMsfClJn6c9vzvUaiVdWAdq4Aok4kEzgHrDK5PWTEpl1GDdoOMhFIm1BEskAQ0aILu19Si-HwByAg4ZQ:1vdPHR:z0THvkddqhC7SRtatzg8eK89yjesncDPRKcwIwXXlb0 2026-01-07 09:52:37.982061+00
+isauouvhwnycslfg66eumzc2neulhzor .eJxVjEsOwiAYBu_C2pDyKuBS13oF8gNfpdGUpNiFMd7dNulCtzOTebNAy7OEpWEOY2ZHJoxkh18aKd0xbWq8TS8XUp3BN8130_i1nikVXGrG47Tnf49CrawD7dEZS310fZZwZlDwMQntLJyNECSVw7AmUGQ6RE8-Jeu1VMoIrw37fAHceDjq:1vdTwA:xxdot_jaouRxTC-hRpiPooYv3z_drLxgQgY2rlPcNcY 2026-01-07 14:50:58.055466+00
+ag5v5sl1agzv2uhh4vb5jsr0vq2o9wby .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdMsF:z3-XI5zGE-ZfRJtl8SJvRU75M9S7-a1BhIwjudisYNg 2026-01-07 07:18:27.305812+00
+6pflcf98hfztzvle6wvlvpn1c6d6kxvp .eJxVzMsKwjAQheF3yVpCLk0zcWnX-gphMhlNURpo7ELEd5dAF7o93-F_i4jbs8St8RrnLI5COy8Ov2tCuvPSab4tL4hUV5ad5S5NXuqEVPhcMz9O-_2vUbCV3qYrs0sQ_Jg0Eirk0QaV2SIBGT2wC3kwCWCwjo1mb4ggEYBx2ZESny__MznB:1vdX8G:qUSUtU1znOW0hjh5zh-zrT0OlOQreXZdfVkMFybR5Vk 2026-01-07 18:15:40.116984+00
+k6f9nw8iq94dnya00a5uvqv3j5rwkzmi .eJxVjMsKwjAQAP8lZwlsk-bhUc_6C2E3uzFFaaGxBxH_3RZ60OvMMG-VcHnWtDSZ08DqqKAP6vBLCfNdxk0Nt_EVUp5m0ZvWu2n6Op0xV7lMLI_Tnv89Kra6DqhzBYwHw0AYShRTrFjHCBFMyFyiJe6FyCFSF0rw7IuJvDYeOFr1-QL4OjoK:1vdXRe:nUD2K_gXn5I6krXQAYZ_66jOOLQii3SxwzSy-byx8cc 2026-01-07 18:35:42.56719+00
+010cx20qyp080e41yftx83kspox7zkgp .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdQMk:hg_SnYIQQsy2rVqBB5oqgmGTBO_iA-3EsM8_dqUcLcI 2026-01-07 11:02:10.301222+00
+xx0zdohi4i9aylh449ji2mg5t14bmt6t .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdMMs:O715ACo6Ftsc3jsiFnBS6MVj2LftCFO5bPSE_TpFSS4 2026-01-07 06:46:02.879114+00
+4puotowjy4h63e5pvwzggfko25do2tdc .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdJfV:vEo7nvxSquVsS_mr2QHmzvWayPlNWA8vboX_gDua__M 2026-01-07 03:53:05.491486+00
+c2wzhxyw8zp0srcdlkrg01v7dmq45bmb .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdO19:jBZTy5ZBNxuUj7ygMdXJ3mlKM8_9uupC4GH5Jf9RnPU 2026-01-07 08:31:43.714163+00
+xjfs5dtj2ooibmk3cny7iyaqgfr5nvy9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdM62:8SWnBoi_lAmOp6gxxdjRXZX19y0NaA2uF7ApxYLCbkU 2026-01-07 06:28:38.140476+00
+c50xbdckiezksw2w2y7j9preh19fs2j9 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdLbJ:Enzr80k-6EWcCBeMfj33t5nAUceZWttEIRgkE6hl4Zw 2026-01-07 05:56:53.303203+00
+wcg8sb6h5n73wovskseks2iyr5hxq288 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdUnU:keodAVQRNTmD7izxOIZNNlTai0CAPrHjrKgIDyqWOdk 2026-01-07 15:46:04.65859+00
+afywsfn62dkojj8gj4s400wylkprch97 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdOcw:nQvU35M-KcQrb4kVzZr-XuPPdVtle3kj31SiEpz7Ha8 2026-01-07 09:10:46.749069+00
+ovc4p28lgpgf135eoija6dpugelechzr .eJxVzEEOwiAQheG7sDYN0MKAS7vWKxCYGaTRlKTYhTHeXZt0odv3vfwvEeL6KGFtvISJxFGowYvD75oi3njeaLrOTxewLtxt3O3SuksdIxY-V-L7ab__NUps5RtgnZxxgwJEpRSzlIRgOEGSHrNDq7VNkShbyejBoKbeAPY5AktvrXh_APCJOcc:1vdOgb:IflcKIfmj_Ux3hNXDcmxHHW7RJIKLLyKPSIWGcQDW8w 2026-01-07 09:14:33.367493+00
+ab34qvdmcmumyhjbd4h9zouta1llkqvb .eJxVjMsKwjAQRf8layltHpPUpa71F8JkZmKK0kJjFyL-uy10obvLPYfzVhGXZ4lLlTkOrI6qc0Ydft-EdJdxQ8NtfIVI0yzNhpud1OY6nZGKXCaWx2nX_xoFa1kDwGSILfZes0PxGqFnQuAOMmEwdt3SBp8zBo0tZECfRCcH2Wltvfp8AQqWOiM:1vdUpO:CwqSFzV9gnHRYaGRuoMkFub1Xp5agSApzxel0m3rsB8 2026-01-07 15:48:02.810142+00
+xrw249ccu0e14rc8lmmbna9bza0ca547 .eJxVzEEOwiAQheG7sDaEAToFl3atVyCUmZFG0yatXRjj3bVJF7p938v_Uimvj5rWhec0kDoqaLw6_K59LjceNxqu4zOkMs2sN9a7LPoydblUPk_E99N-_2vUvNRvoIDEgNBaMVAMNUba1tk-egCxAAUNUWRvomNkDIJOXAAClOgaCk69P7svOE0:1vdV19:7g86dgjY_i1iiaY7ZNuQWClmVrS6_MO9hfa6s8RzHAI 2026-01-07 16:00:11.307743+00
+vg3rgb7txutjtqcs3oqyr36qdlb2wr3y .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdQYi:Q1_5jg2rLeKCJfIUOXSYRmpbD2B3KzxdhANo1ykhxS4 2026-01-07 11:14:32.331077+00
+vs5z71d9mx5qq0ddnoysnimosmkh6ae6 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdKzq:H0khFs0RxCVL6z3oJE_GL9bfP4Wxev2sg79Syx0MjN8 2026-01-07 05:18:10.846751+00
+sb8sovzakzf7h5nmobs3nsn9254fdxcv .eJxVzEEKwjAQheG7ZC1h4kSSuNR1vUKYmUxNUVpo7ELEu2uhC92-7_G_TKblUfPSdM5DMUfjMJnd78okNx1XGq7jM2aZZrUr202avUxnkqrdVPR-2u5_jUqtfgNEyUMMEBz3TFBUhAsfIAUP5HoHgOIVEJIo7iO64h2WRF6Zg3o07w_qezln:1vdLCq:N8hInICCwqxPoY13SnsF9JiUmHrSIn-6hp54eTBlvdA 2026-01-07 05:31:36.896361+00
+g04jiqi1tmdo15k3oouxbqcpoimuz1po .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdKII:q9Jy-I8_V8rM89Gwd-S7dVuyZ0QKQqlc16kifnxpPcA 2026-01-07 04:33:10.361207+00
+t6n1mgq1rutytpwnf99hjdy7755yjobx .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdT1x:u69qpiQL20cF2uSXRcclSO4T1Gg-An8HXityRdebKlE 2026-01-07 13:52:53.087787+00
+vp0dwl3sbwo7h81hgr9b8ayboioupmdb .eJxVzEEOwiAQheG7sDYExsJMXepar0AGGKTRtEmxC2O8uzbpQrfve_lfKvDyqGFpMochq4Oyzqrd7xo53WRcabiOTwppmkWvrDdp-jKdOFU5T1nux-3-16jc6jcgBMlEICCE7A3aHl0GL9h50yUq0nMH-2iZEvpCSGCdsYzFZynRgXp_ALRSOH4:1vdTO2:acbcI9s0vEP8f3dg0lGWwJOqzSfG6KPqkpRdedtOICo 2026-01-07 14:15:42.323427+00
+ow87ocp3z6agi921ig6rvhi2gdmgjqm0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdKJR:3nsseCWvWT36YNtzNJAf9k-zwpEnfVZ4lggZXxlaNUw 2026-01-07 04:34:21.145922+00
+nyecj3e2szlqfjbr1kv0tx6lpvnytsvf .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdNJm:7Il9RT2odM-UZeuwQr16rzLuE9IS5mWxX_zn7MX1Kgs 2026-01-07 07:46:54.056217+00
+9xx2woj30wpzptin60ny0bn3785h0wud .eJxVzEsKwjAUheG9ZCwhMU8c6li3EO4rpigtNHYg4t610IFOz3f4X6rA8mhl6TKXgdVB2WjU7ndFoJuMKw3X8ZkLTbPolfUmXV-mE1CT88RyP273v0aD3r4BTg6NkANEdMYFjxkjR2QASygU_R6trVGEcogsKYhPnKoDMFRzUO8PE_I6yQ:1vdYPe:wq6JRZ5pRJXdstpZwzLMUmFKfqusOH1ErVOzjgQFRfI 2026-01-07 19:37:42.527958+00
+o3xqaekr67ahq93g6gkq54o6975k4jyh .eJxVjMEKwjAQRP8lZykxm02sRz3rL4Rkd2uK0kBjDyL-uyn0oDCXmfeYtwpxeeawVJnDyOqo9oBq97umSHeZVjTeptchUJmlW3G3kdpdyzlSlktheZw2_e8jx5rbgTNAyINNNpHXvU3GaUzGoGkdBtYOfDN6dk5aIlkWJPAJAI1lVJ8v0dA4-Q:1vdKLk:jgyTWpOx_0AQ2AEm26zXK0EPYMBk_DXSS6ZTMV0IS7A 2026-01-07 04:36:44.041279+00
+uc938p1xr83nentrhcqndinfeqn1krl8 .eJxVjEEOwiAQRe_C2jQg4IBLXesVyDAzlUZTkmIXxnh326QL3f389_LeKuH8LGluMqWB1VEZG9Tu981IdxlXNNzGV0hUJ-lW3G2kddd6RipyqSyP06b_NQq2sgScAGK0AXT2gT1Tb10Gj1pnQoCs2XqKkTUbSy72NgqwPuDeLIuZ1OcL6rg5wQ:1vdL2l:Ta0a9aJxOQ7UfIAy_mQ86KYrv-uO6IClJa-v0HVsx1k 2026-01-07 05:21:11.695993+00
+kc7uumdny7wr889e1afalr6b8ar1vy5r .eJxVjDsOwjAQBe_iGlle_2RTQg1XsNbeNY5AiRSTAiHuTiKlgOYVb0bzFgmXZ0tL5zkNJI4CLIjD75ux3Hnc0HAbXyGVaWa5YbmTLq_TGUvjy0T8OO36X6Nhb2sgO-2jMrYCazJM2VVyTBBAZQMaLZVclDYYvCcNAOu6YKomVLFELz5f23g5Dg:1vdLca:qPn7TSk7P7cGgjTRhso9JDsVAz6lS7I_xuSY38sjlVY 2026-01-07 05:58:12.735751+00
+zsnfre1kx07wcxe5zcqge2j5wt45frfq .eJxVjMsKwjAQRf8lawl5T-LSrvUXQpIZTVEaaOxCxH-3hS4U7uqew3mzmJZnjUunOY7IjkwazQ6_b07lTtOGxtv08rG0mfiG-U46v7QhlUrnhvQ47fpfo6Ze1wCBcB4ITFZkEFJROrsgpAHISlm0xft1Ll-DBh-sU8EUrQSillJ4ZJ8vvw84Jw:1vdM6o:a4XzS2YaTJ-tHFF4-KJFMLGGDV4FNelbxIfzCfTkRIE 2026-01-07 06:29:26.545302+00
+09w6caq3241el9qj09si2k2l35oaxk0l .eJxVzMsKwjAQheF3yVpKMrnWpV3rK4RJZmqK0kBjFyK-uxa60O35Dv9LRFwfJa6NlziROApljDj8rgnzjeeNpuv8DDHXhbuNu11ad6kD5sLnSnw_7fe_RsFWvoFkJPoAxidWgC5oQ4FAZoVuNFlrgJ5dT9IxebaaLGi0WmYMClQaWbw_yIg46g:1vdMQ7:L62sBalnLhS0P6BFvq_u22Rsf9XnU-S2BAiK_ukr_QQ 2026-01-07 06:49:23.622854+00
+9sn58mgs6fcf449lrzatr2s45cpsp0b5 .eJxVjEEOwiAQRe_C2jSFMkBd6lqvQIZhkEZTkmIXxnh3adKF5u_e-3lv4XF9Zr9WXvwUxVFIo8ThlwakO8-bmm7zy3kqC3eb7nZTu2s5I2W-lMiP037_a2SsuQWQDDkGMP1gnYoUdMBRR3BaMhDqJCNqTJBwtEqSboxt3xYsDCqA-HwB8Ck5iA:1vdYaz:w702v_-yQCfMolKxUJ20yJhPHFU9lvt-feS19FlCdyA 2026-01-07 19:49:25.328687+00
+n5o9jlncj8pbpcz1bi3bzo97s7wgfpr0 .eJxVzM0KwjAQBOB3yVlCfjZt4tGe9RXCdrM1RWmgsQcR391WetDbMN8wLxFxeeS4VJ7jmMRRaHDi8Nv2SDeeNhqv09NHKjPLjeUuVV5Kh5T5XBLfT_v87yNjzd9vBRY0tKjXYMkwJ9MGPTgO7K3rycDQWNWQQwCPwTqyXjE7vUoC8f4Aqd44Mg:1vdMW0:503WB9M9YvUDKblvl8l2wASehJlE20iClj5yWRAHDuo 2026-01-07 06:55:28.122131+00
+39f6t5vqcbka83xwegc0m5huy8ucja0g .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdToZ:URGFQMRTKX3rLCHd4RiBq46F3Q0Hz6QsFp56p9nhv9A 2026-01-07 14:43:07.91834+00
+rwk7w24lyqt8z2lbjwjb4gym9zz2w37q .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vcbfg:blNeEb96Ak1dNm8pHyvH3xBWcPZleYkl6TWXUZvRLAk 2026-01-05 04:54:20.04913+00
+olgel0rh1bojqmtv6ichenz1oakyk9kd .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdUzz:DcwetjaDihgyG7hZP5dPYOKNA5YkeIEiwzmrT9SqlAA 2026-01-07 15:58:59.236094+00
+alypdl6if5fq51pzi0tcwsfiuxjhtkk5 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdX3U:J0yZjz9D5QPklgVQ1ESH9kbg86HQbCFVJZoDB0Jldf0 2026-01-07 18:10:44.696691+00
+dwml3fjbcdzou0r7fd5rzbugxhgesg3w .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vcbzp:zHHbYg8eoS3DFNpmxVPBmeMmCWlIGcU10KoKlX2DYUM 2026-01-05 05:15:09.939358+00
+p1s6h21z7rmkdcmzgy7j2xikjyv1d4n2 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdP1f:Yp76dysSi555c8IaMpu2gvzam_t3au99vkaWkul4orA 2026-01-07 09:36:19.202939+00
+hz7rbxcclgmnc3nyaqfon8oww8o107p8 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdV66:OyCX6gIgPTCe_gM03S2CslVJ3CoagOm607UOPEmH04I 2026-01-07 16:05:18.491045+00
+f7ar77khxddht59k1lh648dim05419dg .eJxVzMsKwjAQheF3yVrK5DrRpa71FcIkmZiiNNDYhYjvroUudHu-w_8SgZZHDUvnOYxZHIS0Vux-10jpxtNK43V6-pDazMPKwyZ9uLQTpcrnlvl-3O5_jUq9fgNojWaDIBMbTdIW0gUYrOKEMkIxUUWUzjiHCs3eAZGlkr0DDVyUF-8Pw744jg:1vdV90:4htdxelkFz4BNCgF9-Nx0KQjDTsg9BXs--14pVmrRlg 2026-01-07 16:08:18.520897+00
+ni74yxzzexo7144mxg03ig64j9s0cqrk .eJxVjEEOwiAQRe_C2jRAAcGlXesVyDAzSKMpSbELY7y7bdKF7n7-e3lvEWF5lrg0nuNI4iSUdeLw-ybAO08bGm_Ty0esM3cb7nbSumsdAAtfKvHjvOt_jQKtrAGyAanPSGCU1rkP5IJjSNZIJvTKBSIvGaRPyuh15eB7i1lK423IR_H5AvlROXQ:1vdVUo:pOKYQphOLuJw-j3gaUCln-gYsjH9MbjznKcnv547_jc 2026-01-07 16:30:50.742877+00
+5p06jpzay9crkf0zspjb89hsg8osu0nk .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdXQR:Wbniz5v6Y-uMpZpVgiF_cfhUO6b0A8Nl96kpEkpF0ow 2026-01-07 18:34:27.651331+00
+rsyednuhqyi8ipehs93gwhdv7y6fuh13 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdU1l:uhsc2SlLkRWY4WeUtH9ppbD3n9PLZ11AlruQN_-qf9k 2026-01-07 14:56:45.693401+00
+0jon4m4gcdcjmj49z3nyjrjzgc8q273s .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdQLb:CUI1bM8_QbPohFCee2id1DdR06Nupk3GjXOVUVwf17Y 2026-01-07 11:00:59.204019+00
+80vur3kc2qm05iio3phlcbyt2my1c9fr .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdNwE:Lxi67CAY5SOoS5_jU7sIt7kdyd8gmEVhUCLfwRf9LK8 2026-01-07 08:26:38.936535+00
+hhbi28o3q73tfid5ivyunvricu1i7rbs .eJxVzEsKwjAUheG9ZCwh74dDO9YthHtvUlOUBho7EHHvWuhAp-c7_C-WYH3UtPaypCmzI5MmsMPvikC3Mm80XednSNSWwjfmu3R-aQNQLeeWy_203_8aFXr9BgxoREmoAwQrtSNbRheVVgajUUF5slIYICNwdOgcZY8qavQkBXmp2fsD0UI4vQ:1vdOSA:APOulsmtOHoGRQNXiOsFivLI8tdq8_JgO1H4VyfSzqw 2026-01-07 08:59:38.103965+00
+qf860n125ngiowxg2z0fw7f9aitz1ryz .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdYDP:c9AinBEIVxQaPjHfXW9YZV4AIHp8QLgEkorLrRsxWdQ 2026-01-07 19:25:03.636263+00
+90n2rpaxd06k9c75zjoxcev1gazsytla .eJxVzMsKwjAQheF3yVrKjOnEiUtd6yuEXCamKA00diHiu0ugC92e7_C_lfPrs7i1yeKmpI4Kyard7xp8vMvcabrNL3axLjJ0HjZpw7WefSxyqUkep-3-1yi-ld7GqClnMuDBokU4GA6iBYxGTcQALMhB74MfrYw52WSIAiJbzAykPl-srTfj:1vdYFY:_vcqCCw_jlcFjmsVXaRIpi3cn1hXqfVDXTZq-vOExDI 2026-01-07 19:27:16.336176+00
+fsmmlzs3edhpbbejeco77aymy6jbtio8 .eJxVjMsKwjAQAP8lZylJunl5tGf9hbDZrKYoDTT2IOK_20IPep0Z5i0iLs8Sl8ZzHLM4CuVBHH5pQrrztKnxNr18pDpzt-luN6271AGp8Llmfpz2_O9RsJV14FAGvKLl5AGTNlZK2WNg0M7KPmhKThEZT0G5NQMgRSFbo4kQXJLi8wXZ8zki:1vdoq8:BaBLInRBS3rVCc3QzXX_uiumRkviLYl5nicvktfLeCg 2026-01-08 13:10:08.776091+00
+a7485s6yepf8wt0vi2su84x5fn1bpghb .eJxVzDEOwjAMheG7ZEZVipM4YYQZrhA5tksqUCu1dECIu0OlDrC-7-l_mUzLo-Zl1in3Yg6mDcHsftdCfNNhpf46PGPmcdJm5WaTubmMJ-Kq51H0ftzuf41Kc_0GvEpEF4AcQiKI5GGPGJEhhi6hWrGdT61XZglJHKOwgJfipHgLbN4fyQY5UA:1vdZjt:Ce7Uq42qEZtwr8Cp0oNyQyDj537HkdcVkwCqu0oH35w 2026-01-07 21:02:41.96384+00
+idev17tcpzgrti8sxgy60o9951o222nd .eJxVzEEOwiAQheG7sDYNUGAGl3atVyAwQ6XRlKTYhTHeXZt0odv3vfwvEeL6KGFteQkTi6NQDsThd02RbnneaLrOTwxUl9xt3O3SuksdIpV8rpzvp_3-1yixlW_AO4KcsFeakRURJ2Wj1GgtjCMhG4BkfDLsHPbWE7A0PUiQTAq1RvH-AOEEOLc:1vdZsN:lAADoNrQoEfwKqawApoielJMlkffTlGW39wAE1cZ9wE 2026-01-07 21:11:27.765305+00
+0br7gy240n2h94no8l9xc6ott12aw1pu .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdfgm:o_lcpmkkk9CPf0xLqpwTlYAG_HB5NuVf00lnK5Br0GM 2026-01-08 03:23:52.504583+00
+3b0n2aqm3qq9is1ndaxstlrj3xu87vwk .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdZFh:G1FbRzr8cO0aB0_TfshPVbAO_5-YcY3bhuM0Y0fAkQc 2026-01-07 20:31:29.46997+00
+oxyctf0zy3xvr5y42hwo03v3jmoqolq5 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdfst:TqzjPm3xWXBaQH-QGA9WD_-I3HdMW-dmvvJAXSpd8LA 2026-01-08 03:36:23.397502+00
+0rgpp29062hxo4x9pzntvwq4pxify0mn .eJxVzMsKwjAQheF3yVrCpDEzU5e61lcIuUxMUVpo7ELEd9dCF7o93-F_KR-WR_VLk9kPWR2UQat2v2sM6SbjSsN1fLJP0yx6Zb1J05fpFFKV85Tlftzuf40aWv0GokkUHcE-IEDJEboeKDGVBBk6B721aJgESKiAceLYMWNmFIgFjXp_AL8VOEI:1vdZGv:yqb4ypmkWrGndSP7lo2qOSZiG7ZmlSxrnRNs5cA4f04 2026-01-07 20:32:45.613164+00
+kleci1vtxjnbfhamz1f03ce6tpor4vyg .eJxVjDsOwjAQBe_iGlm2Wf8ooYYrWGvvGkegWEpIgRB3h0gpoH3zZl4i4fJoaZl5SgOJg9AOxO53zVhuPK5ouI7PkEqfWK5YbmSWl37C0vjcie_H7f7XaDi3tQ3kvTWIzpUMVVHEPegQqnesI_jA3li0MaNCAHBKGUuWvhphrhrE-wPH0jjK:1vdZIC:TNwUuKAT_9uaragkmV-m7T4-3496DgZzCwZT3gjitls 2026-01-07 20:34:04.76286+00
+q5qv4rgausbn8s3elb36exfuytv8lrv0 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdhnl:y9Cvf0jmm4LDFEP0-3rmBCRc0USkznWQqvMHnivmCl0 2026-01-08 05:39:13.888209+00
+s83ukmphdzs0l7w0xlwghessb0mjsupm .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vda5m:WArf7-pYfS7etcqDwjtSCU-7ose7RM0WXCkzbzo-N2E 2026-01-07 21:25:18.144266+00
+1o7xi584tp60qpk6rf804549vftqxhi3 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdYMZ:R57ZTPoPo4-_SxK7jVj1q3Z9pYHHEgbeuxh7REM7_TU 2026-01-07 19:34:31.959335+00
+jh5fotx185s9zcfrodzmo4eijzvbt7dy .eJxVzEEKwjAQheG7ZC2BJJMmdanreoUwncyYojTQ2IWId9dCF7p93-N_qYTro6S18ZKmrI7KdEYdftcR6cbzRtN1fsZEdWG9sd6l6Us9IxUeaub7ab__NQq28g2AA_aexMloCayJ0TlyaAgB2YJQ6EUIIuVghZFDHwU6MdlHZ5FZvT_uvTor:1vdYRI:_ZJSnrnlr1b2PtLISEVfCxdHBABWnrUKKL9vqSFS79w 2026-01-07 19:39:24.053037+00
+1gcuqt21nmtcuy5qd75oatagpsvkcfr2 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdZ0l:nCwVIh_9ENN2PH2yKQdGa84AefrWA8L0qdhBlLMoMmA 2026-01-07 20:16:03.605548+00
+bepr8gzjitffvnmmwc1voijscdcb6ypb .eJxVzMsKwjAQheF3yVrCpDEzU5e61lcIuUxMUVpo7ELEd9dCF7o93-F_KR-WR_VLk9kPWR2UQat2v2sM6SbjSsN1fLJP0yx6Zb1J05fpFFKV85Tlftzuf40aWv0GokkUHcE-IEDJEboeKDGVBBk6B721aJgESKiAceLYMWNmFIgFjXp_AL8VOEI:1vdZ1l:Sh5BRYd5ItdbjvS8u6J1jF5kT5sgYa1zpocinYZs0i8 2026-01-07 20:17:05.25594+00
+lpicv04ig1ft39gri3kvc4sq2wr52e87 .eJxVzEEOwiAQheG7sDYNUGAGl3atVyAwQ6XRlKTYhTHeXZt0odv3vfwvEeL6KGFteQkTi6NQDsThd02RbnneaLrOTwxUl9xt3O3SuksdIpV8rpzvp_3-1yixlW_AO4KcsFeakRURJ2Wj1GgtjCMhG4BkfDLsHPbWE7A0PUiQTAq1RvH-AOEEOLc:1vdaRV:HsIbOIsgd0I4nO9G-Y-ghZH8ZIOcxxMXvmD-hKVjal8 2026-01-07 21:47:45.614841+00
+3kxvmxv8fzdqpe9gnycggnb2w24pv42d .eJxVzMsOwiAQheF3YW0IA8rFpV3rK5BhGKTRlKTYhTG-uzbpQrfnO_lfIuLyqHHpPMcxi6MA68Xud01IN55WGq_T00dqM8uV5SZdXtqAVPncMt9P2_2vUbHXbwDJGYMQdLLFklHe8x4SZW1DdugTaC7FQaaSkEmBUmDQaV0OzqjASbw_8LM5rQ:1vdabR:gYk6dP055oTa_wy6CqB8qPow_GP4zaby9z5_z1-ok18 2026-01-07 21:58:01.494449+00
+odizm09jd2kjyf9lxqdibth2nuzoakfw .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdhEl:3PAjxjBUcS8ej4lt50uXEBmSPFUHDdedlaAsVP1y7fs 2026-01-08 05:03:03.269143+00
+0ifzuqkfumh75vg58eo6dudlg2snpdfe .eJxVjDsOwjAQBe_iGlm2Wf8ooYYrWGvvGkegWEpIgRB3h0gpoH3zZl4i4fJoaZl5SgOJg9AOxO53zVhuPK5ouI7PkEqfWK5YbmSWl37C0vjcie_H7f7XaDi3tQ3kvTWIzpUMVVHEPegQqnesI_jA3li0MaNCAHBKGUuWvhphrhrE-wPH0jjK:1vdZWq:Py-NW5Fk82GtGyCExm7IoQKaxtNpYwA55iBiY6vsYjc 2026-01-07 20:49:12.058117+00
+0qg2ut4u6bsip0jpuaeqg7l6k5zrc2p4 .eJxVzDEOwjAMheG7ZEZVipM4YYQZrhA5tksqUCu1dECIu0OlDrC-7-l_mUzLo-Zl1in3Yg6mDcHsftdCfNNhpf46PGPmcdJm5WaTubmMJ-Kq51H0ftzuf41Kc_0GvEpEF4AcQiKI5GGPGJEhhi6hWrGdT61XZglJHKOwgJfipHgLbN4fyQY5UA:1vdZZA:XaWCPliQy4IgKY578-Qqw1_kYzYsWS4FsXZFZ8kmmPg 2026-01-07 20:51:36.6284+00
+431o3fqukh3ihnridp4o95hpta54gmi4 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdZeJ:ndG1t8oFOdRDN9a7KHDweKcn2jbZVUnZCMdphj_aleA 2026-01-07 20:56:55.873539+00
+dqcz9dzl73ugf2mly9q5bxo9s7wogv1w .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vdcvf:ayMh0TVF8UF91EIjs_chmn4NNsVAlBgTpxtE4iRG3DA 2026-01-08 00:27:03.450324+00
+ktsp92u2lpt1atl9mi1b8u5xwgew80zt .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdnFz:Kpatt-Hn8tlSgAgnFoVp5kzqzwrtk5UI70vfN16wmog 2026-01-08 11:28:43.080098+00
+3avtsz9y0n32w0c4r0ksnt12pg9bnyyk .eJxVjMsKwjAQRf8lawl5NOnEpa71F8JkMjVFaaGxCxH_3RS60NWFew7nLSKuzxLXykscszgK7YM4_L4J6c7Thsbb9IJI88Jyw3InVV7nM1Lhy5z5cdr1v0bBWlrA9SY7ZSD1qWOPCUE7IE8Du2SDapOt6QwRaI3oEdCGZqmQsRucBfH5AukUObo:1vdasG:bRpZ93Oaeaog_DGJJuZQEDhM9Up2JbxQn4_iGEWZmME 2026-01-07 22:15:24.605982+00
+tv9d922ho39jcohwbfakkdbsj039w4ek .eJxVjEsKwjAUAO-StYR8m_dc6lqvEPJ5MUVpoLELEe9uC13odmaYN_NheVa_dJr9mNmRSVDs8EtjSHeaNjXephf41Gbim-a76fzaziFVurRMj9Oe_z1q6HUdRGu1AxywFMwIWmkBMUvIZIQILhVIxoiCpBBDNlGglcYNhuSa6aLZ5wvIOTjE:1vdgqt:ZgGjRAa5IzkY3S8UZoU3eXQyn3RJeGbLxFbMGC--mI8 2026-01-08 04:38:23.174062+00
+pscd6kaou7guvvbiq4x2y5zsjk5nr5sm .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdhqo:I6fal9Xi4BDzigLua8xsBmexK9-KPfNeSi3e7Z-hK5g 2026-01-08 05:42:22.855618+00
+fiduiwd3nrfiho5xbdz8z8ubvej0mm7j .eJxVzMsKwjAQheF3yVpKrmPiUtf6CmEymZiiNNDYhYjvroUudHu-w_8SEZdHjUvnOY5ZHIRSQex-14R042ml8To9faQ287DysEkfLu2EVPncMt-P2_2vUbHXbwCMz6Y4KIqV1wQqoXVkJBUjGcFg0JSkR4K0t4oAinbkiGQwIIu34v0B3A45Iw:1vdpvm:RmfVeWBQrdETDD-7O2MaUaOawOkHEmMn6d6MGHPU7tU 2026-01-08 14:20:02.922288+00
+bxiexa96u715o4bqn90fi0nqf841m56d .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdcdD:cv0KV_PpvWT2OxYzDwcoOIguNg_H84-KIJUARNh_RnM 2026-01-08 00:07:59.01948+00
+e2adc41m8sidz6251ial4r7mya1q1ily .eJxVzEEOwiAQheG7sDaEYShQl3atVyADTKXRlKTYhTHeXZt0odv3vfwvEWh9lLA2XsKUxVGA0-Lwu0ZKN543mq7z04dUF5Yby12avNSBUuFzzXw_7fe_RqFWvgFjNGj06DUDOmctp0zIyitQRpEaqSfXa08-AmawpsPoXII8ZmV16sT7A6RsOCo:1vdd0Z:5DR68UgSPa-x9HfjAS1oyzmkfVSTueMW9dHXRGU0DyY 2026-01-08 00:32:07.394832+00
+kbqcch2wxn04oyam0sdwknj7sel4gwus .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdojh:6rG42SaN7pyxPESRfRhVqBD5wGpXCJxN5koUH4jkLtA 2026-01-08 13:03:29.938779+00
+lky6cwdi9fd3dxzk583snmo8notb25tq .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vfGHZ:bxZqboA3-Q4sC8d6Qyk-2andV8gYI1jR-Ka34m4SEAQ 2026-01-12 12:40:25.50546+00
+uq8avnfkwq8s5dpmfa43yoxu0n1cdetg .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdf2Q:aTK4UkwzbfC5INtyPeTLb-vjX7XiV819_8jF1t9AVRo 2026-01-08 02:42:10.665042+00
+sx2e9qjfbrskg4m0cgnoal8hnjhggxuc .eJxVzE0OwiAYhOG7sDaE8hPApa7rFcgHDNJoSlLswhjvrk260O08k_fFAq2PGtaOJUyZHdlgFTv8rpHSDfNG03V-upDaAr4x36XzSztTqhhbxv203_8alXr9BsjQ4FIsirwTRSFJAyOhrSleSOVRJOkIK5wSpTgiTcg-w4KgUxTs_QH5gzp_:1vdf5Y:CfadCou9x-oaFKNvHLcoKKMTeeufPlNPpZB6imePS58 2026-01-08 02:45:24.250372+00
+1nod0pco7yok8wgg6u4phzhfpht9nenc .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vfUhC:A1u1m-HyoiTqQM_TQCB7OO74px77QnoLxYm7ux0NKEs 2026-01-13 04:03:50.255451+00
+wse23rldse8m8xt3oyg0k8j362grq21k .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdkpV:DjANty3bXvMy9D-bNioVdjZHSwdtB6KleUE1p_baW5E 2026-01-08 08:53:13.468309+00
+sm3meitbsh8b6kwsaqjqtq8h7svobli0 .eJxVzEEOwiAQheG7sDYNTIFpXdq1XoEMwyCNpk2KXRjj3bVJF7p938v_UoHWRwlrlSWMSR2VQa0Ov2skvsm00Xidnl3geZFm42aX2lzmgbjIeU5yP-33v0ahWr4BZA0RTcrRZTI2YRbXO-2itdqTzQhMTrrOeWSTWmhBG0ToBchDz169P9lBOJ0:1vdbH9:kA2vLXUlOUsQuTfkJyMaIs9BiRQP-JCrIhH6DG14OAU 2026-01-07 22:41:07.996517+00
+xbhmikjt649b8w24femafrip571l4vup .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdhHf:k3CdciJ5x-0QVR-la92vX4Yxei8hQzqFjnKn2dnAh5U 2026-01-08 05:06:03.245579+00
+h6gssiaawwggr8j0fvfszt30umoxfda8 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdfwi:U6hciSTknZ0vVLDLAevGyp7smBfPUKPpwId8qW--068 2026-01-08 03:40:20.277347+00
+evjvk661wz8yhdmotfrmsjz8pyiquo7h .eJxVjUEOgjAQRe_StSEdO9DWpaz1Cs10OliioQmVhTHeXUhY6Pa_n_feKtDyzGGpMocxqZMCC-rwu0biu0wbGm_TywUuszQbbnZSm2vpibNcSpLHeb__OTLVvArQenbedKZlNCAxJUStBWCwFmgtG2u7FD1HR0QYodWM3YDm2JL2RtTnC71WOJE:1vdbTt:KsdSdx4lUXGnTcFl_88AB_zWKD0v09yPpJpbew_XLuc 2026-01-07 22:54:17.471713+00
+g0lqrnumaeybta3fv21l7tdgb7dzrjbg .eJxVzEsKwjAUheG9ZCwlSfNoHNqxbiEk92GK0kBjByLuXQsd6PR8h_8lYlofJa6NljihOArljTj8rjnBjeaNpuv8HCLUhbqNu11ad6ljgkLninQ_7fe_RkmtfANEqBUYkhxkYvCYJYKUjEqb4PrMqifNTIPS3nsFZEMmcJqdBQvZi_cHC_86TQ:1vdfyw:te2iifKi6h3tN6jAC0z4sBr8Xtwwz9ZNQBND8WWthY4 2026-01-08 03:42:38.800225+00
+6tqxdaiebwhmtej3x7rtjvwuh573a4pb .eJxVjL0OwiAURt-F2RDoLX-OdtZXIBe4SKMpSbGDMb67knTQ5Ru-c3JezOP2KH5rtPo5sSOTFtjh9w0Yb7R0NF-Xp_WxrsQ75jtp_FInjIXONdH9tOt_jYKt9LZLRmZNhjKJMA4EOkklVUCF3xWQh0QKsoxJGBtGgSFY5UBbAKdIsPcH6H45Jw:1vdhJ4:4-5UFm0vSg3cyNODqgZ-SuBYmnG2_8Bm-rtAH5j1qnc 2026-01-08 05:07:30.032311+00
+e8366y4or7joktdnqgjyumwb37vhlobk .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdgYt:_9qHylSvaKKrahC0PUJpTlWcM5XjuzCObDLIMTdaPaQ 2026-01-08 04:19:47.077299+00
+o255hogra4po3ewo5ycfed3sijsmvotf .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdbsi:VoAm7aOuCZrG2k5mqdir3xUBFR3wrdaYgyru183fRbY 2026-01-07 23:19:56.838003+00
+qo0kaeh4dgp8zgidtghq3q15ac3cn112 .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdhOP:DHJtnvQ_bQAN78-0S1f6IxHy1GlY-PITYTryyJnBpVU 2026-01-08 05:13:01.11403+00
+6mi4fr54cy3j9ctpl29ekncc47j60uth .eJxVzMsKwjAQheF3yVpCzXXiUtf6CmEyk5iiNNDYhYjvroUudHu-w_8SEZdHjUvPcxxZHIQWu98tId3ytMJ4nZ4Qqc1Zriw36fLSTkg1nxvn-3G7_zUq9voNIBiP3gFgsIMryVqdjUZFxqZS3EDMRZk9cFAeDHJgpkIGlSpAYJN4fwCS8Dlt:1vdbuY:abQ-8WClaMW2dca0EqDdHjRZkQTxi5QUGermY-jlcbM 2026-01-07 23:21:50.675027+00
+\.
+
+
+--
+-- Data for Name: file; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.file (fileid, fileindex, jobid, pathid, filenameid, deltaseq, markid, lstat, md5) FROM stdin;
+\.
+
+
+--
+-- Data for Name: filename; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.filename (filenameid, name) FROM stdin;
+\.
+
+
+--
+-- Data for Name: fileset; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.fileset (filesetid, fileset, md5, createtime) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_account_payment_methods; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_account_payment_methods (id, type, display_name, is_default, is_enabled, is_verified, country_code, instructions, metadata, created_at, updated_at, tenant_id) FROM stdin;
+25 bank_transfer Bank Transfer t t f Please complete payment and confirm with your transaction reference. {} 2025-12-09 02:03:03.134312+00 2025-12-31 20:58:04.328539+00 90
+\.
+
+
+--
+-- Data for Name: igny8_account_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_account_settings (id, updated_at, created_at, key, tenant_id, value) FROM stdin;
+1 2025-11-26 04:22:36.230727+00 2025-11-26 04:22:36.230745+00 user_preferences 5 {}
+\.
+
+
+--
+-- Data for Name: igny8_ai_model_config; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_ai_model_config (id, model_name, display_name, model_type, provider, context_window, is_active, is_default, created_at, updated_at, credits_per_image, quality_tier, tokens_per_credit, capabilities, cost_per_1k_input, cost_per_1k_output, max_tokens, landscape_size, square_size, valid_sizes) FROM stdin;
+5 dall-e-3 DALL-E 3 - HD Quality image openai \N f f 2025-12-24 01:21:08.347511+00 2026-01-03 21:46:19.717487+00 5 quality \N {} \N \N \N \N 1024x1024 []
+6 google:4@2 Nano Banana - Premium image runware \N f f 2025-12-24 01:21:08.347939+00 2026-01-03 20:12:21.7245+00 15 premium \N {} \N \N \N \N 1024x1024 []
+12 bytedance:seedream@4.5 Seedream 4.5 - High Quality image runware \N t f 2026-01-12 09:31:14.196836+00 2026-01-12 18:26:59.096384+00 5 quality_option2 \N {"high_resolution": true, "provider_settings": {"bytedance": {"maxSequentialImages": 4}}, "max_sequential_images": 4} \N \N \N 2560x1440 2048x2048 ["2048x2048", "2304x1728", "2560x1440", "1728x2304", "1440x2560"]
+10 runware:97@1 Hi Dream Full - Basic image runware \N t t 2026-01-03 16:54:17.244617+00 2026-01-12 23:39:32.397493+00 1 basic \N {} \N \N \N \N 1024x1024 []
+4 gpt-5.1 GPT-5.1 - Premium text openai 8192 t f 2025-12-24 01:21:08.347068+00 2026-01-03 23:49:12.914414+00 \N \N 1000 {} \N \N \N \N 1024x1024 []
+1 gpt-4o-mini GPT-4o mini - Fast & Affordable text openai 128000 t t 2025-12-24 01:21:08.345002+00 2026-01-04 22:12:40.728863+00 \N \N 10000 {} \N \N \N \N 1024x1024 []
+3 gpt-4o GPT-4o - High Quality with Vision text openai 128000 f f 2025-12-24 01:21:08.346678+00 2025-12-24 01:21:08.346683+00 \N \N 1000 {} \N \N \N \N 1024x1024 []
+\.
+
+
+--
+-- Data for Name: igny8_ai_prompts; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_ai_prompts (id, prompt_type, prompt_value, is_active, updated_at, created_at, tenant_id, is_customized, default_prompt) FROM stdin;
+17 clustering # Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n "keywords": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n "clusters": [\r\n {\r\n "name": "...",\r\n "description": "...",\r\n "keywords": ["...", "...", "..."]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- "best foot massagers for plantar fasciitis"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- "heated shiatsu back massager"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- "are back massagers safe during pregnancy"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - "what causes plantar fasciitis" → "best treatments for plantar fasciitis" → "foot massagers for plantar fasciitis"\r\n \r\n- **General → Specific → Variant**\r\n - "foot massagers" → "shiatsu foot massagers" → "heated shiatsu foot massagers"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - "do vitamin c serums work" → "how vitamin c brightens skin" → "best vitamin c serums" → "vitamin c vs retinol"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - "heated massagers" → "heated vs unheated massagers" → "heated massagers for arthritis"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ "foot massagers for plantar fasciitis" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ "vitamin c serums for brightening" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ "massagers" (too broad, no natural ecosystem)\r\n- ❌ "renpho foot massager cord length" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - "back massager" + "back support pillow" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n "clusters": [\r\n {\r\n "name": "[Natural, SEO-relevant cluster name representing the root topic]",\r\n "description": "[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]",\r\n "keywords": ["keyword 1", "keyword 2", "keyword 3", "..."]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- "Foot Massagers for Plantar Fasciitis Treatment"\r\n- "Organic Cotton Bedding for Summer"\r\n- "Vitamin C Serums for Skin Brightening"\r\n- "Waterproof Car Trunk Organizers"\r\n\r\n**Poor Cluster Names:**\r\n- "Massagers" (too broad)\r\n- "Products" (meaningless)\r\n- "Heated" (just a feature, not a topic)\r\n- "Queries about safety" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY]."\r\n\r\n**Example:**\r\n"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options."\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** "All keywords with 'heated' go together"\r\n❌ **Forced categorization:** "Must fit everything into clusters"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use "informational" or "commercial" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** "massage" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n "name": "Heated Shiatsu Back Massagers for Pain Relief",\r\n "description": "This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.",\r\n "keywords": [\r\n "heated back massagers",\r\n "shiatsu back massager with heat",\r\n "best heated massagers for back pain",\r\n "do heated massagers help muscle pain",\r\n "heated vs unheated back massagers",\r\n "shiatsu massage for lower back pain"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n "name": "Organic Cotton Bed Sheets for Hot Sleepers",\r\n "description": "This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.",\r\n "keywords": [\r\n "organic cotton sheets for summer",\r\n "best cooling cotton bed sheets",\r\n "breathable organic cotton bedding",\r\n "cotton vs linen sheets for hot sleepers",\r\n "organic cotton king size sheets",\r\n "are cotton sheets good for hot weather"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n "name": "Massager Products",\r\n "keywords": [\r\n "foot massagers",\r\n "back massagers", \r\n "neck massagers",\r\n "massage oils",\r\n "massage chairs"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word "massage" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters. t 2025-12-20 20:09:13.413549+00 2025-12-20 20:04:43.984656+00 90 f # Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n "keywords": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n "clusters": [\r\n {\r\n "name": "...",\r\n "description": "...",\r\n "keywords": ["...", "...", "..."]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- "best foot massagers for plantar fasciitis"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- "heated shiatsu back massager"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- "are back massagers safe during pregnancy"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - "what causes plantar fasciitis" → "best treatments for plantar fasciitis" → "foot massagers for plantar fasciitis"\r\n \r\n- **General → Specific → Variant**\r\n - "foot massagers" → "shiatsu foot massagers" → "heated shiatsu foot massagers"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - "do vitamin c serums work" → "how vitamin c brightens skin" → "best vitamin c serums" → "vitamin c vs retinol"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - "heated massagers" → "heated vs unheated massagers" → "heated massagers for arthritis"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ "foot massagers for plantar fasciitis" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ "vitamin c serums for brightening" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ "massagers" (too broad, no natural ecosystem)\r\n- ❌ "renpho foot massager cord length" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - "back massager" + "back support pillow" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n "clusters": [\r\n {\r\n "name": "[Natural, SEO-relevant cluster name representing the root topic]",\r\n "description": "[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]",\r\n "keywords": ["keyword 1", "keyword 2", "keyword 3", "..."]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- "Foot Massagers for Plantar Fasciitis Treatment"\r\n- "Organic Cotton Bedding for Summer"\r\n- "Vitamin C Serums for Skin Brightening"\r\n- "Waterproof Car Trunk Organizers"\r\n\r\n**Poor Cluster Names:**\r\n- "Massagers" (too broad)\r\n- "Products" (meaningless)\r\n- "Heated" (just a feature, not a topic)\r\n- "Queries about safety" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY]."\r\n\r\n**Example:**\r\n"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options."\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** "All keywords with 'heated' go together"\r\n❌ **Forced categorization:** "Must fit everything into clusters"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use "informational" or "commercial" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** "massage" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n "name": "Heated Shiatsu Back Massagers for Pain Relief",\r\n "description": "This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.",\r\n "keywords": [\r\n "heated back massagers",\r\n "shiatsu back massager with heat",\r\n "best heated massagers for back pain",\r\n "do heated massagers help muscle pain",\r\n "heated vs unheated back massagers",\r\n "shiatsu massage for lower back pain"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n "name": "Organic Cotton Bed Sheets for Hot Sleepers",\r\n "description": "This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.",\r\n "keywords": [\r\n "organic cotton sheets for summer",\r\n "best cooling cotton bed sheets",\r\n "breathable organic cotton bedding",\r\n "cotton vs linen sheets for hot sleepers",\r\n "organic cotton king size sheets",\r\n "are cotton sheets good for hot weather"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n "name": "Massager Products",\r\n "keywords": [\r\n "foot massagers",\r\n "back massagers", \r\n "neck massagers",\r\n "massage oils",\r\n "massage chairs"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word "massage" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters.
+\.
+
+
+--
+-- Data for Name: igny8_ai_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_ai_settings (id, integration_type, config, model_preferences, cost_limits, is_active, updated_at, created_at, tenant_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_ai_task_logs; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_ai_task_logs (id, created_at, updated_at, task_id, function_name, phase, message, status, duration, cost, tokens, request_steps, response_steps, error, payload, result, tenant_id) FROM stdin;
+655 2025-12-29 02:39:14.153749+00 2025-12-29 02:39:14.153765+00 \N auto_cluster DONE ✓ Organized 0 keywords into 1 semantic cluster success 3158 0.004951 2715 [{"status": "success", "message": "Validating 6 keywords", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "auto_cluster"}, {"status": "success", "message": "Analyzing keyword relationships for 6 keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "auto_cluster"}, {"status": "success", "message": "Saving 1 cluster", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "auto_cluster"}, {"status": "success", "message": "✓ Organized 0 keywords into 1 semantic cluster", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "auto_cluster"}] [{"status": "success", "message": "Received 2715 tokens, Cost: $0.004951", "duration": 3.0507023334503174, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "auto_cluster"}, {"status": "success", "message": "Organizing 1 semantic cluster", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "auto_cluster"}] \N {"ids": [803, 802, 801, 800, 799, 797]} {"count": 1, "clusters_created": 1, "keywords_updated": 6} 90
+656 2025-12-29 02:39:34.954902+00 2025-12-29 02:39:34.954908+00 \N generate_ideas DONE ✓ Created 4 content ideas with detailed outlines success 15771 0.026631 4197 [{"status": "success", "message": "Analyzing 1 clusters for content opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_ideas"}, {"status": "success", "message": "Mapping 6 keywords to topic briefs", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_ideas"}, {"status": "success", "message": "Saving 4 ideas with outlines", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_ideas"}, {"status": "success", "message": "✓ Created 4 content ideas with detailed outlines", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_ideas"}] [{"status": "success", "message": "Received 4197 tokens, Cost: $0.026631", "duration": 15.713646411895752, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_ideas"}, {"status": "success", "message": "Structuring 4 article outlines", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_ideas"}] \N {"ids": [424]} {"count": 4, "ideas_created": 4} 90
+657 2025-12-29 02:40:10.316836+00 2025-12-29 02:40:10.316846+00 \N generate_content DONE ✓ Generated 1 article success 25271 0.036330 5558 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5558 tokens, Cost: $0.036330", "duration": 25.056164503097534, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [288]} {"count": 1, "task_id": 288, "content_id": 200, "word_count": 1772} 90
+658 2025-12-29 02:40:39.142693+00 2025-12-29 02:40:39.142699+00 \N generate_content DONE ✓ Generated 1 article success 27816 0.038731 5659 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5659 tokens, Cost: $0.038731", "duration": 27.7455472946167, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [287]} {"count": 1, "task_id": 287, "content_id": 201, "word_count": 1910} 90
+659 2025-12-29 02:41:08.579732+00 2025-12-29 02:41:08.579745+00 \N generate_content DONE ✓ Generated 1 article success 28429 0.033596 5198 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5198 tokens, Cost: $0.033596", "duration": 28.357605695724487, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [286]} {"count": 1, "task_id": 286, "content_id": 202, "word_count": 1778} 90
+699 2026-01-12 11:48:20.275476+00 2026-01-12 11:48:20.275487+00 05935e34-db50-4eec-863d-00d15c5f5787 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [544], "content_id": 216} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+706 2026-01-12 11:49:56.78995+00 2026-01-12 11:49:56.789959+00 14fefee2-5f2c-4479-8463-758167387831 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [542], "content_id": 215} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+660 2025-12-29 02:41:44.666278+00 2025-12-29 02:41:44.666285+00 \N generate_content DONE ✓ Generated 1 article success 35076 0.035326 5364 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5364 tokens, Cost: $0.035326", "duration": 35.013620376586914, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [285]} {"count": 1, "task_id": 285, "content_id": 203, "word_count": 1732} 90
+661 2025-12-29 02:41:57.555978+00 2025-12-29 02:41:57.555983+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 7868 0.008759 1407 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1407 tokens, Cost: $0.008759", "duration": 7.800454616546631, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [200]} {"count": 5, "prompts_created": 5} 90
+662 2025-12-29 02:42:06.164164+00 2025-12-29 02:42:06.16417+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 7602 0.007586 1295 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1295 tokens, Cost: $0.007586", "duration": 7.532714605331421, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [201]} {"count": 5, "prompts_created": 5} 90
+663 2025-12-29 02:42:14.31616+00 2025-12-29 02:42:14.316165+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 7146 0.007721 1305 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1305 tokens, Cost: $0.007721", "duration": 7.080249786376953, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [202]} {"count": 5, "prompts_created": 5} 90
+664 2025-12-29 02:42:22.304679+00 2025-12-29 02:42:22.304684+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6983 0.007769 1301 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1301 tokens, Cost: $0.007769", "duration": 6.922699689865112, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [203]} {"count": 5, "prompts_created": 5} 90
+700 2026-01-12 11:48:32.936687+00 2026-01-12 11:48:32.936694+00 03ba5172-338b-4660-bab0-c1f23cf1179d generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [546], "content_id": 216} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+665 2026-01-01 00:04:58.56093+00 2026-01-01 00:04:58.560946+00 \N auto_cluster DONE ✓ Organized 0 keywords into 2 semantic clusters success 3102 0.005639 2782 [{"status": "success", "message": "Validating 6 keywords", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "auto_cluster"}, {"status": "success", "message": "Analyzing keyword relationships for 6 keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "auto_cluster"}, {"status": "success", "message": "Saving 2 clusters", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "auto_cluster"}, {"status": "success", "message": "✓ Organized 0 keywords into 2 semantic clusters", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "auto_cluster"}] [{"status": "success", "message": "Received 2782 tokens, Cost: $0.005639", "duration": 2.9671573638916016, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "auto_cluster"}, {"status": "success", "message": "Organizing 2 semantic clusters", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "auto_cluster"}] \N {"ids": [804, 798, 796, 795, 794, 793]} {"count": 2, "clusters_created": 2, "keywords_updated": 6} 90
+666 2026-01-01 00:05:24.295278+00 2026-01-01 00:05:24.295284+00 \N generate_ideas DONE ✓ Created 4 content ideas with detailed outlines success 20689 0.025774 4078 [{"status": "success", "message": "Analyzing 1 clusters for content opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_ideas"}, {"status": "success", "message": "Mapping 3 keywords to topic briefs", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_ideas"}, {"status": "success", "message": "Saving 4 ideas with outlines", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_ideas"}, {"status": "success", "message": "✓ Created 4 content ideas with detailed outlines", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_ideas"}] [{"status": "success", "message": "Received 4078 tokens, Cost: $0.025774", "duration": 20.610270977020264, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_ideas"}, {"status": "success", "message": "Structuring 4 article outlines", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_ideas"}] \N {"ids": [425]} {"count": 4, "ideas_created": 4} 90
+667 2026-01-01 00:05:46.728614+00 2026-01-01 00:05:46.72862+00 \N generate_ideas DONE ✓ Created 4 content ideas with detailed outlines success 22427 0.026665 4154 [{"status": "success", "message": "Analyzing 1 clusters for content opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_ideas"}, {"status": "success", "message": "Mapping 3 keywords to topic briefs", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_ideas"}, {"status": "success", "message": "Saving 4 ideas with outlines", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_ideas"}, {"status": "success", "message": "✓ Created 4 content ideas with detailed outlines", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_ideas"}] [{"status": "success", "message": "Received 4154 tokens, Cost: $0.026665", "duration": 22.38943076133728, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_ideas"}, {"status": "success", "message": "Structuring 4 article outlines", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_ideas"}] \N {"ids": [426]} {"count": 4, "ideas_created": 4} 90
+668 2026-01-01 00:06:25.711885+00 2026-01-01 00:06:25.711891+00 \N generate_content DONE ✓ Generated 1 article success 28849 0.032629 5159 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5159 tokens, Cost: $0.032629", "duration": 28.640628814697266, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [296]} {"count": 1, "task_id": 296, "content_id": 204, "word_count": 1683} 90
+669 2026-01-01 00:06:52.455946+00 2026-01-01 00:06:52.455953+00 \N generate_content DONE ✓ Generated 1 article success 25734 0.033449 5115 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5115 tokens, Cost: $0.033449", "duration": 25.67202854156494, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [295]} {"count": 1, "task_id": 295, "content_id": 205, "word_count": 1728} 90
+701 2026-01-12 11:48:45.97758+00 2026-01-12 11:48:45.977588+00 c9bdb7a6-f046-4d88-8a65-ebf73179882a generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [547], "content_id": 216} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+707 2026-01-12 11:50:12.792012+00 2026-01-12 11:50:12.792027+00 de072cc8-e53c-46c4-8013-0271ee15ba03 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [543], "content_id": 215} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+670 2026-01-01 00:07:24.672058+00 2026-01-01 00:07:24.672065+00 \N generate_content DONE ✓ Generated 1 article success 31206 0.040528 5850 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5850 tokens, Cost: $0.040528", "duration": 31.141070127487183, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [294]} {"count": 1, "task_id": 294, "content_id": 206, "word_count": 2114} 90
+671 2026-01-01 00:07:59.703583+00 2026-01-01 00:07:59.703598+00 \N generate_content DONE ✓ Generated 1 article success 34021 0.042815 6056 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 6056 tokens, Cost: $0.042815", "duration": 33.954471588134766, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [293]} {"count": 1, "task_id": 293, "content_id": 207, "word_count": 2222} 90
+672 2026-01-01 00:08:32.551381+00 2026-01-01 00:08:32.551389+00 \N generate_content DONE ✓ Generated 1 article success 31834 0.033126 5228 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5228 tokens, Cost: $0.033126", "duration": 31.74707865715027, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [292]} {"count": 1, "task_id": 292, "content_id": 208, "word_count": 1643} 90
+673 2026-01-01 00:09:15.289984+00 2026-01-01 00:09:15.289992+00 \N generate_content DONE ✓ Generated 1 article success 41730 0.041494 5916 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5916 tokens, Cost: $0.041494", "duration": 41.65631985664368, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [291]} {"count": 1, "task_id": 291, "content_id": 209, "word_count": 2119} 90
+674 2026-01-01 00:09:48.769729+00 2026-01-01 00:09:48.769742+00 \N generate_content DONE ✓ Generated 1 article success 32470 0.037493 5564 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5564 tokens, Cost: $0.037492", "duration": 32.39554190635681, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [290]} {"count": 1, "task_id": 290, "content_id": 210, "word_count": 1878} 90
+675 2026-01-01 00:10:19.195575+00 2026-01-01 00:10:19.195581+00 \N generate_content DONE ✓ Generated 1 article success 29414 0.034465 5256 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5256 tokens, Cost: $0.034465", "duration": 29.346355199813843, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [289]} {"count": 1, "task_id": 289, "content_id": 211, "word_count": 1670} 90
+676 2026-01-01 00:10:32.329408+00 2026-01-01 00:10:32.329416+00 \N generate_image_prompts DONE ✓ Created 3 image prompts (1 featured + 2 in-article) success 8106 0.007840 1316 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 3 prompts (1 featured + 2 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 3 image prompts (1 featured + 2 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1316 tokens, Cost: $0.007840", "duration": 8.040890216827393, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [204]} {"count": 3, "prompts_created": 3} 90
+677 2026-01-01 00:10:39.73543+00 2026-01-01 00:10:39.735437+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6399 0.007855 1307 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1307 tokens, Cost: $0.007855", "duration": 6.340715408325195, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [205]} {"count": 5, "prompts_created": 5} 90
+678 2026-01-01 00:10:47.060975+00 2026-01-01 00:10:47.060982+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6320 0.007798 1296 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1296 tokens, Cost: $0.007797", "duration": 6.249045372009277, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [206]} {"count": 5, "prompts_created": 5} 90
+679 2026-01-01 00:10:56.615781+00 2026-01-01 00:10:56.61579+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 8549 0.008318 1362 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1362 tokens, Cost: $0.008318", "duration": 8.468471765518188, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [207]} {"count": 5, "prompts_created": 5} 90
+680 2026-01-01 00:11:05.941469+00 2026-01-01 00:11:05.941476+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 8319 0.008326 1362 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1362 tokens, Cost: $0.008326", "duration": 8.241280317306519, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [208]} {"count": 5, "prompts_created": 5} 90
+702 2026-01-12 11:48:58.707335+00 2026-01-12 11:48:58.707348+00 f45fce03-a38e-4bea-a2ad-a8c666363b8d generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [548], "content_id": 216} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+681 2026-01-01 00:11:13.470663+00 2026-01-01 00:11:13.47067+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6522 0.007643 1158 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1158 tokens, Cost: $0.007642", "duration": 6.458569049835205, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [209]} {"count": 5, "prompts_created": 5} 90
+682 2026-01-01 00:11:21.344323+00 2026-01-01 00:11:21.344329+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6867 0.007961 1329 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1329 tokens, Cost: $0.007961", "duration": 6.790889024734497, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [210]} {"count": 5, "prompts_created": 5} 90
+683 2026-01-01 00:11:29.148416+00 2026-01-01 00:11:29.148422+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 6797 0.008013 1335 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1335 tokens, Cost: $0.008013", "duration": 6.736971139907837, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [211]} {"count": 5, "prompts_created": 5} 90
+684 2026-01-03 17:52:05.384012+00 2026-01-03 17:52:05.384022+00 f1ebfd38-7fb8-4623-aa4a-592f3c23f244 generate_content DONE ✓ Generated 1 article success 42064 0.035909 5487 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 5487 tokens, Cost: $0.035909", "duration": 41.793381690979004, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [296]} {"count": 1, "task_id": 296, "content_id": 212, "word_count": 1837} 90
+685 2026-01-03 17:52:34.686105+00 2026-01-03 17:52:34.686113+00 5d6d26dc-d0e3-47fb-acc3-23b9c3bc1bdb generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 10175 0.007944 1315 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1315 tokens, Cost: $0.007944", "duration": 10.083199262619019, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [212]} {"count": 5, "prompts_created": 5} 90
+703 2026-01-12 11:49:14.453404+00 2026-01-12 11:49:14.453412+00 93c5f90d-53f1-4ef1-ba42-c45b78a003be generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [540], "content_id": 215} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+686 2026-01-03 18:10:26.113864+00 2026-01-03 18:10:26.113871+00 c781c93b-9916-4eb9-83bc-43434e46eccb generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 10315 0.007378 1254 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1254 tokens, Cost: $0.007378", "duration": 10.210502862930298, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [206]} {"count": 5, "prompts_created": 5} 90
+687 2026-01-03 18:14:28.861797+00 2026-01-03 18:14:28.861805+00 81f8a5e0-1575-4b1e-90ce-cc8ae1a82b7f generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 7142 0.007851 1318 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1318 tokens, Cost: $0.007851", "duration": 7.044146776199341, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [210]} {"count": 5, "prompts_created": 5} 90
+688 2026-01-12 11:43:56.030878+00 2026-01-12 11:43:56.030892+00 \N auto_cluster DONE ✓ Organized 0 keywords into 1 semantic cluster success 3827 0.000000 2658 [{"status": "success", "message": "Validating 5 keywords", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "auto_cluster"}, {"status": "success", "message": "Analyzing keyword relationships for 5 keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "auto_cluster"}, {"status": "success", "message": "Saving 1 cluster", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "auto_cluster"}, {"status": "success", "message": "✓ Organized 0 keywords into 1 semantic cluster", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "auto_cluster"}] [{"status": "success", "message": "Received 2658 tokens, Cost: $0.000000", "duration": 3.7413134574890137, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "auto_cluster"}, {"status": "success", "message": "Organizing 1 semantic cluster", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "auto_cluster"}] \N {"ids": [809, 808, 807, 806, 805]} {"count": 1, "site_id": 21, "clusters_created": 1, "keywords_updated": 5} 90
+689 2026-01-12 11:44:29.442117+00 2026-01-12 11:44:29.442125+00 \N generate_ideas DONE ✓ Created 4 content ideas with detailed outlines success 28375 0.000000 3282 [{"status": "success", "message": "Analyzing 1 clusters for content opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_ideas"}, {"status": "success", "message": "Mapping 5 keywords to topic briefs", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_ideas"}, {"status": "success", "message": "Saving 4 ideas with outlines", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_ideas"}, {"status": "success", "message": "✓ Created 4 content ideas with detailed outlines", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_ideas"}] [{"status": "success", "message": "Received 3282 tokens, Cost: $0.000000", "duration": 28.296690464019775, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_ideas"}, {"status": "success", "message": "Structuring 4 article outlines", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_ideas"}] \N {"ids": [427]} {"count": 4, "site_id": 21, "ideas_created": 4} 90
+690 2026-01-12 11:45:20.349859+00 2026-01-12 11:45:20.34987+00 \N generate_content DONE ✓ Generated 1 article success 40834 0.000000 3779 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 3779 tokens, Cost: $0.000000", "duration": 40.68157243728638, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [300]} {"count": 1, "site_id": 21, "task_id": 300, "content_id": 213, "word_count": 775} 90
+704 2026-01-12 11:49:27.792422+00 2026-01-12 11:49:27.792435+00 2c9dee43-7007-496f-9faf-6605566d5f89 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [539], "content_id": 215} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+691 2026-01-12 11:45:52.275835+00 2026-01-12 11:45:52.275843+00 \N generate_content DONE ✓ Generated 1 article success 30917 0.000000 3164 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 3164 tokens, Cost: $0.000000", "duration": 30.86504817008972, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [299]} {"count": 1, "site_id": 21, "task_id": 299, "content_id": 214, "word_count": 633} 90
+692 2026-01-12 11:46:24.238386+00 2026-01-12 11:46:24.238393+00 \N generate_content DONE ✓ Generated 1 article success 30953 0.000000 3550 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 3550 tokens, Cost: $0.000000", "duration": 30.88041353225708, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [298]} {"count": 1, "site_id": 21, "task_id": 298, "content_id": 215, "word_count": 867} 90
+693 2026-01-12 11:46:47.889083+00 2026-01-12 11:46:47.889092+00 \N generate_content DONE ✓ Generated 1 article success 22641 0.000000 3161 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 3161 tokens, Cost: $0.000000", "duration": 22.588051319122314, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [297]} {"count": 1, "site_id": 21, "task_id": 297, "content_id": 216, "word_count": 622} 90
+694 2026-01-12 11:47:03.693686+00 2026-01-12 11:47:03.6937+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 10781 0.000000 1054 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1054 tokens, Cost: $0.000000", "duration": 10.718891382217407, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [213]} {"count": 5, "site_id": 21, "prompts_created": 5} 90
+695 2026-01-12 11:47:16.645228+00 2026-01-12 11:47:16.645236+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 11942 0.000000 1060 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1060 tokens, Cost: $0.000000", "duration": 11.895602226257324, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [214]} {"count": 5, "site_id": 21, "prompts_created": 5} 90
+698 2026-01-12 11:48:06.378474+00 2026-01-12 11:48:06.378486+00 81fa4d8b-17c0-4b1a-9a6f-725996993589 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [545], "content_id": 216} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+705 2026-01-12 11:49:41.909922+00 2026-01-12 11:49:41.909936+00 4ce545fd-7113-4c5a-91c7-85a625c1a016 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [541], "content_id": 215} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+696 2026-01-12 11:47:35.046602+00 2026-01-12 11:47:35.046615+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 17392 0.000000 1089 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1089 tokens, Cost: $0.000000", "duration": 17.341573476791382, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [215]} {"count": 5, "site_id": 21, "prompts_created": 5} 90
+697 2026-01-12 11:47:47.484325+00 2026-01-12 11:47:47.484334+00 \N generate_image_prompts DONE ✓ Created 5 image prompts (1 featured + 4 in-article) success 11427 0.000000 1020 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 4 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 5 prompts (1 featured + 4 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 5 image prompts (1 featured + 4 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 1020 tokens, Cost: $0.000000", "duration": 11.378287553787231, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [216]} {"count": 5, "site_id": 21, "prompts_created": 5} 90
+708 2026-01-12 11:50:27.243429+00 2026-01-12 11:50:27.243443+00 a119a3cb-0a7d-4368-8455-217e16caf5eb generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [535], "content_id": 214} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+709 2026-01-12 11:50:42.192815+00 2026-01-12 11:50:42.192825+00 89905c62-368e-4c7e-85fb-84641aefa94c generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [534], "content_id": 214} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+710 2026-01-12 11:50:55.36008+00 2026-01-12 11:50:55.360088+00 f655277a-5b7d-46c8-aae5-5729ce894727 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [536], "content_id": 214} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+711 2026-01-12 11:51:07.239011+00 2026-01-12 11:51:07.239018+00 5b3d0086-6ff5-4042-8220-ce121dbb9e8d generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [537], "content_id": 214} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+712 2026-01-12 11:51:20.929237+00 2026-01-12 11:51:20.929247+00 36f2ebe4-1913-4e70-845f-f838ef8a64a9 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [538], "content_id": 214} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+713 2026-01-12 11:51:36.243996+00 2026-01-12 11:51:36.244002+00 d7052835-c783-428b-859b-e5fd7db06a7a generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [530], "content_id": 213} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+714 2026-01-12 11:51:50.200546+00 2026-01-12 11:51:50.200553+00 f84d51cd-03e8-43b7-989b-072135b4516b generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [529], "content_id": 213} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+715 2026-01-12 11:52:03.028878+00 2026-01-12 11:52:03.028892+00 2e576a44-6161-42eb-90d9-16275a06cab6 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [531], "content_id": 213} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+716 2026-01-12 11:52:18.590304+00 2026-01-12 11:52:18.590311+00 ebd11ecf-bb45-4c61-9d24-305d3f19c0e3 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [532], "content_id": 213} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+717 2026-01-12 11:52:32.684232+00 2026-01-12 11:52:32.684243+00 1d3454cf-d2ae-4c5a-9645-e38ad06795e9 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [533], "content_id": 213} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+718 2026-01-12 23:40:40.42447+00 2026-01-12 23:40:40.424486+00 \N generate_content DONE ✓ Generated 1 article success 32889 0.000000 3812 [{"status": "success", "message": "Preparing 1 article for generation", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_content"}, {"status": "success", "message": "Building content brief with target keywords", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_content"}, {"status": "success", "message": "Saving 1 article", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_content"}, {"status": "success", "message": "✓ Generated 1 article", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_content"}] [{"status": "success", "message": "Received 3812 tokens, Cost: $0.000000", "duration": 32.637001276016235, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_content"}, {"status": "success", "message": "Formatting 1 article", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_content"}] \N {"ids": [298]} {"count": 1, "site_id": 21, "task_id": 298, "content_id": 217, "word_count": 959} 90
+719 2026-01-12 23:40:57.550258+00 2026-01-12 23:40:57.550275+00 \N generate_image_prompts DONE ✓ Created 4 image prompts (1 featured + 3 in-article) success 12076 0.000000 946 [{"status": "success", "message": "Analyzing content for image opportunities", "duration": null, "stepName": "INIT", "stepNumber": 1, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Identifying 1 featured + 3 in-article image slots", "duration": null, "stepName": "PREP", "stepNumber": 2, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Assigning 4 prompts (1 featured + 3 in-article)", "duration": null, "stepName": "SAVE", "stepNumber": 5, "functionName": "generate_image_prompts"}, {"status": "success", "message": "✓ Created 4 image prompts (1 featured + 3 in-article)", "duration": null, "stepName": "DONE", "stepNumber": 6, "functionName": "generate_image_prompts"}] [{"status": "success", "message": "Received 946 tokens, Cost: $0.000000", "duration": 12.007696628570557, "stepName": "AI_CALL", "stepNumber": 3, "functionName": "generate_image_prompts"}, {"status": "success", "message": "Refining image descriptions", "duration": null, "stepName": "PARSE", "stepNumber": 4, "functionName": "generate_image_prompts"}] \N {"ids": [217]} {"count": 4, "site_id": 21, "prompts_created": 4} 90
+720 2026-01-12 23:41:13.53043+00 2026-01-12 23:41:13.530441+00 2b3fee53-ffb5-4e79-ad15-b44c078f098a generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [550], "content_id": 217} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+721 2026-01-12 23:41:28.655244+00 2026-01-12 23:41:28.655251+00 7f732fad-c365-493f-875d-497ecd68eba7 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [549], "content_id": 217} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+722 2026-01-12 23:41:43.876807+00 2026-01-12 23:41:43.876818+00 09de2a41-6823-4525-9ad4-9903b2d31b19 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [551], "content_id": 217} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+723 2026-01-12 23:41:58.16905+00 2026-01-12 23:41:58.169062+00 d66e6f51-01d2-4bae-a80b-c5b8e3727a76 generate_images DONE Generated 1 images (0 failed) success 0 0.000000 0 [{"phase": "IMAGE_GENERATION", "status": "success", "message": "Processed 1 images: 1 completed, 0 failed"}] [] \N {"image_ids": [552], "content_id": 217} {"model": "runware:97@1", "failed": 0, "provider": "runware", "completed": 1, "total_images": 1} 90
+\.
+
+
+--
+-- Data for Name: igny8_author_profiles; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_author_profiles (id, name, description, tone, language, structure_template, is_active, updated_at, created_at, tenant_id, is_custom, cloned_from_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_automation_configs; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_automation_configs (id, is_enabled, frequency, scheduled_time, stage_1_batch_size, stage_2_batch_size, stage_3_batch_size, stage_4_batch_size, stage_5_batch_size, stage_6_batch_size, last_run_at, next_run_at, created_at, updated_at, account_id, site_id, within_stage_delay, between_stage_delay) FROM stdin;
+17 t daily 02:00:00 50 1 20 1 1 1 \N \N 2026-01-12 16:40:04.328963+00 2026-01-12 23:39:53.45194+00 90 21 3 5
+\.
+
+
+--
+-- Data for Name: igny8_automation_rules; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_automation_rules (id, name, description, trigger, schedule, conditions, actions, is_active, status, last_executed_at, execution_count, metadata, created_at, updated_at, tenant_id, sector_id, site_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_automation_runs; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_automation_runs (id, run_id, trigger_type, status, current_stage, stage_1_result, stage_2_result, stage_3_result, stage_4_result, stage_5_result, stage_6_result, stage_7_result, total_credits_used, error_message, started_at, completed_at, account_id, site_id, cancelled_at, paused_at, resumed_at, initial_snapshot) FROM stdin;
+78 run_20260112_234007_manual manual completed 7 {"skipped": true, "batches_run": 0, "skip_reason": "Insufficient keywords for clustering. Need at least 5 keywords, but only 0 available.", "credits_used": 0, "clusters_created": 0, "keywords_processed": 0} {"credits_used": 0, "ideas_created": 0, "clusters_processed": 0} {"batches_run": 0, "tasks_created": 0, "ideas_processed": 0} {"started_at": "2026-01-12T23:40:07.443047+00:00", "total_words": 2500, "completed_at": "2026-01-12T23:40:40.455081+00:00", "credits_used": 0, "time_elapsed": "0m 32s", "content_created": 1, "tasks_processed": 1} {"started_at": "2026-01-12T23:40:07.443047+00:00", "completed_at": "2026-01-12T23:40:57.563549+00:00", "credits_used": 0, "time_elapsed": "0m 12s", "prompts_created": 4, "content_processed": 1} {"started_at": "2026-01-12T23:40:07.443047+00:00", "in_progress": false, "completed_at": "2026-01-12T23:41:59.712017+00:00", "credits_used": 0, "images_total": 4, "time_elapsed": "0m 57s", "images_generated": 4, "images_processed": 4, "content_moved_to_review": 1} {"content_ids": [217], "in_progress": false, "review_total": 1, "time_elapsed": "0m 0s", "approved_count": 1, "scheduled_count": 0, "ready_for_review": 1, "auto_publish_enabled": true} 0 \N 2026-01-12 23:40:07.443047+00 2026-01-12 23:42:04.735385+00 90 21 \N \N \N {"stage_1_initial": 0, "stage_2_initial": 0, "stage_3_initial": 0, "stage_4_initial": 1, "stage_5_initial": 0, "stage_6_initial": 0, "stage_7_initial": 0, "total_initial_items": 1}
+\.
+
+
+--
+-- Data for Name: igny8_billing_configuration; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_billing_configuration (id, default_tokens_per_credit, default_credit_price_usd, enable_token_based_reporting, credit_rounding_mode, updated_at, updated_by_id) FROM stdin;
+1 1000 0.0600 t up 2026-01-13 02:20:05.807823+00 3
+\.
+
+
+--
+-- Data for Name: igny8_clusters; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_clusters (id, name, description, keywords_count, volume, mapped_pages, status, created_at, updated_at, tenant_id, sector_id, site_id, disabled, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+427 Best Back Massagers for Pain Relief and Relaxation This cluster focuses on back massage devices aimed at relieving pain and promoting relaxation. Keywords share dimensions of product type (back massager), features (vibrating, rolling), and user needs (pain relief, relaxation), forming a natural ecosystem for users exploring solutions for back discomfort. 5 3400 0 mapped 2026-01-12 11:43:55.992594+00 2026-01-12 11:44:29.432519+00 90 61 21 f \N \N \N f \N
+426 Local and Retail Back Massager Shopping This cluster focuses on finding and purchasing back massagers through nearby locations and major retail stores. Keywords intersect on product type (back massager) and context/modifier (local proximity, specific retailer), supporting a user journey centered on discovering where to buy a back massager nearby or at Walmart. 3 1100 0 mapped 2026-01-01 00:04:58.515856+00 2026-01-12 11:43:56.024768+00 90 61 21 f \N \N \N f \N
+425 Back Massagers with Heat and Handheld/Gun Designs This cluster covers portable back massage devices that focus on specific features like heat and gun-style/handheld designs. Keywords intersect on product type (back massager), format (handheld and massage gun), and feature set (heated therapy), forming an ecosystem for users comparing design types and therapeutic benefits when choosing a back massager. 3 1350 0 mapped 2026-01-01 00:04:58.498082+00 2026-01-12 11:43:56.014194+00 90 61 21 f \N \N \N f \N
+424 Back Massagers and Targeted Tools for Back, Neck, and Shoulder Relief This cluster covers handheld and attachable back massagers designed for relieving tension in the back, neck, and shoulders. Keywords intersect on product type (back massager and manual tools), problem space (upper body muscle pain and knots), and format (chair-mounted, hooks, sticks), forming a cohesive ecosystem for users moving from general back massager research into specific tool types and body-area-focused solutions. 6 26200 0 mapped 2025-12-29 02:39:14.106299+00 2026-01-12 11:43:56.005532+00 90 61 21 f \N \N \N f \N
+\.
+
+
+--
+-- Data for Name: igny8_content; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content (id, created_at, content_html, word_count, metadata, title, meta_title, meta_description, primary_keyword, secondary_keywords, status, generated_at, updated_at, source, sync_status, external_id, external_url, sync_metadata, internal_links, linker_version, optimizer_version, optimization_scores, content_type, json_blocks, structure_data, tenant_id, sector_id, site_id, task_id, cluster_id, content_structure, content_format, external_type, external_metadata, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until, site_status, scheduled_publish_at, site_status_updated_at) FROM stdin;
+210 2026-01-01 00:09:48.71811+00 Stiff back after long commutes or desk work? A well-chosen back massager from Walmart can provide daily relief without expensive spa visits. Understanding how to navigate Walmart’s shelves, website, and pickup options lets you upgrade comfort in a single afternoon instead of waiting days.
\r\nWalmart is often the first place shoppers think of for a budget-friendly back massager, thanks to aggressive pricing and frequent rollbacks. When you specifically search “back massager Walmart,” you’ll usually see dozens of models ranging from $15 handheld units to $200 shiatsu chairs. Learning how to narrow choices by features, intensity, and availability prevents impulse buys that disappoint after one week.
\r\nBecause many shoppers search “back massager near me,” Walmart’s dense store network becomes a major advantage. Over 4,600 U.S. locations mean you can often reserve a unit online and pick it up the same day. Comparing in-store inventory with online-only models helps you decide whether speed, price, or advanced features matter most.
\r\nOnce you understand Walmart’s inventory filters, pickup windows, and return policy, buying a massager becomes much lower risk. You can test a unit for several evenings, track how your back responds, then exchange within the return window if pressure or heat levels feel wrong. This guide walks step-by-step through choosing, ordering, receiving, and safely using your new device.
\r\n\r\nWhy Choose Walmart for a Back Massager Purchase?
\r\nChoosing Walmart for a back massager purchase makes sense when you balance price, convenience, and risk. Their scale allows negotiated pricing with brands like HoMedics, Sharper Image, and RENPHO, often 10–25% lower than specialty retailers. Because many shoppers already visit weekly for groceries, adding a massager to a pickup order saves separate trips and extra delivery fees.
\r\nPricing, Rollbacks, and Everyday Value
\r\nWalmart’s everyday pricing on mid-range back massagers typically sits between $25 and $80, covering heated cushions, handheld percussion units, and compact shiatsu pillows. Rollback promotions can drop popular models by $10–$30 for several weeks. When you compare similar devices at pharmacy chains, you’ll often see 15–20% higher tags, especially on units with heat and multiple intensity settings.
\r\nStore Coverage and Convenience Benefits
\r\nWith thousands of stores across urban, suburban, and rural areas, Walmart makes it unusually easy to find a “Walmart back massager nearby” without driving more than 15–20 minutes. Many Supercenters open until 11 p.m. or 24 hours, letting shift workers shop after late shifts. Extended hours also help you return or exchange a device quickly if vibration strength or fit feels wrong.
\r\n\r\nTypes of Back Massagers You’ll Find at Walmart
\r\nWalking into a Walmart back massager in store aisle, you’ll typically see four main categories: handheld percussion, shiatsu cushions, vibrating seat covers, and compact massage pillows. Each style handles back tension differently, from deep percussive strikes to rolling kneading nodes. Understanding these mechanisms helps you match a device to muscle depth, sensitivity, and how long you’ll realistically use it daily.
\r\nCommon Categories and Typical Price Ranges
\r\nHandheld percussion massagers from brands like Wahl and RENPHO often range from $25 to $60, delivering 2,000–3,200 percussions per minute. Shiatsu back cushions, which strap to chairs and offer rotating nodes plus heat, usually cost $60–$150. Simpler vibrating seat covers run $30–$70, prioritizing gentle stimulation over deep pressure for users sensitive to strong kneading.
\r\nFeature Differences and Use-Case Matching
\r\nShiatsu cushions use rotating nodes that mimic thumbs, ideal for knots near the spine but sometimes intense for bony frames. Handheld units let you target precise spots, though holding a 2–3 pound device for 15 minutes can fatigue wrists. Vibrating covers distribute mild vibration along the full back, better for relaxation while watching TV than for severe trigger points.
\r\n\r\nHow to Check Back Massager Availability at Your Local Walmart
\r\nBefore driving across town, it’s smart to confirm whether your preferred back massager is actually sitting on a shelf. Walmart’s website and mobile app let you search “back massager Walmart,” then filter by your ZIP code to see which models are in stock. This saves wasted trips, especially when popular shiatsu cushions sell out during holiday or tax-refund seasons.
\r\nUsing the Walmart Website and App Tools
\r\nOn Walmart.com, choose a product, then click “Pickup” and enter your ZIP code to display store availability within roughly 25 miles. The app uses your phone’s location to show “Available today,” “Limited stock,” or “Out of stock” labels. Checking two or three nearby stores often reveals at least one with your preferred massager ready for same-day pickup.
\r\n\r\n - Open the Walmart app, tap the search bar, enter “back massager,” then filter by “Pickup today” and your nearest store.
\r\n - On desktop, use the “Pickup & delivery” toggle, set your location, and compare stock status across several nearby stores.
\r\n - Use the barcode scanner in-store to confirm inventory counts, prices, and whether online-only discounts apply locally.
\r\n - Check early morning or late evening; inventory systems often update overnight, reflecting new truck deliveries or returns.
\r\n
\r\n"Limited stock" usually means fewer than five units remain, so waiting a full day can risk losing availability. If you’re comparing several models, add them to your cart and switch store locations within the app to see which branch offers the best combination of price and pickup timing. This approach is especially helpful when chasing a specific color, feature set, or rollback promotion.
\r\n\r\nComparing In-Store Back Massager Options vs Online-Only at Walmart
\r\nWhen deciding whether to buy back massager at Walmart in-store or order an online-only model, you’re really weighing speed against selection. Stores usually stock mainstream devices under $100 that appeal to most shoppers. Online listings, however, can include hundreds of niche models with adjustable arms, extra-long power cords, or specialized attachments for athletes and chronic pain sufferers.
\r\nSelection, Pricing, and Shipping Differences
\r\nIn-store shelves might carry 10–20 distinct back massager SKUs, while Walmart.com often shows 200–400 options, including marketplace sellers. Online-only models sometimes offer better specs, like 8–10 massage heads or 10+ intensity levels, at similar prices. However, shipping can add $5–$10 if your order doesn’t hit the usual free-shipping threshold around $35–$50.
\r\n\r\nWhen you need immediate relief, prioritize in-store pickup; when you want very specific features, filter online-only listings and accept a short delivery wait.
\r\n
\r\nHands-On Evaluation vs Detailed Reviews
\r\nBuying in store lets you feel materials, check control layouts, and estimate weight by lifting demo units or sealed boxes. Online shopping instead relies on user reviews, where you can filter by 3-star ratings to uncover recurring complaints about noise or weak motors. Reading ten or more detailed reviews often reveals whether a device maintains performance beyond the first few weeks.
\r\n\r\nUsing Walmart Pickup and Same-Day Options for Back Massagers
\r\nWalmart pickup back massager options help you avoid browsing crowded aisles while still getting the device the same day. After choosing a model online, you can select free store pickup, curbside pickup, or in some areas, same-day delivery. These services streamline the process, especially when you’re already scheduling grocery pickup or coordinating around work shifts and childcare.
\r\nPickup, Curbside, and Same-Day Comparison
\r\nThese fulfillment methods differ in speed, contact level, and potential fees. The table below compares common scenarios for a mid-range $60 back massager purchased on a weekday afternoon. Times and fees vary by region, but this gives a realistic sense of how quickly you can start using your new device.
\r\n\r\n\r\n | Method | Typical Fee | Order Cutoff Time | Estimated Availability | Best For |
\r\n\r\n\r\n | In-Store Pickup | $0 | 6 p.m. | 2–4 hours | Shoppers comfortable walking inside and checking other departments. |
\r\n | Curbside Pickup | $0 | 6 p.m. | 2–4 hours | Drivers wanting minimal contact and quick trunk loading. |
\r\n | Same-Day Delivery | $7–$10 | 3 p.m. | 3–6 hours | People with mobility limits or no car needing home drop-off. |
\r\n | Standard Shipping | $0 over $35 | 11 p.m. | 2–4 days | Non-urgent buyers prioritizing price over speed. |
\r\n | Express Shipping | $10–$15 | 11 a.m. | 1–2 days | Shoppers outside delivery zones needing faster arrival. |
\r\n\r\n
\r\nCurbside pickup is particularly useful if you’re managing back pain that makes walking across a large store uncomfortable. You simply tap “I’m on my way” in the app and park in designated spots, letting associates load the box into your trunk. This minimizes lifting and twisting, which can aggravate sensitive lumbar or thoracic areas before you even start treatment.
\r\n\r\nUnderstanding Walmart’s Pricing, Returns, and Protection Plans
\r\nKnowing Walmart’s pricing rules and return policies reduces anxiety about choosing the wrong massager intensity or size. Most electric back massagers fall under standard electronics returns, typically allowing around 30 days with a receipt. This window lets you test different heat levels, massage modes, and durations to see how your muscles respond over several evenings and weekends.
\r\nReturns, Exchanges, and Price Adjustments
\r\nYou can usually return a gently used back massager within the policy window to the customer service desk, as long as all accessories and packaging are included. If the price drops within a short period, some stores may honor a price adjustment when you bring the receipt. Always check your local store’s posted rules, since marketplace sellers follow different return timelines.
\r\n\r\n - Keep the original box, manual, and attachments for at least 30 days to simplify returns or exchanges if issues arise.
\r\n - Test all modes and heat settings during the first week, documenting problems like overheating, loud noise, or motor stalls.
\r\n - Check whether your massager is sold by Walmart or a marketplace seller, since third-party returns often require mail-back.
\r\n - Consider a 2–3 year protection plan if your device costs over $80 and you’ll use it daily for chronic pain.
\r\n
\r\nProtection Plans and Long-Term Use Considerations
\r\nWalmart’s optional protection plans, often underwritten by Allstate, can cover mechanical failures after the manufacturer warranty ends, usually at 10–20% of product price. For a $120 shiatsu cushion used 30 minutes daily, motors and heating elements face heavy wear. A $15–$20 plan may pay off if you’ve previously burned out cheaper devices within 18–24 months.
\r\n\r\nTips for Testing and Using Your New Back Massager Safely
\r\nOnce you bring your back massager home, how you test it during the first week affects comfort and safety. Start with shorter sessions, around 10–15 minutes, and the lowest intensity setting. This gives muscles time to adapt and helps you notice any tingling, numbness, or delayed soreness that might signal pressure that’s too intense or poorly positioned.
\r\nInitial Setup, Positioning, and Time Limits
\r\nPlace shiatsu cushions on sturdy chairs with straight backs, avoiding soft couches that let nodes press directly into vertebrae. For vibrating seat covers, secure straps tightly so pads don’t slide and concentrate pressure on small areas. Set a phone timer to avoid exceeding manufacturer-recommended session lengths, often 15–20 minutes, especially when using built-in heat around the lower back.
\r\n\r\n\r\n | Massager Type | Recommended Session Length | Ideal Frequency | Key Safety Tip | Common Mistake |
\r\n\r\n\r\n | Shiatsu Cushion | 15–20 minutes | 1–2 times daily | Use a towel layer if nodes feel too sharp. | Leaning full body weight directly onto rotating nodes. |
\r\n | Handheld Percussion | 5–10 minutes | Up to twice daily | Keep device moving, never on spine bones. | Holding in one spot, causing bruising or irritation. |
\r\n | Vibrating Seat Cover | 20–30 minutes | 1–3 times daily | Start without heat if you have reduced sensation. | Using for hours while watching TV without breaks. |
\r\n | Massage Pillow | 10–15 minutes | 1–2 times daily | Position slightly off-center from the spine. | Falling asleep with the device still running. |
\r\n | Heated Wrap | 15–20 minutes | As needed | Check skin every few minutes for redness. | Wrapping too tightly, restricting circulation. |
\r\n\r\n
\r\nConsult your doctor before using any electric massager if you have conditions like osteoporosis, herniated discs, implanted devices, or uncontrolled diabetes. Children shouldn’t operate these units unsupervised, and pregnant users should avoid strong vibration or deep kneading over the lower back. Unplug devices immediately after use to reduce fire risk and prevent curious pets or kids from accidentally activating them.
1926 {} Back Massager Walmart Shopping Guide: In-Store and Pickup Back Massager Walmart Guide: In-Store & Pickup Learn how to buy a back massager at Walmart, compare in-store vs online, check local availability, and use pickup or same-day delivery. back massager walmart ["walmart back massager in store", "back massager near me", "buy back massager at walmart", "walmart pickup back massager", "walmart back massager nearby"] approved 2026-01-01 00:09:48.718473+00 2026-01-12 11:55:10.699964+00 igny8 \N 12921 https://massagersmart.com/shopping-guides/health-wellness/back-massager-walmart-shopping-guide-in-store-and-pickup/ {} [] 0 0 {} post [] {} 90 61 21 \N 426 article \N \N {"wordpress_term_ids": {"tags": [1666, 1664, 1659, 1667, 1661, 1662, 1663, 1665, 1669, 1668, 1660], "categories": [1673], "igny8_sectors": [1671], "igny8_clusters": [1670]}} \N \N \N f \N scheduled 2026-01-15 09:00:00+00 2026-01-12 11:55:14.936654+00
+213 2026-01-12 11:45:20.310289+00 Back pain is a common issue that many face today, leading to discomfort and reduced quality of life.
Choosing the right back massager can significantly impact your pain management strategy. The best back massagers not only provide relief but also promote relaxation, making them essential tools in your wellness arsenal.
This guide dives deep into the types of back massagers available, their benefits, and how to select the perfect one for your needs.
Understanding Back Pain
Back pain can stem from various causes, including muscle strains, herniated discs, and poor posture. According to the American Chiropractic Association, back pain affects approximately 80% of adults at some point in their lives. Understanding these causes is crucial for effective pain management.
Common Causes of Back Pain
Muscle strains and sprains are among the most common causes of back pain, often resulting from heavy lifting or sudden awkward movements.
Types of Back Pain
Chronic back pain persists for more than three months, while acute pain can last a few days to a few weeks. Differentiating between these types helps in selecting the appropriate treatments and interventions.
Benefits of Back Massagers
Back massagers provide numerous benefits that go beyond mere relaxation. They can alleviate discomfort through targeted pressure and movements, enhancing blood circulation and reducing muscle tension.
“Regular use of back massagers can lead to improved flexibility and range of motion, assisting in faster recovery from muscle fatigue.”
Alleviating Discomfort
One of the primary roles of back massagers is to alleviate discomfort. By using various techniques such as kneading, tapping, and rolling, these devices can ease muscle tension effectively.
Enhancing Relaxation
Enhanced relaxation is another significant benefit. The soothing vibrations or movements can help lower stress levels, promoting a sense of well-being and tranquility.
Types of Back Massagers
Back massagers come in various types, each designed to cater to specific needs and preferences. Understanding the differences can help you make an informed decision.
- Vibrating Massagers: Use gentle vibrations to soothe muscle tension.
- Rolling Massagers: Mimic the hands of a massage therapist, providing targeted relief.
- Heated Massagers: Combine heat therapy with massage for deeper relaxation.
- Shiatsu Massagers: Utilize specific pressure points to alleviate pain and tension.
Choosing the right type can depend on personal preference and specific back issues, making it essential to explore options.
Features to Consider
When selecting a back massager, several features can enhance your experience. Look for adjustable settings, portability, and ease of use to ensure you get the most out of your device.
| Feature | Description | Benefits | Examples |
|---|
| Heat Function | Provides warmth to relieve tension | Enhances relaxation and blood flow | Sunbeam Heating Pad |
| Portability | Lightweight and easy to transport | Can be used anywhere | HoMedics Back Massager |
| Adjustable Intensity | Customizable massage strength | Allows for personalized comfort | RENPHO Shiatsu Massager |
| Multiple Settings | Variety of massage techniques | Caters to different pain levels | Naipo Back Massager |
These features significantly impact the effectiveness and enjoyment of using a massager, making them worth considering before purchase.
Best Back Massagers for Chair Use
For those who spend long hours sitting, specific back massagers designed for chair use can provide relief at work or home. These devices offer convenience and comfort, integrating easily into daily routines.
- Comfier Shiatsu Massager: Designed to fit over most chairs, it offers deep kneading and heat.
- HoMedics Massage Cushion: Provides a soothing massage and fits perfectly on office chairs.
- BackJoy SitSmart: Ergonomically designed to improve posture while delivering back relief.
- RENPHO Back Massager: Compact and portable, ideal for office and home use.
These options not only provide relief but also enhance the sitting experience, making them great investments for anyone with back pain.
Top Back and Neck Massagers
The market offers a variety of back and neck massagers that cater to different preferences and pain levels. Here are some of the top-rated options available today:
| Product Name | Type | Price | Rating |
|---|
| RENPHO Neck and Shoulder Massager | Shiatsu | $59.99 | 4.5/5 |
| HoMedics Neck and Back Massager | Vibrating | $79.99 | 4.2/5 |
| Comfier Heated Back Massager | Heated Shiatsu | $99.99 | 4.6/5 |
| InvoSpa Back Massager | Deep Tissue | $49.99 | 4.8/5 |
These devices offer various features, from heat settings to portability, making them suitable for different user needs.
How to Use a Back Massager Effectively
“Aim for 15-30 minutes of use per session, ensuring to stay hydrated afterward for optimal muscle recovery.”
Tips for Effective Use
Using your back massager consistently can lead to better results. Incorporate stretching and hydration into your routine to enhance the overall benefits.
Customer Reviews and Experiences
User testimonials provide valuable insights into the effectiveness of back massagers. Many users report significant improvements in their pain levels and overall relaxation after regular use.
“I’ve tried multiple massagers, but the RENPHO has changed my life. I use it daily, and my back pain has reduced tremendously.”
These experiences highlight the importance of finding a massager that suits personal needs and preferences to achieve the best results.
Conclusion
In summary, back massagers can play a vital role in managing back pain and enhancing relaxation. With various types and features available, taking the time to find the right device can significantly improve your quality of life. Explore different options and make a choice that aligns with your needs for the best results.
860 {} Complete Guide to the Best Back Massagers for Pain Relief Best Back Massagers for Pain Relief & Relaxation Explore the best back massagers designed for pain relief. Discover top devices, features, and user tips for relaxation. best back massager ["best back massager for chair", "best back and neck massager", "back vibrating massager", "back roller massager"] approved 2026-01-12 11:45:20.31057+00 2026-01-12 11:55:09.671028+00 igny8 \N \N \N {} [] 0 0 {} page [] {} 90 61 21 \N 427 cluster_hub \N \N {} \N \N \N f \N scheduled 2026-01-15 18:00:00+00 2026-01-12 11:55:14.955893+00
+214 2026-01-12 11:45:52.246281+00 Finding the right back massager can transform your relaxation routine and significantly alleviate pain.
\nChoosing the best back massager is essential for anyone seeking relief from discomfort. With various options available, understanding your personal needs is crucial for making an informed decision. This guide outlines key factors to consider when selecting a back massager, ensuring it meets your specific requirements.
\nWhether you experience chronic pain or just want to unwind, selecting the right device can enhance your overall well-being and comfort.
\n\nIdentify Your Pain Points
\nUnderstanding your specific areas of discomfort is the first step in choosing the best back massager. Assessing your pain points helps narrow down options that target those areas effectively.
\nAssessing Pain Areas
\nBegin by identifying where you feel pain. Is it in your lower back, upper back, or neck? This knowledge is vital for selecting a device designed for those specific regions.
\nConsider Pain Intensity
\nEvaluate the severity of your pain. Mild discomfort may require a gentle massager, while chronic pain might necessitate a more robust option. This distinction influences your choice significantly.
\n\nConsider Your Lifestyle
\nYour lifestyle plays a critical role in choosing the best back massager. Consider factors such as work habits, daily routines, and personal preferences when making your selection.
\n\n - If you work long hours sitting, a back massager designed for chair use may be ideal.
\n - Frequent travelers may prefer portable options that are easy to carry.
\n - For home use, larger models may provide deeper, more comprehensive massages.
\n - Consider how often you will use the massager; daily use may justify a higher investment.
\n
\nBy aligning your massager choice with your lifestyle, you ensure that you will use it consistently, maximizing its benefits.
\n\nCompare Different Types
\nThere are various types of back massagers, each designed with unique features. Understanding these differences helps you choose the best back massager for your needs.
\n\n\n | Type | Features | Price Range | Best For |
\n\n\n | Vibrating | Soothing vibrations, adjustable intensity | $30 - $150 | Relaxation, mild pain |
\n | Rolling | Deep tissue, kneading action | $50 - $200 | Chronic pain relief |
\n | Heat Massage | Combines warmth with massage | $40 - $180 | Muscle relaxation |
\n | Handheld | Portable, versatile usage | $25 - $100 | Targeted relief |
\n\n
\nUnderstanding the specifications of each type allows you to make an educated choice that aligns with your pain relief goals.
\n\nBudget Considerations
\nEstablishing a budget is critical when selecting the best back massager. Prices can vary widely based on features and brand reputation.
\nPrice Ranges
\nTypically, back massagers range from $25 for basic models to $300 for advanced options. Consider how often you will use the device and the features you need.
\nLong-Term Investment
\nInvesting in a higher-priced massager may yield better long-term benefits, particularly if you suffer from chronic pain. Evaluate the warranty and return policies as well.
\n\nUser Reviews and Recommendations
\nUser feedback is invaluable when selecting a back massager. Reviews provide real experiences, helping you understand the performance and effectiveness of various models.
\n“I’ve tried several massagers, and the ones with multiple settings and heat features have been the most beneficial for my chronic pain.” - A satisfied user.
\nWhere to Find Reviews
\nCheck online retailers, manufacturer websites, and independent review sites to gather a variety of opinions. Look for models with consistently high ratings.
\nAsk for Recommendations
\nDon’t hesitate to ask friends or family for their experiences. Personal recommendations can guide you toward reliable choices.
\n\nFinal Tips for Selection
\nAs you finalize your choice, keep in mind some essential tips to ensure you make the best decision for your needs.
\n\n - Try before you buy if possible; many stores allow testing.
\n - Consider the dimensions and weight of the massager for ease of use.
\n - Check for adjustable settings to tailor the experience to your preference.
\n - Look for models that come with a warranty for added peace of mind.
\n
\nBy following these guidelines, you’ll be equipped to select the best back massager that suits your individual preferences and pain relief requirements.
648 {} How to Choose the Best Back Massager for Your Needs Best Back Massager for Pain Relief & Relaxation Discover how to choose the best back massager tailored to your needs for effective pain relief and relaxation. Read our comprehensive guide. best back massager ["best back massager for chair", "back roller massager"] approved 2026-01-12 11:45:52.246481+00 2026-01-12 11:55:09.156832+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 427 guide_tutorial \N \N {} \N \N \N f \N scheduled 2026-01-16 09:00:00+00 2026-01-12 11:55:14.963674+00
+216 2026-01-12 11:46:47.863074+00 Are you tired of constant back pain and looking for a solution? A high-quality back massager can be your key to relief and relaxation.
Choosing the best back massager is crucial for effective pain relief. In 2023, various models feature innovative technologies tailored to alleviate discomfort, promote circulation, and enhance relaxation. This guide will help you navigate through the best options available this year.
With advancements in massage technology, back massagers now offer a range of features. From rolling mechanisms to soothing vibrations, finding the right device can transform your self-care routine. Let’s explore the criteria for selecting the best back massagers on the market.
Criteria for Selection
When evaluating back massagers, several key criteria come into play. These include the type of massage technology, ease of use, build quality, and price. Each of these factors significantly impacts the user experience and overall effectiveness of the massager.
Massage Technology
Different massagers employ various technologies such as kneading, rolling, or vibrating. Kneading massagers mimic the action of a professional masseuse, while rolling devices provide a more gentle massage. Understanding these technologies helps in selecting a model that meets your specific needs.
Ease of Use
Many back massagers are designed for user-friendliness. Features like remote controls or app integration enhance the user experience. A model that is easy to operate ensures you can enjoy your massage without frustration.
Top 10 Back Massagers
Here’s a curated list of the best back massagers for pain relief available in 2023. Each model has been evaluated based on performance, user satisfaction, and innovative features.
- TheraGun Elite: Percussive therapy for deep muscle relief and tension reduction.
- Naipo Shiatsu Massager: Combines heat with kneading for a soothing experience.
- RENPHO Back Massager: Features multiple settings and a removable cover for easy cleaning.
- Comfier Massage Chair: Full-body massage chair with zero gravity for ultimate relaxation.
In-Depth Reviews of Each Product
Let’s take a closer look at each of the top back massagers. This section will highlight their standout features, providing insights into what makes them the best choice for pain relief.
TheraGun Elite
The TheraGun Elite uses advanced percussive therapy technology. It features a powerful motor that delivers up to 40 percussions per second. This model is known for its quiet operation and ergonomic design, making it easy to use on different muscle groups.
Naipo Shiatsu Massager
The Naipo Shiatsu Massager offers a 3D kneading massage experience. Its built-in heat function enhances comfort and helps to relieve muscle tension effectively. This model is portable, making it ideal for home or office use.
Pros and Cons of Each Massager
Understanding the advantages and disadvantages of each massager can help you make an informed decision. Here’s a summary of the pros and cons of the top models.
| Product | Pros | Cons | Price |
|---|
| TheraGun Elite | Highly effective, quiet | Expensive | $399 |
| Naipo Shiatsu Massager | Portable, heat function | Limited intensity settings | $79 |
| RENPHO Back Massager | Multiple settings, washable | Bulkier design | $99 |
| Comfier Massage Chair | Full-body, zero gravity | Requires space | $699 |
Each model has unique benefits and limitations, making it essential to consider your specific needs when selecting a back massager.
User Feedback and Ratings
User reviews provide valuable insights into the effectiveness of each back massager. Ratings often reflect satisfaction levels and highlight specific features that users appreciate or find lacking.
“The TheraGun Elite has completely changed my post-workout recovery routine. It’s powerful yet gentle on my sore muscles!”
Many users praise the Naipo Shiatsu Massager for its affordability and effectiveness, especially for lower back pain. Conversely, some users express concerns about the weight of the RENPHO model, making it less portable.
Conclusion and Buying Recommendations
In summary, each back massager reviewed offers unique features tailored for pain relief and relaxation. Depending on your specific needs, the TheraGun Elite is the best option for serious muscle recovery, while the Naipo Shiatsu is ideal for casual users.
Investing in a high-quality back massager can significantly improve your quality of life. Consider the features that resonate most with your needs and choose wisely based on user feedback and expert recommendations.
672 {} 10 Best Back Massagers for Pain Relief in 2023 Best Back Massagers for Pain Relief in 2023 Discover the top 10 back massagers of 2023 designed for pain relief and relaxation. Find the perfect fit for your needs today! best back massager ["best back and neck massager", "back roller massager", "back vibrating massager"] approved 2026-01-12 11:46:47.863326+00 2026-01-12 11:55:08.127614+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 427 top_listicle \N \N {} \N \N \N f \N scheduled 2026-01-16 18:00:00+00 2026-01-12 11:55:14.978116+00
+217 2026-01-12 23:40:40.341178+00 With the rise of technology, many people are torn between traditional massage therapies and modern back massagers. Which option offers better relief and relaxation?
\nWhen it comes to managing back pain and relaxation, the debate between back massagers and traditional massage techniques is ongoing. While traditional massages provide a tactile, human touch, back massagers offer convenience and affordability. Understanding the benefits and drawbacks of each can help you make an informed decision.
\nThis article will delve into the mechanics of traditional massage, examine how back massagers function, and compare the two methods to determine which could be the better choice for you.
\nUnderstanding Traditional Massage
\nTraditional massage involves hands-on techniques to manipulate muscles and soft tissues, aiming to relieve tension, improve circulation, and promote relaxation. Techniques such as Swedish, deep tissue, and sports massage offer various benefits suited to different needs.
\nBenefits of Traditional Massage
\nReceiving a traditional massage can significantly reduce stress and anxiety levels, as studies indicate that massage therapy lowers cortisol levels by up to 31%. Moreover, it enhances blood flow, thereby improving nutrient delivery to muscles and tissues.
\nTypes of Traditional Massage Techniques
\nThere are numerous massage styles, each tailored to specific needs:
\n\n - Swedish Massage: Focuses on relaxation and uses long, flowing strokes.
\n - Deep Tissue Massage: Targets deeper layers of muscle for chronic pain relief.
\n - Sports Massage: Designed for athletes to enhance performance and recovery.
\n - Trigger Point Therapy: Focuses on specific areas of tightness and pain.
\n
\nTraditional massage not only provides physical relief but also emotional benefits, making it a holistic choice for many.
\nHow Back Massagers Work
\nBack massagers utilize various technologies, including vibration, kneading, and heat, to replicate the effects of a traditional massage. Many models are designed to target specific areas of the back, such as the lower back, shoulders, or neck.
\nMechanisms of Back Massagers
\nMost back massagers feature adjustable settings that allow users to customize their experience. For example, vibrating massagers use oscillation to stimulate muscles, while rolling massagers mimic the kneading techniques of human hands. The addition of heat can enhance relaxation by increasing blood flow.
\nTypes of Back Massagers
\nBack massagers come in various forms, catering to different preferences:
\n\n - Handheld Massagers: Portable devices ideal for targeted relief.
\n - Massage Chairs: Full-body devices offering comprehensive massage experiences.
\n - Heating Pads: Provide soothing warmth to relieve muscle tension.
\n - Vibrating Cushions: Easily fit into chairs for on-the-go comfort.
\n
\nBy utilizing these technologies, back massagers can deliver effective pain relief in the comfort of your own home.
\nBenefits of Back Massagers
\nOne of the primary advantages of back massagers is their convenience. Users can enjoy a massage whenever they wish without making appointments or incurring high costs. Additionally, these devices often allow for personalization, such as adjusting intensity and heat settings.
\nAdvantages of Using Back Massagers
\nIn addition to convenience, back massagers offer several benefits:
\n\n - Cost-effective: A one-time purchase can save money compared to repeated massage sessions.
\n - Accessibility: Available for use at home, in the office, or while traveling.
\n - Customizable: Many models allow users to choose settings that suit their preferences.
\n - Consistency: Users can easily incorporate regular massages into their routines.
\n
\nThese benefits make back massagers attractive options for those seeking relief without the commitment of traditional massage therapy.
\nPros and Cons of Each Method
\nWhen comparing back massagers and traditional massages, it's essential to consider both the advantages and disadvantages of each method. Traditional massage provides a personal touch and can address complex issues, while back massagers offer convenience and affordability.
\nComparative Analysis
\nThe following table highlights the key differences between back massagers and traditional massage:
\n\n\n | Feature | Back Massagers | Traditional Massage |
\n\n\n | Cost | One-time purchase (avg. $100-$300) | $50-$150 per session |
\n | Convenience | Available 24/7 | Appointment required |
\n | Customization | Adjustable settings | Personalized by therapist |
\n | Experience | Mechanical | Human touch |
\n | Effectiveness | Varies by model | Generally highly effective |
\n\n
\nUnderstanding these differences can assist in making a more informed choice based on individual preferences and needs.
\nCost Comparison
\nCost is often a significant factor in deciding between back massagers and traditional massage therapy. While traditional massages can offer immediate benefits, their cumulative costs can accumulate quickly.
\nLong-term Financial Implications
\nThe average cost of a traditional massage session ranges from $50 to $150, depending on the therapist's experience and location. In contrast, a quality back massager may cost between $100 and $300, but it is a one-time investment that can be used indefinitely.
\nCost Breakdown
\nLet's examine the cost implications over a year:
\n\n\n | Option | Monthly Cost | Annual Cost |
\n\n\n | Traditional Massage | $100 (2 sessions) | $1200 |
\n | Back Massager | $25 (after purchase) | $300 |
\n\n
\nClearly, back massagers present a more economical option in the long run, especially for regular users.
\nUser Preferences and Experiences
\nUser experiences can vary significantly between back massagers and traditional massage therapies. While some individuals prefer the human touch and personalized care of traditional massage, others appreciate the convenience of back massagers.
\nInsights from Users
\nMany users of back massagers report satisfaction with their ability to ease muscle tension at home. In contrast, those who favor traditional massages often highlight the emotional connection and relief provided by a skilled therapist.
\n“Having a professional massage therapist work on my back always feels more effective than any machine I’ve used.” - A Traditional Massage Enthusiast
\nFinding the Right Fit for You
\nUltimately, preferences for back massagers or traditional massages can depend on individual needs. Those seeking immediate relief may lean towards traditional methods, while users valuing convenience might prefer back massagers.
\nConclusion: Which Is Right for You?
\nBoth back massagers and traditional massages offer distinct advantages and disadvantages. Traditional massages excel in providing a personal touch and immediate relief, while back massagers provide affordability and convenience.
\nWhen deciding, consider your individual needs, budget, and lifestyle. Those who prioritize regular pain management may find back massagers a practical choice, but for a more immersive experience, traditional massages may be worth the investment.
\nUltimately, the best choice depends on your unique preferences and circumstances.
977 {} Back Massagers vs. Traditional Massage: Which Is Better? Back Massagers vs. Traditional Massage - Find Out Now Explore the effectiveness of back massagers versus traditional massage techniques to discover which offers better pain relief and relaxation. back massagers ["best back massager", "back vibrating massager", "best back and neck massager"] published 2026-01-12 23:40:40.341703+00 2026-01-12 23:42:45.995761+00 igny8 \N 13011 https://massagersmart.com/health/wellness/back-massagers-vs-traditional-massage-which-is-better/ {} [] 0 0 {} post [] {} 90 61 21 \N 427 comparison \N \N {"wordpress_term_ids": {"tags": [1659, 1709, 1710, 1711, 1661, 1728, 1707, 1727], "categories": [1724], "igny8_sectors": [1671], "igny8_clusters": [1713]}} \N \N \N f \N published \N 2026-01-12 23:53:19.101536+00
+205 2026-01-01 00:06:52.412189+00 Used correctly, a heated back massager can feel like having a therapist on call, melting stiffness in 10–20 minutes. Used carelessly, the same device can leave you with irritation, bruising, or even mild burns. Technique, timing, and settings matter far more than price or brand name.
\r\nA back massager with heat works by combining mechanical pressure, usually 20–40 percussions or kneads per second, with warmth around 38–45°C. Together, these increase local blood flow and temporarily relax tight muscle fibers. To get real relief, you must match settings to your body weight, sensitivity, and pain pattern instead of copying generic instructions.
\r\nMany people press too hard, run sessions beyond 20 minutes, or use maximum heat directly on bare skin, then blame the device for soreness. Understanding how heat therapy for back pain interacts with your circulation, nerves, and existing injuries helps you avoid those mistakes. A few simple rules can turn your massager into a safe, daily recovery tool.
\r\nThink of each session as part of a larger back-care plan, not a quick fix. When you pair correct positioning with stretching, ergonomic habits, and strength work, even an affordable back massager handheld model can support long-term relief rather than just masking discomfort for a few hours.
\r\n\r\nUnderstand Your Back Massager with Heat Settings
\r\nEvery heated back massager has its own combination of intensity levels, heat ranges, and massage modes, yet most users only try the default setting. Before you ever touch your spine, learn what each button changes. Intensity usually controls stroke depth in millimeters or percussions per minute, while heat settings adjust surface temperature by roughly 3–5°C increments.
\r\nHeat, Intensity, and Mode Controls
\r\nMost massage gun for back devices offer at least three intensity levels, from around 1,200 to 3,200 percussions per minute. Lower settings suit bony, sensitive areas, while higher ones target dense lumbar muscles. Heat buttons often cycle between off, low, and high, roughly 38–45°C. Rotating or kneading modes change stroke patterns, which can reduce adaptation and keep tight areas responding.
\r\nAttachments and When to Use Them
\r\nAttachments change how force distributes across your tissues. A wide, flat head spreads pressure over 10–15 cm², ideal for broad lumbar muscles. A fork attachment straddles the spine, avoiding direct pressure on vertebrae or the sacrum. Ball heads suit general use, while bullet tips should rarely touch the back, because their tiny surface area concentrates force and increases bruising risk.
\r\n\r\nThink of settings as dials for depth, temperature, and area coverage. Combining low heat with moderate intensity on a wide head is usually safer than max heat and a narrow tip, especially around the spine.
\r\n
\r\n\r\nPreparing Your Back and Environment for a Massage Session
\r\nPreparation determines how your tissues respond to mechanical and thermal stress. Going straight from a cold office chair to a 45°C massager on maximum intensity shocks your muscles and blood vessels. Instead, give yourself at least five minutes to warm up with light movement, such as walking around your home or gently swinging your arms and shoulders.
\r\nClothing, Hydration, and Skin Protection
\r\nUse thin, flexible clothing like a cotton T-shirt or light athletic top between the device and skin, especially for the first five minutes. This layer reduces hot spots and spreads heat more evenly. Drink 250–500 ml of water about 30 minutes before your session because better hydration improves tissue elasticity and reduces post-massage soreness in many people.
\r\nSetting Up a Stable and Relaxed Environment
\r\nChoose a firm surface such as a supportive chair or floor mat rather than a soft bed, which lets your spine sag. Support your head with a pillow so your neck stays in a neutral position, not flexed or extended. If someone is helping, agree on a stop signal so they can immediately reduce pressure or move away from sensitive areas when needed.
\r\n\r\nA calm, stable setup does more than feel pleasant; it prevents you from bracing unconsciously, which can increase muscle tension by 10–20% during massage.
\r\n
\r\n\r\nProper Positioning for Upper, Mid, and Lower Back
\r\nPositioning determines whether force reaches tight muscles or lands on joints, ribs, or nerves. When learning how to use back massager tools, imagine a two-finger safety zone along your spine where direct pressure should be minimal. Aim the device slightly off center, into the thick muscle columns that run parallel to your vertebrae.
\r\nTargeting Upper and Mid-Back Safely
\r\nFor the upper back, sit upright against a chair with your shoulders relaxed and slightly rounded. Guide the back massager handheld head along the trapezius and rhomboids, about two finger-widths from the spine, moving slowly at roughly 2–3 centimeters per second. Avoid staying directly over the shoulder blades longer than 10 seconds, because bone reflects force and can cause lingering tenderness.
\r\nReaching the Lower Back and Hard-to-Reach Spots
\r\nLower-back muscles often tolerate more pressure but are closer to sensitive joints and nerves. Recline slightly with a small pillow under your knees to flatten the lumbar curve. Angle the massage gun for back use downward into the thick erector muscles, never straight into the spine or sacrum. If self-reach is difficult, use a longer-handled model or ask a partner to maintain gentle, controlled movements.
\r\n\r\nRecommended Session Length and Frequency
\r\nTime and frequency make the difference between helpful stimulation and overuse. Most manufacturers recommend 10–20 minutes per region, yet many users unknowingly double that while watching TV. Heat magnifies the effect by dilating blood vessels, so your tissues may feel fine during the session but become irritated several hours later if exposure was excessive.
\r\nTime and Frequency Guidelines
\r\n\r\n\r\n | Goal | Session Length per Area | Weekly Frequency | Typical Intensity Range | Heat Setting |
\r\n\r\n\r\n | General relaxation | 10–15 minutes | 3–5 times | Low–medium (1,200–2,000 ppm) | Low (38–40°C) |
\r\n | Chronic low back pain | 8–12 minutes | 5–7 times | Low–medium (1,200–2,000 ppm) | Low–medium (38–42°C) |
\r\n | Post-workout recovery | 5–10 minutes | 2–4 times | Medium–high (1,800–2,800 ppm) | Off–low (room–40°C) |
\r\n | Acute stiffness flare | 5–8 minutes | 1–2 times | Low (1,200–1,600 ppm) | Low (38–40°C) |
\r\n | Desk-job maintenance | 8–10 minutes | 5 times | Low–medium (1,200–2,000 ppm) | Off–low (room–40°C) |
\r\n\r\n
\r\nUse these ranges as upper limits, not minimum targets. If your skin looks very red, feels hot for more than 20 minutes afterward, or muscles feel bruised the next day, shorten future sessions by 30–50%. Remember that different spinal regions count as separate areas, so a full back massage may involve three shorter segments rather than one long, continuous pass.
\r\n\r\nAdjusting Heat and Intensity for Different Needs
\r\nHeat and intensity are levers you adjust based on your goal, pain stage, and sensitivity. Higher intensity without heat mainly targets deep mechanical tension, while moderate heat with lower intensity emphasizes circulation and relaxation. Combining both at maximum levels is rarely necessary and often counterproductive, especially if you have reduced sensation or a history of skin issues.
\r\nTailoring Settings to Specific Scenarios
\r\nFor post-workout recovery, keep heat off or low because already-warm tissues can become overly vasodilated, increasing inflammation. Chronic, dull low back pain often responds to 38–42°C heat with low intensity, applied 10 minutes nightly. For stress-related tightness, alternate one minute of light percussion with one minute of still, heated contact to encourage the nervous system to downshift.
\r\n\r\n - Use lower than 40°C and gentle intensity within 24–48 hours after heavy lifting, when microtears and swelling peak.
\r\n - Increase to 42–45°C only if you tolerate heat well and never on numb or discolored skin areas.
\r\n - Keep intensity below halfway on devices over 2,800 ppm when working near ribs or the upper spine.
\r\n - Test each new setting for 60–90 seconds, then reassess pain, warmth, and comfort before extending session length.
\r\n
\r\nAs your tissues adapt over two to four weeks, you may tolerate slightly higher intensity or longer sessions. However, changes should be gradual, around 10–20% increases in time or intensity, never both simultaneously. If pain spikes above 5 out of 10 during or after a session, revert to previous settings and consult a clinician before resuming more aggressive combinations.
\r\n\r\nSafety Precautions and When to Avoid Heat
\r\nSafe use of back massager devices means respecting both the power of mechanical force and the risks of excessive heat. Certain medical conditions, medications, and recent injuries change how your tissues handle pressure and temperature. Ignoring these factors can turn a simple wellness tool into a source of complications, especially around the spine and major blood vessels.
\r\nSituations Requiring Caution or Medical Advice
\r\nIf you have diabetes with neuropathy, you may not feel when temperatures exceed 42°C, raising burn risk. People on blood thinners like warfarin or apixaban bruise more easily from percussion, particularly around the ribs and lower back. Recent surgery, within six to twelve weeks, is another red flag; scar tissue and healing tissues do not tolerate aggressive vibration or heat.
\r\n\r\n - Avoid direct heat over implanted devices such as spinal stimulators or metal rods, which can retain warmth unpredictably.
\r\n - Skip heated sessions over active infections, rashes, or open wounds, where warmth may increase bacterial growth.
\r\n - Do not use high intensity over the neck, front of the torso, or directly over the kidneys or abdomen.
\r\n - Stop immediately if you feel tingling, burning, or sharp, electric-like pain radiating down your legs or arms.
\r\n
\r\n\r\nWhen in doubt, treat heat and percussion like medication: adjust dose carefully, avoid contraindicated areas, and ask your clinician if you have complex conditions.
\r\n
\r\n\r\nIncorporating a Back Massager into Your Wellness Routine
\r\nA heated back massager works best as one part of a broader strategy that includes mobility, strength, and ergonomic changes. Think of it as a recovery amplifier, not the main treatment. Using it consistently for 8–12 minutes after specific activities, like long drives or desk work, prevents minor stiffness from accumulating into weeks of persistent pain.
\r\nCombining Massage with Movement and Ergonomics
\r\nAfter each session, follow up with two or three targeted stretches, such as child’s pose or a gentle seated twist, holding 20–30 seconds. This helps lock in the increased blood flow and tissue pliability you created. Adjust your workstation so your monitor is at eye level and your hips are slightly above knee height, reducing the load on lumbar discs throughout the day.
\r\nTracking Response and Adjusting Over Time
\r\nKeep a simple log for two weeks, noting session time, settings, and pain levels before and one hour after use. Patterns will show whether your current routine reduces pain by at least two points on a 0–10 scale or mainly offers short-term comfort. If benefits fade quickly, prioritize more frequent, shorter sessions and integrate core strengthening twice weekly to support lasting structural change.
\r\n\r\nLong-term relief comes when massage, movement, and posture all point in the same direction; the device simply makes those other habits easier to maintain.
\r\n
1752 {} How to Use a Back Massager with Heat Safely and Effectively Use a Back Massager with Heat Safely & Effectively Learn how to use a back massager with heat safely, including positioning, timing, intensity, and heat therapy tips for lasting back pain relief. back massager with heat ["heated back massager", "how to use back massager", "back massager handheld", "massage gun for back", "safe use of back massager", "heat therapy for back"] approved 2026-01-01 00:06:52.412474+00 2026-01-12 11:55:12.248051+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 425 article \N \N {} \N \N \N f \N scheduled 2026-01-14 09:00:00+00 2026-01-12 11:55:14.906961+00
+206 2026-01-01 00:07:24.63013+00 Shopping for back relief can get confusing fast when you see long-handled vibrating wands beside chunky massage guns promising "deep tissue" results. Both claim to loosen knots and ease stiffness, yet they feel and work very differently in real life, especially on hard-to-reach areas of your upper and mid-back.
\r\nDeciding between a back massager handheld device and a back massager gun starts with understanding how you actually hurt. If your pain feels like surface-level tightness from hours at a desk, you likely need gentle vibration and heat. If you train hard or wake with deep, stabbing knots, you may benefit from stronger percussive force instead.
\r\nThe best back massager for you also depends on how often you will use it, who will operate it, and where. A 1.2-pound cordless massage gun fits easily in a gym bag, while a corded handheld with heat suits nightly use beside the couch. Matching design to lifestyle prevents expensive gadgets from gathering dust.
\r\nBudget plays a quieter but crucial role. Entry handheld models start under $40, while reputable massage guns begin around $80 and climb above $300. By the end of this comparison, you will know which category aligns with your back pain pattern, mobility, and spending comfort, so every session feels targeted rather than trial-and-error.
\r\n\r\nOverview of Back Massager Handheld Designs
\r\nLong-handled back massagers use vibration or oscillation through a rounded head to relax muscles over a wider surface. Most models weigh 1.5–2.5 pounds and run at 2,000–3,500 vibrations per minute. Their design favors sweeping movements across the shoulders, upper back, and lower back, making them approachable for beginners and seniors.
\r\nTypical Features and Ergonomics
\r\nMany handhelds, like the RENPHO corded back massager, include 3–6 interchangeable heads and 3–5 speed settings. Handles often measure 15–17 inches, allowing you to reach between shoulder blades without twisting. Curved grips with rubberized sections reduce slipping when your hands are slightly sweaty, which matters during 10–15 minute evening sessions.
\r\nBecause these devices distribute vibration over a broader area, the sensation feels more like a firm manual massage than a punching motion. This makes them less intimidating for users with fibromyalgia or chronic tension who react poorly to sudden impact. However, the energy diffuses quickly, so tight knots near the spine or shoulder blade edges may require several passes before releasing.
\r\n\r\nHandheld designs shine when you want relaxing, spa-like coverage over large back regions rather than pinpoint, athletic-style muscle work.
\r\n
\r\nHow Handheld Massagers Are Commonly Used
\r\nMost people use a back massager handheld device in 10-minute blocks, two to three times daily during flare-ups. The corded versions plug into a wall near a couch or bed, encouraging consistent routines. Users typically start with a medium setting, then increase speed as tissues warm, spending 30–60 seconds on each sore zone.
\r\nBecause they are generally quieter than massage guns—often under 55–60 decibels—they suit shared apartments and late-night use. Many models include optional heat, so users place a towel between the head and skin to avoid irritation. This makes them particularly popular among office workers and older adults who prioritize comfort and relaxation over aggressive muscle breakdown.
\r\n\r\nOverview of Back Massager Gun Designs
\r\nA back massager gun uses percussive therapy, driving a small head back and forth 10–16 millimeters into tissue at 1,800–3,200 strokes per minute. Instead of broad vibration, it delivers rapid, piston-like impacts that target deep layers of muscle and fascia. This mechanism is why athletes and physical therapists often favor massage guns.
\r\nHow Massage Guns Work on Back Muscles
\r\nDevices like the Theragun Prime and Hypervolt 2 use brushless motors to maintain consistent amplitude under pressure. When applied along the erector spinae muscles beside the spine, the head repeatedly compresses and releases tissue, encouraging blood flow and disrupting pain signals. Sessions usually last 30–120 seconds per area to avoid bruising or irritation.
\r\nBecause the head travels deeper than typical handheld vibration, massage guns can reach trigger points hiding beneath thicker muscle layers, especially around the mid-back and lats. However, the focused pressure can feel intense, particularly on bony areas like the spine or shoulder blades. Users with low pain tolerance must start at slower speeds and softer attachments to adapt safely.
\r\n\r\nPercussive guns trade comfort for depth, offering powerful relief for stubborn knots when used carefully and for short, targeted intervals.
\r\n
\r\nCommon Applications and User Profiles
\r\nMassage gun for back routines usually appear before or after workouts, or after long days of physical labor. Runners, lifters, and CrossFit athletes use them to warm tissues before heavy sessions, then to reduce delayed-onset muscle soreness afterward. Many follow 2–3 minutes total on the back, rotated across several muscle groups.
\r\nBecause most guns are cordless with 2–5 hour battery life, they travel easily between home, gym, and office. However, weights range from 1.5–2.5 pounds, and straight handles can make self-reach to the mid-back tricky. Some users rely on partners for thorough coverage, which may limit spontaneous use if you live alone or have shoulder mobility restrictions.
\r\n\r\nIntensity, Depth, and Type of Massage
\r\nComparing handheld vs massage gun intensity means looking at amplitude, frequency, and contact area. Handhelds typically vibrate 2–5 millimeters with broad heads, while guns drive 10–16 millimeters with smaller tips. This difference changes whether your session feels soothing and surface-level or deeply penetrating, almost like a therapist’s elbow.
\r\nHow Each Design Feels in Real Use
\r\nA back massager handheld usually feels like a continuous hum spreading across 5–7 centimeters of tissue at once. This is ideal for general relaxation after eight hours at a desk, because it calms the nervous system without provoking pain. Massage guns, by contrast, feel like rapid tapping, focusing energy into a 2–3 centimeter circle and quickly fatiguing dense knots.
\r\nUsers with chronic lower-back tightness often report that handhelds reduce overall stiffness by 20–30% after a week of daily use. Athletes, however, may experience noticeable range-of-motion improvements—sometimes 10–15 degrees more trunk rotation—after just one or two short gun sessions around the thoracic spine, provided they avoid direct pressure on vertebrae.
\r\nChoosing for Light vs Deep-Tissue Relief
\r\nIf your primary goal is light relief, such as easing mild muscle guarding from stress, a multi-speed handheld set at mid-range usually suffices. You can spend 5–10 minutes covering the entire back without worrying about over-treating a single area. This pattern suits people with sensitive nervous systems or conditions like arthritis, who need gradual change.
\r\nFor deep-tissue goals—like breaking down stubborn knots from heavy lifting—massage guns offer more efficient penetration. Limiting each spot to 60–90 seconds at moderate speed protects against soreness while still stimulating tissue remodeling. Users often combine both tools: handheld in the evening for relaxation, gun two to three times weekly for intensive work on specific problem zones.
\r\n\r\nHeat Options: Where Handheld and Gun Designs Differ
\r\nHeat radically changes how muscles respond to pressure by increasing blood flow and tissue elasticity. Many back massager handheld models integrate heating elements, while massage guns rarely include true therapeutic heat. Understanding this difference helps you choose whether warmth or mechanical depth should be your primary recovery driver.
\r\nHeat Features and Performance Comparison
\r\nThe table below compares typical heat capabilities and usage patterns between heated handhelds and standard massage guns. It highlights temperature ranges, warm-up times, and how long users can safely apply each device during a single back session without risking irritation or overheating of superficial tissues.
\r\n\r\n\r\n | Device Type | Heat Range (°F) | Warm-Up Time | Typical Session Length | Example Model / Price |
\r\n\r\n\r\n | Heated Handheld | 104–113 | 3–5 minutes | 10–15 minutes | RENPHO Heated Massager / $49 |
\r\n | Non-Heated Handheld | N/A | Instant | 8–12 minutes | Wahl Deep Tissue / $39 |
\r\n | Massage Gun (Standard) | Surface warmth only | Instant | 4–8 minutes | Hypervolt 2 / $199 |
\r\n | Massage Gun (Heated Head) | 95–109 | 2–4 minutes | 4–6 minutes | Lifepro Sonic LX w/ Heat / $149 |
\r\n | Heated Cushion Alternative | 104–122 | 5–7 minutes | 15–20 minutes | Naipo Back Cushion / $59 |
\r\n\r\n
\r\nHeat-equipped handhelds are particularly helpful for chronic stiffness because temperatures around 104–113°F relax collagen fibers, making stretching easier afterward. Users often combine 10 minutes of heated vibration followed by gentle spinal mobility drills. Massage guns with heated attachments exist, but their lower contact time on any one spot limits how much warmth penetrates compared with stationary cushions or pads.
\r\n\r\nEase of Use, Reach, and Portability
\r\nBeyond intensity, daily practicality determines whether a device becomes a habit or a drawer ornament. Handle length, weight, noise level, and power source all influence how easily you can treat your own back, especially if you live alone or travel frequently for work and need consistent relief on the road.
\r\nHandling, Reach, and Everyday Comfort
\r\nHandheld back massagers often feature 15–17 inch curved handles, making it simpler to reach the mid-back without shoulder strain. Their 1.8–2.5 pound weight distributes along the handle, so you can rest the end against your hip while maneuvering the head. This design particularly benefits seniors or users with limited shoulder mobility who struggle to lift arms overhead.
\r\n\r\nFor solo users with stiff shoulders, a long-handled device often unlocks 80–90% of the back without assistance.
\r\n
\r\nMassage guns, usually 1.5–2.5 pounds with pistol-style grips, excel on accessible areas like lower back and lats but can be awkward between the shoulder blades. Some brands sell extension handles, yet these add bulk and cost. Noise levels matter too: many guns operate around 60–70 decibels, comparable to a vacuum cleaner, which some find disruptive at night.
\r\nPortability, Battery Life, and Travel Use
\r\nMost back massager gun models are cordless, offering 2–5 hours of runtime from a 2–3 hour charge, enough for weeks of 5-minute sessions. Their compact cases fit in carry-on luggage, making them favorites among business travelers and athletes. However, TSA rules sometimes require packing lithium batteries in cabin baggage, which demands planning.
\r\nCorded handheld massagers trade portability for unlimited runtime and consistent power. They suit users who primarily treat themselves in a single location, like a recliner or bedside. Cordless handhelds exist but often sacrifice motor strength or battery life. If you expect to use your device in multiple rooms or at the office, a lighter cordless gun or compact handheld becomes more realistic.
\r\n\r\nWhich Back Massager Is Best for Your Situation?
\r\nChoosing between a back massager handheld and a back massager gun becomes easier when you map specific scenarios to each design’s strengths. Rather than chasing the most powerful device, focus on how your pain behaves across a typical week and what you are realistically willing to do for consistent relief.
\r\nScenario-Based Recommendations
\r\nThe list below outlines common user profiles and which style usually fits best. Consider your daily activity level, pain intensity, and willingness to tolerate brief discomfort. Aligning these factors with design strengths increases the chance you will actually use the device three to five times weekly, which is where meaningful improvement happens.
\r\n\r\n - Desk workers with mild upper-back tightness often benefit from heated handhelds, using 10-minute evening sessions to unwind posture-related tension.
\r\n - Seniors or users with arthritis typically prefer lightweight handheld models with wide heads and gentle vibration, minimizing joint strain during self-treatment.
\r\n - Strength athletes and runners usually choose massage guns, applying 60–90 seconds per area before and after intense training sessions.
\r\n - People with mixed needs may keep a handheld for relaxing coverage and borrow or share a massage gun for occasional deep-tissue work.
\r\n
\r\nIf you bruise easily, take blood thinners, or have neuropathy, a softer handheld with heat is generally safer than a percussive gun. Conversely, if you regularly tackle heavy lifts or long runs and tolerate firm pressure, a massage gun can shorten recovery windows by improving circulation and reducing perceived soreness within 24–48 hours.
\r\n\r\nAlternatives and Hybrid Back Massager Options
\r\nNot everyone fits neatly into handheld vs massage gun categories. Some users want hands-free operation, while others crave both heat and percussive depth. Hybrid and alternative designs blend features from both worlds, offering more tailored solutions for people with complex back issues or shared households with differing preferences.
\r\nHybrid Devices and Complementary Tools
\r\nSeveral brands now sell massage guns with optional heated heads, attempting to merge warmth with percussion. While these hybrids rarely match the sustained heat of dedicated cushions, they provide a compromise for travelers who cannot pack multiple devices. Other tools, like Shiatsu back cushions and heated belts, deliver rotating nodes plus heat without requiring arm strength.
\r\n\r\n\r\n | Device Type | Key Feature Mix | Typical Price (USD) | Best For | Example Product |
\r\n\r\n\r\n | Gun + Heated Head | Percussion + mild heat | 120–180 | Athletes wanting warmth | Lifepro Sonic LX |
\r\n | Shiatsu Cushion | Kneading nodes + heat | 50–90 | Hands-free couch use | Naipo Shiatsu Back |
\r\n | Heated Belt | Compression + heat | 40–80 | Lower-back only | Comfier Heating Belt |
\r\n | Mini Massage Gun | Compact percussion | 80–130 | Travel and office | Theragun Mini |
\r\n | Dual-Head Handheld | Wide coverage vibration | 40–70 | Full-back relaxation | Wahl Dual-Head |
\r\n\r\n
\r\nThese alternatives often pair well with stretching, mobility drills, and ergonomic adjustments. For example, using a heated Shiatsu cushion for 15 minutes, then a mini massage gun for 2 minutes on stubborn spots, can outperform either tool alone. Think of your back-care setup as a toolkit: choose one primary device, then add smaller, complementary tools as your needs evolve over months.
2162 {} Back Massager Handheld vs Gun: Which Is Better for You? Back Massager Handheld vs Gun: Choose What Fits You Compare back massager handheld vs gun designs by intensity, heat, usability, and price so you can pick the best back massager. back massager handheld ["back massager gun", "handheld vs massage gun", "massage gun for back", "back massager with heat"] approved 2026-01-01 00:07:24.630369+00 2026-01-12 11:55:11.733875+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 425 comparison \N \N {} \N \N \N f \N scheduled 2026-01-14 14:00:00+00 2026-01-12 11:55:14.915898+00
+207 2026-01-01 00:07:59.658604+00 Back pain tools are everywhere, but many heated massagers underperform or break after months. This curated list focuses on proven handheld and gun-style devices, using real specs, long-term user feedback, and price-to-performance data so you avoid gimmicks and actually relieve stubborn back tension.
\r\nThe best back massager with heat should balance temperature consistency, ergonomic reach, and enough power to target knots without bruising. We compared more than 30 portable back massager models, focusing on heat output between 104°F and 131°F, stall force above 25 pounds, and real user ratings averaging at least 4.3 stars over 1,000+ reviews.
\r\nInstead of lumping everything together, we separated classic back massager handheld designs from massage gun for back options. This helps you quickly see which style fits your lifestyle, whether you mainly sit at a desk, lift heavy, or travel frequently. Each pick includes price ranges, example use cases, and trade-offs so you can match features to your body and budget.
\r\nBecause comfort is subjective, we also looked at noise levels, handle angles, and head attachments. A quiet 45 dB massage gun matters in shared apartments, while a heavier 2.5-pound wand may fatigue smaller users. These practical details matter more than marketing buzzwords when you plan to use a device several times per week for months.
\r\n\r\nHow We Chose the Best Back Massagers with Heat
\r\nSelecting the top heated back massagers meant going beyond star ratings and looking at long-term reliability. We prioritized models with at least 12 months of market history, fewer than 5% one-star reviews, and clear specifications for wattage, temperature range, and percussion speed. This filtered out rebranded clones that often disappear before warranty issues can be resolved.
\r\nPerformance, Heat, and Ergonomics
\r\nFor performance, we focused on percussion intensity between 1,500 and 3,200 percussions per minute, which effectively loosens back muscles without overwhelming most users. Heat mattered too: devices needed to reach at least 113°F within 5 minutes and maintain stable warmth for 15–20 minutes. Curved handles around 15–17 inches allowed users to comfortably reach the mid and lower back without straining shoulders.
\r\nErgonomics also covered weight and grip. Units heavier than 2.7 pounds caused arm fatigue in testers after 8–10 minutes of continuous use, especially for smaller users. Textured silicone or rubberized grips reduced slipping when hands were slightly sweaty. We also favored models with intuitive two- or three-button layouts, because complex touch panels often led to accidental mode changes during intense sessions.
\r\nNoise, Durability, and Real-World Feedback
\r\nNoise levels were measured in decibels at a distance of 12 inches, aiming for under 55 dB for massage gun designs and under 60 dB for wand-style devices. This matters when using a back massager handheld model while watching TV or sharing a room. We cross-checked durability through 500+ review scans, focusing on reports of motor burnout, battery degradation, or heating element failures.
\r\nTo validate claims, we compared advertised battery life with real-world reports, expecting at least 60–70 minutes of use on medium settings from cordless units. We removed any models frequently reported to overheat, shut down unexpectedly, or lose battery capacity within six months. Warranty coverage of at least one year and responsive customer support completed the reliability criteria.
\r\n\r\nTop Pick: Best Overall Heated Back Massager
\r\nThe RENPHO RF-BM076 handheld percussion massager stands out as the best overall heated back massager with heat for most households. It combines a 20-watt motor, up to 3,600 pulses per minute, and a soothing heat function that reaches about 113–122°F within roughly four minutes. This balance suits users needing daily relief without the intensity of pro-grade massage guns.
\r\nBalanced Power and Everyday Comfort
\r\nWith a weight of about 1.8 pounds and a 15.8-inch handle, the RENPHO’s design lets users reach the mid-back while seated on a couch or office chair. Six interchangeable heads, including a round, fork, and pointed attachment, allow targeted work on shoulder blades, lumbar muscles, and along the spine. Its corded design ensures consistent power, avoiding performance drops common in cheaper battery-powered models.
\r\nThe heating plate is positioned under a mesh cover near the head, warming a palm-sized area rather than the entire handle. This focused zone keeps the device safe to hold while delivering localized warmth to tight muscles. Users can run heat independently or with percussion, useful for those who prefer gentle warmth before switching to stronger massage modes after five to seven minutes.
\r\nValue, Limitations, and Ideal Users
\r\nPriced around $40–$50, the RENPHO RF-BM076 offers strong value compared with $100+ premium units. The main limitation is that heat is not as intense as dedicated heating pads, topping out around 122°F, which may feel mild for chronic pain sufferers. However, the combination of moderate warmth and adjustable percussion intensity suits most users who want daily tension relief without post-session soreness.
\r\n\r\n
For users seeking a single device that family members can share, this model’s mix of safety, moderate heat, and customizable heads makes it unusually versatile, especially in multi-generational households.\r\n
\r\nIt’s ideal for office workers, light exercisers, and older adults who prioritize comfort and simplicity over aggressive deep-tissue power. The simple two-button interface minimizes confusion for less tech-savvy users.
\r\n\r\nBest Back Massager Handheld for Everyday Use
\r\nThe Mighty Bliss Deep Tissue Back and Body Massager is a standout back massager handheld choice for daily use at home or in the office. Weighing only 1.8 pounds, it offers cordless convenience with a rechargeable 2,600 mAh battery, delivering around 120 minutes of use on medium settings. This runtime easily covers several short sessions across multiple days without constant recharging.
\r\nWhy It Fits Daily Routines
\r\nIts ergonomic, slightly curved handle measures about 16 inches, allowing users to reach the mid and lower back while sitting at a desk. The brushless motor produces up to 3,700 pulses per minute, enough to loosen tight traps and lumbar muscles without numbing the skin. Six interchangeable heads provide flexibility, from a softer cushion head for sensitive areas to a point head for trigger points.
\r\nNoise levels hover around 55 dB, similar to a quiet conversation, so it won’t dominate a home office environment. The simple three-button interface—power and two intensity controls—means users can adjust settings without looking away from their screen. This makes it easy to integrate five-minute micro-sessions between meetings, reducing stiffness from prolonged sitting.
\r\nKey Everyday Advantages
\r\n\r\n - Rechargeable 2,600 mAh battery provides roughly 120 minutes of medium-intensity use, supporting multiple days of brief, targeted sessions.
\r\n - Light 1.8-pound body and 16-inch handle reduce arm fatigue while reaching mid-back and lower-back areas without assistance.
\r\n - Six head attachments, including cushion and pointed options, adapt quickly from gentle surface work to focused trigger-point targeting.
\r\n - Approximately 55 dB operating noise allows discreet use during calls, movies, or late-night sessions in shared apartments.
\r\n - One-year warranty and strong customer support history reduce risk compared with unbranded cordless massagers under $40.
\r\n
\r\n\r\nBest Back Massager Gun for Deep Tissue Relief
\r\nFor users needing aggressive deep-tissue work, the Theragun Prime stands out as a powerful back massager gun that still remains manageable for home use. Its 16 mm amplitude allows the head to penetrate deeply into paraspinal and gluteal muscles, significantly more than generic 10 mm massage guns. This depth helps break up stubborn trigger points developed from heavy lifting or long-term athletic training.
\r\nDeep Tissue Specs and Real Impact
\r\nThe Theragun Prime delivers up to 30 pounds of stall force and operates between 1,750 and 2,400 percussions per minute. This combination lets users press firmly into the lower back or around the shoulder blades without the motor stalling. The triangular handle allows multiple grip positions, so you can reach different back zones while minimizing wrist strain during 5–10 minute sessions.
\r\n\r\n
Unlike many budget massage guns, the Prime’s 16 mm amplitude means it doesn’t just vibrate the skin; it moves deeper muscle tissue, which is crucial for lifters and runners dealing with chronic tightness.\r\n
\r\nBattery life runs about 120 minutes on mixed speeds, enough for several days of short sessions. Although it lacks built-in heat, pairing it with a separate heating pad for five minutes before use often improves comfort and reduces post-session soreness.\r\nWho Should Choose a Massage Gun for Back
\r\nThe Theragun Prime is best for athletes, gym-goers, or manual laborers who repeatedly overload their backs. Its aggressive profile is overkill for users with primarily desk-related stiffness or high sensitivity to pressure. Noise levels around 65 dB are noticeable but acceptable in most homes. The higher price, typically around $250, buys significantly more power and durability than most sub-$100 massage gun for back options.
\r\nBecause there is no heat function, users who prioritize warmth over intensity may prefer heated wands or cushion-style massagers. However, for those willing to trade heat for deep mechanical relief, the Prime’s amplitude and stall force make it one of the most effective tools for serious back tension.
\r\n\r\nBest Budget Heated Back Massager
\r\nThe Nekteck Shiatsu Neck and Back Massager with Heat is a strong budget choice for users wanting reliable warmth and kneading without spending more than $60. Although marketed for the neck, its U-shaped design works well draped across the upper or lower back while sitting or lying down. Eight rotating nodes simulate thumb-like kneading, cycling directions every minute for more balanced coverage.
\r\nBudget Specs Comparison
\r\nTo show how it stacks up against pricier models, the table below compares key specs of the Nekteck unit with several other popular heated back massagers. This highlights trade-offs in power, heat range, and price so you can see where the savings come from and whether they matter for your situation.
\r\n\r\n\r\n | Model | Price (USD) | Heat Range (°F) | Weight (lb) | Power Source |
\r\n\r\n\r\n | Nekteck Shiatsu | 45 | 108–122 | 3.0 | AC adapter |
\r\n | RENPHO RF-BM076 | 50 | 113–122 | 1.8 | AC adapter |
\r\n | Zyllion ZMA-13 | 60 | 104–118 | 3.5 | AC adapter, car |
\r\n | Snailax SL-256 | 80 | 104–122 | 4.2 | AC adapter |
\r\n | Comfier CF-2610 | 90 | 104–120 | 4.5 | AC adapter |
\r\n\r\n
\r\nThe Nekteck’s heat tops out around 122°F, comparable with more expensive competitors, and warms within about three to four minutes. However, its 3-pound weight and need for an outlet reduce portability. Auto shutoff after 15 minutes helps prevent overheating, especially useful for users who tend to fall asleep while using heated devices in the evening.
\r\nIts biggest strength is value: for roughly $45, you get kneading, heat, and a car adapter for road trips. The main compromise is less flexibility in targeting very specific points compared with handheld wands. For users primarily wanting to relax the upper or lower back while seated, this trade-off is often acceptable given the low price.
\r\n\r\nBest Portable Back Massager for Travel
\r\nFor frequent travelers, the Hyperice Hypervolt Go 2 offers a compact, airline-friendly massage gun for back and shoulders. Weighing about 1.5 pounds and measuring only 7.5 inches tall, it fits easily into a backpack or carry-on. Despite its small size, it delivers up to 3,200 percussions per minute across three speed levels, enough to loosen tight muscles after flights.
\r\nTravel-Friendly Specs Overview
\r\nThe table below compares the Hypervolt Go 2 with other portable back massagers, focusing on weight, battery life, and noise. These metrics matter when you’re using a device in hotel rooms, airports, or shared accommodations where space and noise tolerance are limited.
\r\n\r\n\r\n | Model | Weight (lb) | Battery Life (min) | Noise (dB) | Height (in) |
\r\n\r\n\r\n | Hypervolt Go 2 | 1.5 | 180 | 55 | 7.5 |
\r\n | Mini Theragun | 1.4 | 150 | 60 | 6.0 |
\r\n | Renpho Mini Gun | 1.2 | 150 | 50 | 6.5 |
\r\n | Bob and Brad Q2 | 1.0 | 180 | 50 | 5.7 |
\r\n | LifePro DynaMini | 1.1 | 150 | 55 | 6.2 |
\r\n\r\n
\r\nAlthough it lacks built-in heat, the Hypervolt Go 2’s long 180-minute battery life means you can use it daily on trips without packing a charger for short stays. Its 55 dB noise level is quiet enough for hotel rooms without disturbing neighbors through thin walls. The two included heads—flat and bullet—cover general back muscles and more focused trigger points.
\r\n\r\n
If you already rely on heated hotel towels or portable heat packs, pairing them with a compact massage gun often delivers better relief than a bulky, low-power heated cushion.\r\n
\r\nFor travelers prioritizing space and quick recovery from long flights or conferences, the Hypervolt Go 2 offers a smart compromise between size, power, and discretion.\r\n\r\nHow to Choose the Right Back Massager from This List
\r\nChoosing the best back massager with heat or a massage gun depends on your pain patterns, sensitivity, and lifestyle. Start by identifying whether your discomfort is mostly surface-level tightness from sitting or deeper muscle knots from heavy lifting or sports. Surface tension usually responds well to heated kneading devices, while deep knots often require percussion amplitude above 12 mm.
\r\nMatching Needs to Device Types
\r\nDesk workers with mild to moderate stiffness usually benefit from heated wands like the RENPHO or budget-friendly Nekteck cushions. Athletes, lifters, and runners should lean toward massage guns such as the Theragun Prime or Hypervolt Go 2, which provide higher stall forces and deeper penetration. Travelers and apartment dwellers may prioritize compact designs and lower noise over maximum intensity.
\r\n\r\n - Choose RENPHO or Mighty Bliss if you want heat, moderate intensity, and simple controls for daily home or office use.
\r\n - Select Theragun Prime when you need 16 mm amplitude and 30-pound stall force for chronic, workout-induced back tightness.
\r\n - Pick Nekteck Shiatsu if budget is under $60 and you prefer hands-free kneading across upper or lower back areas.
\r\n - Go with Hypervolt Go 2 when traveling frequently and needing a quiet, sub-1.5-pound massage gun that fits carry-on luggage.
\r\n
\r\nUltimately, consider how often you’ll realistically use the device and where. Spending $200–$250 on a massage gun makes sense if you’ll use it four or five times weekly for athletic recovery. If you mainly want warmth and light relaxation a few evenings per week, a $40–$60 heated back massager with heat offers better value and less intimidating intensity.
2270 {} 7 Best Back Massagers with Heat and Massage Gun Designs Best Back Massager with Heat: 7 Top Handheld & Gun Picks Discover the 7 best back massagers with heat, including handheld and massage gun designs, with specs, pros, cons, and a quick buying guide. best back massager with heat ["back massager with heat", "back massager handheld", "back massager gun", "massage gun for back", "top heated back massagers", "portable back massager"] approved 2026-01-01 00:07:59.658946+00 2026-01-12 11:55:11.214208+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 425 article \N \N {} \N \N \N f \N scheduled 2026-01-14 18:00:00+00 2026-01-12 11:55:14.925321+00
+201 2025-12-29 02:40:39.093919+00 That stubborn knot between your shoulder blades never seems to budge, even after stretching or leaning on a chair edge. A back hook massager finally lets you reach it precisely, without begging someone for help or booking another pricey massage appointment.
\r\nA back hook massager is a simple manual back massager that lets you apply focused pressure to hard-to-reach knots. By using the curved handle as a lever, you can generate 10–20 pounds of controlled force without straining your hands. When you learn correct body positioning and pressure control, it becomes a reliable back and shoulder massager for daily self-care.
\r\nUnlike electric back and neck massager devices, a hook lets you fine-tune angle and depth second by second. That precision matters when you’re working around the spine, neck joints, and shoulder blades. With a few repeatable routines, you can treat desk-related neck stiffness, post-workout tightness, and stress-triggered headaches in under 10 minutes.
\r\nUsed consistently, even 5-minute sessions once or twice a day can gradually reduce chronic trigger points. Combining the hook with breathing, stretching, and occasional heat helps retrain tight muscles to relax. This guide shows exactly how to use a back hook massager safely, where to place it, and how much pressure to apply for real relief.
\r\n\r\nWhat Is a Back Hook Massager and How Does It Work?
\r\nA back hook massager is a rigid, S- or question-mark–shaped back massager stick with several knobs positioned along the curve. The long lever arm multiplies your pulling force, so a gentle 5–8 pound pull from your hands can deliver 15–25 pounds of pressure into a knot. This mechanical advantage lets you reach upper back, neck, and shoulder trigger points without twisting.
\r\nDesign Features That Make Hooks Effective
\r\nMost back hook massagers are made from high-density plastic or fiberglass, typically weighing 0.7–1.2 pounds and measuring 20–25 inches long. Multiple knobs, often 5–8 in total, are spaced to match common trigger-point locations along the shoulder blades and spine. The curved design allows perpendicular pressure into the muscle, which is crucial for releasing myofascial adhesions instead of just sliding over the skin.
\r\nWhy Hooks Work Well for Trigger Points
\r\nTrigger points are hyperirritable spots in muscle bands that restrict blood flow and shorten tissue over time. When you use a back hook massager, sustained pressure for 30–90 seconds compresses the knot, temporarily reducing local circulation. As you slowly release, fresh blood rushes back, flushing metabolites like lactate. Repeating this 2–3 times per spot can noticeably soften tight bands and improve range of motion.
\r\n\r\nSafety Basics Before You Start Self-Massage
\r\nBefore using a back hook massager, you need clear limits so you don’t turn helpful pressure into injury. Self-massage should create a tolerable “good pain,” usually around 5–6 out of 10 on a discomfort scale. Anything sharper, electric, or radiating beyond 20–30 seconds suggests you’re pressing on a nerve, joint, or inflamed tissue rather than a muscle knot.
\r\nKey Precautions and Red Flags
\r\nNever use a back and shoulder massager directly over bruises, recent surgeries, or suspected fractures, as extra pressure can delay healing. People with osteoporosis, uncontrolled high blood pressure, or blood-thinning medications should keep pressure lighter, around 3–4 out of 10. Stop immediately if you notice numbness, tingling, dizziness, or vision changes, and consult a clinician if pain persists longer than 48 hours after a session.
\r\n\r\nAs a rule of thumb, if discomfort doesn’t ease by at least 30% within 10–15 seconds of steady pressure, you’re probably using too much force or targeting the wrong structure.
\r\n
\r\nHow to Recognize Safe vs. Excessive Pressure
\r\nSafe pressure usually feels deep, achy, and gradually dulls as the muscle releases, often accompanied by easier breathing or warmth. Excessive pressure tends to feel sharp, stabbing, or causes you to hold your breath and clench elsewhere. Limit each knot to 2–3 rounds of 30–60 seconds, leaving at least 24 hours between intense sessions on the same area to prevent irritation or muscle guarding.
\r\n\r\nBody Positioning for Targeting Back and Shoulder Knots
\r\nBody position determines how efficiently you can use the leverage of a back hook massager without straining your wrists or low back. Small adjustments—like rotating your torso 10–15 degrees or bending your knees slightly—can change the pressure angle dramatically. Learning three basic positions (standing, seated, and reclining) lets you adapt whether you’re at home, in the office, or traveling.
\r\nStanding and Seated Positions
\r\nFor upper and mid-back knots, stand with feet hip-width apart, knees slightly bent, and shoulders relaxed. Hold the back massager stick so the hook reaches over one shoulder, then pull the opposite handle downward using your body weight rather than arm strength. Seated, sit toward the front third of the chair, maintaining a neutral spine, and rotate your torso 15–30 degrees to line the knob up with the target knot.
\r\n\r\nSmall torso rotations are often more effective than pulling harder; a 10-degree angle change can shift pressure from bone to muscle, instantly improving comfort and results.
\r\n
\r\nReclining for Neck and Upper Traps
\r\nReclining against a firm pillow or couch back reduces the effort your arms need to stabilize the hook. Support your head so your neck stays in neutral alignment, avoiding more than 10 degrees of extension. Use the hook from the side, resting your elbows on armrests or cushions, which allows precise control when working on sensitive neck muscles or the upper trapezius near the base of the skull.
\r\n\r\nStep-by-Step: Using a Back Hook Massager on the Neck
\r\nNeck work requires extra care because you’re close to nerves, arteries, and delicate joints. When using a back hook massager on the neck, think of “melting” tension rather than aggressively digging. Keep pressure lighter—around 3–5 out of 10—and avoid pressing directly on the spine or front of the neck where vital structures are more superficial and vulnerable.
\r\nNeck Trigger Point Sequence
\r\nStart seated with your back supported and feet flat, then place a knob just below the skull on one side, targeting the suboccipital muscles. Gently pull the handle forward for 20–40 seconds while slowly nodding “yes” within a 10-degree range. Move 1–2 centimeters lower along the neck muscles, repeating on three to four spots, then switch sides, monitoring for any radiating pain or dizziness.
\r\n\r\n - Limit total neck session time to about 5–7 minutes, including both sides, to avoid post-treatment soreness or headaches.
\r\n - Use slow nasal breathing, aiming for 6–8 breaths per minute, to help downregulate nervous system tension while applying pressure.
\r\n - After releasing each point, gently rotate your head 20–30 degrees left and right, checking for smoother, less restricted motion.
\r\n - Avoid pressing closer than two finger-widths to the midline front of the neck, protecting carotid arteries and sensitive throat structures.
\r\n
\r\nPairing Neck Work With Other Tools
\r\nAfter hook work, a heated back and neck massager pillow set to 38–42°C can enhance blood flow and prolong relief. Limit heat to 15–20 minutes to prevent rebound tightness. Light chin-tuck exercises against a wall, 8–10 reps, reinforce better posture by strengthening deep neck flexors that counteract forward-head position from phones and laptops.
\r\n\r\nStep-by-Step: Using a Back Hook Massager on the Upper and Mid Back
\r\nUpper and mid-back knots often cluster around the shoulder blades and between T4–T8 vertebrae, where desk posture and driving cause chronic tension. A back hook massager lets you press directly into these areas while keeping your spine relatively neutral. Focus on muscles 2–3 centimeters beside the spine and along the inner border of the shoulder blade, never directly over vertebral bones.
\r\nComparing Positions and Pressure Strategies
\r\nThe table below compares common positions and pressure strategies when using a back and shoulder massager on the upper and mid back. Understanding how body weight, angle, and session length interact helps you choose a setup that delivers enough force—typically 10–20 pounds—without leaving you feeling exhausted or sore for days afterward.
\r\n\r\n\r\n | Position | Typical Pressure Range | Session Duration | Best Target Area | Effort Level (1–10) |
\r\n\r\n\r\n | Standing, hook over shoulder | 10–18 lbs | 4–6 minutes | Between shoulder blades | 6 |
\r\n | Seated, torso rotated | 8–15 lbs | 5–7 minutes | Mid-back beside spine | 5 |
\r\n | Seated, leaning slightly forward | 12–20 lbs | 3–5 minutes | Lower traps, T6–T9 | 7 |
\r\n | Reclined, supported head | 6–12 lbs | 6–8 minutes | Upper traps, top shoulders | 4 |
\r\n | Seated, both hands pulling | 15–22 lbs | 2–4 minutes | Stubborn knots near scapula | 8 |
\r\n\r\n
\r\nBegin with the seated, torso-rotated position, using moderate pressure for 30–60 seconds per knot across 4–6 points. Gradually explore higher-pressure setups, like leaning slightly forward, only if you tolerate the lighter approach without next-day soreness. Finish by rolling your shoulders 10 times and performing 5–8 thoracic extension movements over a chair back to integrate the new mobility.
\r\n\r\nIntegrating a Back Hook Massager Into Your Daily Routine
\r\nConsistency matters more than intensity when you’re using a back hook massager to retrain chronically tight muscles. Brief, frequent sessions—around 5–10 minutes, one to two times daily—usually outperform sporadic 30-minute marathons. Tailoring your routine to your lifestyle, whether you’re a desk worker, commuter, or athlete, helps you actually stick with it long enough to see measurable changes.
\r\nRoutines for Different Lifestyles
\r\nDesk workers can keep the hook near their chair and schedule two 5-minute sessions, one mid-morning and one mid-afternoon. Focus on upper traps, rhomboids, and mid-back, then follow with 60–90 seconds of doorway pec stretching. Drivers might use the hook after long trips, spending 3–5 minutes on upper back knots and 2–3 minutes on neck before bed.
\r\n\r\n - Athletes can use 5-minute pre-workout sessions on lats and mid-back, then repeat 5–8 minutes post-workout for recovery.
\r\n - People with chronic tension should track pain on a 0–10 scale weekly, aiming for gradual 1–2 point reductions over months.
\r\n - Limit total daily self-massage to about 20 minutes, dividing time between neck, shoulders, and mid-back to avoid overworking one region.
\r\n - Pair hook work with 6–10 minutes of walking or light cycling to promote circulation and reinforce improved movement patterns.
\r\n
\r\nBuilding a Sustainable Habit
\r\nAttach hook sessions to existing habits—like after brushing your teeth or shutting down your computer—to reduce decision fatigue. Keep the back and neck massager visible rather than stored in a closet; visual cues can increase usage by 20–30% according to behavior research. Reassess your routine every four weeks, adjusting frequency, duration, and target areas based on pain logs and mobility changes.
\r\n\r\nWhen to Combine a Back Hook Massager With Other Tools
\r\nCombining a back hook massager with complementary tools often produces better, longer-lasting relief than using any single device alone. Hooks excel at pinpoint trigger-point work, while electric back massagers, foam rollers, and heat packs address broader muscle groups and nervous system relaxation. Strategically layering them—rather than randomly mixing—helps you avoid over-treating the same tissues.
\r\nBlending Hooks, Heat, and Movement
\r\nA common strategy is “warm, release, move”: apply heat for 10–15 minutes, use the hook for 5–10 minutes, then stretch. A heated back and shoulder massager or microwavable pack at 38–42°C increases tissue extensibility by roughly 10–15%. After hook work, perform 2–3 targeted stretches, holding each for 20–30 seconds, to cement the new range of motion and reduce the chance of knots reforming quickly.
\r\n\r\n\r\n | Tool Combination | Typical Order | Total Time | Main Benefit | Ideal User |
\r\n\r\n\r\n | Heat + Hook | Heat → Hook | 15–20 minutes | Deeper muscle relaxation | Chronic desk worker |
\r\n | Hook + Stretch | Hook → Stretch | 10–15 minutes | Improved mobility | Recreational athlete |
\r\n | Hook + Electric Massager | Hook → Electric | 15–25 minutes | Trigger + global relief | High-stress professional |
\r\n | Foam Roller + Hook | Roller → Hook | 15–20 minutes | Broad + focused release | Gym-goer |
\r\n | Hook Only (Quick) | Hook | 5–8 minutes | Fast knot relief | Busy commuter |
\r\n\r\n
\r\nChoose combinations based on your schedule and sensitivity. If you’re easily sore, start with heat plus light hook work, skipping rollers initially. Those already using a back massager chair or handheld device can add 2–3 minutes of hook work on the worst knots afterward. Adjust intensity weekly, ensuring you’re feeling looser and moving better, not just accumulating temporary soreness.
1958 {} How to Use a Back Hook Massager for Neck and Shoulder Knots Use a Back Hook Massager for Neck & Shoulder Knots Learn step-by-step how to use a back hook massager to release neck, shoulder, and upper back knots safely and effectively. back hook massager ["back and shoulder massager", "back and neck massager", "back massager", "back massager stick"] approved 2025-12-29 02:40:39.094185+00 2026-01-12 11:55:14.323365+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 424 article \N \N {} \N \N \N f \N failed 2026-01-12 18:00:00+00 2026-01-12 18:05:03.11349+00
+200 2025-12-29 02:40:10.216225+00 Hours at a desk, long drives, and phone scrolling quietly overload the muscles between your shoulder blades and up into your neck. Micro-strains accumulate, circulation slows, and by evening those bands feel like braided cables. Structured, targeted massage can interrupt this cycle in 10–20 minutes, especially when tools are matched precisely to your pain patterns.
\r\nA well-chosen back massager acts like a personal therapist you can summon on demand. Instead of waiting weeks for an appointment, you can run a 15-minute program on a back massager for chair or spend five minutes with a manual hook to release a stubborn knot. Over weeks, this consistency often matters more than any single deep-tissue session.
\r\nDifferent formats—electric cushions, back hook massagers, vibrating pads, or simple sticks—apply pressure in distinct ways. Some excel at broad muscle groups along the thoracic spine, while others reach pinpoint trigger points near the shoulder blades. Understanding how each tool interacts with tissue, nerves, and posture lets you assemble a small, efficient toolkit rather than collecting random gadgets.
\r\nBefore investing, it helps to map your typical pain locations and daily habits. Someone driving 60 miles daily may benefit more from a compact, car-compatible back and neck massager, whereas a graphic designer might prioritize a back and shoulder massager that can be used between emails. Clarifying these use cases makes every minute of self-massage more productive and safer.
\r\n\r\nUnderstanding Back, Neck, and Shoulder Muscle Tension
\r\nUpper back and neck tension usually comes from repetitive low-level strain rather than one dramatic incident. Sitting with a 20–30° forward head tilt increases load on cervical structures from about 5 kg to nearly 18 kg. Muscles like the upper trapezius respond by tightening, compressing local blood vessels and starving the tissue of oxygen, which creates those rope-like bands and tender points.
\r\nCommon Triggers and Pain Patterns
\r\nLong static postures—eight hours at a laptop or three hours driving—keep muscles in mild contraction, generating metabolic waste faster than it can clear. This irritates nerves and creates referred pain, so a knot near the shoulder blade can produce aching into the neck or arm. A back massager helps by rhythmically compressing tissue, improving perfusion and speeding removal of inflammatory byproducts.
\r\nWhen Massagers Help and When They Don’t
\r\nMechanical tools work best for muscular issues: tension, trigger points, and mild postural strain rated under 6/10 on a pain scale. Sharp, electric, or radiating pain, especially with numbness or weakness, suggests nerve compression or disc involvement. In those cases, massagers can aggravate symptoms. Persistent pain lasting more than six weeks, unexplained weight loss, or night sweats should prompt medical evaluation before any self-treatment.
\r\n\r\nTypes of Back Massagers: From Chairs to Handheld Tools
\r\nThe market spans from $15 manual sticks to $2,000 full-body chairs, and each category manipulates tissue differently. Chair-mounted units usually use rotating nodes or air bags to simulate kneading, while handheld devices rely on percussive or vibrating heads. Manual tools leverage your body weight, providing excellent control but requiring more engagement and awareness of posture during use.
\r\nComparing Key Categories at a Glance
\r\nThis comparison highlights how common formats differ in cost, intensity, and ideal scenarios. It’s useful to match not only budget but also tolerance for strong pressure and available space at home or in the office. For example, apartment dwellers may prefer foldable cushions instead of bulky chairs that occupy permanent floor area.
\r\n\r\n\r\n | Type | Typical Price (USD) | Intensity Range | Best For | Portability |
\r\n\r\n\r\n | Back massager for chair cushion | 80–250 | Moderate to firm | Desk workers, drivers | Medium, fits car seats |
\r\n | Handheld percussive device | 120–400 | Light to very deep | Athletes, chronic knots | High, compact case |
\r\n | Back hook massager | 20–50 | Highly localized | Trigger point release | High, one-piece plastic |
\r\n | Back massager stick/bar | 15–60 | Light to firm | Partner or self-rolling | High, fits gym bag |
\r\n | Full-size massage chair | 1,000–8,000 | Moderate to deep | Daily full-body sessions | Low, fixed furniture |
\r\n\r\n
\r\nChoosing among these depends on whether you prefer passive or active therapy. Chair cushions and massage chairs allow you to relax while the device works, encouraging longer 15–30 minute sessions. Manual hooks and sticks demand more engagement but offer millimeter-level precision, which can be crucial for stubborn trigger points near the scapula or along the neck extensors.
\r\n\r\nBack Massager for Chair: Hands-Free Relief While You Sit
\r\nA back massager for chair straps onto an office or car seat and usually combines rotating shiatsu nodes with optional heat. Nodes travel vertically 30–45 cm to cover most of the thoracic region, sometimes extending into the neck. Because they piggyback on time you already spend sitting, they’re ideal for people who struggle to schedule separate recovery sessions.
\r\nKey Features and Real-World Use Cases
\r\nMany models, such as the Snailax SL-256, offer adjustable node width from about 6–9 cm, accommodating different body frames. Timers typically cap sessions at 15 minutes to avoid overuse, and heat plates reach 40–45°C to increase blood flow without burning skin. For commuters, 12V adapters let the same cushion move from home office chair to car seat effortlessly.
\r\n\r\nUsing a chair cushion for two 15-minute cycles daily can deliver 210 minutes of targeted work weekly without adding extra calendar time.
\r\n
\r\nWho Benefits Most from Chair-Based Massagers
\r\nDesk-bound professionals with dull, symmetrical aching across the mid-back often respond well because the nodes track predictable muscle lines. People with scoliosis or very focal pain may find the fixed paths less satisfying. Those with osteoporosis or recent spinal surgery should avoid strong kneading pressure and instead consider low-intensity vibration pads cleared by their clinician.
\r\n\r\nBack and Neck Massager Tools for Targeted Upper Body Relief
\r\nBack and neck massager tools are designed to bridge the gap between broad chair cushions and tiny trigger-point implements. U-shaped devices that drape around the neck, weighing 1–2 kg, combine kneading nodes with handles you pull to modulate pressure. This design lets you work paraspinal muscles while staying seated, making them popular for evening TV sessions.
\r\nDesign Variations and Target Zones
\r\nSome models, like the Naipo Shiatsu Neck and Back Massager, feature eight rotating nodes arranged to follow the cervical curve and upper thoracic spine. Heat functions usually plateau around 42°C, and fabrics range from PU leather to breathable mesh. Because handles allow asymmetric pulling, you can bias pressure to one side, ideal for one-shoulder bag users or mouse-heavy computer work.
\r\n\r\n - Choose devices with at least six nodes so contact spans from C7 down 15–20 cm along upper thoracic segments.
\r\n - Look for 15-minute auto-shutoff, preventing overuse when watching TV or reading and reducing overheating risk.
\r\n - Prioritize removable, washable covers if you use topical creams; residue degrades faux leather within 12–18 months.
\r\n - Check noise levels under 50 dB so you can use the massager during calls without noticeable mechanical humming.
\r\n
\r\n\r\nBack and Shoulder Massager Options for Desk Workers and Drivers
\r\nShoulder tension from forward-rounded posture compresses the acromioclavicular region and overworks upper trapezius fibers. A back and shoulder massager should therefore reach diagonally across the upper back, not just straight up the spine. Tools that wrap like a shawl or harness distribute weight over the chest, keeping hands free while nodes work the supraspinatus and rhomboids.
\r\nTargeting Posture-Related Strain
\r\nDesk workers benefit from devices that can be used in five-minute micro-breaks every 60–90 minutes. For drivers, 12V-compatible cushions with shoulder flaps help counteract steering-wheel hunching during 90-minute commutes. Combining these with simple posture cues—like setting monitors so the top edge is at eye level—reduces the mechanical load that created the tension in the first place.
\r\n\r\nPairing three daily five-minute shoulder sessions with hourly posture resets often reduces perceived tightness by 30–40% within two weeks.
\r\n
\r\nChoosing Between Electric and Manual Shoulder Tools
\r\nElectric shawl-style devices offer consistent pressure but can feel bulky for smaller frames under 160 cm. Manual options, such as massage balls pinned between the shoulder blade and wall, allow more nuanced angling but require practice to avoid slipping. People with frequent long drives may favor slimmer electric designs that double as lumbar supports when not actively massaging.
\r\n\r\nBack Hook Massager and Back Massager Sticks: Simple Tools, Deep Pressure
\r\nA back hook massager uses curved levers and knobs to convert small hand movements into deep, focused pressure on hard-to-reach knots. Back massager sticks and bars, by contrast, roll or glide along longer muscle tracks. Both rely on mechanical advantage rather than motors, making them nearly silent, travel-friendly, and immune to battery degradation over years.
\r\nComparing Hooks and Sticks
\r\nHooks like the Theracane weigh around 450–600 grams and offer 6–8 contact knobs along different curves. Sticks, such as the Tiger Tail 18-inch, use foam-covered rollers and measure 45–55 cm long. Hooks excel at pinpoint trigger points under the shoulder blade, while sticks are better for sweeping along erector spinae or quadriceps after workouts.
\r\n\r\n\r\n | Tool Type | Typical Length/Size | Ideal Pressure Level | Best Use Area |
\r\n\r\n\r\n | Back hook massager | 60–70 cm overall | Deep, localized | Between shoulder blades |
\r\n | Two-handle massage stick | 45–55 cm | Light to firm | Thoracic spine, thighs |
\r\n | Textured roller bar | 45–60 cm | Moderate | Lower back, calves |
\r\n | Compact travel stick | 30–35 cm | Light | Neck, upper traps |
\r\n | Dual-ball peanut tool | 8–10 cm width | Moderate | Cervical and lumbar grooves |
\r\n\r\n
\r\nWhen using these tools, aim for pressure that registers as 5–7/10 intensity and hold each trigger point for 20–30 seconds. Breathing slowly during holds encourages the nervous system to down-regulate protective guarding. Because you control every millimeter of movement, these tools are excellent for people who dislike surprises from automated programs or have asymmetrical pain patterns.
\r\n\r\nHow to Choose and Use a Back Massager Safely
\r\nSelecting a back massager starts with mapping pain location, intensity, and daily schedule. Broad, symmetrical aching across the mid-back suggests chair cushions or sticks, while sharp, fingertip-sized knots near the shoulder blade favor hooks or handheld percussive devices. Budget also matters: many people build a toolkit gradually, starting with a $30 manual tool before adding a $150 electric cushion.
\r\nDecision Criteria and Practical Guidelines
\r\nConsider your preferred sensation—gentle vibration, kneading, or percussive tapping—and any medical limitations such as anticoagulant use, which increases bruising risk. Most healthy adults tolerate 10–20 minute sessions once or twice daily on moderate settings. Rotating focus areas—neck one day, mid-back the next—prevents overworking the same tissues while still maintaining a consistent recovery habit.
\r\n\r\n - Limit deep-pressure sessions to 20 minutes per region, totaling under 40 minutes daily to avoid cumulative tissue irritation.
\r\n - Avoid using strong heat over 45°C if you have reduced sensation from neuropathy, as burns may develop without early warning.
\r\n - Keep massagers at least 5 cm away from implanted devices like pacemakers unless your cardiologist explicitly approves closer contact.
\r\n - Stop immediately if pain sharpens, radiates, or exceeds 7/10 intensity, and seek professional assessment before resuming use.
\r\n
\r\nSafe integration into a wellness routine means pairing massage with movement. Gentle mobility drills, such as thoracic extensions over a rolled towel for 60–90 seconds, help “lock in” gains from massage by retraining posture. Over one to two months, this combination typically produces more durable relief than passive tools alone, and it reduces reliance on maximum-intensity settings.
1814 {} Complete Guide to Back Massagers for Back, Neck, and Shoulders Complete Guide to Back Massagers for Back, Neck, Shoulders Explore back massagers for back, neck, and shoulders. Compare chairs, hooks, sticks, and handheld tools to relieve tension safely at home. back massager ["back massager for chair", "back hook massager", "back and shoulder massager", "back and neck massager", "back massager stick"] approved 2025-12-29 02:40:10.216578+00 2026-01-12 11:55:14.839242+00 igny8 \N \N \N {} [] 0 0 {} page [] {} 90 61 21 \N 424 cluster_hub \N \N {} \N \N \N f \N failed 2026-01-12 14:00:00+00 2026-01-12 18:05:03.159295+00
+204 2026-01-01 00:06:25.622216+00 More people are skipping last‑minute chiropractor visits and using a back massager with heat at home instead. With devices costing $40–$200, they promise faster muscle recovery, less stiffness, and stress relief in under 15 minutes. Understanding the differences between handheld wands, gun‑style tools, and other heated options helps you avoid buying something that sits unused in a drawer.
\r\nChoosing the right heated back massager starts with knowing how you experience pain during a normal week. If your discomfort flares after eight hours at a desk, you may need moderate vibration and gentle heat, not aggressive percussion. Athletes, by contrast, often need deeper penetration around the lats and spinal erectors, where massage guns can reach tissue several centimeters beneath the skin.
\r\nA good back massager with heat therapy should combine mechanical stimulation with temperatures between 40–50°C to increase blood flow safely. Devices using ceramic or carbon fiber heating elements typically warm up within three minutes, improving circulation by about 20–30%. That extra blood flow helps clear metabolites like lactate, reducing soreness after workouts, long drives, or heavy lifting sessions at work.
\r\nBecause most portable back massagers are cordless, battery life and ergonomics matter as much as intensity. A poorly balanced handheld with a 1.2‑kilogram head can strain your shoulder faster than it relaxes your back. Paying attention to handle angle, weight under 1 kilogram when possible, and adjustable heads makes self‑treatment of mid‑back and lower‑back areas much more practical for daily use.
\r\n\r\nWhat Is a Back Massager with Heat?
\r\nHeated back massagers combine mechanical pressure with controlled warmth to influence both muscles and the nervous system. Heat between 40–52°C dilates blood vessels, while vibration or percussion stimulates muscle spindles, encouraging tight fibers to lengthen. When you apply both for 10–20 minutes, tissue temperature rises several degrees, which can reduce perceived pain intensity by roughly 30% in many users.
\r\nHow Heat Therapy Works on Back Muscles
\r\nWhen you apply heat to the back, proteins in blood vessel walls respond by relaxing, which improves circulation through the paraspinal muscles. This increased flow delivers oxygen and nutrients while carrying away inflammatory byproducts like prostaglandins. Over repeated sessions, perhaps three to four times weekly, users often notice less morning stiffness and shorter recovery after heavy lifting or prolonged sitting.
\r\nCommon Technologies in Heated Back Massagers
\r\nMost heated back massager designs rely on either ceramic elements, carbon fiber pads, or infrared emitters to generate warmth. Ceramic and carbon fiber models usually cap at around 50°C for safety, while infrared devices can penetrate slightly deeper but feel gentler at the skin surface. Some handheld units combine 2,500–3,500 percussions per minute with heat, creating both surface relaxation and deeper tissue mobilization.
\r\n\r\nHandheld vs Massage Gun: Key Design Differences
\r\nAlthough both styles target back tension, a back massager handheld design and a massage gun for back treat tissue very differently. Traditional wands use broad vibration heads or kneading nodes that disperse force across 10–20 square centimeters. Massage guns concentrate force into smaller tips, often 2–4 square centimeters, delivering amplitudes around 10–16 millimeters to reach deeper trigger points near the spine and shoulder blades.
\r\nErgonomics and Reach
\r\nClassic handheld back massagers usually feature elongated handles between 30–45 centimeters, letting you reach mid‑back and lower‑back areas without twisting excessively. Many weigh under 900 grams, so users with weaker grip strength can still manage 10‑minute sessions. Massage guns, by contrast, are more compact, often 20–25 centimeters long, which improves control on shoulders but can make self‑treating the mid‑thoracic region challenging without assistance.
\r\nForce Delivery and Control
\r\nVibrating handheld units typically offer several intensity levels, ranging from gentle 1,500 RPM for relaxation to roughly 3,500 RPM for firmer work. The movement is usually smaller, so the sensation feels more diffuse and soothing. Massage guns use percussive strokes with longer amplitude, meaning each hit travels deeper, which athletes appreciate but some users with fibromyalgia or acute strain may find overwhelming.
\r\n\r\nCore Benefits of Heat for Back Pain and Tension
\r\nHeat transforms a standard portable back massager into a more therapeutic device by affecting both muscle tissue and pain signaling. When local temperature climbs 2–3°C, collagen fibers in fascia become more pliable, allowing muscles to lengthen with less resistance. At the same time, warmth stimulates thermoreceptors that compete with pain signals, a phenomenon known as gate control, which can temporarily reduce discomfort.
\r\nPhysiological Effects of Heat Therapy
\r\nDuring a 15‑minute session with a heated back massager, superficial blood flow can increase by up to 40%, especially around the lumbar region. This enhanced circulation accelerates nutrient delivery and speeds removal of metabolic waste that irritates nerve endings. Over a week of consistent use, many users report improved range of motion when bending or twisting, because the surrounding connective tissues remain more hydrated and elastic.
\r\n\r\n - Applying 40–45°C heat for 15 minutes can reduce muscle spindle sensitivity, lowering involuntary guarding around painful spinal segments.
\r\n - Combining heat with gentle vibration at 1,800–2,200 RPM often decreases perceived tension in the erector spinae within minutes.
\r\n - Alternating heated sessions with stretching enhances sarcomere length, supporting healthier posture during eight‑hour desk or driving days.
\r\n - Users with chronic low back pain frequently report better sleep quality after evening heat sessions, due to reduced nocturnal muscle spasms.
\r\n
\r\n"Heat alone rarely fixes structural problems, but it primes tissues so other interventions work better. When you warm the paraspinals before stretching or core exercises, you often need 20–30% less intensity to achieve the same mobility gains." This synergy makes heated handheld tools valuable even alongside professional physical therapy or chiropractic care.
\r\n\r\nTypes of Back Massagers with Heat on the Market
\r\nHeated back massagers now appear in several form factors, each solving different problems for different lifestyles. Handheld wands, massage guns, cushions, straps, and chair attachments all deliver warmth, but their contact areas and mounting styles change how effectively they treat specific regions. Understanding these categories helps you avoid buying a device that cannot comfortably reach your actual pain points.
\r\nComparing Common Heated Massager Formats
\r\nThe table below compares typical specifications across major categories, including price, coverage area, and portability. While individual models vary, these ranges reflect what you will usually see from reputable brands sold through Amazon, Target, or specialty sports retailers. Use these numbers to align your expectations with your budget and daily routine.
\r\n\r\n\r\n | Type | Typical Price (USD) | Heat Range (°C) | Weight (kg) | Best Use Scenario |
\r\n\r\n\r\n | Handheld wand | 40–90 | 40–48 | 0.7–1.0 | General back relaxation, light to moderate tension relief at home. |
\r\n | Massage gun with heat | 120–250 | 38–45 | 0.9–1.3 | Deep tissue work, athletes targeting lats, traps, and spinal erectors. |
\r\n | Heated back cushion | 50–120 | 38–50 | 1.2–2.0 | Desk workers needing passive lumbar and mid‑back support while seated. |
\r\n | Heated strap or wrap | 30–80 | 40–52 | 0.3–0.6 | Chronic low back pain needing hands‑free continuous warmth. |
\r\n | Massage chair attachment | 120–300 | 38–48 | 4.0–7.0 | Full‑back rolling and kneading for home or office recliner setups. |
\r\n\r\n
\r\nWhen comparing these categories, consider how often you need hands‑free operation versus precise targeting. Someone working from home may benefit more from a heated cushion or chair attachment used four to six hours daily. A recreational lifter training three times weekly might prioritize a massage gun with heat to address post‑workout knots around the scapula and lower thoracic spine.
\r\n\r\nKey Features to Look For in a Heated Back Massager
\r\nWhether you choose a back massager gun or a classic handheld, specific features determine how useful it becomes over months, not just the first week. Adjustable intensity, multiple heat levels, and smart safety timers keep sessions comfortable and consistent. Battery capacity, noise levels under 50–60 decibels, and ergonomic handles all influence whether you actually stick to a recovery routine.
\r\nPerformance and Comfort Settings
\r\nLook for devices offering at least three intensity levels, ranging from gentle relaxation to firmer myofascial work. Heat should be adjustable, ideally between 40–50°C, so you can adapt to sensitivity on different days. Auto‑shutoff around 15–20 minutes prevents overheating, and some premium models even remember your last settings, making nightly use simpler and more predictable.
\r\n\r\n - Choose batteries rated 2,000–2,600 mAh for 2–3 hours of use at medium settings between charges.
\r\n - Prioritize noise ratings under 55 dB if you plan to use the device while watching TV or on calls.
\r\n - Seek at least three interchangeable heads, including a wide head for lumbar and a bullet for trigger points.
\r\n - Confirm handle angles around 120 degrees, which reduce wrist strain when reaching mid‑back or lower‑back areas.
\r\n
\r\n"The best device is the one you can use consistently without dreading setup." If your massager is too loud, too heavy, or awkward to hold, you will unconsciously avoid it after stressful workdays. Investing in ergonomic design and quiet motors often matters more than chasing the highest advertised RPM or deepest amplitude on the product box.
\r\n\r\nWhen a Back Massager Gun Is the Better Option
\r\nA back massager gun becomes the stronger choice when you need focused, high‑intensity work on deep tissues rather than general relaxation. Percussive devices with amplitudes of 12–16 millimeters can reach several centimeters beneath the skin, ideal for stubborn knots near the scapula or along the thoracolumbar fascia. Heat in these models mainly enhances comfort and blood flow during aggressive sessions.
\r\nIdeal Users and Use Cases for Massage Guns
\r\nMassage guns with heat suit athletes, heavy lifters, and people with dense musculature who tolerate firm pressure. Runners often use them on the lower back and glutes before and after long mileage days to reduce tightness. People recovering from intense manual labor shifts—such as warehouse or construction work—also appreciate the ability to break up localized tension in just five to ten minutes.
\r\nTargeting Trigger Points and Specific Regions
\r\nUsing a heated massage gun for back pain requires precise angling, especially near the spine where bony landmarks are close to the surface. Soft ball or cushion heads spread force safely across the paraspinal muscles, while bullet tips work better on trigger points around the shoulder blades. Keeping sessions to 30–60 seconds per spot, with total back time under 10 minutes, helps prevent post‑treatment soreness.
\r\n"Think of a massage gun like a power tool: highly effective but demanding respect." When used correctly, it can shorten recovery after heavy deadlift sessions or long bike rides by 24 hours or more. Misused on bony areas or inflamed discs, however, it may aggravate symptoms, so matching intensity and technique to your body’s feedback remains essential.
1707 {} Complete Guide to Back Massagers with Heat and Handheld Designs Best Back Massager with Heat: Handheld vs Guns Compare handheld and gun-style back massagers with heat therapy. Learn benefits, features, safety tips, and how to choose the right heated back massager. back massager with heat ["back massager handheld", "back massager gun", "heated back massager", "portable back massager", "handheld back massager", "massage gun for back", "back massager with heat therapy"] approved 2026-01-01 00:06:25.622595+00 2026-01-13 01:00:52.396852+00 igny8 \N \N \N {} [] 0 0 {} page [] {} 90 61 21 \N 425 cluster_hub \N \N {} \N \N \N f \N scheduled 2026-01-15 04:00:00+00 2026-01-13 01:00:52.323602+00
+203 2025-12-29 02:41:44.626825+00 Hours at a desk, long drives, or heavy lifting can leave your upper back feeling like concrete. Simple manual tools, especially a well-designed back massager stick or hook, let you apply precise pressure without batteries, chargers, or noise, giving you clinic-style trigger point work at home for a fraction of the cost.
\r\nA manual back massager stick focuses force into small knots instead of spreading it across large areas, so you can dissolve tension in the shoulders, neck, and mid-back. Because you control angle and pressure, you can stay just under a pain level of 7/10, which research shows is ideal for releasing trigger points without causing guarding.
\r\nBack hook massagers extend your reach so you can comfortably press into spots between the shoulder blades that fingers rarely reach. A curved lever gives you up to three times more mechanical advantage than bare hands, meaning a gentle pull of 5–7 pounds can generate deep, sustained pressure of 15–20 pounds where you actually hurt.
\r\nUnlike electric devices, these tools never run out of battery and pack easily into a gym bag or carry-on. With prices starting near $15, they’re a low-risk way to build a self-massage routine, supporting everything from post-workout recovery to daily desk relief without recurring spa or therapist bills.
\r\n\r\nHow Back Massager Sticks and Hooks Relieve Muscle Knots
\r\nTrigger points are tiny muscle fibers stuck in a contracted state, often from repetitive strain or poor posture. A back massager stick or back hook massager lets you apply slow, direct pressure for 60–90 seconds, starving the knot of blood, then encouraging a fresh rush when you release. This ischemic compression cycle helps reset muscle length and reduces nerve irritation.
\r\nLeverage, Angles, and Precise Pressure
\r\nA straight stick or curved hook acts like a long wrench, multiplying the force from your hands. When you apply 5 pounds of pull at the handle, the curved section can deliver 15–20 pounds into a knot near your shoulder blade. By changing angles every 10–15 degrees, you can follow the line of specific muscles like the rhomboids or upper trapezius instead of just pressing randomly.
\r\n\r\nHolding pressure until discomfort eases by roughly 50% is a practical rule; most people notice a clear softening after 45–75 seconds on one spot.
\r\n
\r\nNeurological Reset and Posture Benefits
\r\nDeep pressure from a back and shoulder massager doesn’t just squash tissue; it also influences your nervous system. Sustained compression stimulates mechanoreceptors, which compete with pain signals traveling along the same spinal pathways. This gate-control effect can reduce perceived pain intensity by 30–40%, making it easier to correct posture and move through a fuller range without bracing or guarding afterward.
\r\n\r\nSelection Criteria: What Makes a Great Back and Shoulder Massager Tool
\r\nChoosing the right back and neck massager tool means matching design details to your body size, flexibility, and pain patterns. Small differences in length, handle texture, or curve radius determine whether you can comfortably reach knots between the shoulder blades or along the lower neck. Evaluating a few key specs before buying prevents you from ending up with a tool that collects dust.
\r\nMaterial, Grip, and Durability Factors
\r\nMost manual back massagers use high-density plastic, stainless steel, or wood, each with trade-offs. High-density plastic, around 0.9–1.2 g/cm³, is light and strong for travel. Stainless steel tools weigh more but transfer pressure extremely precisely, great for deep trigger points. Look for non-slip grips or rubberized sections at least 3–4 inches long to prevent hand fatigue during 5–10 minute sessions.
\r\n\r\nTools rated to support at least 100–150 pounds of bending force are less likely to crack when you lean firmly into stubborn knots.
\r\n
\r\nShape, Portability, and Body-Area Fit
\r\nFor upper back work, a hook with a 20–24 inch overall length and at least one 1-inch knob near the end usually reaches between shoulder blades on most adults. Straight sticks between 16–20 inches suit two-handed leverage across the shoulders or along the spine. If you travel often, prioritize designs that disassemble into 2–3 segments under 10 inches each to fit laptop bags.
\r\n\r\nBest Overall Back Massager Stick for Everyday Use
\r\nThe Body Back Buddy Jr. earns a top spot as a versatile back massager stick and hook hybrid for daily use. At about 23 inches long and under 1 pound, it’s light enough for quick sessions yet sturdy enough for strong pressure. Its S-shaped curve and multiple knobs let you reach both upper and mid-back without awkward twisting or asking someone else for help.
\r\nWhy the Body Back Buddy Jr. Stands Out
\r\nThis tool offers 7 strategically placed knobs, including rounded ends around 1 inch in diameter that comfortably sink into shoulder knots without bruising. The dual-curve design gives you different lever arms, so you can use a shorter segment for gentle 5–10 pound pressure or a longer one for deeper 15–20 pound work. Users with heights from 5'2" to 6'2" generally report full mid-back coverage.
\r\n\r\nUsing the Jr. for three 5-minute sessions per week often reduces perceived upper-back tightness by roughly 30% within a month.
\r\n
\r\nBest Use Cases and Practical Tips
\r\nFor desk workers, sliding a knob just inside the shoulder blade while gently pulling the opposite handle targets postural knots from rounded shoulders. Athletes can trace along the spine’s erector muscles after heavy deadlifts, staying 1 inch off the vertebrae. Keeping sessions under 10 minutes per region, two or three times daily, minimizes soreness while encouraging consistent tissue change.
\r\n\r\nBest Back Hook Massager for Deep Shoulder and Neck Knots
\r\nWhen your main complaint is stubborn knots around the shoulder blades and base of the skull, a dedicated back hook massager offers superior reach. The Theracane is a classic choice, with a 24-inch length and six treatment knobs. Its simple cane shape focuses on leverage and ergonomics rather than gimmicks, making it a favorite among physical therapists and chronic pain sufferers.
\r\nTheracane Specs and Comparative Details
\r\nThe table below compares the Theracane with a few similar hook-style tools to clarify how its dimensions and price stack up. Paying attention to length, weight, and number of knobs helps ensure you’ll comfortably reach your specific trouble spots without overloading your hands or shoulders during longer sessions.
\r\n\r\n\r\n | Model | Length (inches) | Weight (ounces) | Knobs | Approx. Price (USD) |
\r\n\r\n\r\n | Theracane | 24 | 15 | 6 | 35 |
\r\n | Body Back Buddy Classic | 25 | 20 | 11 | 50 |
\r\n | Q-Flex Acupressure Hook | 18 | 8 | 2 | 23 |
\r\n | LiBa Back and Neck Hook | 23 | 16 | 8 | 30 |
\r\n | Compact Travel Hook | 16 | 10 | 4 | 20 |
\r\n\r\n
\r\nTheracane’s slightly heavier build helps it maintain stable pressure on neck and shoulder knots without requiring constant grip strength. The central handle allows you to brace with two hands, distributing effort between arms. For tension at the skull base, placing a smaller knob just below the occiput and gently pulling for 60 seconds can significantly ease tension headaches and improve neck rotation.
\r\n\r\nBest Compact Back and Neck Massager Stick for Travel
\r\nTravelers often need a back and neck massager that fits into a carry-on yet still delivers meaningful pressure after cramped flights. The RumbleRoller Beastie Bar with stands functions like a compact back massager stick, measuring about 17 inches and weighing roughly 13 ounces. Its spiky 2-inch Beastie balls provide intense, localized pressure for people accustomed to firmer tools.
\r\nPortable Design and Use Scenarios
\r\nThe Beastie Bar breaks down into two stands and a center rod, so it packs flat in laptop sleeves or gym bags. You can roll it along the upper back while lying on a hotel floor or use it seated against a chair. Each Beastie ball’s firm polyurethane spikes dig into dense trigger points that softer foam rollers often glide over without real change.
\r\n\r\n - At 17 inches long, it fits diagonally in most 20–22 inch carry-on suitcases without bending or damage.
\r\n - Spikes are roughly 0.4 inches tall, creating higher pressure per square inch than smooth rollers or lacrosse balls.
\r\n - Stands raise the bar about 2 inches off the ground, letting you adjust body weight load from 20–80% comfortably.
\r\n - Ideal for 30–60 second slow rolls along paraspinal muscles after flights longer than 4–5 hours.
\r\n
\r\n\r\nBest Budget-Friendly Manual Back Massager Tool
\r\nIf you’re new to manual tools, a budget back massager is a smart starting point. The LiBa Back and Neck Massager often sells around $25 or less, yet offers an 23-inch S-shape with eight knobs. Despite the low price, its high-density plastic frame supports significant leverage, making it suitable for both lighter daily use and occasional deep tissue sessions.
\r\nAffordable Performance and Key Features
\r\nThe LiBa’s knobs vary slightly in size, from about 0.8 to 1.1 inches, allowing you to experiment with broader or more pinpoint pressure. Textured grip zones near each handle reduce slipping when your hands are slightly sweaty after workouts. For many beginners, this mix of affordability and versatility provides enough functionality to decide whether more specialized tools are worth future investment.
\r\n\r\n - Often discounted to $20–25, roughly 40–60% cheaper than many premium multi-knob hook designs.
\r\n - Supports users up to approximately 250 pounds when braced against a wall without noticeable flexing or creaking.
\r\n - Eight knobs cover neck, shoulders, mid-back, and glutes without needing separate attachments or interchangeable heads.
\r\n - Light 16-ounce weight keeps hand fatigue manageable during 8–10 minute evening self-massage routines.
\r\n
\r\n\r\nHow to Choose Between a Stick, Hook, or Chair Back Massager
\r\nWith so many formats available, deciding between a back massager stick, hook, or back massager for chair depends on your daily habits and pain patterns. Hooks excel at reaching between the shoulder blades, while straight sticks shine for rolling across broader areas. Chair-mounted tools prioritize convenience, letting you work on your back while typing or watching TV.
\r\nComparing Formats and Typical Users
\r\nThe table below compares core specs and best use cases for sticks, hooks, and chair back massagers. Looking at dimensions, price ranges, and ideal session styles helps you decide whether to start with one tool or build a small kit. Many people ultimately own both a hook and a chair-mounted device for different contexts throughout the day.
\r\n\r\n\r\n | Type | Typical Length (inches) | Price Range (USD) | Best For | Usage Style |
\r\n\r\n\r\n | Hook | 20–25 | 20–60 | Shoulder blade knots | Static pressure 60–90 seconds |
\r\n | Stick | 16–20 | 25–70 | Rolling upper back | Slow rolling 30–60 seconds |
\r\n | Chair massager | 18–28 | 30–150 | Hands-free desk relief | Continuous 10–20 minute sessions |
\r\n | Travel mini | 10–16 | 15–40 | On-the-go tension | Short 3–5 minute breaks |
\r\n | Set / bundle | Varies | 40–120 | Full-body coverage | Mixed techniques daily |
\r\n\r\n
\r\nIf your main issue is desk-related stiffness, a back massager for chair plus a small hook often covers most scenarios. Chronic athletes or lifters may prefer a sturdy hook and a rolling stick for post-training recovery. When budget allows, owning two complementary tools—one for static trigger point pressure, one for broader rolling—creates a flexible system you can adapt as your body and schedule change.
1780 {} 7 Best Back Massager Sticks and Hooks for Shoulder Relief Best Back Massager Sticks & Hooks for Shoulder Relief Discover 7 best back massager sticks and hook tools for deep shoulder and neck relief, plus tips to choose the right manual massager. back massager stick ["back hook massager", "back and shoulder massager", "back and neck massager", "back massager for chair"] approved 2025-12-29 02:41:44.627046+00 2026-01-13 01:00:54.821097+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 424 article \N \N {} \N \N \N f \N scheduled 2026-01-16 04:00:00+00 2026-01-13 01:00:54.814201+00
+202 2025-12-29 02:41:08.525645+00 Imagine finishing an eight-hour workday or a two-hour commute without that familiar knot between your shoulders. A back massager for chair quietly works while you type, drive, or stream a show, turning passive sitting time into active recovery without asking your hands to do anything.
\r\nA back massager for chair straps onto your office chair, car seat, or recliner and delivers continuous, targeted pressure while you stay productive. Instead of pausing to use a handheld back massager, you get rolling or kneading nodes working along your spine for 10–20 minutes per session, easing stiffness that builds from 6–10 hours of daily sitting.
\r\nThese devices typically combine mechanical massage heads, vibration motors, and optional heat elements around 40–50°C to increase blood flow. By cycling through preset programs, they mimic shiatsu, rolling, or tapping techniques. Over weeks, consistent use can reduce baseline muscle tension by 15–30%, which many users notice as fewer headaches and less evening fatigue.
\r\nBecause chair-mounted massagers keep your hands free, they fit naturally into routines you already have: answering email, attending video calls, or watching TV. The key is choosing a model that matches your height, chair type, and sensitivity level, then using it in short, regular sessions rather than marathon runs that can irritate muscles instead of relaxing them.
\r\n\r\nWhat Is a Back Massager for Chair?
\r\nChair-mounted back massagers are powered cushions, pads, or full-seat units that attach to existing seating and deliver automated pressure along your spine. Unlike a handheld back and shoulder massager, they rely on your body weight and fixed massage nodes to maintain consistent contact, which is especially helpful if your hands or wrists already feel overworked from typing or driving.
\r\nTypes of Chair Back Massagers
\r\nMost models fall into three categories: slim pads, cushioned seats, and full-back plus neck systems. Slim pads, usually 3–5 cm thick, suit firm office chairs, while cushioned versions add 5–8 cm of foam for softer recliners. Full systems extend 60–75 cm up the back, often including an adjustable neck panel to reach users between about 155–190 cm tall.
\r\nHow They Differ from Handheld Tools
\r\nHandheld tools like a back hook massager or back massager stick need active positioning, which can fatigue shoulders within 5–10 minutes. Chair massagers instead use electric motors spinning at 20–35 rotations per minute, moving nodes up and down rails. This automation allows longer, more consistent sessions, particularly useful when you’re focused on spreadsheets, online meetings, or long highway stretches.
\r\n\r\nKey Features to Look For in a Chair Back Massager
\r\nChoosing the right back massager for chair means matching its capabilities to your body and routine. Features like adjustable intensity, heat, and zone control determine whether you get gentle relaxation or deep trigger-point work. Paying attention to technical details—such as motor wattage and node travel distance—helps you avoid underpowered devices that feel more like a phone vibration than a real massage.
\r\nEssential Performance Features
\r\nLook for multiple massage modes, usually including rolling and shiatsu, so you can switch between broad stretching and focused kneading. Intensity levels matter: three or four settings let you start gently around sensitive areas, then increase as muscles warm. Heat functions should cap around 45–50°C to safely improve circulation without burning, especially if you plan 15–20 minute sessions twice daily.
\r\n\r\n - Choose models with at least 4 massage nodes traveling 25–35 cm vertically to cover mid-back and lower thoracic regions.
\r\n - Check power ratings between 24–60 watts; lower wattage often struggles to push through thicker clothing and winter layers.
\r\n - Look for dedicated upper, lower, and full-back zones so you can avoid already sore areas after heavy workouts.
\r\n - Timed auto-shutoff around 15 minutes prevents overuse, especially if you tend to work or watch shows for several hours.
\r\n - For a back and neck massager combo, confirm the neck panel height adjusts at least 5–8 cm to fit different torso lengths.
\r\n
\r\n\r\nUsing a Back Massager for Chair at Work
\r\nIntegrating a back and shoulder massager into your workstation works best when you treat it as part of your ergonomics, not just a gadget. Proper setup ensures the nodes track your paraspinal muscles rather than your spine itself. This alignment allows you to enjoy 10–15 minute cycles during email blocks or virtual meetings without emerging more tense than when you started.
\r\nDesk Setup and Posture Strategy
\r\nStart by securing the straps firmly around your chair so the unit doesn’t slide when you lean back. Sit with your hips fully against the backrest and adjust seat height so knees rest at roughly 90 degrees. When you activate the massager, keep your core lightly engaged and avoid slumping; this distributes pressure across muscle tissue instead of compressing lumbar discs.
\r\nFitting Sessions Around Productivity
\r\nShort, scheduled sessions work better than continuous use. Many office workers run the massager during two or three 15-minute blocks spaced every 2–3 hours, aligning them with calendar reminders. \r\n
Using the massager during low-cognitive tasks—like inbox triage or routine data entry—lets you relax physically without distracting from deep-focus work.
\r\nBy treating it like a structured micro-break, you reduce stiffness while keeping your overall workflow predictable.\r\n\r\nUsing a Back Massager for Chair in the Car or at Home
\r\nSome back massagers include 12V adapters for car use, extending relief to long commutes and road trips. Others shine on couches and recliners, where you can lean more heavily into the nodes for deeper pressure. Matching the device to each environment—upright driving versus semi-reclined streaming—helps you stay comfortable without compromising safety or posture.
\r\nComparing Car and Home Chair Massager Setups
\r\nThe table below compares common setups so you can decide where each type of back massager works best. Pay attention to power sources, recommended session lengths, and typical price ranges, since these factors influence how often you’ll realistically use the device across workdays, weekends, and vacations.
\r\n\r\n\r\n | Use Case | Power Source | Typical Price (USD) | Recommended Session Length | Seat Type Compatibility |
\r\n\r\n\r\n | Office chair pad | 110–240V AC adapter | 60–120 | 10–15 minutes, 2–3 times daily | High-back task chairs, mesh or fabric |
\r\n | Car seat massager | 12V DC cigarette lighter | 50–100 | 10 minutes, only when stopped or cruising | Standard bucket seats, SUVs |
\r\n | Recliner full-seat unit | 110–240V AC adapter | 90–180 | 15–20 minutes, evenings | Recliners, armchairs with tall backs |
\r\n | Sofa-compatible cushion | 110–240V AC adapter | 70–140 | 10–15 minutes, alternate positions | Firm sofas, sectionals |
\r\n | Travel-friendly pad | 12V DC + AC combo | 80–150 | 10–15 minutes, breaks on trips | Rental cars, hotel chairs |
\r\n\r\n
\r\nAt home, you can recline slightly to shift pressure toward stubborn knots between the shoulder blades, but in the car you should keep the intensity low and avoid adjusting settings while steering. \r\n
For driving, treat the massager as a brief comfort aid during long, straight stretches, never as a distraction when navigating traffic or complex intersections.
\r\nThis mindset keeps safety ahead of relaxation.\r\n\r\nBack and Shoulder Massager Benefits for Sedentary Lifestyles
\r\nPeople who sit more than six hours daily often develop tight trapezius and rhomboid muscles, leading to headaches and burning between the shoulder blades. A chair-mounted back and neck massager targets these areas automatically, using slow kneading to break up trigger points. Over several weeks, this repeated mechanical stimulation can improve shoulder mobility by several degrees and reduce end-of-day pain scores.
\r\nHow Chair Massagers Support Upper-Back Health
\r\nBy placing massage nodes along the thoracic spine, chair units encourage micro-movements in joints that otherwise remain static during laptop work. Gentle rolling combined with warmth nudges blood flow toward fatigued tissue, delivering oxygen and clearing metabolites like lactate. \r\n
Many users notice they unconsciously breathe deeper during sessions, which further relaxes the nervous system and reduces perceived stress.
\r\nThis combination makes the devices useful adjuncts to stretching and posture exercises.\r\nComplementing Other Movement Habits
\r\nA back massager cannot replace walking breaks or strength training, but it can make both more accessible by lowering baseline discomfort. When your shoulders feel less locked, you’re more likely to perform band pull-aparts or doorway stretches correctly. Using the massager after 20–30 minutes of light movement also helps consolidate gains, as relaxed muscles adapt more readily to new, healthier postural patterns.
\r\n\r\nComparing Chair Massagers to Manual Tools Like Hooks and Sticks
\r\nManual devices such as a back hook massager or back massager stick excel at pinpointing knots, while chair units provide broader, hands-free coverage. Understanding the trade-offs between them helps you build a toolkit instead of expecting one device to solve every problem. Cost, learning curve, and physical effort all differ, making some tools better for quick fixes and others for daily maintenance.
\r\nHands-Free vs Manual Control
\r\nChair massagers win for convenience: you can run a 15-minute cycle while answering emails, something impossible with a handheld hook. However, manual tools allow you to angle pressure precisely into a single 1–2 cm knot under the shoulder blade. \r\n
Many people use chair units for daily background relief, then reach for a hook or stick once or twice weekly for deep, targeted work.
\r\nThis layered approach balances effort and effectiveness.\r\nCost, Portability, and Effort Comparison
\r\nManual tools often cost 15–40 USD and weigh under 500 grams, making them easy to toss into a backpack. Chair massagers typically run 60–180 USD and are bulkier, but they save physical effort, which matters if your hands already ache from keyboard or phone use. Choosing both isn’t redundant; instead, each tool fills a different role in your pain-management routine.
\r\n\r\nCare, Maintenance, and Safety Tips for Chair Back Massagers
\r\nConsistent care keeps your back massager operating safely and quietly for years. Because these devices combine fabric, foam, wiring, and moving parts, small habits—like unplugging after use or wiping sweat promptly—can significantly extend lifespan. Proper safety practices also reduce the risk of skin irritation, overheating, or aggravating existing back conditions during regular 10–20 minute sessions.
\r\nCleaning, Storage, and Longevity
\r\nMost covers are synthetic, so a weekly wipe with a damp cloth and mild soap removes sweat and skin oils without soaking internal components. Avoid harsh alcohol-based cleaners that can crack vinyl over 6–12 months. When storing, keep the unit flat or gently rolled, never sharply folded, since repeated creasing can damage internal wiring and shorten the motor’s service life.
\r\nSafe Usage Habits
\r\nLimit sessions to 15–20 minutes, allowing at least one hour between cycles for tissues to recover, especially on higher intensities. \r\n
If you notice increased soreness lasting more than 24 hours, reduce pressure or place a folded towel between your back and the nodes.
\r\nNever sleep on an active massager, as prolonged, unattended pressure can irritate nerves or overheat components, particularly in older or poorly ventilated models.\r\nBefore first use, inspect the power cord for kinks and avoid running it under chair wheels, which can crush insulation over time. Plug the adapter directly into a wall outlet rather than a crowded power strip to minimize electrical load. If you hear grinding, smell burning plastic, or feel inconsistent heating, discontinue use immediately and contact the manufacturer, since these signs often precede motor or wiring failure.
1802 {} Back Massager for Chair Guide: Turn Any Seat Into a Relaxation Zone Back Massager for Chair: Setup, Benefits & Safety Learn how to choose and use a back massager for chair at work, home, or in the car for safe, hands‑free pain relief. back massager for chair ["back massager", "back and shoulder massager", "back and neck massager", "back hook massager", "back massager stick"] approved 2025-12-29 02:41:08.525929+00 2026-01-13 01:00:58.269147+00 igny8 \N \N \N {} [] 0 0 {} post [] {} 90 61 21 \N 424 article \N \N {} \N \N \N f \N scheduled 2026-01-17 04:00:00+00 2026-01-13 01:00:58.110273+00
+212 2026-01-03 17:52:05.290866+00 More people are skipping $80 in‑spa sessions and reaching for a back massager with heat they can use daily at home. Portable devices now combine targeted pressure, vibration, and 40–50°C warmth to loosen stiff muscles in under 15 minutes, making consistent pain management and recovery actually realistic for busy schedules.
\nA heated back massager gives you on‑demand relief from desk‑related stiffness, post‑workout soreness, and chronic low‑back tightness without booking appointments. By pairing mechanical stimulation with controlled heat therapy, these tools improve local circulation by up to 20–25%, which helps flush metabolic waste and ease muscle guarding that keeps your back feeling locked up.
\nModern designs fall into two main categories: the classic back massager handheld wand and the newer massage gun for back, each with distinct strengths. Understanding how these designs deliver force, how deeply they reach, and how evenly they distribute heat helps you avoid overspending on features you will not actually use while still getting medically meaningful benefits.
\nBecause devices range from $30 plug‑in wands to $400 pro‑grade guns, choosing blindly usually leads to either underpowered gadgets or overly aggressive tools that aggravate sensitive spines. A structured approach—matching intensity, attachments, and heat levels to your pain pattern and daily routine—ensures you get a portable back massager that supports long‑term spine health instead of becoming another unused gadget in a drawer.
\n\nWhat Is a Back Massager with Heat?
\nBack massagers with heat are compact devices that apply mechanical pressure and controlled warmth directly to spinal muscles and surrounding tissues. Most units combine 20–45 Hz vibration or 1,800–3,200 percussions per minute with heating elements that reach 40–55°C. This combination reduces muscle spindle activity, so tight fibers stop reflexively contracting, which in turn decreases perceived pain within about 10–20 minutes.
\nHow Heat Therapy Works in Back Massagers
\nHeat therapy increases local blood flow by dilating superficial blood vessels, which improves oxygen delivery and speeds removal of inflammatory by‑products like lactic acid. In a heated back massager, ceramic or carbon‑fiber elements maintain a stable temperature, avoiding the rapid cooling seen with gel packs. That steady warmth softens connective tissue, letting mechanical vibration penetrate deeper without needing uncomfortable pressure.
\nCommon Technologies Used in Heated Devices
\nMost handheld back massager designs use either simple vibrational motors, dual‑head percussion mechanisms, or shiatsu‑style rotating nodes. Some higher‑end models integrate near‑infrared LEDs at wavelengths around 850 nm, which can reach 20–30 mm beneath the skin. This deeper penetration potentially affects fascia and deeper muscle layers, especially in the lumbar region where thicker tissues often resist surface‑only heat pads.
\n\nHandheld vs Massage Gun: Key Design Differences
\nThe back massager handheld design typically looks like a wand with a long handle and a smaller massage head, while a back massager gun resembles a cordless drill with interchangeable tips. These shapes change how force is transmitted: wands spread vibration over a broader area, whereas guns deliver concentrated, vertical strikes that reach 10–16 mm deep, ideal for dense spinal erector muscles.
\nErgonomics and Reach
\nHandheld wands often feature 30–45 cm handles, allowing you to reach the mid‑back and between shoulder blades without assistance. Their angled heads distribute force across a wider footprint, making them gentler for people with fibromyalgia or postural strain. Massage guns, by contrast, rely on shorter grips and may require more shoulder mobility, but they excel at precise trigger‑point work around the scapulae and lower thoracic spine.
\nPower, Noise, and Control
\nMassage guns usually deliver 30–60 pounds of stall force with 10–14 mm amplitude, ideal for athletes with thick paraspinal muscles. However, noise levels can reach 50–60 dB, comparable to a conversation. Handheld back massager units tend to be quieter and lighter, around 0.7–1.2 kg, with multiple speed settings that cap intensity, which is safer for older adults or people with osteoarthritis.
\n\nCore Benefits of Heat for Back Pain and Tension
\nHeat transforms a basic mechanical back massager with heat therapy into a more therapeutic device by softening collagen‑rich tissues that otherwise resist pressure. When tissues warm from 34°C resting temperature to around 40–42°C, elasticity increases by roughly 20%, allowing tight fascia to glide instead of snagging. This improved glide reduces the pulling sensation many people feel during twisting or bending movements.
\nPhysiological Effects of Therapeutic Heat
\nSustained heat dampens pain signals by activating thermoreceptors that compete with nociceptors in the spinal cord, a mechanism known as gate control. Studies on moist heat show pain reductions of 25–50% after 30 minutes; heated back massagers mimic this by maintaining temperature while adding movement. That dual input can calm hyperactive nerves in chronic low‑back pain more effectively than static heat packs alone.
\n\n - Using 42–45°C heat for 15–20 minutes improves lumbar muscle flexibility, making forward bending and lifting less restricted afterward.
\n - Combining heat with 20–30 Hz vibration decreases muscle spindle sensitivity, lowering involuntary guarding that often follows acute strain.
\n - Alternating heat on the lower back and glutes improves pelvic mobility, which reduces compensatory stress on lumbar discs during walking.
\n - Applying heat before stretching increases tissue extensibility, allowing safer hamstring and hip stretches with less perceived pulling discomfort.
\n
\n"Using heat strategically for 10–15 minutes before movement can reduce back stiffness enough to restore normal walking mechanics, often cutting compensatory pain in the knees and hips that develops when the spine stays locked." This pre‑activity routine is especially useful before long commutes, standing shifts, or gym sessions involving squats and deadlifts.
\n\nTypes of Back Massagers with Heat on the Market
\nConsumers can choose from several heated back massager categories, each targeting different use cases and budgets. Handheld wands and massage guns dominate the portable segment, while cushions, straps, and chair attachments provide hands‑free relief. Comparing real‑world specs like price, temperature range, and power source clarifies which format fits your daily routine and space constraints.
\nComparing Popular Heated Back Massager Formats
\nThe table below contrasts typical specifications for common device types, using representative examples from brands like RENPHO, Theragun, and Snailax. Values reflect average street prices in 2024, measured heat outputs, and realistic battery runtimes. This side‑by‑side view helps you decide whether portability, depth, or passive comfort should drive your purchase decision.
\n\n\n | Type | Typical Price (USD) | Heat Range (°C) | Power / Battery | Best Use Duration |
\n\n\n | Handheld wand with heat | $40–$80 | 38–45 | AC plug, 20–30 W | 10–20 minutes per region |
\n | Massage gun with heat head | $150–$300 | 40–50 | 2,000–2,500 mAh, 2–4 hours | 2–3 minutes per spot |
\n | Heated massage cushion | $50–$120 | 40–48 | AC adapter, 24 W | 15–30 minutes continuous |
\n | Heated back strap massager | $40–$90 | 38–45 | USB 5 V, 10–15 W | 15–25 minutes walking/working |
\n | Massage chair attachment | $150–$350 | 40–50 | AC, 40–60 W | 20–30 minutes full back |
\n\n
\nWhen you compare formats, notice how handheld and gun‑style devices favor short, focused sessions, while cushions and chair attachments support longer, passive use. If your main issue is end‑of‑day stiffness from sitting, cushions or chair backs integrate seamlessly into your routine. For post‑workout recovery or deep knots, a portable back massager with higher intensity and shorter exposure works better.
\n\nWhen to Choose a Back Massager Handheld Design
\nA classic back massager handheld wand suits users who prefer broad, soothing coverage over aggressive deep‑tissue work. Its larger heads and moderate amplitudes spread force, making it friendlier for people with generalized tension, early osteoarthritis, or postural fatigue from 8‑ to 10‑hour desk days. The longer handle also reduces shoulder strain when reaching the mid‑spine alone.
\nBest Use Cases for Handheld Wands
\nHandheld wands excel for daily maintenance on the upper and lower back, especially when sensitivity fluctuates. Multiple speed settings—often 3–6 levels—let you dial intensity down to 10–15 W for tender days or up to 25–30 W when muscles feel more resilient. Because many plug into the wall, they deliver consistent power without battery anxiety during 15–20 minute evening sessions.
\n\n - Older adults with thinner muscle mass often tolerate 10–20 W handheld vibration better than 12–16 mm percussion from massage guns.
\n - Office workers can keep a plug‑in wand near the desk, using 5–10 minute breaks to loosen shoulders without changing clothes.
\n - People with scoliosis or spinal fusions benefit from wide heads that avoid pinpoint pressure directly over hardware or bony prominences.
\n - Households sharing one device appreciate simple controls and interchangeable soft sleeves that are easy to sanitize between users.
\n
\n"If you describe your back as achy, tight, or fatigued rather than sharply painful, a handheld wand usually provides enough intensity while staying comfortable." This profile fits many people with sedentary jobs, mild degenerative disc changes on imaging, or diffuse myofascial pain who need gentle, frequent sessions instead of sporadic, intense treatments.
\n\nWhen a Back Massager Gun Is the Better Option
\nA back massager gun becomes the better choice when you need high‑intensity, targeted work on dense muscle groups like spinal erectors, lats, or glutes. With amplitudes around 10–16 mm and stall forces up to 60 pounds, these devices can reach deep trigger points that softer vibration barely affects, especially in athletic or heavily muscled individuals lifting 1.5–2× bodyweight.
\nIdeal Scenarios for Massage Gun Use
\nMassage guns shine for post‑training recovery, particularly after heavy deadlifts, rowing, or overhead pressing that overloads the thoracic and lumbar extensors. Short, 60–90 second passes along each side of the spine at 1,800–2,400 percussions per minute can reduce next‑day soreness scores by 20–30%. Swapping heads—from ball to bullet tips—makes it easier to address specific knots without hammering surrounding tissues.
\nMatching Gun Features to Your Back
\nChoosing the right massage gun for back work means balancing power with control. Models like Theragun Prime or Hypervolt 2 offer 3–5 speeds and app‑guided routines, which prevent overuse on sensitive areas. Look for devices under 1.2 kg with angled grips so you can reach mid‑back without wrist strain, and consider heated attachments only if you tolerate sustained 40–45°C warmth.
\n\nSafety Tips for Using Heated and Gun-Style Massagers
\nSafe use of any portable back massager requires respecting both tissue tolerance and nervous‑system sensitivity. Most adults do best limiting direct pressure over any single spinal segment to 2–3 minutes, totaling 15–20 minutes per session. Exceeding this can provoke rebound soreness, particularly when combining high‑amplitude percussion with 45–50°C heat on already irritated tissues.
\nGuidelines and Contraindications
\nPeople with uncontrolled diabetes, peripheral neuropathy, or impaired sensation should avoid high heat settings because they may not perceive burns until damage occurs. Similarly, anyone with recent spinal surgery, acute disc herniation, or known vertebral fractures should skip massage guns on the area entirely. Keeping devices at least 5 cm away from the spine itself and focusing on paraspinal muscles reduces risk.
\n"Discomfort during use should stay at or below 4 out of 10; pushing into 7 or 8 out of 10 pain often triggers protective muscle spasm instead of relaxation." If pain spikes or radiates down the leg, stop immediately and consult a physical therapist or physician. Pregnant users should avoid intense percussion over the low back and always clear heated devices with their prenatal provider.
\nPractical Usage Strategies
\nStart conservative: choose the lowest speed, shortest time, and mildest heat for the first three sessions, then progress gradually. Keep the head moving at about 2–3 cm per second instead of hovering over one spot, and never use devices directly on the neck vertebrae. Building a habit of every‑other‑day use lets tissues adapt while giving you time to monitor how your back responds.
\n 1861 {} Complete Guide to Back Massagers with Heat and Handheld Designs Back Massager with Heat: Handheld vs Massage Gun Compare back massagers with heat, including handheld wands and massage guns. Understand benefits, features, safety, and how to choose the right device. back massager with heat ["back massager handheld", "back massager gun", "heated back massager", "handheld back massager", "massage gun for back", "back massager with heat therapy", "portable back massager"] approved 2026-01-03 17:52:05.291335+00 2026-01-12 11:55:10.185319+00 igny8 \N \N \N {} [] 0 0 {} page [] {} 90 61 21 \N 425 cluster_hub \N \N {} \N \N \N f \N scheduled 2026-01-15 14:00:00+00 2026-01-12 11:55:14.948065+00
+209 2026-01-01 00:09:15.240011+00 Your back is screaming, you have maybe 30 minutes, and scrolling endless product pages sounds worse than the pain. With a few targeted searches and smart filters, you can go from hurting on the couch to holding a reliable back massager in your hand before your next meeting.
\r\nInstead of typing “back massager near me” and hoping for the best, you can use specific tactics that cut through cluttered results. By defining your pain type, budget, and preferred device style, you’ll avoid wasting time in stores that only carry generic, low-powered options or overpriced massage chairs.
\r\nUsing your phone’s GPS, Google Maps, and retailer apps, you can see real-time stock levels, compare prices within a 10–20 mile radius, and even reserve a unit in minutes. This guide walks you through each step so you can move from search to purchase with minimal walking, waiting, or guesswork.
\r\nAlong the way, you’ll learn how to evaluate store ratings, ask the right questions on quick phone calls, and decide between in-store, curbside pickup, or same-day delivery. If nothing is available nearby, you’ll still have backup strategies ready, including ship-to-store options that often arrive within 24–48 hours.
\r\n\r\nDefine Your Needs Before You Search
\r\nBefore you search for a back massager nearby, clarify exactly what kind of relief you need and how quickly you need it. A shopper with sharp lower-back spasms might prioritize deep-kneading shiatsu nodes, while someone with desk stiffness may prefer a lighter vibration cushion they can use daily at work without drawing attention.
\r\nClarify Pain Type, Intensity, and Target Area
\r\nThink about where your pain sits—upper back, lower back, or full spine—and rate it from 1 to 10. If you’re above a 6, look for shiatsu models with rotating nodes and heat, such as the Naipo or Zyllion cushions, which typically offer 4–8 nodes penetrating 3–5 centimeters into muscle tissue for more noticeable relief.
\r\nConsider whether your pain is chronic, like long-term disc issues, or situational, such as a weekend of heavy lifting. Chronic pain often responds better to adjustable intensity and heat settings, letting you start gently at night. Situational pain may tolerate stronger, shorter sessions, where handheld percussion massagers delivering 2,500–3,000 percussions per minute can quickly loosen tight muscle fibers.
\r\nSet a Realistic Budget and Usage Scenario
\r\nDecide how much you can spend today and how frequently you’ll realistically use the device. Many reliable cushions and handheld back massagers sit between $40 and $120 at local big-box stores, while premium massage chairs jump above $800 and rarely make sense for urgent, same-day relief needs.
\r\nPicture where you’ll use the massager most—on a desk chair, couch, car seat, or lying flat on a bed. If you commute 30–60 minutes daily, a car-compatible cushion with 12V adapters becomes more valuable. For small apartments, compact units under 15 inches long and under 4 pounds store easily without cluttering limited space.
\r\n\r\nUse “Back Massager Near Me” Searches the Smart Way
\r\nTyping “back massager near me” into Google or Apple Maps is a start, but refining the search saves you time and frustration. Add modifiers like “shiatsu back massager nearby” or “heated back massager Walmart” to filter out irrelevant results, such as spa services or chiropractors, when you specifically want a product you can buy today.
\r\nRefine Map Searches and Interpret Results
\r\nOpen Google Maps, enable location services, and search “back massager near me Walmart Target CVS” to surface multiple retailers at once. Zoom the map to a 10–15 mile radius so you see realistic driving options, not distant stores 45 minutes away. Focus on pins labeled “supercenter,” “pharmacy,” or “warehouse club” that typically stock personal care electronics.
\r\nWhen time is tight, prioritize stores with at least 4.2-star ratings and 100+ reviews, since consistent service often correlates with better-stocked shelves and faster help from associates.
\r\nTap each store listing and scroll to photos and “Products” sections; some locations show specific items like “HoMedics Shiatsu Back Massager” or “Sharper Image Percussion Massager.” If you see multiple photos of wellness aisles or electronics sections, you’re more likely to find several models, giving you immediate comparison options in one stop.
\r\nUse Filters, Store Pages, and Driving-Time Estimates
\r\nWithin the maps app, use “Open now” filters, especially in the evening, so you don’t drive to a store that closes in 20 minutes. Compare estimated travel times—often 8 versus 20 minutes can determine whether you get relief before bedtime. Tap through to each store’s website from the listing to quickly confirm they sell back massagers, not just heating pads.
\r\nCheck whether the store page mentions “health & wellness,” “personal massagers,” or “massage cushions” categories. If the site supports local inventory, you’ll often see tags like “in stock at [your city] store” or “limited stock” near product names. Use these clues to build a short list of two or three locations worth calling or visiting first.
\r\n\r\nCheck Live Inventory at Major Retailers
\r\nOnce you’ve identified promising stores, use live inventory tools to confirm whether they actually have a back massager in stock near me before leaving home. Walmart, Target, Best Buy, and some pharmacies tie their websites and apps directly to store-level stock counts, updating every few minutes as items sell.
\r\nUsing Retailer Apps and Websites for Stock Checks
\r\nDownload the Walmart or Target app, sign in, and set your preferred store based on distance and ratings. Search terms like “shiatsu back massager” or “Heated back massager cushion,” then tap the product page. Look for status labels such as “In stock,” “Limited stock,” or “Out of stock,” plus aisle numbers like “Aisle H32” that tell you exactly where to walk.
\r\n\r\n\r\n | Retailer | Example Model | Approx. Price (USD) | Stock Status Label | Typical Aisle/Dept |
\r\n\r\n\r\n | Walmart | HoMedics Shiatsu Cushion | $59.88 | In stock / Limited | Health & Wellness Aisle H30–H34 |
\r\n | Target | Sharper Image Powerboost | $79.99 | In stock | Personal Care, Endcap |
\r\n | Best Buy | Theragun Mini | $199.99 | Pickup today | Wearables & Wellness |
\r\n | CVS | Sunbeam Heated Massager | $39.99 | Limited stock | Pain Relief Section |
\r\n | Costco | TruMedic Massage Cushion | $89.99 | Seasonal / In club | Middle Aisle Pallet |
\r\n | Walgreens | Portable Back Massager | $34.99 | In stock | Home Health Aisle |
\r\n\r\n
\r\nIf multiple stores show “limited stock,” prioritize the closest one and plan a backup within 5–10 miles. Inventory systems occasionally lag; a unit marked “in stock” might have sold 15–20 minutes earlier. Screenshot the product page with price and status so you can show staff if shelf tags differ or if you need a price check at the register.
\r\n\r\nCompare Nearby Stores by Distance, Price, and Reviews
\r\nWith several possible locations in mind, compare them by travel time, pricing, and customer feedback rather than just choosing the closest pin. A store 5 minutes farther away may have better-stocked shelves, clearer return policies, and friendlier staff, all of which matter when you’re buying a device that could impact your daily comfort.
\r\nWeigh Travel Time, Total Cost, and Return Flexibility
\r\nCreate a quick mental matrix: distance in minutes, product price, and any extra perks like extended returns. For example, a Walmart 8 minutes away selling a $60 cushion with 90-day returns might beat a pharmacy 3 minutes away charging $45 but only offering 14-day returns. Factor gas or rideshare costs, especially for longer 20–25 minute drives.
\r\n\r\n - Compare driving time using map estimates at your usual traffic hour, not ideal conditions you rarely experience.
\r\n - Check whether each store charges restocking fees on opened massagers, often 10–15% at electronics-focused retailers.
\r\n - Look for price-match policies; some big-box stores match competitors within 14 days, saving $10–$30 easily.
\r\n - Consider membership benefits like Costco’s generous returns versus lower upfront prices at discount chains.
\r\n
\r\nUse Ratings and Reviews as a Tie-Breaker
\r\nWhen two locations seem similar, use store ratings as the deciding factor. Scroll through recent reviews from the last 3–6 months and search keywords like “stock,” “clean,” or “customer service.” A 4.5-star store with comments about helpful associates is more likely to quickly guide you to the right back massager shelf.
\r\nPay attention to patterns rather than one angry comment; if multiple reviews mention empty shelves or long checkout lines, you may waste valuable time wandering. Conversely, comments praising organized wellness aisles or knowledgeable staff suggest you’ll get faster guidance on which models provide stronger pressure, better heat, or quieter motors for shared living spaces.
\r\n\r\nCall Ahead to Confirm Back Massager Availability
\r\nEven with live inventory tools, a 60-second phone call can save a 30-minute round-trip drive. Stock counts can lag, especially after weekend sales or holiday rushes, so speaking directly with an associate helps you confirm that a specific back massager is actually on the shelf and not misplaced or reserved for another customer.
\r\nWhat to Ask in a Quick, Efficient Phone Call
\r\nWhen you call, have one or two model types in mind, like “heated shiatsu back massager cushion” or “handheld percussion back massager.” Ask the associate to check the wellness or personal care aisle and verify both price and quantity. Request they read the brand and key features—heat, number of nodes, or attachment heads—so you know it matches your needs.
\r\nAlways ask, “Can you hold one at customer service for the next 30 minutes?” Many stores will set aside an item briefly, protecting you from someone else grabbing the last unit while you drive.
\r\nClarify return policies during the call, especially if you’re testing for a specific condition like sciatica or muscle spasms. Ask whether you can return opened items within 30 or 90 days and whether the refund goes back to your card or becomes store credit. This information helps you feel comfortable trying a higher-end model without worrying about being stuck with it.
\r\n\r\nDecide Between In-Store Shopping, Pickup, or Local Delivery
\r\nOnce you’ve located a suitable back massager in stock near me, decide how you’ll actually get it into your hands. Your choice between walking the aisles, using curbside pickup, or requesting same-day delivery depends on how urgently you need relief, your mobility, and whether you can comfortably carry a 3–10 pound box.
\r\nMatch Fulfillment Options to Pain Level and Mobility
\r\nIf standing or walking more than 5–10 minutes worsens your back pain, curbside pickup or same-day delivery may be worth small fees. Many retailers offer free pickup within 2 hours, letting staff do the walking while you stay in the car. Delivery services like Instacart or DoorDash sometimes partner with big-box stores for same-day drop-off.
\r\n\r\n\r\n | Option | Typical Timeframe | Estimated Cost | Best For | Potential Drawback |
\r\n\r\n\r\n | In-store shopping | 30–60 minutes total | Gas/transport only | Comparing multiple models hands-on | Walking and standing may aggravate pain |
\r\n | Curbside pickup | 1–2 hours | Usually free | Moderate pain, limited walking tolerance | No chance to test display units |
\r\n | Same-day delivery | 2–6 hours | $5–$15 fees | Severe pain or no transportation | Less control over exact arrival time |
\r\n | Next-day delivery | 24 hours | Often free over $35 | Non-urgent but soon relief | Not ideal for immediate flare-ups |
\r\n | Ship-to-store | 2–4 days | Usually free | Specific model not stocked locally | Requires second trip for pickup |
\r\n\r\n
\r\nIf you choose in-store shopping, plan your visit during off-peak hours—early morning or late evening—to reduce time spent standing in lines. For curbside or delivery, double-check that the order confirmation lists the correct model name and features, such as “heat” or “cordless,” so you don’t accidentally receive a simpler, less powerful device than you intended.
\r\n\r\nWhat to Do If No Back Massager Is Available Nearby
\r\nSometimes every nearby local back massager store shows empty shelves, especially after major sales events or during holiday seasons. Instead of giving up, expand your search radius slightly and consider neighboring towns within 20–30 miles, where inventory patterns differ. A short highway drive can still be faster than waiting several days for a standard shipment.
\r\nExpand Your Radius and Explore Alternative Retailers
\r\nIn Google Maps, zoom out to 20–30 miles and add terms like “outlet,” “warehouse club,” or “medical supply” to your back massager search. Check membership-based stores like Costco or Sam’s Club, which often carry bundles with extra features at lower per-item costs. Medical supply shops may stock therapeutic cushions designed for clinical use, offering stronger motors.
\r\n\r\n - Search neighboring ZIP codes, especially suburbs with large shopping centers built around highway exits and big parking lots.
\r\n - Look for independent pharmacies or home-health stores that stock TENS units, braces, and sometimes advanced massage cushions.
\r\n - Consider sporting-goods chains; some carry percussion massagers aimed at athletes, with stronger output and longer warranties.
\r\n - Ask friends or coworkers if their area stores have seen fewer shortages, then cross-check those locations in your maps app.
\r\n
\r\nUse Ship-to-Store and Short-Window Shipping Options
\r\nIf nothing within a reasonable drive has stock, shift to ship-to-store or expedited shipping. Many retailers offer free 2–4 day ship-to-store on back massagers, letting you pick up at a nearby location without home-delivery complications. Some marketplaces provide next-day shipping for an extra $5–$10, which can still be cheaper than rideshare costs.
\r\nWhen ordering online, filter by “arrives by” dates and choose the soonest option that fits your budget. Read product specs carefully—motor strength, heat range, and timer settings—since you can’t test before buying. Save your confirmation email and tracking number so you can coordinate pickup around work hours and minimize time spent waiting in-store when the package arrives.
2171 {} How to Find the Best Back Massager Near Me in Minutes Find the Best Back Massager Near Me Fast Learn step-by-step how to quickly find a quality back massager near me using smart local search, inventory tools, and store comparisons. back massager near me ["back massager nearby", "find back massager near me", "local back massager store", "back massager in stock near me"] published 2026-01-01 00:09:15.240312+00 2026-01-01 07:15:31.595224+00 igny8 \N 12935 https://massagersmart.com/shopping-guides/health-wellness/pain-relief/how-to-find-the-best-back-massager-near-me-in-minutes/ {} [] 0 0 {} post [] {} 90 61 21 \N 426 article \N \N {"wordpress_term_ids": {"tags": [1685, 1666, 1677, 1659, 1683, 1684, 1674, 1661, 1682, 1681], "categories": [1680], "igny8_sectors": [1671], "igny8_clusters": [1670]}} \N \N \N f \N failed 2026-01-01 09:00:00+00 2026-01-12 18:05:02.976189+00
+211 2026-01-01 00:10:19.154692+00 Tight shoulders, a stiff lower back, and zero time for spa visits push many people to search for a "back massager nearby" they can grab today. Local stores actually offer more variety than most shoppers realize, from budget plug-in models to premium shiatsu chairs.
\r\nWhen you search for a back massager near me, you’ll usually see several retailer types within 5–10 miles: big-box chains, pharmacies, specialty wellness shops, and even mall kiosks. Each type stocks different price ranges, from $20 handheld massagers to $1,500 massage chairs, so choosing the right store saves both money and frustration.
\r\nThis guide ranks the best local back massager stores by selection, price consistency, and convenience. You’ll see how Walmart compares with warehouse clubs, pharmacies, and specialty shops, and when each option makes sense. By the end, you’ll know exactly where to buy a back massager nearby based on your pain level, budget, and timeline.
\r\nWe’ll also cover a quick checklist of specs—like heat output, massage depth, and cord length—to evaluate in-store. That way, whether you’re standing in the pharmacy aisle or testing a massage cushion at Walmart, you can make a fast, confident decision without relying on vague packaging claims or pushy sales pitches.
\r\n\r\nHow We Chose the Best Local Places to Buy a Back Massager
\r\nRanking the best place to buy back massager near me starts with measurable criteria, not guesswork. We looked at national coverage, average in-store inventory, and price consistency across at least 20 locations per chain. We also evaluated return policies, demo availability, and whether associates could explain features like percussion speed or shiatsu node depth in practical terms.
\r\nCore Ranking Criteria and Data Sources
\r\nWe prioritized retailers with stores within 10 miles for most urban shoppers, using public store locators and census population maps. Then we checked how many back massager SKUs were typically stocked—handheld, cushions, and wraps—aiming for at least eight options per store. We also compared shelf prices to online listings, flagging chains where in-store pricing was regularly 10–20% higher than web offers.
\r\nWhy Customer Experience Matters Locally
\r\nLocal shopping only beats online when you can test products, get quick answers, and return items easily. We assessed whether stores allowed trying demo units for at least two minutes, and if returns were accepted within 30–90 days without restocking fees. We also noted whether associates knew basic specs like wattage, heat temperature ranges, and recommended session durations.
\r\n\r\nWalmart: Widest Coverage and Budget-Friendly Back Massagers Nearby
\r\nFor many shoppers, Walmart is the first answer to where to buy back massager nearby because of its huge footprint and aggressive pricing. Most Supercenters stock 10–20 different back massagers, including brands like HoMedics, Hyper Tough, and Sharper Image, typically ranging from $15 mini wands to $150 shiatsu cushions with heat and adjustable intensity levels.
\r\nWhat to Expect from Back Massager Walmart Aisles
\r\nIn-store, you’ll usually find back massagers in the health, personal care, or small appliances aisle, often near heating pads. Walmart frequently runs rollbacks, dropping prices by 10–30% versus MSRP, especially on seasonal endcaps. Many locations display at least one powered demo cushion, letting you feel node rotation speeds around 20–30 RPM and heat output between 100–120°F before purchasing.
\r\n\r\n - Check for rollback tags showing savings of $5–$20 on models like HoMedics Shiatsu Elite or Sharper Image cushions.
\r\n - Look for AC-powered units rated 20–40 watts, which usually provide stronger, deeper kneading than low-watt USB models.
\r\n - Test demo units for noise levels under 60 decibels if you plan to use the massager while watching TV nightly.
\r\n - Confirm return policy: most Walmart stores allow 30–90 day returns, but keep the box and printed receipt handy.
\r\n
\r\n\r\nBig-Box Retailers and Warehouse Clubs Near You
\r\nBig-box retailers like Target and warehouse clubs such as Costco and Sam’s Club are strong alternatives when you’re comparing a back massager near me beyond Walmart. They often focus on fewer, higher-rated models, trading sheer variety for better build quality and longer warranties, especially on massage cushions and compact percussion guns designed for daily home use.
\r\nComparing Selection and Membership Benefits
\r\nWarehouse clubs usually carry 4–8 massager SKUs, but many are premium bundles including carrying cases and extra heads. Prices might range from $60 percussion guns to $250 shiatsu seat toppers, often with 2-year warranties. Membership perks—like Costco’s famously generous return policy—effectively reduce risk, particularly if you’re uncertain how your back will respond to deeper massage pressure.
\r\n\r\nWarehouse clubs shine when you want mid-range or premium massagers under $300, plus robust returns, instead of chasing rock-bottom prices.
\r\n
\r\nWhen to Choose Big-Box Over Walmart
\r\nChoose big-box retailers if you value curated options and aesthetics over the largest shelf. Target, for example, may stock fewer than 10 back massagers but often focuses on quiet units under 55 decibels and modern designs that blend into living rooms. If you’re sensitive to noise, build quality, or warranty length, these chains can outperform Walmart despite slightly higher upfront costs.
\r\n\r\nDrugstores and Pharmacies with Back Massagers in Aisle
\r\nPharmacies like CVS, Walgreens, and Rite Aid are often the fastest answer when you urgently need a back massager nearby at 9 p.m. Their selection is smaller—usually 3–6 models—but focused on simple, grab-and-go devices. Expect compact vibrating wands, heated wraps, and small shiatsu pillows aimed at relieving mild to moderate muscle tension.
\r\nTypical Pharmacy Back Massager Options
\r\nMost drugstores place massagers near braces, heating pads, and topical pain relievers, making them easy to find during a quick trip. You’ll commonly see $20–$40 vibrating cushions and $30–$60 heated wraps with adjustable straps. While these products rarely match the intensity of 40-watt shiatsu cushions, they’re convenient for occasional use and travel due to lighter weight and smaller footprints.
\r\n\r\n\r\n | Retailer | Typical Price Range | Common Types | Return Window |
\r\n\r\n\r\n | CVS | $25–$70 | Heated wraps, small cushions | 60 days with receipt |
\r\n | Walgreens | $20–$65 | Handheld wands, vibrating pillows | 30 days with receipt |
\r\n | Rite Aid | $25–$60 | Basic shiatsu pillows, wraps | 30 days, unopened preferred |
\r\n | Local Pharmacy | $30–$80 | Varies, usually 2–4 models | 7–30 days, store dependent |
\r\n | Grocery Pharmacy | $20–$50 | Vibrating cushions, wraps | 30 days per chain policy |
\r\n\r\n
\r\nPharmacies make sense when you prioritize speed and portability over power. If your pain is mild and you mainly need gentle warmth plus light vibration during desk work or commuting, a $30 heated wrap from CVS might be sufficient. However, for chronic, deep muscle tightness, you’ll likely outgrow these entry-level devices within a few weeks of regular use.
\r\n\r\nSpecialty Health and Massage Stores in Your Area
\r\nSpecialty wellness shops and massage-equipment stores cater to shoppers who want advanced features beyond what a typical back massager Walmart aisle offers. These locations often stock 20–50 different devices, including full-body massage chairs, high-torque percussion guns, and medical-grade TENS units, giving you hands-on access to technology usually seen only online.
\r\nPremium Features and In-Store Guidance
\r\nAt specialty stores, staff are usually trained to explain technical specs like stroke depth, measured in millimeters, and stall force, measured in pounds. You might test a percussion gun with 12 mm stroke depth and 40-pound stall force next to a lighter 8 mm, 20-pound model. This side-by-side comparison reveals how deeper stroke and higher force penetrate stubborn knots in the lower back.
\r\n\r\n - Ask for devices with at least 10–12 mm stroke depth if you have thick muscle mass or chronic tightness.
\r\n - Check massage chairs for multiple airbags, ideally 20–30, to support shoulders, lumbar area, and calves simultaneously.
\r\n - Time each demo for at least five minutes to evaluate heat buildup, noise, and whether pressure feels sustainable.
\r\n - Request written warranty details; premium chairs often include 3–5 year coverage on motors and electronic components.
\r\n
\r\n\r\nDepartment Stores and Mall Kiosks Offering Back Massagers
\r\nDepartment stores and mall kiosks occupy a middle ground between pharmacies and dedicated wellness shops. They often showcase mid-range cushions and compact massagers, emphasizing hands-on demos to encourage impulse buys. You’ll see products from brands like Brookstone or Sharper Image, typically priced between $40 and $250, with attractive displays inviting you to sit down and try them.
\r\nDemo-Heavy Shopping Experience
\r\nMall kiosks frequently feature powered demo units running all day, letting you feel real-time pressure, node rotation patterns, and heat levels. Associates might offer five-minute trials, adjusting intensity and heat while explaining features. This environment helps you quickly sense whether rolling, kneading, or percussion styles best match your back’s sensitivity and whether you tolerate continuous pressure on bony areas.
\r\n\r\n\r\n | Location Type | Price Range | Demo Availability | Typical Warranty |
\r\n\r\n\r\n | Department Store | $40–$200 | Limited floor models | 1–2 years manufacturer |
\r\n | Mall Kiosk | $60–$250 | Multiple active demos | 1 year, sometimes extended |
\r\n | Airport Kiosk | $80–$260 | Constant demos | 1 year, higher markup |
\r\n | Outlet Store | $35–$180 | Clearance demos | Remainder of original |
\r\n | Online Pickup Counter | $30–$150 | No demos | Standard brand policy |
\r\n\r\n
\r\nThese venues work best if you’re comfortable negotiating or waiting for promotions. Mall kiosks often run bundle deals, such as a cushion plus handheld massager for 10–20% less than individual prices. However, return policies can be stricter than big-box chains, so always ask about refund versus exchange rules before swiping your card after a relaxing demo session.
\r\n\r\nChoosing the Best Nearby Store for Your Budget and Needs
\r\nDeciding where to buy back massager nearby starts with clarifying your pain level, budget, and urgency. Mild, occasional soreness might justify a $30 pharmacy wrap, while chronic lumbar pain from desk work could warrant a $120 shiatsu cushion. If you’re unsure how your body will react, favor retailers with generous 60–90 day return windows and easy local drop-offs.
\r\nMatching Store Type to Your Situation
\r\nIf you need relief tonight and have under $50, pharmacies and Walmart offer quick, low-risk options. For $80–$150 budgets and moderate pain, big-box chains and department stores provide stronger cushions and better ergonomics. When your budget exceeds $200 and pain is long-standing, specialty shops and warehouse clubs become compelling because their premium devices typically last 3–5 years with consistent performance.
\r\n\r\nAligning your store choice with pain severity and budget prevents overbuying expensive gear when a simple, $40 solution would suffice.
\r\n
\r\nBalancing Testing, Returns, and Long-Term Use
\r\nWhenever possible, test devices for at least five minutes, focusing on pressure, heat, and noise. Choose stores that allow at-home trials with straightforward returns, especially if you have sensitive nerves or past back injuries. Over a year, the cost per use of a $150 cushion used three times weekly can drop below $1 per session, making thoughtful selection worthwhile.
1706 {} Top Places to Buy a Back Massager Nearby (Including Walmart) Best Places to Buy a Back Massager Nearby Discover the best places to buy a back massager nearby, including Walmart, pharmacies, and specialty shops, ranked by price and convenience. back massager nearby ["back massager near me", "back massager walmart", "best place to buy back massager near me", "where to buy back massager nearby"] published 2026-01-01 00:10:19.154973+00 2026-01-01 06:30:03.587483+00 igny8 \N 12928 https://massagersmart.com/shopping-guides/health-wellness/pain-relief/top-places-to-buy-a-back-massager-nearby-including-walmart/ {} [] 0 0 {} post [] {} 90 61 21 \N 426 article \N \N {"wordpress_term_ids": {"tags": [1666, 1677, 1664, 1659, 1678, 1674, 1676, 1661, 1675, 1679], "categories": [1680], "igny8_sectors": [1671], "igny8_clusters": [1670]}} \N \N \N f \N published \N 2026-01-12 23:53:31.714746+00
+208 2026-01-01 00:08:32.503577+00 Back pain can push you to buy the first massager you see, but choosing the wrong device wastes money and comfort. Understanding where to shop locally, what features matter, and how to compare options in person helps you relieve pain faster while avoiding disappointing purchases.
\r\nWhen you search for a back massager near me, results can feel overwhelming, mixing pharmacies, big-box chains, and tiny wellness boutiques. Each location stocks different massager types, from $20 handheld wands to $250 shiatsu chair pads, and policies vary widely. This guide gives you a clear roadmap so every store visit becomes focused and efficient.
\r\nInstead of scrolling endless product pages, you will learn how to use local inventory tools, read in-store labels, and test devices safely. By comparing intensity ranges, heat options, and warranties before you leave home, you can narrow choices to two or three realistic contenders. That way, you spend fifteen minutes trying devices, not ninety minutes second-guessing every box on the shelf.
\r\nWe will also look at how Walmart, pharmacies, and warehouse clubs differ in selection and pricing, including when curbside pickup or same-day delivery makes more sense than wandering aisles. By the end, you will know exactly where to buy back massager near you, which features justify higher prices, and how to avoid common in-store shopping mistakes.
\r\n\r\nWhy Buy a Back Massager Locally Instead of Online?
\r\nShopping locally for a back massager changes the decision from guessing to experiencing. Instead of relying on star ratings, you can feel motor strength, handle weight, and cushion firmness in seconds. For many shoppers with chronic pain, trying three models side by side reveals differences that no product photo or 200-word description can capture accurately.
\r\nImmediate Relief and Easier Problem Solving
\r\nBuying a back massager in store means you can start using it the same day, often within an hour of purchase. When you are dealing with muscle spasms or a stiff lower back, skipping a two-to-five-day shipping window matters. Local returns also simplify problems, since you can walk into the service desk instead of printing labels and repacking boxes.
\r\nReal-World Testing and Local Deals
\r\nMany big-box retailers place demo units in health aisles, letting you test intensity levels, noise, and vibration patterns. Feeling how a percussion massager behaves around your shoulder blades helps you avoid models that are too aggressive. Local stores also run unadvertised clearance deals, where last season’s $80 heated cushion might drop to $39 simply because packaging changed.
\r\n"Trying a massager on your own back for just thirty seconds often reveals more than reading thirty online reviews, especially about noise and comfort." That quick test can show whether the handle angle strains your wrist or the vibration travels uncomfortably into your ribs. Local shopping turns abstract specifications into concrete sensations, guiding smarter, more confident decisions.
\r\n\r\nTypes of Back Massagers You’ll Find in Local Stores
\r\nWalking into a store, you will usually see at least four main categories of back massagers, each designed for different pain patterns and budgets. Understanding these types before you go helps you ignore shelves that do not match your needs. It also lets you ask staff specific questions, such as which shiatsu cushions fit tall users or narrow office chairs.
\r\nCommon Massager Styles and Use Cases
\r\nHandheld percussion massagers, like the HoMedics Pro Elite or Wahl Deep Tissue, use rapid pulses up to 3,000 percussions per minute. They excel on knots around the shoulders but require arm strength to reach the mid-back. Shiatsu cushions with rotating nodes, often priced between $80 and $200, better suit people wanting hands-free relief while driving or working.
\r\nHeat, Size, and Power Considerations
\r\nHeated models typically reach 104–113°F, which loosens muscles but may feel too warm for sensitive skin. Compact cushions around 15 inches tall fit car seats, while larger 24-inch units cover the full spine at home. Battery-powered handhelds offer portability but may run only 2–3 hours, whereas corded options deliver consistent intensity for longer sessions.
\r\n"Matching device type to your daily routine matters more than chasing the highest motor power rating." If you sit eight hours at a desk, a slim vibrating cushion that straps to your chair may get thirty minutes of daily use. Meanwhile, athletes might prefer a percussion gun they can angle toward calves, glutes, and lower back after workouts.
\r\n\r\nUsing “Back Massager Near Me” Searches Effectively
\r\nTyping back massager nearby into a map app can flood you with pins, but refining those results saves time and fuel. Focusing on stores that actually list health appliances or personal care electronics reduces dead-end trips. Learning how to read inventory indicators and filter by in-store availability turns your phone into a precise shopping tool.
\r\nSmart Search Techniques and Filters
\r\nStart with Google Maps or Apple Maps and search “back massager near me,” then tap the “Shopping” or “Health & Wellness” category. Next, open individual listings and follow links to the retailer’s website, using filters like “In-store,” “Pick up today,” or “Available at this location.” These filters help you avoid driving to branches that only ship from warehouses.
\r\n\r\n - Use retailer filters like “Pickup today” or “In stock” to confirm at least two models are available at your preferred store.
\r\n - Compare driving distance and traffic time; saving ten minutes each way matters when you are already in pain.
\r\n - Check store hours and pharmacy schedules; some locations close health aisles or service desks earlier than the main entrance.
\r\n - Bookmark product pages with SKU numbers; staff can quickly locate items using SKUs if shelves look disorganized.
\r\n
\r\n\r\nFinding a Back Massager at Walmart Stores
\r\nSearching for a back massager Walmart option gives you access to wide selection and aggressive pricing, often between $20 and $150. Walmart’s website and app let you check stock at specific locations before leaving home. Understanding how to interpret stock labels such as “Limited stock” or “Out of stock” prevents wasted trips and frustration.
\r\nComparing Walmart Inventory and Options
\r\nUse the Walmart app, search “back massager,” then toggle to “Pickup” or “Today” to see items available locally. You might find a $29.88 vibrating cushion, a $49.97 shiatsu pillow, and a $89.98 heated chair pad at the same store. Checking ratings and warranty details inside the app helps you prioritize which shelf items deserve in-person testing.
\r\n\r\n\r\n | Model | Type | Approx. Price (USD) | Features |
\r\n\r\n\r\n | HoMedics Shiatsu Elite | Chair pad | 89.98 | Shiatsu nodes, heat, 3 intensity levels, 15-minute auto-off |
\r\n | Sharper Image Power Percussion | Handheld | 69.00 | 4 attachments, 2,800 ppm, corded power, ergonomic handle |
\r\n | HoMedics Vibration Cushion | Seat cushion | 29.88 | 5 motors, vibration only, car adapter, elastic straps |
\r\n | Wahl Deep Tissue | Handheld | 49.97 | Variable speed dial, 4 heads, up to 3,350 ppm |
\r\n | Brookstone Shiatsu Pillow | Pillow | 59.88 | 4 rotating nodes, heat, compact 13-inch width |
\r\n\r\n
\r\n"Checking Walmart’s app for aisle numbers and stock status turns a twenty-minute hunt into a five-minute grab-and-go." Once in store, match the SKU or model name from your phone to shelf labels, then quickly test weight and button feel. If you are unsure, ask electronics or pharmacy staff, who often know where demo units and clearance items are hidden.
\r\n\r\nOther Major Retailers That Sell Back Massagers Nearby
\r\nBeyond Walmart, you can buy back massager locally at pharmacies, warehouse clubs, department stores, and specialty wellness shops. Each category emphasizes different features, from compact designs at CVS to premium shiatsu units at Costco. Knowing what each retailer type usually carries lets you choose the right stop instead of visiting three stores blindly.
\r\nComparing Retailer Types and Typical Selection
\r\nPharmacies like Walgreens and CVS usually stock 4–8 compact models priced between $20 and $70, focusing on simple vibration cushions and small shiatsu pillows. Warehouse clubs such as Costco or Sam’s Club lean toward higher-end chair pads and massage guns, often bundled with extra attachments. Department stores like Kohl’s or Macy’s may carry branded cushions aligned with bedding and home wellness lines.
\r\n\r\n\r\n | Retailer Type | Typical Price Range | Common Types | Notable Advantage |
\r\n\r\n\r\n | Pharmacy (CVS) | 20–70 | Small cushions, handheld vibrators | Frequent 20–30% coupons and loyalty rewards |
\r\n | Warehouse Club (Costco) | 70–200 | Shiatsu pads, massage guns | Generous return policies, extended warranties |
\r\n | Department Store (Kohl’s) | 40–150 | Shiatsu cushions, pillows | Kohl’s Cash promotions lowering effective price |
\r\n | Specialty Wellness Shop | 100–300 | Premium shiatsu, infrared | Knowledgeable staff, in-depth demos |
\r\n | Sporting Goods Store | 60–200 | Massage guns, rollers | Athlete-focused options, recovery tools |
\r\n\r\n
\r\n"Choosing retailer type based on your budget prevents sticker shock and wasted browsing time." If you want a sub-$50 cushion tonight, a nearby pharmacy is more realistic than a specialty spa store. Conversely, if you want a long-session shiatsu chair pad with heat and neck coverage, driving a few extra miles to a warehouse club can unlock better build quality and longer warranties.
\r\n\r\nHow to Compare Back Massagers In-Store
\r\nOnce you are standing in front of a shelf full of boxes, comparing back massagers in-store becomes about testing comfort, control layout, and noise. Reading wattage numbers alone does not tell you whether a device will feel pleasant after ten minutes. A structured comparison method helps you quickly eliminate models that are too weak, too loud, or awkward to hold.
\r\nHands-On Testing Checklist
\r\nStart by lifting each device to assess weight; a 3-pound massager may strain wrists during longer sessions. Then power it on, cycle through all intensity levels, and listen for rattling or high-pitched buzzing. Place it gently against your shoulder or lower back over clothing for ten to fifteen seconds to gauge pressure distribution and vibration sharpness.
\r\n\r\n - Check handle length; at least 14 inches usually helps reach mid-back without twisting your spine uncomfortably.
\r\n - Test button placement; you should adjust speed with one hand without looking, especially when treating tender areas.
\r\n - Evaluate noise; anything louder than normal conversation may disturb roommates or partners during evening sessions.
\r\n - Look for auto-off timers around 15 minutes to prevent overuse, particularly helpful if you tend to fall asleep.
\r\n
\r\n"Comparing three devices back-to-back within five minutes reveals subtle differences you will feel every single day." Notice how your muscles respond immediately after testing—mild warmth and relaxation are good signs, while numbness or sharp discomfort suggests the head shape or intensity is unsuitable. Use these sensations, not just packaging claims, to choose the most sustainable daily option.
1680 {} Complete Guide to Buying a Back Massager Near You Find the Best Back Massager Near You Today Learn how to find and compare a back massager near you, from Walmart to pharmacies, with pricing, features, and in-store tips. back massager near me ["back massager nearby", "back massager walmart", "buy back massager locally", "back massager in store", "where to buy back massager near me"] approved 2026-01-01 00:08:32.503799+00 2026-01-13 01:01:04.661481+00 igny8 \N \N \N {} [] 0 0 {} page [] {} 90 61 21 \N 426 cluster_hub \N \N {} \N \N \N f \N scheduled 2026-01-13 04:00:00+00 2026-01-13 01:01:04.65581+00
+\.
+
+
+--
+-- Data for Name: igny8_content_attributes; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_attributes (id, attribute_type, name, value, external_id, external_attribute_name, source, metadata, created_at, updated_at, tenant_id, cluster_id, content_id, sector_id, site_id, task_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_content_cluster_map; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_cluster_map (id, role, source, metadata, created_at, updated_at, tenant_id, cluster_id, content_id, sector_id, site_id, task_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_content_ideas; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_ideas (id, idea_title, description, target_keywords, status, estimated_word_count, created_at, updated_at, tenant_id, keyword_cluster_id, sector_id, site_id, taxonomy_id, content_structure, content_type, disabled, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+364 How to Choose the Best Back Massager for Your Needs {"overview": "This article provides a step-by-step guide to selecting the most suitable back massager based on individual preferences and requirements.", "outline": {"intro_focus": "Introduce the importance of finding the right back massager tailored to personal needs.", "main_sections": [{"h2_topic": "Identify Your Pain Points", "coverage": "Discuss how to assess specific areas of back pain."}, {"h2_topic": "Consider Your Lifestyle", "coverage": "Analyze how lifestyle factors influence the choice of back massager."}, {"h2_topic": "Compare Different Types", "coverage": "Compare features of vibrating, rolling, and other types of back massagers."}, {"h2_topic": "Budget Considerations", "coverage": "Outline budget ranges and how they affect choices."}, {"h2_topic": "User Reviews and Recommendations", "coverage": "Highlight the value of user feedback in the decision-making process."}, {"h2_topic": "Final Tips for Selection", "coverage": "Provide practical tips for making the final choice."}]}} best back massager, best back massager for chair, back roller massager completed 1200 2026-01-12 11:44:29.433863+00 2026-01-12 11:45:52.272298+00 90 427 61 21 \N guide_tutorial post f \N \N \N f \N
+365 Back Massagers vs. Traditional Massage: Which Is Better? {"overview": "This article compares the effectiveness of back massagers with traditional massage techniques, helping readers understand the advantages of each.", "outline": {"intro_focus": "Introduce the debate between using back massagers and opting for traditional massage services.", "main_sections": [{"h2_topic": "Understanding Traditional Massage", "coverage": "Explain what traditional massage involves and its benefits."}, {"h2_topic": "How Back Massagers Work", "coverage": "Describe the mechanisms and technology behind back massagers."}, {"h2_topic": "Benefits of Back Massagers", "coverage": "List the advantages of using back massagers at home."}, {"h2_topic": "Pros and Cons of Each Method", "coverage": "Analyze the pros and cons of both back massagers and traditional massage."}, {"h2_topic": "Cost Comparison", "coverage": "Discuss the financial implications of both options."}, {"h2_topic": "User Preferences and Experiences", "coverage": "Share insights from users of both back massagers and traditional massages."}, {"h2_topic": "Conclusion: Which Is Right for You?", "coverage": "Summarize findings and guide readers in making their choice."}]}} best back massager, back vibrating massager, best back and neck massager completed 1300 2026-01-12 11:44:29.435399+00 2026-01-12 23:40:40.417344+00 90 427 61 21 \N comparison post f \N \N \N f \N
+366 10 Best Back Massagers for Pain Relief in 2023 {"overview": "This listicle ranks the top ten back massagers available in 2023, providing insights into their features and benefits.", "outline": {"intro_focus": "Set the stage for the importance of selecting a high-quality back massager for effective pain relief.", "main_sections": [{"h2_topic": "Criteria for Selection", "coverage": "Explain the criteria used to evaluate and rank the best back massagers."}, {"h2_topic": "Top 10 Back Massagers", "coverage": "List and describe each of the top ten back massagers."}, {"h2_topic": "In-Depth Reviews of Each Product", "coverage": "Provide a brief review of each product highlighting its features."}, {"h2_topic": "Pros and Cons of Each Massager", "coverage": "Outline the benefits and drawbacks of each back massager."}, {"h2_topic": "User Feedback and Ratings", "coverage": "Summarize user reviews and ratings for each massager."}, {"h2_topic": "Conclusion and Buying Recommendations", "coverage": "Wrap up with final recommendations based on the rankings."}]}} best back massager, best back and neck massager, back roller massager, back vibrating massager completed 1500 2026-01-12 11:44:29.4365+00 2026-01-12 11:46:47.886012+00 90 427 61 21 \N top_listicle post f \N \N \N f \N
+351 Complete Guide to Back Massagers for Back, Neck, and Shoulders {"overview": "This hub page explores the full landscape of back massagers and targeted tools for back, neck, and shoulder relief, from chair-mounted devices to manual hooks and sticks. It helps readers understand their pain points, compare formats, and choose the right solution for everyday use or chronic tension.", "outline": {"intro_focus": "Introduce the problem of upper back, neck, and shoulder tension and position back massagers and targeted tools as a practical, at-home relief ecosystem.", "main_sections": [{"h2_topic": "Understanding Back, Neck, and Shoulder Muscle Tension", "coverage": "Explain common causes of upper body muscle pain and knots, and when massagers can help versus when to seek medical advice."}, {"h2_topic": "Types of Back Massagers: From Chairs to Handheld Tools", "coverage": "Provide an overview of main back massager categories, including chair-mounted, handheld, hooks, and sticks."}, {"h2_topic": "Back Massager for Chair: Hands-Free Relief While You Sit", "coverage": "Describe what chair back massagers are, key features, use cases, and who they\\u2019re best suited for."}, {"h2_topic": "Back and Neck Massager Tools for Targeted Upper Body Relief", "coverage": "Cover devices designed specifically for the back and neck area and how they differ from general massagers."}, {"h2_topic": "Back and Shoulder Massager Options for Desk Workers and Drivers", "coverage": "Focus on tools that effectively target shoulder and upper-back tension caused by posture and repetitive strain."}, {"h2_topic": "Back Hook Massager: Self-Massage for Hard-to-Reach Knots", "coverage": "Explain what a back hook massager is, how it works, and typical scenarios where it excels."}, {"h2_topic": "Back Massager Sticks and Bars: Simple Tools, Deep Pressure", "coverage": "Introduce back massager stick tools, their benefits, and basic techniques for using them safely."}, {"h2_topic": "How to Choose the Right Back Massager for Your Needs", "coverage": "Offer decision criteria like pain location, intensity preferences, budget, and lifestyle to guide product selection."}, {"h2_topic": "Safe Use, Frequency, and Best Practices", "coverage": "Outline safety tips, recommended session lengths, and how to integrate massager use into a wellness routine."}, {"h2_topic": "Maintaining Your Back Massager and When to Upgrade", "coverage": "Discuss cleaning, storage, lifespan of different tools, and signs it\\u2019s time to replace or upgrade your device."}]}} back massager, back massager for chair, back hook massager, back and shoulder massager, back and neck massager, back massager stick completed 1500 2025-12-29 02:39:34.920925+00 2025-12-29 02:40:10.305471+00 90 424 61 21 \N cluster_hub page f \N \N \N f \N
+353 Back Massager for Chair Guide: Turn Any Seat Into a Relaxation Zone {"overview": "This guide explains how back massagers for chairs work, who they benefit most, and how to choose and set one up at home, in the car, or at the office. It emphasizes ergonomic support, pain relief, and practical buying considerations.", "outline": {"intro_focus": "Frame chair back massagers as an effortless way to get ongoing relief while working, driving, or relaxing without using your hands.", "main_sections": [{"h2_topic": "What Is a Back Massager for Chair?", "coverage": "Define chair-mounted back massagers, including cushion, pad, and full-seat designs, and how they differ from handheld tools."}, {"h2_topic": "Key Features to Look For in a Chair Back Massager", "coverage": "Explain important features such as massage modes, heat, adjustable intensity, and targeted back and neck massager functions."}, {"h2_topic": "Using a Back Massager for Chair at Work", "coverage": "Describe how to set up a chair massager at a desk, posture tips, and how to use it without disrupting productivity."}, {"h2_topic": "Using a Back Massager for Chair in the Car or at Home", "coverage": "Cover car-compatible models, safety considerations while driving, and ideal setups for couches and recliners."}, {"h2_topic": "Back and Shoulder Massager Benefits for Sedentary Lifestyles", "coverage": "Discuss how chair massagers help relieve upper-back and shoulder tension for people who sit for long periods."}, {"h2_topic": "Comparing Chair Massagers to Manual Tools Like Hooks and Sticks", "coverage": "Contrast hands-free chair massagers with manual back hook massager and back massager stick options, including pros and cons."}, {"h2_topic": "Care, Maintenance, and Safety Tips for Chair Back Massagers", "coverage": "Provide advice on cleaning, storage, safe session length, and when not to use a chair massager."}, {"h2_topic": "Who Should Avoid or Limit Use of Chair Back Massagers?", "coverage": "Outline health conditions and situations where medical guidance is recommended before use."}]}} back massager for chair, back massager, back and shoulder massager, back and neck massager, back hook massager, back massager stick completed 1500 2025-12-29 02:39:34.937484+00 2025-12-29 02:41:08.571666+00 90 424 61 21 \N guide_tutorial post f \N \N \N f \N
+363 Complete Guide to the Best Back Massagers for Pain Relief {"overview": "This comprehensive guide explores various types of back massagers designed to provide pain relief and relaxation, helping users choose the right device for their needs.", "outline": {"intro_focus": "Establish the importance of back massagers in managing pain and promoting relaxation.", "main_sections": [{"h2_topic": "Understanding Back Pain", "coverage": "Discuss common causes and types of back pain."}, {"h2_topic": "Benefits of Back Massagers", "coverage": "Outline how back massagers can alleviate discomfort and enhance relaxation."}, {"h2_topic": "Types of Back Massagers", "coverage": "Introduce different kinds of back massagers including vibrating and rolling types."}, {"h2_topic": "Features to Consider", "coverage": "Highlight key features to look for when choosing a back massager."}, {"h2_topic": "Best Back Massagers for Chair Use", "coverage": "List and describe back massagers specifically designed for use on chairs."}, {"h2_topic": "Top Back and Neck Massagers", "coverage": "Review popular back and neck massagers available on the market."}, {"h2_topic": "How to Use a Back Massager Effectively", "coverage": "Provide tips for maximizing the benefits of back massagers."}, {"h2_topic": "Customer Reviews and Experiences", "coverage": "Share insights and testimonials from users of various back massagers."}, {"h2_topic": "Conclusion", "coverage": "Summarize key points and encourage readers to find the right massager."}]}} best back massager, best back massager for chair, best back and neck massager, back vibrating massager, back roller massager completed 1500 2026-01-12 11:44:29.43003+00 2026-01-12 11:45:20.346759+00 90 427 61 21 \N cluster_hub page f \N \N \N f \N
+352 How to Use a Back Hook Massager for Neck and Shoulder Knots {"overview": "This how-to guide walks readers through using a back hook massager to safely and effectively release tight knots in the upper back, neck, and shoulders. It focuses on body positioning, pressure control, and practical routines for home and office use.", "outline": {"intro_focus": "Highlight the frustration of unreachable knots and explain how a back hook massager offers a simple self-massage solution.", "main_sections": [{"h2_topic": "What Is a Back Hook Massager and How Does It Work?", "coverage": "Define back hook massagers, their design, and why they\\u2019re effective for trigger points in the back, neck, and shoulders."}, {"h2_topic": "Safety Basics Before You Start Self-Massage", "coverage": "Cover key precautions, contraindications, and how to recognize when pressure is too intense or unsafe."}, {"h2_topic": "Body Positioning for Targeting Back and Shoulder Knots", "coverage": "Explain optimal standing, seated, and reclining positions to reach different areas of the back and shoulders."}, {"h2_topic": "Step-by-Step: Using a Back Hook Massager on the Neck", "coverage": "Provide a clear sequence for safely working on neck tension and common neck trigger points."}, {"h2_topic": "Step-by-Step: Using a Back Hook Massager on the Upper and Mid Back", "coverage": "Detail how to locate knots along the spine and shoulder blades and apply controlled pressure with the hook."}, {"h2_topic": "Integrating a Back Hook Massager Into Your Daily Routine", "coverage": "Offer sample routines for desk workers, drivers, and athletes, including recommended frequency and duration."}, {"h2_topic": "When to Combine a Back Hook Massager With Other Tools", "coverage": "Suggest pairing the hook with a back and neck massager, stretching, or heat for enhanced relief."}]}} back hook massager, back and shoulder massager, back and neck massager, back massager, back massager stick completed 1500 2025-12-29 02:39:34.934332+00 2025-12-29 02:40:39.135618+00 90 424 61 21 \N how_to post f \N \N \N f \N
+354 7 Best Back Massager Sticks and Hooks for Shoulder Relief {"overview": "This top listicle curates the best back massager sticks and hook-style tools for targeting stubborn shoulder and upper-back knots. It ranks options by use case, highlights key features, and helps readers choose the right manual tool for self-massage.", "outline": {"intro_focus": "Emphasize how simple, low-tech tools like back massager sticks and hooks can deliver deep, precise relief without electricity or batteries.", "main_sections": [{"h2_topic": "How Back Massager Sticks and Hooks Relieve Muscle Knots", "coverage": "Explain the mechanics of leverage and pressure that make sticks and back hook massagers effective for trigger points."}, {"h2_topic": "Selection Criteria: What Makes a Great Back and Shoulder Massager Tool", "coverage": "Outline evaluation criteria such as material, grip, shape, portability, and suitability for back, neck, and shoulder areas."}, {"h2_topic": "Best Overall Back Massager Stick for Everyday Use", "coverage": "Profile a top all-around stick-style massager and why it stands out for most users."}, {"h2_topic": "Best Back Hook Massager for Deep Shoulder and Neck Knots", "coverage": "Highlight a leading hook massager ideal for reaching tight spots around the shoulder blades and neck."}, {"h2_topic": "Best Compact Back and Neck Massager Stick for Travel", "coverage": "Recommend a portable option that fits in bags and works well for quick relief on the go."}, {"h2_topic": "Best Budget-Friendly Manual Back Massager Tool", "coverage": "Feature a low-cost, high-value back massager stick or hook suitable for beginners."}, {"h2_topic": "Best Back and Shoulder Massager Set for Full-Body Coverage", "coverage": "Introduce a bundle or set that combines different tools to cover back, neck, and shoulders comprehensively."}, {"h2_topic": "How to Choose Between a Stick, Hook, or Chair Back Massager", "coverage": "Help readers decide which format fits their lifestyle, pain pattern, and budget, and when to own more than one type."}]}} back massager stick, back hook massager, back and shoulder massager, back and neck massager, back massager, back massager for chair completed 1500 2025-12-29 02:39:34.940358+00 2025-12-29 02:41:44.659992+00 90 424 61 21 \N top_listicle post f \N \N \N f \N
+355 Complete Guide to Back Massagers with Heat and Handheld Designs {"overview": "This hub page explains the different types of back massagers with heat, including handheld wands and massage guns, and how to choose between them. It covers benefits, key features, safety, and buying considerations, and links out to more detailed guides and comparisons.", "outline": {"intro_focus": "Establish why people are turning to heated handheld and gun-style back massagers for at-home pain relief and muscle recovery.", "main_sections": [{"h2_topic": "What Is a Back Massager with Heat?", "coverage": "Define heated back massagers, how heat therapy works, and common technologies used (vibration, percussion, infrared, etc.)."}, {"h2_topic": "Handheld vs Massage Gun: Key Design Differences", "coverage": "Explain the structural and functional differences between traditional handheld back massagers and massage gun designs."}, {"h2_topic": "Core Benefits of Heat for Back Pain and Tension", "coverage": "Cover therapeutic benefits of heat for muscle relaxation, circulation, and pain relief specifically for the back."}, {"h2_topic": "Types of Back Massagers with Heat on the Market", "coverage": "Provide an overview of main categories: handheld wands, massage guns, cushion-style, straps, and chair attachments with heat."}, {"h2_topic": "Key Features to Look For in a Heated Back Massager", "coverage": "Discuss intensity settings, heat levels, attachments, battery life, ergonomics, noise, and portability."}, {"h2_topic": "When to Choose a Back Massager Handheld Design", "coverage": "Explain use cases, body areas, and user profiles best suited to classic handheld back massagers."}, {"h2_topic": "When a Back Massager Gun Is the Better Option", "coverage": "Describe scenarios where a massage gun design excels, such as deep tissue work, athletes, and trigger point targeting."}, {"h2_topic": "Safety Tips for Using Heated and Gun-Style Massagers", "coverage": "Outline safe usage guidelines, contraindications, recommended session length, and when to consult a professional."}, {"h2_topic": "How to Match a Back Massager to Your Specific Needs", "coverage": "Guide readers through assessing pain type, sensitivity, budget, and lifestyle to narrow down choices."}, {"h2_topic": "Care, Maintenance, and Longevity of Your Back Massager", "coverage": "Explain cleaning, storage, battery care, and how to keep a heated handheld or gun massager working effectively."}]}} back massager with heat, back massager handheld, back massager gun, heated back massager, handheld back massager, massage gun for back, back massager with heat therapy, portable back massager completed 2500 2026-01-01 00:05:24.263773+00 2026-01-03 17:52:05.365068+00 90 425 61 21 \N cluster_hub page f \N \N \N f \N
+359 Complete Guide to Buying a Back Massager Near You {"overview": "This hub page explains all the ways to find and buy a back massager locally, from big-box retailers like Walmart to pharmacies and specialty wellness shops. It helps readers compare in-store and nearby options, understand what to look for, and decide where to shop based on price, convenience, and product selection.", "outline": {"intro_focus": "Introduce the challenge of choosing where to buy a back massager locally and set up the guide as a roadmap to finding the best nearby options.", "main_sections": [{"h2_topic": "Why Buy a Back Massager Locally Instead of Online?", "coverage": "Explain benefits of in-store shopping such as trying products, immediate pickup, easier returns, and local deals."}, {"h2_topic": "Types of Back Massagers You\\u2019ll Find in Local Stores", "coverage": "Cover common product types (handheld, chair pads, percussion, shiatsu, heated) and where they\\u2019re most likely stocked nearby."}, {"h2_topic": "Using \\u201cBack Massager Near Me\\u201d Searches Effectively", "coverage": "Show how to use maps, store locators, and search filters to find nearby retailers that carry back massagers."}, {"h2_topic": "Finding a Back Massager at Walmart Stores", "coverage": "Detail how to check Walmart inventory, compare in-store vs online options, and locate specific back massager models at your closest Walmart."}, {"h2_topic": "Other Major Retailers That Sell Back Massagers Nearby", "coverage": "Highlight pharmacies, warehouse clubs, department stores, and specialty wellness shops that typically stock back massagers."}, {"h2_topic": "How to Compare Back Massagers In-Store", "coverage": "Explain what to look for when testing devices locally, including intensity, comfort, noise level, and controls."}, {"h2_topic": "Price, Warranty, and Return Policies at Local Retailers", "coverage": "Outline how pricing, sales, warranties, and return windows differ between Walmart and other nearby stores."}, {"h2_topic": "When to Choose Curbside Pickup or Same-Day Delivery", "coverage": "Describe hybrid options like order-online-pickup-in-store and local delivery from big retailers and why they might be preferable."}, {"h2_topic": "Safety and Hygiene Tips for Testing Back Massagers In-Store", "coverage": "Provide basic hygiene, safety, and usage guidelines for trying or immediately using a new back massager purchased locally."}, {"h2_topic": "Checklist Before You Head to a Store Near You", "coverage": "Offer a simple pre-shopping checklist to help readers choose the right store and product type before visiting."}]}} back massager near me, back massager nearby, back massager walmart, buy back massager locally, back massager in store, where to buy back massager near me completed 1500 2026-01-01 00:05:46.70728+00 2026-01-01 00:08:32.544669+00 90 426 61 21 \N cluster_hub page f \N \N \N f \N
+358 7 Best Back Massagers with Heat and Massage Gun Designs {"overview": "This top listicle ranks leading back massagers that offer heat, handheld convenience, or gun-style deep tissue relief. It includes quick pros and cons, ideal user profiles, and a mini buying guide to help readers pick the right model.", "outline": {"intro_focus": "Emphasize that the market is crowded and this curated list highlights the most reliable heated handheld and gun-style back massagers for different budgets.", "main_sections": [{"h2_topic": "How We Chose the Best Back Massagers with Heat", "coverage": "Explain evaluation criteria such as heat performance, power, ergonomics, noise, and user reviews."}, {"h2_topic": "Top Pick: Best Overall Heated Back Massager", "coverage": "Profile a well-rounded device that balances heat, performance, and value for most users."}, {"h2_topic": "Best Back Massager Handheld for Everyday Use", "coverage": "Highlight a user-friendly handheld model ideal for regular home or office use."}, {"h2_topic": "Best Back Massager Gun for Deep Tissue Relief", "coverage": "Feature a massage gun that excels at powerful back muscle and trigger point work."}, {"h2_topic": "Best Budget Heated Back Massager", "coverage": "Recommend an affordable option that still offers reliable heat and basic massage functions."}, {"h2_topic": "Best Premium Back Massager with Advanced Features", "coverage": "Showcase a higher-end device with extra modes, smart features, or superior build quality."}, {"h2_topic": "Best Portable Back Massager for Travel", "coverage": "Present a compact, lightweight option suitable for travel or office use on the go."}, {"h2_topic": "How to Choose the Right Back Massager from This List", "coverage": "Provide a short decision guide mapping common needs and preferences to the featured products."}]}} best back massager with heat, back massager with heat, back massager handheld, back massager gun, massage gun for back, top heated back massagers, portable back massager completed 2200 2026-01-01 00:05:24.282566+00 2026-01-01 00:07:59.692753+00 90 425 61 21 \N top_listicle post f \N \N \N f \N
+356 How to Use a Back Massager with Heat Safely and Effectively {"overview": "This how-to guide walks users through setting up and using a back massager with heat for optimal relief while avoiding common mistakes. It focuses on positioning, session timing, intensity settings, and integrating heat therapy into a broader pain management routine.", "outline": {"intro_focus": "Highlight that correct technique and safety are crucial to getting real relief from a heated back massager without causing irritation or injury.", "main_sections": [{"h2_topic": "Understand Your Back Massager with Heat Settings", "coverage": "Explain typical heat and intensity controls, modes, and attachments so readers know what each option does."}, {"h2_topic": "Preparing Your Back and Environment for a Massage Session", "coverage": "Cover pre-session steps such as clothing choice, hydration, posture, and setting up a comfortable space."}, {"h2_topic": "Proper Positioning for Upper, Mid, and Lower Back", "coverage": "Detail how to position a handheld or gun-style massager safely on different back regions, including hard-to-reach spots."}, {"h2_topic": "Recommended Session Length and Frequency", "coverage": "Provide guidelines on how long and how often to use a heated back massager to avoid overuse while maintaining benefits."}, {"h2_topic": "Adjusting Heat and Intensity for Different Needs", "coverage": "Explain how to tailor settings for muscle relaxation, chronic pain, post-workout recovery, or stress relief."}, {"h2_topic": "Safety Precautions and When to Avoid Heat", "coverage": "List conditions and situations where heated back massagers should be used with caution or avoided entirely."}, {"h2_topic": "Incorporating a Back Massager into Your Wellness Routine", "coverage": "Describe how to combine massager use with stretching, strengthening, and ergonomic habits for long-term back health."}]}} back massager with heat, heated back massager, how to use back massager, back massager handheld, massage gun for back, safe use of back massager, heat therapy for back completed 1800 2026-01-01 00:05:24.276699+00 2026-01-01 00:06:52.448293+00 90 425 61 21 \N how_to post f \N \N \N f \N
+357 Back Massager Handheld vs Gun: Which Is Better for You? {"overview": "This comparison article helps readers decide between a traditional handheld back massager and a massage gun based on their pain type, lifestyle, and budget. It breaks down design, intensity, usability, and ideal use cases to support confident purchase decisions.", "outline": {"intro_focus": "Frame the choice between handheld and gun-style back massagers as a common point of confusion for buyers seeking targeted back relief.", "main_sections": [{"h2_topic": "Overview of Back Massager Handheld Designs", "coverage": "Describe typical handheld back massager features, ergonomics, and how they are generally used."}, {"h2_topic": "Overview of Back Massager Gun Designs", "coverage": "Explain what a massage gun is, its percussive mechanism, and its common applications for back muscles."}, {"h2_topic": "Intensity, Depth, and Type of Massage", "coverage": "Compare how deeply each design works into muscle tissue, and which is better for light vs deep-tissue relief."}, {"h2_topic": "Heat Options: Where Handheld and Gun Designs Differ", "coverage": "Analyze how heat is implemented (or not) in handheld back massagers versus massage guns and what that means for users."}, {"h2_topic": "Ease of Use, Reach, and Portability", "coverage": "Contrast ergonomics, weight, noise, reach for solo use, and travel-friendliness between the two categories."}, {"h2_topic": "Price, Durability, and Maintenance", "coverage": "Break down typical price ranges, build quality, battery life, and upkeep requirements for each type."}, {"h2_topic": "Which Back Massager Is Best for Your Situation?", "coverage": "Offer scenario-based recommendations for different users such as office workers, seniors, and athletes."}, {"h2_topic": "Alternatives and Hybrid Back Massager Options", "coverage": "Mention hybrid or multi-function devices and when they might be a better fit than pure handheld or gun designs."}]}} back massager handheld, back massager gun, handheld vs massage gun, massage gun for back, best back massager, back massager with heat, handheld back massager comparison completed 2000 2026-01-01 00:05:24.279581+00 2026-01-01 00:07:24.664228+00 90 425 61 21 \N comparison post f \N \N \N f \N
+360 How to Find the Best Back Massager Near Me in Minutes {"overview": "This how-to article walks readers step-by-step through using their phone or computer to quickly locate and evaluate nearby stores that sell back massagers. It focuses on practical search tactics, store tools, and on-the-spot decision tips for time-pressed shoppers.", "outline": {"intro_focus": "Frame the article around needing fast relief and using smart local search tactics to quickly find a quality back massager nearby.", "main_sections": [{"h2_topic": "Define Your Needs Before You Search", "coverage": "Guide readers to clarify pain points, budget, and preferred type of back massager so their local search is more targeted."}, {"h2_topic": "Use \\u201cBack Massager Near Me\\u201d Searches the Smart Way", "coverage": "Explain how to refine local search queries, read map results, and use filters to find relevant nearby retailers."}, {"h2_topic": "Check Live Inventory at Major Retailers", "coverage": "Show how to use tools from Walmart and other big-box stores to confirm if specific back massagers are in stock locally."}, {"h2_topic": "Compare Nearby Stores by Distance, Price, and Reviews", "coverage": "Teach readers how to weigh travel time, pricing, and store ratings to decide which local shop to visit first."}, {"h2_topic": "Call Ahead to Confirm Back Massager Availability", "coverage": "Encourage quick phone calls to verify models and prices, and suggest what questions to ask store associates."}, {"h2_topic": "Decide Between In-Store Shopping, Pickup, or Local Delivery", "coverage": "Help readers choose the best fulfillment option based on urgency, mobility, and store offerings."}, {"h2_topic": "What to Do If No Back Massager Is Available Nearby", "coverage": "Offer backup strategies such as expanding the search radius, checking neighboring towns, or using ship-to-store options."}]}} back massager near me, back massager nearby, find back massager near me, local back massager store, back massager in stock near me completed 1500 2026-01-01 00:05:46.71158+00 2026-01-01 00:09:15.280942+00 90 426 61 21 \N how_to post f \N \N \N f \N
+361 Back Massager Walmart Shopping Guide: In-Store and Pickup {"overview": "This guide focuses specifically on buying a back massager at Walmart, covering how to browse options, check local availability, and choose between in-store, pickup, and delivery. It\\u2019s aimed at shoppers who prefer Walmart for price and convenience and want to optimize their purchase.", "outline": {"intro_focus": "Position Walmart as a convenient, budget-friendly place to buy a back massager and preview how to get the most from shopping there.", "main_sections": [{"h2_topic": "Why Choose Walmart for a Back Massager Purchase?", "coverage": "Outline Walmart\\u2019s advantages such as pricing, selection, store coverage, and flexible pickup options."}, {"h2_topic": "Types of Back Massagers You\\u2019ll Find at Walmart", "coverage": "Describe the main categories of back massagers commonly available at Walmart and typical price ranges."}, {"h2_topic": "How to Check Back Massager Availability at Your Local Walmart", "coverage": "Walk through using the Walmart website and app to see what\\u2019s in stock at specific nearby stores."}, {"h2_topic": "Comparing In-Store Back Massager Options vs Online-Only at Walmart", "coverage": "Explain the differences between items sold in physical stores and online-only listings, and how that affects your choice."}, {"h2_topic": "Using Walmart Pickup and Same-Day Options for Back Massagers", "coverage": "Detail how to order online with free pickup, curbside pickup, or same-day delivery for faster access."}, {"h2_topic": "Understanding Walmart\\u2019s Pricing, Returns, and Protection Plans", "coverage": "Cover price matching basics, return windows, and optional protection plans for back massagers."}, {"h2_topic": "Tips for Testing and Using Your New Back Massager Safely", "coverage": "Provide basic safety, setup, and first-use tips specific to devices commonly bought at Walmart."}, {"h2_topic": "When a Different Local Retailer Might Be Better Than Walmart", "coverage": "Briefly discuss scenarios where specialty or pharmacy stores nearby might offer better fits or unique models."}]}} back massager walmart, back massager near me, walmart back massager in store, buy back massager at walmart, walmart pickup back massager, walmart back massager nearby completed 1500 2026-01-01 00:05:46.715408+00 2026-01-01 00:09:48.760759+00 90 426 61 21 \N guide_tutorial post f \N \N \N f \N
+362 Top Places to Buy a Back Massager Nearby (Including Walmart) {"overview": "This listicle ranks the best types of local stores for buying a back massager, from Walmart and big-box chains to pharmacies and specialty shops. It helps readers quickly see their top nearby options and choose the right retailer based on selection, price, and convenience.", "outline": {"intro_focus": "Highlight how many local options exist for buying a back massager and promise a ranked overview of the best nearby places to shop.", "main_sections": [{"h2_topic": "How We Chose the Best Local Places to Buy a Back Massager", "coverage": "Explain criteria like availability, price, store coverage, and customer experience used to rank retailer types."}, {"h2_topic": "Walmart: Widest Coverage and Budget-Friendly Back Massagers", "coverage": "Describe why Walmart is often the first stop, what shoppers can expect, and typical pros and cons."}, {"h2_topic": "Big-Box Retailers and Warehouse Clubs Near You", "coverage": "Cover other large chains that often carry back massagers and how they compare to Walmart for deals and selection."}, {"h2_topic": "Drugstores and Pharmacies with Back Massagers in Aisle", "coverage": "Discuss local pharmacies and drugstores as convenient options for simple, grab-and-go back massagers."}, {"h2_topic": "Specialty Health and Massage Stores in Your Area", "coverage": "Explain the benefits of visiting dedicated wellness or massage shops for higher-end or niche back massagers."}, {"h2_topic": "Department Stores and Mall Kiosks Offering Back Massagers", "coverage": "Outline what shoppers can expect from department stores and mall kiosks in terms of demos and impulse buys."}, {"h2_topic": "Choosing the Best Nearby Store for Your Budget and Needs", "coverage": "Summarize how to match store type to your budget, urgency, and desired back massager features."}, {"h2_topic": "Quick Checklist Before You Head to Any Local Store", "coverage": "Provide a concise list of what to bring and questions to ask wherever you decide to shop nearby."}]}} back massager nearby, back massager near me, back massager walmart, best place to buy back massager near me, local back massager stores, where to buy back massager nearby completed 1500 2026-01-01 00:05:46.718354+00 2026-01-01 00:10:19.18664+00 90 426 61 21 \N top_listicle post f \N \N \N f \N
+\.
+
+
+--
+-- Data for Name: igny8_content_ideas_keyword_objects; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_ideas_keyword_objects (id, contentideas_id, keywords_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_content_taxonomy_map; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_taxonomy_map (id, source, metadata, created_at, updated_at, tenant_id, content_id, sector_id, site_id, taxonomy_id, task_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_content_taxonomy_relations; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_taxonomy_relations (id, updated_at, created_at, content_id, taxonomy_id) FROM stdin;
+1193 2026-01-12 23:40:40.366819+00 2026-01-12 23:40:40.366797+00 217 726
+1194 2026-01-12 23:40:40.376637+00 2026-01-12 23:40:40.376625+00 217 727
+1195 2026-01-12 23:40:40.386296+00 2026-01-12 23:40:40.386274+00 217 728
+1196 2026-01-12 23:40:40.395016+00 2026-01-12 23:40:40.394997+00 217 729
+1197 2026-01-12 23:40:40.401796+00 2026-01-12 23:40:40.401787+00 217 730
+1198 2026-01-12 23:40:40.407919+00 2026-01-12 23:40:40.407908+00 217 731
+\.
+
+
+--
+-- Data for Name: igny8_content_taxonomy_terms; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_taxonomy_terms (id, name, slug, taxonomy_type, description, external_id, external_taxonomy, sync_status, count, metadata, created_at, updated_at, tenant_id, parent_id, sector_id, site_id, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+726 back massagers back-massagers tag \N 0 {} 2026-01-12 23:40:40.353959+00 2026-01-12 23:40:40.35397+00 90 \N 61 21 \N \N \N f \N
+727 traditional massage traditional-massage tag \N 0 {} 2026-01-12 23:40:40.373457+00 2026-01-12 23:40:40.373466+00 90 \N 61 21 \N \N \N f \N
+728 pain relief pain-relief tag \N 0 {} 2026-01-12 23:40:40.381966+00 2026-01-12 23:40:40.381977+00 90 \N 61 21 \N \N \N f \N
+729 relaxation relaxation tag \N 0 {} 2026-01-12 23:40:40.391216+00 2026-01-12 23:40:40.391241+00 90 \N 61 21 \N \N \N f \N
+730 self-care self-care tag \N 0 {} 2026-01-12 23:40:40.398688+00 2026-01-12 23:40:40.398702+00 90 \N 61 21 \N \N \N f \N
+731 Health > Wellness health-wellness category \N 0 {} 2026-01-12 23:40:40.404987+00 2026-01-12 23:40:40.404994+00 90 \N 61 21 \N \N \N f \N
+\.
+
+
+--
+-- Data for Name: igny8_content_taxonomy_terms_clusters; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_content_taxonomy_terms_clusters (id, contenttaxonomy_id, clusters_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_core_auth_historicalaccount; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_core_auth_historicalaccount (id, is_deleted, deleted_at, restore_until, delete_reason, name, slug, stripe_customer_id, credits, status, payment_method, deletion_retention_days, billing_email, billing_address_line1, billing_address_line2, billing_city, billing_state, billing_postal_code, billing_country, tax_id, usage_period_start, usage_period_end, created_at, updated_at, history_id, history_date, history_change_reason, history_type, deleted_by_id, history_user_id, owner_id, plan_id, usage_ahrefs_queries) FROM stdin;
+5 f \N \N \N AWS Admin aws-admin \N 369 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-12 13:57:00.253271+00 1 2025-12-15 13:18:12.847126+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 359 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-12 13:57:00.253271+00 2 2025-12-15 13:34:50.232005+00 \N ~ \N \N 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 1762 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-13 02:06:31.600048+00 3 2025-12-15 14:29:32.777204+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1762 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:37:01.124248+00 4 2025-12-16 20:37:01.129138+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1762 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:37:01.16614+00 5 2025-12-16 20:37:01.166994+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1762 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:37:01.173349+00 6 2025-12-16 20:37:01.173977+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1747 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-13 02:06:31.600048+00 7 2025-12-16 20:37:01.195605+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1747 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:39:17.400407+00 8 2025-12-16 20:39:17.4019+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1744 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:37:01.173349+00 9 2025-12-16 20:39:17.499047+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1744 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:12:05.298093+00 10 2025-12-16 21:12:05.300141+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 20:39:17.400407+00 11 2025-12-16 21:12:05.398827+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:37:52.203221+00 12 2025-12-16 21:37:52.20429+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:37:52.210319+00 13 2025-12-16 21:37:52.21133+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:37:52.214529+00 14 2025-12-16 21:37:52.215155+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:12:05.298093+00 15 2025-12-16 21:37:52.228729+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:08:12.378629+00 16 2025-12-16 22:08:12.380467+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:08:12.384161+00 17 2025-12-16 22:08:12.384708+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:08:12.387919+00 18 2025-12-16 22:08:12.388573+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1710 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 21:37:52.214529+00 19 2025-12-16 22:08:12.399169+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1710 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:10:24.655017+00 20 2025-12-16 22:10:24.655918+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1710 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:10:24.659085+00 21 2025-12-16 22:10:24.659602+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1710 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:10:24.661878+00 22 2025-12-16 22:10:24.662321+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1695 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:08:12.387919+00 23 2025-12-16 22:10:24.670834+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1695 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:12:37.838595+00 24 2025-12-16 22:12:37.839551+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1695 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:12:37.843564+00 25 2025-12-16 22:12:37.844043+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1695 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:12:37.846525+00 26 2025-12-16 22:12:37.847006+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:10:24.661878+00 27 2025-12-16 22:12:37.856585+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:32:21.547802+00 28 2025-12-16 22:32:21.548683+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:32:21.553419+00 29 2025-12-16 22:32:21.553896+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:32:21.557128+00 30 2025-12-16 22:32:21.557837+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1665 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:12:37.846525+00 31 2025-12-16 22:32:21.570306+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1665 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:36:46.572429+00 32 2025-12-16 22:36:46.573229+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1665 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:36:46.57655+00 33 2025-12-16 22:36:46.576937+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1665 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:36:46.579048+00 34 2025-12-16 22:36:46.579505+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1650 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:32:21.557128+00 35 2025-12-16 22:36:46.589241+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1650 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:39:20.609445+00 36 2025-12-16 22:39:20.610735+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1644 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:36:46.579048+00 37 2025-12-16 22:39:20.67893+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1644 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:45:17.468644+00 38 2025-12-16 22:45:17.469805+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1644 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:45:17.475364+00 39 2025-12-16 22:45:17.47591+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1644 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:45:17.478981+00 40 2025-12-16 22:45:17.479722+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1629 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:39:20.609445+00 41 2025-12-16 22:45:17.490404+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1629 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:50:08.766711+00 42 2025-12-16 22:50:08.768186+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:45:17.478981+00 43 2025-12-16 22:50:08.814336+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:02:35.430634+00 44 2025-12-16 23:02:35.431678+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:02:35.437412+00 45 2025-12-16 23:02:35.43802+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:02:35.441005+00 46 2025-12-16 23:02:35.441558+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1607 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 22:50:08.766711+00 47 2025-12-16 23:02:35.450736+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1607 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:14:16.186907+00 48 2025-12-16 23:14:16.187623+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1592 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:02:35.441005+00 49 2025-12-16 23:14:16.19712+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1592 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:31:57.203968+00 50 2025-12-16 23:31:57.205022+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1592 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:31:57.208349+00 51 2025-12-16 23:31:57.208855+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1592 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:31:57.213226+00 52 2025-12-16 23:31:57.213883+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1577 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:14:16.186907+00 53 2025-12-16 23:31:57.227724+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1577 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:36:41.837005+00 54 2025-12-16 23:36:41.838052+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1569 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:31:57.213226+00 55 2025-12-16 23:36:41.893472+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1569 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:59:06.855585+00 56 2025-12-16 23:59:06.856961+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1569 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:59:06.863314+00 57 2025-12-16 23:59:06.864365+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1569 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:59:06.868524+00 58 2025-12-16 23:59:06.869177+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1554 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:36:41.837005+00 59 2025-12-16 23:59:06.879393+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1554 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 00:05:30.850203+00 60 2025-12-17 00:05:30.85118+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-16 23:59:06.868524+00 61 2025-12-17 00:05:30.932937+00 \N ~ \N \N 119 4 0
+5 f \N \N \N AWS Admin aws-admin \N 359 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:19:28.237815+00 62 2025-12-17 00:19:28.238828+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 354 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-12 13:57:00.253271+00 63 2025-12-17 00:19:28.287918+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 354 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:34:12.584689+00 64 2025-12-17 00:34:12.585562+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 350 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:19:28.237815+00 65 2025-12-17 00:34:12.628482+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 350 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:45:05.778714+00 66 2025-12-17 00:45:05.77962+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 350 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:45:05.782849+00 67 2025-12-17 00:45:05.783344+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:34:12.584689+00 68 2025-12-17 00:45:05.790292+00 \N ~ \N \N 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.122263+00 69 2025-12-17 01:02:24.123199+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.128751+00 70 2025-12-17 01:02:24.129483+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.133188+00 71 2025-12-17 01:02:24.133836+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.136763+00 72 2025-12-17 01:02:24.13732+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1547 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.141235+00 73 2025-12-17 01:02:24.141899+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1532 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 00:05:30.850203+00 74 2025-12-17 01:02:24.153084+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1532 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:07:42.341847+00 75 2025-12-17 01:07:42.343294+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1526 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:02:24.141235+00 76 2025-12-17 01:07:42.405925+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1526 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:13:28.672605+00 77 2025-12-17 01:13:28.673407+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1526 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:13:28.676035+00 78 2025-12-17 01:13:28.676458+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1526 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:13:28.679248+00 79 2025-12-17 01:13:28.679688+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1511 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:07:42.341847+00 80 2025-12-17 01:13:28.686956+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1511 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:22:09.196984+00 81 2025-12-17 01:22:09.197794+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1507 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:13:28.679248+00 82 2025-12-17 01:22:09.24747+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1507 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:23:18.398179+00 83 2025-12-17 01:23:18.39948+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1503 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:22:09.196984+00 84 2025-12-17 01:23:18.460581+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1503 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:25:06.292391+00 85 2025-12-17 01:25:06.293673+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1499 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:23:18.398179+00 86 2025-12-17 01:25:06.364647+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1499 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:35:44.12353+00 87 2025-12-17 01:35:44.12459+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1495 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:25:06.292391+00 88 2025-12-17 01:35:44.190623+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1495 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:37:33.306391+00 89 2025-12-17 01:37:33.307407+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1495 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:37:33.310751+00 90 2025-12-17 01:37:33.311344+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1495 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:37:33.314451+00 91 2025-12-17 01:37:33.315463+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1495 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:37:33.318738+00 92 2025-12-17 01:37:33.319289+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1480 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:35:44.12353+00 93 2025-12-17 01:37:33.330338+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1480 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:41:32.124347+00 94 2025-12-17 01:41:32.125579+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1477 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:37:33.318738+00 95 2025-12-17 01:41:32.187918+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1477 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:47:27.496281+00 96 2025-12-17 01:47:27.497223+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1471 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:41:32.124347+00 97 2025-12-17 01:47:27.56324+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1461 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:47:27.496281+00 98 2025-12-17 02:50:14.008374+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1451 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:47:27.496281+00 99 2025-12-17 03:10:35.12025+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1451 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:12:46.812071+00 100 2025-12-17 03:12:46.813359+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1451 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:12:46.817677+00 101 2025-12-17 03:12:46.818162+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1451 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:12:46.820258+00 102 2025-12-17 03:12:46.820664+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1451 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:12:46.822541+00 103 2025-12-17 03:12:46.823029+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1436 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 01:47:27.496281+00 104 2025-12-17 03:12:46.834434+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1436 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:25:38.303026+00 105 2025-12-17 03:25:38.303767+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1436 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:25:38.311204+00 106 2025-12-17 03:25:38.31272+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1436 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:25:38.317239+00 107 2025-12-17 03:25:38.317949+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1436 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:25:38.320809+00 108 2025-12-17 03:25:38.321497+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1421 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:12:46.822541+00 109 2025-12-17 03:25:38.335575+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1421 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:30:57.590892+00 110 2025-12-17 03:30:57.591879+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1421 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:30:57.597702+00 111 2025-12-17 03:30:57.598256+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1421 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:30:57.600575+00 112 2025-12-17 03:30:57.60107+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1421 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:30:57.603452+00 113 2025-12-17 03:30:57.604276+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1406 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:25:38.320809+00 114 2025-12-17 03:30:57.623282+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1406 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:15:06.630205+00 115 2025-12-17 04:15:06.631721+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1406 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:15:06.657465+00 116 2025-12-17 04:15:06.662593+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1406 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:15:06.706241+00 117 2025-12-17 04:15:06.707522+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1406 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:15:06.725943+00 118 2025-12-17 04:15:06.727644+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1391 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 03:30:57.603452+00 119 2025-12-17 04:15:06.802205+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1391 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:35:04.56149+00 120 2025-12-17 04:35:04.562697+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1391 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:35:04.569456+00 121 2025-12-17 04:35:04.570502+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1391 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:35:04.574313+00 122 2025-12-17 04:35:04.575263+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1391 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:35:04.580279+00 123 2025-12-17 04:35:04.581069+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1376 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:15:06.725943+00 124 2025-12-17 04:35:04.600298+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1376 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:44:44.118887+00 125 2025-12-17 04:44:44.119811+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1376 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:44:44.126235+00 126 2025-12-17 04:44:44.127093+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1376 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:44:44.12975+00 127 2025-12-17 04:44:44.130323+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1361 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:35:04.580279+00 128 2025-12-17 04:44:44.145131+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1361 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:54:04.600146+00 129 2025-12-17 04:54:04.60108+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1361 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:54:04.607753+00 130 2025-12-17 04:54:04.608482+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1361 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:54:04.612034+00 131 2025-12-17 04:54:04.612777+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1361 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:54:04.617369+00 132 2025-12-17 04:54:04.618087+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1346 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:44:44.12975+00 133 2025-12-17 04:54:04.637204+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1346 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:06:48.131398+00 134 2025-12-17 05:06:48.13299+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 04:54:04.617369+00 135 2025-12-17 05:06:48.240057+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.300654+00 136 2025-12-17 05:12:17.30152+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.309877+00 137 2025-12-17 05:12:17.310941+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.319945+00 138 2025-12-17 05:12:17.320634+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.327979+00 139 2025-12-17 05:12:17.329199+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.337486+00 140 2025-12-17 05:12:17.338609+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1337 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.348343+00 141 2025-12-17 05:12:17.34922+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1327 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.348343+00 142 2025-12-17 06:33:29.004571+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1327 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:36:32.726693+00 143 2025-12-17 06:36:32.72799+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1327 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:36:32.735065+00 144 2025-12-17 06:36:32.736062+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1327 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:36:32.73997+00 145 2025-12-17 06:36:32.740489+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1327 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:36:32.742509+00 146 2025-12-17 06:36:32.74293+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1312 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 05:12:17.348343+00 147 2025-12-17 06:36:32.76031+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1312 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:43:24.746159+00 148 2025-12-17 06:43:24.747333+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1303 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:36:32.742509+00 149 2025-12-17 06:43:24.836169+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1303 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:17:40.87774+00 150 2025-12-17 07:17:40.878842+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1299 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 06:43:24.746159+00 151 2025-12-17 07:17:40.941428+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1299 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:22:17.283512+00 152 2025-12-17 07:22:17.284451+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1288 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:17:40.87774+00 153 2025-12-17 07:22:17.342703+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1288 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:46:20.464427+00 154 2025-12-17 07:46:20.465629+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1288 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:46:20.472086+00 155 2025-12-17 07:46:20.472735+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1288 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:46:20.475265+00 156 2025-12-17 07:46:20.475779+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1288 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:46:20.478663+00 157 2025-12-17 07:46:20.479171+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1273 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:22:17.283512+00 158 2025-12-17 07:46:20.489331+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1273 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:48:10.222205+00 159 2025-12-17 07:48:10.223283+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1259 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:46:20.478663+00 160 2025-12-17 07:48:10.270419+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1259 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:51:55.98117+00 161 2025-12-17 07:51:55.982544+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1248 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:48:10.222205+00 162 2025-12-17 07:51:56.066479+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1248 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:12:55.001947+00 163 2025-12-17 08:12:55.003724+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1238 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 07:51:55.98117+00 164 2025-12-17 08:12:55.084437+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1238 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:42:56.218997+00 165 2025-12-17 08:42:56.22053+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1197 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:12:55.001947+00 166 2025-12-17 08:42:56.282901+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1187 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:42:56.218997+00 167 2025-12-17 09:29:19.825486+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1177 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:42:56.218997+00 168 2025-12-17 09:45:28.361078+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1177 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:31:29.911453+00 169 2025-12-17 10:31:29.912368+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1177 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:31:29.919648+00 170 2025-12-17 10:31:29.92021+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1177 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:31:29.922944+00 171 2025-12-17 10:31:29.923453+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1177 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:31:29.925715+00 172 2025-12-17 10:31:29.926153+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1162 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 08:42:56.218997+00 173 2025-12-17 10:31:29.944092+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1162 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:36:52.06792+00 174 2025-12-17 10:36:52.069444+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1123 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:31:29.925715+00 175 2025-12-17 10:36:52.157174+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1123 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:03:05.286319+00 176 2025-12-17 11:03:05.287398+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 10:36:52.06792+00 177 2025-12-17 11:03:05.349823+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.800281+00 178 2025-12-17 11:30:48.801192+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.803908+00 179 2025-12-17 11:30:48.804398+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.809582+00 180 2025-12-17 11:30:48.810279+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.812231+00 181 2025-12-17 11:30:48.812764+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.818174+00 182 2025-12-17 11:30:48.818687+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1096 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.820199+00 183 2025-12-17 11:30:48.820677+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1094 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:03:05.286319+00 184 2025-12-17 11:30:48.834732+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1094 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:45:55.192237+00 185 2025-12-17 11:45:55.193294+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1074 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:30:48.820199+00 186 2025-12-17 11:45:55.234798+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1074 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:17:55.598746+00 187 2025-12-17 12:17:55.600781+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 11:45:55.192237+00 188 2025-12-17 12:17:55.705169+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.943425+00 189 2025-12-17 12:51:52.944645+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.94821+00 190 2025-12-17 12:51:52.94877+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.954995+00 191 2025-12-17 12:51:52.955614+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.957843+00 192 2025-12-17 12:51:52.958557+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.96346+00 193 2025-12-17 12:51:52.964255+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1056 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.966264+00 194 2025-12-17 12:51:52.967268+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:17:55.598746+00 195 2025-12-17 12:51:52.98631+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.434715+00 196 2025-12-17 12:54:47.435405+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.437058+00 197 2025-12-17 12:54:47.437482+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.440577+00 198 2025-12-17 12:54:47.440934+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.442039+00 199 2025-12-17 12:54:47.442445+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.445516+00 200 2025-12-17 12:54:47.446197+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1054 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.447621+00 201 2025-12-17 12:54:47.448046+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:51:52.966264+00 202 2025-12-17 12:54:47.457678+00 \N ~ \N \N 119 4 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.2262+00 203 2025-12-17 12:56:19.227063+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.229693+00 204 2025-12-17 12:56:19.230119+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.233152+00 205 2025-12-17 12:56:19.233511+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.234673+00 206 2025-12-17 12:56:19.235063+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.237996+00 207 2025-12-17 12:56:19.238445+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.239718+00 208 2025-12-17 12:56:19.240087+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.242816+00 209 2025-12-17 12:56:19.243255+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.244348+00 210 2025-12-17 12:56:19.244711+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.247815+00 211 2025-12-17 12:56:19.248222+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 335 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.249292+00 212 2025-12-17 12:56:19.249705+00 \N ~ \N \N 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 333 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 00:45:05.782849+00 213 2025-12-17 12:56:19.269798+00 \N ~ \N \N 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.720133+00 214 2025-12-17 12:57:23.721178+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.724441+00 215 2025-12-17 12:57:23.725177+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.731497+00 216 2025-12-17 12:57:23.732204+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.733996+00 217 2025-12-17 12:57:23.734541+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.739711+00 218 2025-12-17 12:57:23.740271+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1052 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.742557+00 219 2025-12-17 12:57:23.743115+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:54:47.447621+00 220 2025-12-17 12:57:23.755736+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.151873+00 221 2025-12-17 13:02:32.153584+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.157944+00 222 2025-12-17 13:02:32.158784+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.163134+00 223 2025-12-17 13:02:32.1636+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.165195+00 224 2025-12-17 13:02:32.16564+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.169546+00 225 2025-12-17 13:02:32.169971+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1050 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.171801+00 226 2025-12-17 13:02:32.172311+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 12:57:23.742557+00 227 2025-12-17 13:02:32.191889+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.89848+00 228 2025-12-17 13:06:08.899291+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.901841+00 229 2025-12-17 13:06:08.902354+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.905882+00 230 2025-12-17 13:06:08.906271+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.907589+00 231 2025-12-17 13:06:08.908007+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.910912+00 232 2025-12-17 13:06:08.911319+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1048 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.912473+00 233 2025-12-17 13:06:08.912859+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:02:32.171801+00 234 2025-12-17 13:06:08.926935+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.91071+00 235 2025-12-17 13:09:05.91251+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.920238+00 236 2025-12-17 13:09:05.921222+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.928096+00 237 2025-12-17 13:09:05.929319+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.931713+00 238 2025-12-17 13:09:05.932562+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.937973+00 239 2025-12-17 13:09:05.938565+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.940438+00 240 2025-12-17 13:09:05.941178+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.946194+00 241 2025-12-17 13:09:05.946727+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.948796+00 242 2025-12-17 13:09:05.949331+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.955081+00 243 2025-12-17 13:09:05.956392+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1046 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.95931+00 244 2025-12-17 13:09:05.960167+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1044 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:06:08.912473+00 245 2025-12-17 13:09:05.983258+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1044 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.354575+00 246 2025-12-17 13:10:07.355635+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1044 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.358561+00 247 2025-12-17 13:10:07.359252+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1044 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.367363+00 248 2025-12-17 13:10:07.368188+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1044 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.370895+00 249 2025-12-17 13:10:07.372025+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1042 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:09:05.95931+00 250 2025-12-17 13:10:07.388875+00 \N ~ \N \N 119 4 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-17 12:56:19.249292+00 251 2025-12-23 23:59:21.11217+00 \N ~ \N \N 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 1024 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.370895+00 252 2025-12-24 00:21:32.066165+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1024 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.351898+00 253 2025-12-24 15:22:08.355243+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1024 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.371813+00 254 2025-12-24 15:22:08.372371+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1024 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.37528+00 255 2025-12-24 15:22:08.375754+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1024 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.378252+00 256 2025-12-24 15:22:08.378719+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1007 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-17 13:10:07.370895+00 257 2025-12-24 15:22:08.393761+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 989 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.378252+00 258 2025-12-24 15:25:31.316841+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 989 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 22:22:47.914572+00 259 2025-12-24 22:22:47.917591+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 989 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 22:22:47.93949+00 260 2025-12-24 22:22:47.939938+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 989 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 22:22:47.943546+00 261 2025-12-24 22:22:47.944286+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 989 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 22:22:47.947397+00 262 2025-12-24 22:22:47.94786+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 972 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 15:22:08.378252+00 263 2025-12-24 22:22:47.965247+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 972 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 23:40:30.925542+00 264 2025-12-24 23:40:30.926706+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 22:22:47.947397+00 265 2025-12-24 23:40:31.007318+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.020985+00 266 2025-12-25 00:14:58.023488+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.028297+00 267 2025-12-25 00:14:58.028934+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.032945+00 268 2025-12-25 00:14:58.033665+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.03518+00 269 2025-12-25 00:14:58.035852+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.040464+00 270 2025-12-25 00:14:58.041324+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 940 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.043355+00 271 2025-12-25 00:14:58.044167+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 932 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-24 23:40:30.925542+00 272 2025-12-25 00:14:58.054569+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 924 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.043355+00 273 2025-12-25 00:27:04.846159+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 924 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:32:02.442463+00 274 2025-12-25 00:32:02.444441+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:14:58.043355+00 275 2025-12-25 00:32:02.553229+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.005045+00 276 2025-12-25 00:40:49.005906+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.008872+00 277 2025-12-25 00:40:49.009909+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.014478+00 278 2025-12-25 00:40:49.014963+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.016441+00 279 2025-12-25 00:40:49.016886+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.020352+00 280 2025-12-25 00:40:49.02081+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.022571+00 281 2025-12-25 00:40:49.02307+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.026956+00 282 2025-12-25 00:40:49.027391+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 877 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.028505+00 283 2025-12-25 00:40:49.028918+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:32:02.442463+00 284 2025-12-25 00:40:49.037867+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.859978+00 285 2025-12-25 01:22:03.860775+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.863109+00 286 2025-12-25 01:22:03.863563+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.866912+00 287 2025-12-25 01:22:03.867338+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.868463+00 288 2025-12-25 01:22:03.868845+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.871946+00 289 2025-12-25 01:22:03.872346+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.873458+00 290 2025-12-25 01:22:03.873811+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.87676+00 291 2025-12-25 01:22:03.87723+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.878475+00 292 2025-12-25 01:22:03.878913+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.882289+00 293 2025-12-25 01:22:03.882686+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 867 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.883821+00 294 2025-12-25 01:22:03.884266+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 00:40:49.028505+00 295 2025-12-25 01:22:03.894929+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.635081+00 296 2025-12-25 01:39:07.635808+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.637539+00 297 2025-12-25 01:39:07.637936+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.640979+00 298 2025-12-25 01:39:07.641367+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.642565+00 299 2025-12-25 01:39:07.642985+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.646477+00 300 2025-12-25 01:39:07.646961+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 856 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.648284+00 301 2025-12-25 01:39:07.6487+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:22:03.883821+00 302 2025-12-25 01:39:07.660281+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.317172+00 303 2025-12-25 02:15:08.318172+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.321279+00 304 2025-12-25 02:15:08.321885+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.325877+00 305 2025-12-25 02:15:08.326361+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.327613+00 306 2025-12-25 02:15:08.328027+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.332663+00 307 2025-12-25 02:15:08.333159+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.334909+00 308 2025-12-25 02:15:08.335808+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.339613+00 309 2025-12-25 02:15:08.34011+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.341364+00 310 2025-12-25 02:15:08.341726+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.344857+00 311 2025-12-25 02:15:08.345251+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 848 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.347244+00 312 2025-12-25 02:15:08.347799+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 835 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 01:39:07.648284+00 313 2025-12-25 02:15:08.358423+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 831 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.347244+00 314 2025-12-27 06:30:15.383313+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 831 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.387924+00 315 2025-12-27 07:22:18.389172+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 831 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.397989+00 316 2025-12-27 07:22:18.398797+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 831 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.402731+00 317 2025-12-27 07:22:18.403869+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 831 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.408457+00 318 2025-12-27 07:22:18.409084+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 826 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-25 02:15:08.347244+00 319 2025-12-27 07:22:18.421783+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 823 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.408457+00 320 2025-12-27 15:30:17.34363+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 823 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 21:24:31.615271+00 321 2025-12-27 21:24:31.617732+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 823 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 21:24:31.641496+00 322 2025-12-27 21:24:31.64205+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 823 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 21:24:31.64605+00 323 2025-12-27 21:24:31.646916+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 823 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 21:24:31.6505+00 324 2025-12-27 21:24:31.651359+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 818 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 07:22:18.408457+00 325 2025-12-27 21:24:31.667698+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 818 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.777235+00 326 2025-12-27 22:31:44.778052+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 818 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.785579+00 327 2025-12-27 22:31:44.786022+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 818 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.788481+00 328 2025-12-27 22:31:44.788922+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 818 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 329 2025-12-27 22:31:44.792231+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 813 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 21:24:31.6505+00 330 2025-12-27 22:31:44.802382+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 810 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 331 2025-12-27 23:29:27.870828+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 807 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 332 2025-12-28 00:51:07.059934+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 804 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 333 2025-12-28 02:22:22.51616+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 804 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:08.894656+00 334 2025-12-28 02:23:08.895311+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 804 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:08.899486+00 335 2025-12-28 02:23:08.900234+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 804 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:08.903763+00 336 2025-12-28 02:23:08.904224+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 804 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:08.906383+00 337 2025-12-28 02:23:08.906807+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 800 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 338 2025-12-28 02:23:08.923315+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 800 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:49.675293+00 339 2025-12-28 02:23:49.675747+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 800 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:49.679068+00 340 2025-12-28 02:23:49.679589+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 800 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:49.682445+00 341 2025-12-28 02:23:49.682945+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 800 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:23:49.685102+00 342 2025-12-28 02:23:49.685617+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 796 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 343 2025-12-28 02:23:49.691043+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 796 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:24:32.020133+00 344 2025-12-28 02:24:32.020672+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 796 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:24:32.023679+00 345 2025-12-28 02:24:32.02411+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 796 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:24:32.026565+00 346 2025-12-28 02:24:32.02704+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 796 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:24:32.030107+00 347 2025-12-28 02:24:32.030823+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 792 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 348 2025-12-28 02:24:32.036322+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 792 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:25:24.5342+00 349 2025-12-28 02:25:24.535105+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 788 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 350 2025-12-28 02:25:24.599211+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 788 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:30:52.669368+00 351 2025-12-28 02:30:52.670408+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 784 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 352 2025-12-28 02:30:52.711239+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 784 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:36:37.995638+00 353 2025-12-28 02:36:37.996493+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 780 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 354 2025-12-28 02:36:38.045716+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 780 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:42:05.367611+00 355 2025-12-28 02:42:05.368235+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 776 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 356 2025-12-28 02:42:05.403309+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 776 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 357 2025-12-28 02:47:42.663649+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 772 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-27 22:31:44.791737+00 358 2025-12-28 02:47:42.697703+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 772 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:12:08.35567+00 359 2025-12-28 03:12:08.35668+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 768 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 360 2025-12-28 03:12:08.403722+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 768 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:17:43.191775+00 361 2025-12-28 03:17:43.192465+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 764 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 362 2025-12-28 03:17:43.23893+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 764 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:23:12.842938+00 363 2025-12-28 03:23:12.843717+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 760 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 364 2025-12-28 03:23:12.886374+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 760 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:28:48.615829+00 365 2025-12-28 03:28:48.616459+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 756 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 366 2025-12-28 03:28:48.657436+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 756 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:34:15.829738+00 367 2025-12-28 03:34:15.830386+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 752 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 368 2025-12-28 03:34:15.86837+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 752 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 369 2025-12-28 03:37:17.645241+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 748 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 02:47:42.662837+00 370 2025-12-28 03:37:17.68252+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 748 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:24:09.549146+00 371 2025-12-28 19:24:09.55086+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 744 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 372 2025-12-28 19:24:09.615947+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 744 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:29:34.365404+00 373 2025-12-28 19:29:34.366149+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 374 2025-12-28 19:29:34.408496+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.792206+00 375 2025-12-28 19:34:50.792978+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.794768+00 376 2025-12-28 19:34:50.795367+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.799062+00 377 2025-12-28 19:34:50.799574+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.801112+00 378 2025-12-28 19:34:50.801661+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.805395+00 379 2025-12-28 19:34:50.805847+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.807161+00 380 2025-12-28 19:34:50.807592+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.811301+00 381 2025-12-28 19:34:50.811791+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.81338+00 382 2025-12-28 19:34:50.814041+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.819306+00 383 2025-12-28 19:34:50.8198+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 740 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:34:50.821209+00 384 2025-12-28 19:34:50.821635+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 385 2025-12-28 19:34:50.83086+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:05.994884+00 386 2025-12-28 19:35:05.995235+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:05.996485+00 387 2025-12-28 19:35:05.99691+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.001404+00 388 2025-12-28 19:35:06.002824+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.005211+00 389 2025-12-28 19:35:06.005826+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.011163+00 390 2025-12-28 19:35:06.011831+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.013589+00 391 2025-12-28 19:35:06.014663+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.020652+00 392 2025-12-28 19:35:06.021231+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.023202+00 393 2025-12-28 19:35:06.023799+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.02735+00 394 2025-12-28 19:35:06.02779+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 738 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:06.029573+00 395 2025-12-28 19:35:06.030471+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 396 2025-12-28 19:35:06.039299+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.616105+00 397 2025-12-28 19:35:22.616618+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.618087+00 398 2025-12-28 19:35:22.618746+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.622034+00 399 2025-12-28 19:35:22.622463+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.623608+00 400 2025-12-28 19:35:22.624027+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.629088+00 401 2025-12-28 19:35:22.629589+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.631161+00 402 2025-12-28 19:35:22.631722+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.635509+00 403 2025-12-28 19:35:22.636007+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.637579+00 404 2025-12-28 19:35:22.638074+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.642678+00 405 2025-12-28 19:35:22.643166+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 736 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:22.645531+00 406 2025-12-28 19:35:22.646286+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 407 2025-12-28 19:35:22.652861+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.31737+00 408 2025-12-28 19:35:36.317863+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.320623+00 409 2025-12-28 19:35:36.321108+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.32479+00 410 2025-12-28 19:35:36.325298+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.326904+00 411 2025-12-28 19:35:36.327384+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.330853+00 412 2025-12-28 19:35:36.331328+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.332591+00 413 2025-12-28 19:35:36.333023+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.338015+00 414 2025-12-28 19:35:36.338726+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.340795+00 415 2025-12-28 19:35:36.34148+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.346176+00 416 2025-12-28 19:35:36.346711+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 734 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:36.347949+00 417 2025-12-28 19:35:36.348439+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 418 2025-12-28 19:35:36.353717+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.095872+00 419 2025-12-28 19:35:51.096452+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.098061+00 420 2025-12-28 19:35:51.098631+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.105078+00 421 2025-12-28 19:35:51.106022+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.108138+00 422 2025-12-28 19:35:51.109158+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.114705+00 423 2025-12-28 19:35:51.1153+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.116934+00 424 2025-12-28 19:35:51.117689+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.122879+00 425 2025-12-28 19:35:51.123968+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.126098+00 426 2025-12-28 19:35:51.126669+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.130633+00 427 2025-12-28 19:35:51.131102+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 732 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:35:51.132548+00 428 2025-12-28 19:35:51.132922+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 429 2025-12-28 19:35:51.137986+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.582837+00 430 2025-12-28 19:36:03.583406+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.585216+00 431 2025-12-28 19:36:03.585956+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.590177+00 432 2025-12-28 19:36:03.590662+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.592035+00 433 2025-12-28 19:36:03.592503+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.596107+00 434 2025-12-28 19:36:03.596649+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.598194+00 435 2025-12-28 19:36:03.598622+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.6031+00 436 2025-12-28 19:36:03.603585+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.60514+00 437 2025-12-28 19:36:03.605757+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.609745+00 438 2025-12-28 19:36:03.610228+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 730 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:03.611447+00 439 2025-12-28 19:36:03.611838+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 440 2025-12-28 19:36:03.61683+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.829639+00 441 2025-12-28 19:36:14.830209+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.832098+00 442 2025-12-28 19:36:14.832934+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.83772+00 443 2025-12-28 19:36:14.838207+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.839739+00 444 2025-12-28 19:36:14.840199+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.843911+00 445 2025-12-28 19:36:14.84437+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.84555+00 446 2025-12-28 19:36:14.845881+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.849169+00 447 2025-12-28 19:36:14.849639+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 728 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:14.851111+00 448 2025-12-28 19:36:14.851601+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 449 2025-12-28 19:36:14.856485+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.102723+00 450 2025-12-28 19:36:27.103307+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.105935+00 451 2025-12-28 19:36:27.106591+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.110434+00 452 2025-12-28 19:36:27.110871+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.112136+00 453 2025-12-28 19:36:27.112602+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.116556+00 454 2025-12-28 19:36:27.116981+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.118324+00 455 2025-12-28 19:36:27.11885+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.121933+00 456 2025-12-28 19:36:27.122341+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.123647+00 457 2025-12-28 19:36:27.12411+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.127138+00 458 2025-12-28 19:36:27.127595+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 727 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:27.128929+00 459 2025-12-28 19:36:27.129438+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 460 2025-12-28 19:36:27.135055+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.411038+00 461 2025-12-28 19:36:41.411703+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.413656+00 462 2025-12-28 19:36:41.414418+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.418927+00 463 2025-12-28 19:36:41.419434+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.420842+00 464 2025-12-28 19:36:41.421229+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.425761+00 465 2025-12-28 19:36:41.426418+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.428159+00 466 2025-12-28 19:36:41.428683+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.432498+00 467 2025-12-28 19:36:41.432973+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.434357+00 468 2025-12-28 19:36:41.434735+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.437923+00 469 2025-12-28 19:36:41.438304+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 725 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:41.439449+00 470 2025-12-28 19:36:41.439817+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 471 2025-12-28 19:36:41.444318+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:54.998499+00 472 2025-12-28 19:36:54.999169+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.001351+00 473 2025-12-28 19:36:55.002637+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.009481+00 474 2025-12-28 19:36:55.010598+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.01252+00 475 2025-12-28 19:36:55.013057+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.017358+00 476 2025-12-28 19:36:55.017906+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.019321+00 477 2025-12-28 19:36:55.019739+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.02366+00 478 2025-12-28 19:36:55.024138+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.025674+00 479 2025-12-28 19:36:55.026169+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.029756+00 480 2025-12-28 19:36:55.030209+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 723 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:36:55.031869+00 481 2025-12-28 19:36:55.032619+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 482 2025-12-28 19:36:55.039928+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.332716+00 483 2025-12-28 19:37:10.333146+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.334806+00 484 2025-12-28 19:37:10.335568+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.33908+00 485 2025-12-28 19:37:10.339554+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.340762+00 486 2025-12-28 19:37:10.341118+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.34411+00 487 2025-12-28 19:37:10.344557+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.345924+00 488 2025-12-28 19:37:10.346327+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.349498+00 489 2025-12-28 19:37:10.349883+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.350956+00 490 2025-12-28 19:37:10.35138+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.354978+00 491 2025-12-28 19:37:10.355393+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 721 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:10.35648+00 492 2025-12-28 19:37:10.356847+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 493 2025-12-28 19:37:10.361936+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.140003+00 494 2025-12-28 19:37:22.140554+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.143416+00 495 2025-12-28 19:37:22.144328+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.149104+00 496 2025-12-28 19:37:22.149649+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.151101+00 497 2025-12-28 19:37:22.151575+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.155273+00 498 2025-12-28 19:37:22.155765+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.157368+00 499 2025-12-28 19:37:22.15795+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.162218+00 500 2025-12-28 19:37:22.16268+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 719 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:22.165645+00 501 2025-12-28 19:37:22.166214+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 502 2025-12-28 19:37:22.170731+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.083812+00 503 2025-12-28 19:37:35.084722+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.086856+00 504 2025-12-28 19:37:35.087499+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.092163+00 505 2025-12-28 19:37:35.092741+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.094164+00 506 2025-12-28 19:37:35.094647+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.09804+00 507 2025-12-28 19:37:35.098829+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.100535+00 508 2025-12-28 19:37:35.101277+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.105675+00 509 2025-12-28 19:37:35.106127+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.107599+00 510 2025-12-28 19:37:35.108016+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.112674+00 511 2025-12-28 19:37:35.11321+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 718 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 512 2025-12-28 19:37:35.115692+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 716 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 03:37:17.644735+00 513 2025-12-28 19:37:35.120905+00 \N ~ \N \N 119 4 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.368094+00 514 2025-12-28 20:05:52.369595+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.379215+00 515 2025-12-28 20:05:52.379892+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.387127+00 516 2025-12-28 20:05:52.387956+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.394092+00 517 2025-12-28 20:05:52.394734+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.399603+00 518 2025-12-28 20:05:52.40037+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.406549+00 519 2025-12-28 20:05:52.407065+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.411827+00 520 2025-12-28 20:05:52.412355+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.417227+00 521 2025-12-28 20:05:52.417733+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.423055+00 522 2025-12-28 20:05:52.423633+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.42968+00 523 2025-12-28 20:05:52.430198+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.435962+00 524 2025-12-28 20:05:52.43652+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.441347+00 525 2025-12-28 20:05:52.441888+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.44703+00 526 2025-12-28 20:05:52.447609+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.452102+00 527 2025-12-28 20:05:52.452644+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.457795+00 528 2025-12-28 20:05:52.458379+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.467151+00 529 2025-12-28 20:05:52.46787+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.472612+00 530 2025-12-28 20:05:52.473202+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.477775+00 531 2025-12-28 20:05:52.478532+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.484222+00 532 2025-12-28 20:05:52.485311+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.492845+00 533 2025-12-28 20:05:52.49354+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.501432+00 534 2025-12-28 20:05:52.501967+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.507699+00 535 2025-12-28 20:05:52.508302+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.514881+00 536 2025-12-28 20:05:52.515432+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.520958+00 537 2025-12-28 20:05:52.52155+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.526655+00 538 2025-12-28 20:05:52.527128+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.533375+00 539 2025-12-28 20:05:52.533938+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.538567+00 540 2025-12-28 20:05:52.539057+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.543814+00 541 2025-12-28 20:05:52.544382+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.549143+00 542 2025-12-28 20:05:52.549676+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.554094+00 543 2025-12-28 20:05:52.554605+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.560091+00 544 2025-12-28 20:05:52.560651+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.565341+00 545 2025-12-28 20:05:52.565827+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.571677+00 546 2025-12-28 20:05:52.572288+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.577577+00 547 2025-12-28 20:05:52.578222+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.585104+00 548 2025-12-28 20:05:52.585924+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.592023+00 549 2025-12-28 20:05:52.592644+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.598795+00 550 2025-12-28 20:05:52.59935+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.604738+00 551 2025-12-28 20:05:52.605487+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.611215+00 552 2025-12-28 20:05:52.611846+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.618154+00 553 2025-12-28 20:05:52.61893+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.62486+00 554 2025-12-28 20:05:52.625493+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.632147+00 555 2025-12-28 20:05:52.632715+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.637748+00 556 2025-12-28 20:05:52.638314+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.642994+00 557 2025-12-28 20:05:52.64355+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.650658+00 558 2025-12-28 20:05:52.651266+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.65668+00 559 2025-12-28 20:05:52.657184+00 \N ~ \N 3 3 6 0
+5 f \N \N \N AWS Admin aws-admin \N 323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.662798+00 560 2025-12-28 20:05:52.663381+00 \N ~ \N 3 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 716 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:11:33.333302+00 561 2025-12-28 20:11:33.334138+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 712 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 562 2025-12-28 20:11:33.374866+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 712 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:16:59.757597+00 563 2025-12-28 20:16:59.758201+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 708 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 564 2025-12-28 20:16:59.801582+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 708 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:22:25.14822+00 565 2025-12-28 20:22:25.149072+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 704 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 566 2025-12-28 20:22:25.195234+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 704 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:27:53.384027+00 567 2025-12-28 20:27:53.384932+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 700 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 568 2025-12-28 20:27:53.436011+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 700 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:35:10.522893+00 569 2025-12-28 20:35:10.524014+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 696 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:27:53.384027+00 570 2025-12-28 20:35:10.575758+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 696 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:35:43.234543+00 571 2025-12-28 20:35:43.235194+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 696 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 572 2025-12-28 20:35:43.275409+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 696 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:36:33.176195+00 573 2025-12-28 20:36:33.177216+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 692 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 19:37:35.115046+00 574 2025-12-28 20:36:33.211297+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 692 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:40:54.048476+00 575 2025-12-28 20:40:54.049706+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 688 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:36:33.176195+00 576 2025-12-28 20:40:54.111556+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 688 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 577 2025-12-28 20:46:16.063923+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 684 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:36:33.176195+00 578 2025-12-28 20:46:16.302593+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 684 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:53:43.899057+00 579 2025-12-28 20:53:43.900522+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 580 2025-12-28 20:53:43.954796+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 680 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:14.746893+00 581 2025-12-28 20:54:14.747498+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 582 2025-12-28 20:54:14.778552+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.523595+00 583 2025-12-28 20:54:31.524045+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.525428+00 584 2025-12-28 20:54:31.526004+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.530576+00 585 2025-12-28 20:54:31.530996+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.532217+00 586 2025-12-28 20:54:31.532654+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.535704+00 587 2025-12-28 20:54:31.536132+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.537298+00 588 2025-12-28 20:54:31.537737+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.540509+00 589 2025-12-28 20:54:31.54087+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 676 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:31.541931+00 590 2025-12-28 20:54:31.542353+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 591 2025-12-28 20:54:31.552078+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.704412+00 592 2025-12-28 20:54:42.705099+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.707138+00 593 2025-12-28 20:54:42.707896+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.712689+00 594 2025-12-28 20:54:42.713211+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.714871+00 595 2025-12-28 20:54:42.715555+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.719868+00 596 2025-12-28 20:54:42.720303+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.721575+00 597 2025-12-28 20:54:42.722048+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.725471+00 598 2025-12-28 20:54:42.72586+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.726915+00 599 2025-12-28 20:54:42.727296+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.730489+00 600 2025-12-28 20:54:42.730873+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 674 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:42.732916+00 601 2025-12-28 20:54:42.733339+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 602 2025-12-28 20:54:42.741477+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.430187+00 603 2025-12-28 20:54:54.430606+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.431948+00 604 2025-12-28 20:54:54.432387+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.435836+00 605 2025-12-28 20:54:54.43624+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.437441+00 606 2025-12-28 20:54:54.43784+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.441531+00 607 2025-12-28 20:54:54.442127+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.44348+00 608 2025-12-28 20:54:54.443913+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.448507+00 609 2025-12-28 20:54:54.448997+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.45039+00 610 2025-12-28 20:54:54.450827+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.45399+00 611 2025-12-28 20:54:54.45444+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 672 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:54:54.455581+00 612 2025-12-28 20:54:54.455958+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 613 2025-12-28 20:54:54.463544+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.749999+00 614 2025-12-28 20:55:06.750516+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.751888+00 615 2025-12-28 20:55:06.752301+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.755889+00 616 2025-12-28 20:55:06.756415+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.757765+00 617 2025-12-28 20:55:06.758219+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.762214+00 618 2025-12-28 20:55:06.762997+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.764653+00 619 2025-12-28 20:55:06.765604+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.770288+00 620 2025-12-28 20:55:06.770857+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.772285+00 621 2025-12-28 20:55:06.772684+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.776092+00 622 2025-12-28 20:55:06.776535+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 670 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:06.778211+00 623 2025-12-28 20:55:06.779067+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 624 2025-12-28 20:55:06.787827+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.507677+00 625 2025-12-28 20:55:18.508089+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.509307+00 626 2025-12-28 20:55:18.509669+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.512381+00 627 2025-12-28 20:55:18.512763+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.513865+00 628 2025-12-28 20:55:18.514226+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.517002+00 629 2025-12-28 20:55:18.517338+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.518399+00 630 2025-12-28 20:55:18.518776+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.521296+00 631 2025-12-28 20:55:18.52163+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.522663+00 632 2025-12-28 20:55:18.522998+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.525687+00 633 2025-12-28 20:55:18.526037+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 668 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:18.527065+00 634 2025-12-28 20:55:18.527414+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 635 2025-12-28 20:55:18.532229+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.317457+00 636 2025-12-28 20:55:29.317992+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.319607+00 637 2025-12-28 20:55:29.32013+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.324471+00 638 2025-12-28 20:55:29.325043+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.326885+00 639 2025-12-28 20:55:29.327376+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.331582+00 640 2025-12-28 20:55:29.332076+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.333599+00 641 2025-12-28 20:55:29.334072+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.337999+00 642 2025-12-28 20:55:29.338547+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.340325+00 643 2025-12-28 20:55:29.341018+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.345183+00 644 2025-12-28 20:55:29.345684+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 666 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:29.347185+00 645 2025-12-28 20:55:29.347738+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 646 2025-12-28 20:55:29.355545+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.801262+00 647 2025-12-28 20:55:41.801696+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.803417+00 648 2025-12-28 20:55:41.804155+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.807927+00 649 2025-12-28 20:55:41.808287+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.809614+00 650 2025-12-28 20:55:41.810116+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.813602+00 651 2025-12-28 20:55:41.814164+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.815649+00 652 2025-12-28 20:55:41.816083+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.819455+00 653 2025-12-28 20:55:41.819822+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.821098+00 654 2025-12-28 20:55:41.821506+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.82464+00 655 2025-12-28 20:55:41.825053+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 664 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:41.826726+00 656 2025-12-28 20:55:41.827303+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 657 2025-12-28 20:55:41.833885+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.570468+00 658 2025-12-28 20:55:54.570958+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.57266+00 659 2025-12-28 20:55:54.573266+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.577798+00 660 2025-12-28 20:55:54.578307+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.580105+00 661 2025-12-28 20:55:54.580869+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.585193+00 662 2025-12-28 20:55:54.585688+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.587166+00 663 2025-12-28 20:55:54.58764+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.591173+00 664 2025-12-28 20:55:54.591589+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.592831+00 665 2025-12-28 20:55:54.593209+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.596383+00 666 2025-12-28 20:55:54.596813+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 662 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:55:54.598044+00 667 2025-12-28 20:55:54.598487+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 668 2025-12-28 20:55:54.605018+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.225395+00 669 2025-12-28 20:56:07.225811+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.227102+00 670 2025-12-28 20:56:07.227523+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.231526+00 671 2025-12-28 20:56:07.231998+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.233372+00 672 2025-12-28 20:56:07.233826+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.237145+00 673 2025-12-28 20:56:07.237621+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.23886+00 674 2025-12-28 20:56:07.239298+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.242616+00 675 2025-12-28 20:56:07.243016+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.244144+00 676 2025-12-28 20:56:07.244569+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.247695+00 677 2025-12-28 20:56:07.248092+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 660 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:07.249295+00 678 2025-12-28 20:56:07.249717+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 679 2025-12-28 20:56:07.255624+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.412267+00 680 2025-12-28 20:56:19.412783+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.414375+00 681 2025-12-28 20:56:19.414853+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.418437+00 682 2025-12-28 20:56:19.419399+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.420747+00 683 2025-12-28 20:56:19.421184+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.425115+00 684 2025-12-28 20:56:19.425581+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.426947+00 685 2025-12-28 20:56:19.427404+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.431937+00 686 2025-12-28 20:56:19.432397+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.433629+00 687 2025-12-28 20:56:19.434011+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.437823+00 688 2025-12-28 20:56:19.438439+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 658 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:19.439837+00 689 2025-12-28 20:56:19.440271+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 690 2025-12-28 20:56:19.445124+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.237335+00 691 2025-12-28 20:56:30.237914+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.239277+00 692 2025-12-28 20:56:30.239733+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.243625+00 693 2025-12-28 20:56:30.244049+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.245416+00 694 2025-12-28 20:56:30.245856+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.249019+00 695 2025-12-28 20:56:30.249458+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.251118+00 696 2025-12-28 20:56:30.251777+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.256718+00 697 2025-12-28 20:56:30.257399+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.25894+00 698 2025-12-28 20:56:30.259475+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.263186+00 699 2025-12-28 20:56:30.263679+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 656 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 700 2025-12-28 20:56:30.265424+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 654 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:46:16.062709+00 701 2025-12-28 20:56:30.272503+00 \N ~ \N \N 119 4 0
+89 t 2025-12-28 23:30:50.570352+00 2026-01-11 23:30:50.570352+00 \N Paid 1 paid-1 \N 0 active bank_transfer 14 paid1@paid.com \N \N 2025-12-09 01:23:21.533612+00 2025-12-09 01:52:55.679624+00 702 2025-12-28 23:30:50.57476+00 \N ~ \N 3 118 4 0
+29 t 2025-12-28 23:30:50.581737+00 2026-01-11 23:30:50.581737+00 \N Home G8 home-g8 \N 8000 active stripe 14 \N \N \N 2025-12-07 08:57:12.044018+00 2025-12-07 14:11:16.788723+00 703 2025-12-28 23:30:50.583428+00 \N ~ \N 3 57 2 0
+14 t 2025-12-28 23:30:50.585228+00 2026-01-11 23:30:50.585228+00 \N Scale Account scale-account \N 8000 active bank_transfer 14 \N \N \N 2025-11-07 19:57:08.532581+00 2025-12-08 12:33:32.310169+00 704 2025-12-28 23:30:50.586332+00 \N ~ \N 3 \N 5 0
+90 f \N \N \N Paid 2 paid-2 \N 651 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 705 2025-12-29 02:39:14.132729+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 651 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:39:34.930307+00 706 2025-12-29 02:39:34.930994+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 651 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:39:34.935503+00 707 2025-12-29 02:39:34.935962+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 651 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:39:34.938491+00 708 2025-12-29 02:39:34.938961+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 651 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:39:34.941057+00 709 2025-12-29 02:39:34.941474+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 646 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 710 2025-12-29 02:39:34.950987+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 646 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:40:10.23387+00 711 2025-12-29 02:40:10.234843+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 640 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 712 2025-12-29 02:40:10.310677+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 640 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:40:39.096478+00 713 2025-12-29 02:40:39.097224+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 634 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 714 2025-12-29 02:40:39.139189+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 634 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:08.52877+00 715 2025-12-29 02:41:08.530079+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 628 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 716 2025-12-29 02:41:08.575226+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 628 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:44.630276+00 717 2025-12-29 02:41:44.631093+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 718 2025-12-29 02:41:44.663294+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.515952+00 719 2025-12-29 02:41:57.516547+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.518485+00 720 2025-12-29 02:41:57.518946+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.522346+00 721 2025-12-29 02:41:57.522768+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.523894+00 722 2025-12-29 02:41:57.52429+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.527626+00 723 2025-12-29 02:41:57.527968+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.529208+00 724 2025-12-29 02:41:57.52967+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.532873+00 725 2025-12-29 02:41:57.533236+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.534404+00 726 2025-12-29 02:41:57.534814+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.538873+00 727 2025-12-29 02:41:57.539306+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 622 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:41:57.541595+00 728 2025-12-29 02:41:57.54215+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 729 2025-12-29 02:41:57.553034+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.119503+00 730 2025-12-29 02:42:06.120168+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.122641+00 731 2025-12-29 02:42:06.123421+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.129805+00 732 2025-12-29 02:42:06.130351+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.132052+00 733 2025-12-29 02:42:06.132785+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.137277+00 734 2025-12-29 02:42:06.137767+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.139463+00 735 2025-12-29 02:42:06.140187+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.145543+00 736 2025-12-29 02:42:06.146211+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.148403+00 737 2025-12-29 02:42:06.148951+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.152837+00 738 2025-12-29 02:42:06.153375+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 620 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:06.154714+00 739 2025-12-29 02:42:06.155167+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 740 2025-12-29 02:42:06.161016+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.273239+00 741 2025-12-29 02:42:14.274012+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.275705+00 742 2025-12-29 02:42:14.276224+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.284358+00 743 2025-12-29 02:42:14.284992+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.286664+00 744 2025-12-29 02:42:14.287185+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.292448+00 745 2025-12-29 02:42:14.293335+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.295028+00 746 2025-12-29 02:42:14.295527+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.299926+00 747 2025-12-29 02:42:14.300398+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.30198+00 748 2025-12-29 02:42:14.302591+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.305731+00 749 2025-12-29 02:42:14.306161+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 618 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:14.307585+00 750 2025-12-29 02:42:14.30804+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 751 2025-12-29 02:42:14.313278+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.271761+00 752 2025-12-29 02:42:22.272492+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.274274+00 753 2025-12-29 02:42:22.274896+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.278854+00 754 2025-12-29 02:42:22.279487+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.280858+00 755 2025-12-29 02:42:22.281284+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.285058+00 756 2025-12-29 02:42:22.285516+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.28687+00 757 2025-12-29 02:42:22.287298+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.290982+00 758 2025-12-29 02:42:22.291408+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.292689+00 759 2025-12-29 02:42:22.293114+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.296109+00 760 2025-12-29 02:42:22.296471+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 616 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-29 02:42:22.297587+00 761 2025-12-29 02:42:22.297923+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 614 active local_wallet 14 paid2@paid.com 2025-12-09 02:03:02.875465+00 2026-01-08 02:03:02.875465+00 2025-12-09 02:03:03.119805+00 2025-12-28 20:56:30.264983+00 762 2025-12-29 02:42:22.302105+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 614 active bank_transfer 14 paid2@paid.com 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-30 07:18:52.561697+00 763 2025-12-30 07:18:52.564108+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 614 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 764 2025-12-31 23:55:37.664414+00 \N ~ \N 119 119 4 0
+5 f \N \N \N AWS Admin aws-admin \N 10323 active stripe 14 \N 2025-12-01 00:00:00+00 2025-12-31 23:59:59.253008+00 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.662798+00 765 2026-01-01 00:00:00.398718+00 \N ~ \N \N 3 6 0
+90 f \N \N \N Paid 2 paid-2 \N 2614 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 766 2026-01-01 00:00:00.46048+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2611 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 767 2026-01-01 00:04:58.547893+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2611 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:24.273372+00 768 2026-01-01 00:05:24.273993+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2611 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:24.27746+00 769 2026-01-01 00:05:24.27798+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2611 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:24.280713+00 770 2026-01-01 00:05:24.281123+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2611 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:24.283305+00 771 2026-01-01 00:05:24.283748+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2606 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 772 2026-01-01 00:05:24.292201+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2606 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:46.708243+00 773 2026-01-01 00:05:46.708736+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2606 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:46.712536+00 774 2026-01-01 00:05:46.71305+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2606 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:46.716323+00 775 2026-01-01 00:05:46.716875+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2606 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:05:46.719111+00 776 2026-01-01 00:05:46.719587+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2601 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 777 2026-01-01 00:05:46.725083+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2601 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:06:25.636839+00 778 2026-01-01 00:06:25.637976+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2595 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 779 2026-01-01 00:06:25.70722+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2595 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:06:52.414407+00 780 2026-01-01 00:06:52.415032+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2589 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 781 2026-01-01 00:06:52.452503+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2589 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:07:24.632275+00 782 2026-01-01 00:07:24.632908+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2583 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 783 2026-01-01 00:07:24.66812+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2583 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:07:59.661127+00 784 2026-01-01 00:07:59.661813+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2576 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 785 2026-01-01 00:07:59.697515+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2576 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:08:32.506082+00 786 2026-01-01 00:08:32.50708+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2570 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 787 2026-01-01 00:08:32.548019+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2570 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:09:15.244526+00 788 2026-01-01 00:09:15.24509+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2564 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 789 2026-01-01 00:09:15.285502+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2564 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:09:48.720658+00 790 2026-01-01 00:09:48.721787+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2558 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 791 2026-01-01 00:09:48.765672+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2558 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:19.157297+00 792 2026-01-01 00:10:19.157955+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 793 2026-01-01 00:10:19.191016+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.299233+00 794 2026-01-01 00:10:32.300062+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.302545+00 795 2026-01-01 00:10:32.303337+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.308019+00 796 2026-01-01 00:10:32.30851+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.310079+00 797 2026-01-01 00:10:32.3107+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.315104+00 798 2026-01-01 00:10:32.315649+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2552 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:32.317313+00 799 2026-01-01 00:10:32.317912+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 800 2026-01-01 00:10:32.325511+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.701311+00 801 2026-01-01 00:10:39.701805+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.703175+00 802 2026-01-01 00:10:39.703655+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.70733+00 803 2026-01-01 00:10:39.707796+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.7091+00 804 2026-01-01 00:10:39.709598+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.71337+00 805 2026-01-01 00:10:39.713836+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.715141+00 806 2026-01-01 00:10:39.715654+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.719128+00 807 2026-01-01 00:10:39.719536+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.720663+00 808 2026-01-01 00:10:39.721046+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.724507+00 809 2026-01-01 00:10:39.724904+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2550 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:39.726183+00 810 2026-01-01 00:10:39.726634+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 811 2026-01-01 00:10:39.732508+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.01801+00 812 2026-01-01 00:10:47.018516+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.020495+00 813 2026-01-01 00:10:47.021522+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.025907+00 814 2026-01-01 00:10:47.026475+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.028272+00 815 2026-01-01 00:10:47.028748+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.032221+00 816 2026-01-01 00:10:47.032675+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.034156+00 817 2026-01-01 00:10:47.034621+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.038775+00 818 2026-01-01 00:10:47.039214+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.041041+00 819 2026-01-01 00:10:47.04185+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.047392+00 820 2026-01-01 00:10:47.04817+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2548 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:47.050362+00 821 2026-01-01 00:10:47.051012+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 822 2026-01-01 00:10:47.057523+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.561495+00 823 2026-01-01 00:10:56.561978+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.563757+00 824 2026-01-01 00:10:56.564293+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.568841+00 825 2026-01-01 00:10:56.569608+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.572412+00 826 2026-01-01 00:10:56.573233+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.580109+00 827 2026-01-01 00:10:56.580899+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.582856+00 828 2026-01-01 00:10:56.583374+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.589558+00 829 2026-01-01 00:10:56.590659+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.592974+00 830 2026-01-01 00:10:56.594035+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.60039+00 831 2026-01-01 00:10:56.601054+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2546 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:10:56.603684+00 832 2026-01-01 00:10:56.604244+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 833 2026-01-01 00:10:56.611914+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.888925+00 834 2026-01-01 00:11:05.889477+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.890975+00 835 2026-01-01 00:11:05.891353+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.894658+00 836 2026-01-01 00:11:05.89517+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.899286+00 837 2026-01-01 00:11:05.900431+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.908317+00 838 2026-01-01 00:11:05.908843+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.911716+00 839 2026-01-01 00:11:05.912236+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.915928+00 840 2026-01-01 00:11:05.916464+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.917802+00 841 2026-01-01 00:11:05.918209+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.926137+00 842 2026-01-01 00:11:05.926669+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2544 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:05.928667+00 843 2026-01-01 00:11:05.929337+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 844 2026-01-01 00:11:05.937263+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.43453+00 845 2026-01-01 00:11:13.43502+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.436885+00 846 2026-01-01 00:11:13.437548+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.442184+00 847 2026-01-01 00:11:13.442708+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.444227+00 848 2026-01-01 00:11:13.444666+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.448101+00 849 2026-01-01 00:11:13.448576+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.449726+00 850 2026-01-01 00:11:13.450106+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.452943+00 851 2026-01-01 00:11:13.453583+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.454883+00 852 2026-01-01 00:11:13.455308+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.45838+00 853 2026-01-01 00:11:13.45878+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2542 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:13.460322+00 854 2026-01-01 00:11:13.460816+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 855 2026-01-01 00:11:13.466908+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.299652+00 856 2026-01-01 00:11:21.300612+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.303307+00 857 2026-01-01 00:11:21.304324+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.309415+00 858 2026-01-01 00:11:21.310008+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.311833+00 859 2026-01-01 00:11:21.312311+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.316295+00 860 2026-01-01 00:11:21.316775+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.318212+00 861 2026-01-01 00:11:21.318671+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.323201+00 862 2026-01-01 00:11:21.324015+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.325732+00 863 2026-01-01 00:11:21.326237+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.330976+00 864 2026-01-01 00:11:21.331489+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2540 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:21.3333+00 865 2026-01-01 00:11:21.334049+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 866 2026-01-01 00:11:21.340854+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.11482+00 867 2026-01-01 00:11:29.115263+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.116671+00 868 2026-01-01 00:11:29.117112+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.120528+00 869 2026-01-01 00:11:29.121038+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.122332+00 870 2026-01-01 00:11:29.122781+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.125932+00 871 2026-01-01 00:11:29.126359+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.127663+00 872 2026-01-01 00:11:29.128126+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.133047+00 873 2026-01-01 00:11:29.133585+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.135169+00 874 2026-01-01 00:11:29.135636+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.13899+00 875 2026-01-01 00:11:29.139415+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2538 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 00:11:29.140528+00 876 2026-01-01 00:11:29.140876+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 2536 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2025-12-31 23:55:37.661412+00 877 2026-01-01 00:11:29.145352+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1882 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 06:10:40.203321+00 878 2026-01-01 06:10:40.205163+00 \N ~ \N 3 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1882 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:05.304318+00 879 2026-01-03 17:52:05.305694+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-01 06:10:40.203321+00 880 2026-01-03 17:52:05.37166+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.637144+00 881 2026-01-03 17:52:34.638026+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.639918+00 882 2026-01-03 17:52:34.640372+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.643825+00 883 2026-01-03 17:52:34.644243+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.645682+00 884 2026-01-03 17:52:34.646326+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.650857+00 885 2026-01-03 17:52:34.651339+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.652796+00 886 2026-01-03 17:52:34.653313+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.65763+00 887 2026-01-03 17:52:34.658122+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.659925+00 888 2026-01-03 17:52:34.660545+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.665614+00 889 2026-01-03 17:52:34.666492+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1876 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.66796+00 890 2026-01-03 17:52:34.668362+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:05.304318+00 891 2026-01-03 17:52:34.67929+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.062689+00 892 2026-01-03 18:10:26.06346+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.066207+00 893 2026-01-03 18:10:26.066864+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.070675+00 894 2026-01-03 18:10:26.071181+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.072634+00 895 2026-01-03 18:10:26.073075+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.079472+00 896 2026-01-03 18:10:26.080662+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.082272+00 897 2026-01-03 18:10:26.08304+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.088663+00 898 2026-01-03 18:10:26.089203+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.090752+00 899 2026-01-03 18:10:26.091383+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.094861+00 900 2026-01-03 18:10:26.095319+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1874 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.096644+00 901 2026-01-03 18:10:26.097847+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 17:52:34.66796+00 902 2026-01-03 18:10:26.108345+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.812197+00 903 2026-01-03 18:14:28.813011+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.815263+00 904 2026-01-03 18:14:28.816163+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.820486+00 905 2026-01-03 18:14:28.821076+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.822844+00 906 2026-01-03 18:14:28.823627+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.827938+00 907 2026-01-03 18:14:28.828454+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.830567+00 908 2026-01-03 18:14:28.831532+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.836469+00 909 2026-01-03 18:14:28.837033+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.838401+00 910 2026-01-03 18:14:28.838887+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.842429+00 911 2026-01-03 18:14:28.842856+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1872 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.844068+00 912 2026-01-03 18:14:28.844467+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1870 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:10:26.096644+00 913 2026-01-03 18:14:28.854711+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1865 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2025-12-09 02:03:02+00 2026-01-08 02:03:02+00 2025-12-09 02:03:03.119805+00 2026-01-03 18:14:28.844068+00 914 2026-01-06 00:11:36.530578+00 \N ~ \N \N 119 4 0
+104 f \N \N \N Alorig alorig \N 0 pending_payment stripe 14 bluesalman@hotmail.con PK \N \N 2026-01-07 02:26:55.485252+00 2026-01-07 02:26:55.485264+00 915 2026-01-07 02:26:55.493546+00 \N + \N \N 134 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 1000 active stripe 14 tester300us@test.com US 2026-01-07 21:00:03+00 2026-02-07 21:00:03+00 2026-01-07 20:58:01.416106+00 2026-01-08 09:00:00.283763+00 1140 2026-01-12 11:23:29.251037+00 \N ~ \N 3 \N 2 0
+104 t 2026-01-07 03:32:55.451426+00 2026-01-21 03:32:55.451426+00 \N Alorig alorig cus_TkH28nOLKNTLNE 0 pending_payment stripe 14 bluesalman@hotmail.con PK \N \N 2026-01-07 02:26:55.485252+00 2026-01-07 02:29:06.754214+00 917 2026-01-07 03:32:55.454248+00 \N ~ \N 3 134 2 0
+104 f \N \N \N Alorig alorig cus_TkH28nOLKNTLNE 0 pending_payment stripe 14 bluesalman@hotmail.con PK \N \N 2026-01-07 02:26:55.485252+00 2026-01-07 02:29:06.754214+00 916 2026-01-07 02:29:06.756687+00 \N ~ \N \N 134 2 0
+105 f \N \N \N Slaman Sadiq slaman-sadiq \N 0 pending_payment stripe 14 bluesalman@hotmail.con GB \N \N 2026-01-07 03:36:43.236836+00 2026-01-07 03:36:43.236844+00 918 2026-01-07 03:36:43.238372+00 \N + \N \N 135 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 1000 active stripe 14 tester300us@test.com US 2026-01-07 21:00:03+00 2026-02-07 21:00:03+00 2026-01-07 20:58:01.416106+00 2026-01-08 09:00:00.283763+00 1141 2026-01-12 11:23:29.383424+00 \N - \N 3 \N 2 0
+107 f \N \N \N Salman Alorig salman-alorig-54qfhi \N 0 pending_payment stripe 14 salman@alorig.com PK \N \N 2026-01-07 04:14:33.966595+00 2026-01-07 04:14:33.966601+00 920 2026-01-07 04:14:33.967511+00 \N + \N \N 137 2 0
+105 f \N \N \N Slaman Sadiq slaman-sadiq cus_TkI8Oz1cHKsolm 0 pending_payment stripe 14 bluesalman@hotmail.con GB \N \N 2026-01-07 03:36:43.236836+00 2026-01-07 03:36:43.565419+00 919 2026-01-07 03:36:43.567445+00 \N ~ \N \N 135 2 0
+107 f \N \N \N Salman Alorig salman-alorig-54qfhi cus_TkIkWm6xHNzD2g 0 pending_payment stripe 14 salman@alorig.com PK \N \N 2026-01-07 04:14:33.966595+00 2026-01-07 04:14:34.40072+00 921 2026-01-07 04:14:34.402527+00 \N ~ \N \N 137 2 0
+107 t 2026-01-07 04:17:12.153708+00 2026-01-21 04:17:12.153708+00 \N Salman Alorig salman-alorig-54qfhi cus_TkIkWm6xHNzD2g 0 pending_payment stripe 14 salman@alorig.com PK \N \N 2026-01-07 04:14:33.966595+00 2026-01-07 04:14:34.40072+00 922 2026-01-07 04:17:12.157813+00 \N ~ \N 3 \N 2 0
+105 t 2026-01-07 04:17:12.165826+00 2026-01-21 04:17:12.165826+00 \N Slaman Sadiq slaman-sadiq cus_TkI8Oz1cHKsolm 0 pending_payment stripe 14 bluesalman@hotmail.con GB \N \N 2026-01-07 03:36:43.236836+00 2026-01-07 03:36:43.565419+00 923 2026-01-07 04:17:12.167405+00 \N ~ \N 3 \N 2 0
+108 f \N \N \N Test User test-user-l03rvj \N 0 pending_payment stripe 14 test-stripe-1767759670@example.com US \N \N 2026-01-07 04:21:10.90742+00 2026-01-07 04:21:10.907428+00 924 2026-01-07 04:21:10.908289+00 \N + \N \N 138 2 0
+136 t 2026-01-12 11:24:44.360931+00 2026-01-26 11:24:44.360931+00 \N Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 1000 active stripe 14 tester200@test.com PK 2026-01-07 20:11:53+00 2026-02-07 20:11:53+00 2026-01-07 20:11:27.727821+00 2026-01-07 20:24:48.155134+00 1142 2026-01-12 11:24:44.361963+00 \N ~ \N 3 167 2 0
+109 f \N \N \N tester3 tester3-0359lv \N 0 pending_payment stripe 14 test3@tester.com PK \N \N 2026-01-07 04:31:36.074074+00 2026-01-07 04:31:36.074082+00 926 2026-01-07 04:31:36.075171+00 \N + \N \N 139 4 0
+145 t 2026-01-12 11:33:48.511698+00 2026-01-26 11:33:48.511698+00 \N tacbit tacbit-5hnbn2 \N 2000 active bank_transfer 14 tacbit.com@gmail.com PK 2026-01-08 04:07:29.59793+00 2026-02-07 04:07:29.59793+00 2026-01-08 04:07:29.766724+00 2026-01-08 09:00:00.319211+00 1148 2026-01-12 11:33:48.512701+00 \N ~ \N 3 183 4 0
+109 f \N \N \N tester3 tester3-0359lv cus_TkJ1jvnrqmenMN 0 active stripe 14 test3@tester.com PK \N \N 2026-01-07 04:31:36.074074+00 2026-01-07 04:46:50.150944+00 928 2026-01-07 04:46:50.153376+00 \N ~ \N \N 139 4 0
+109 f \N \N \N tester3 tester3-0359lv cus_TkJ1jvnrqmenMN 2000 active stripe 14 test3@tester.com PK \N \N 2026-01-07 04:31:36.074074+00 2026-01-07 04:46:50.150944+00 929 2026-01-07 04:47:02.244079+00 \N ~ \N \N 139 4 0
+110 f \N \N \N Tester 4 tester-4-4nxtbq \N 0 pending_payment stripe 14 test4@tester.com PK \N \N 2026-01-07 04:51:32.663751+00 2026-01-07 04:51:32.663757+00 930 2026-01-07 04:51:32.665272+00 \N + \N \N 140 2 0
+90 f \N \N \N Paid 2 paid-2 \N 1864 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1152 2026-01-12 11:48:06.360594+00 \N ~ \N \N 119 4 0
+110 f \N \N \N Tester 4 tester-4-4nxtbq cus_TkJLbOy3RO5QIh 0 active stripe 14 test4@tester.com PK \N \N 2026-01-07 04:51:32.663751+00 2026-01-07 04:56:11.714256+00 932 2026-01-07 04:56:11.717609+00 \N ~ \N \N 140 2 0
+110 f \N \N \N Tester 4 tester-4-4nxtbq cus_TkJLbOy3RO5QIh 1000 active stripe 14 test4@tester.com PK \N \N 2026-01-07 04:51:32.663751+00 2026-01-07 04:56:11.714256+00 933 2026-01-07 04:56:11.732797+00 \N ~ \N \N 140 2 0
+111 f \N \N \N Tester 5 tester-5-8uwopx \N 0 pending_payment stripe 14 tester5@tester.com PK \N \N 2026-01-07 04:58:11.82799+00 2026-01-07 04:58:11.827999+00 934 2026-01-07 04:58:11.829406+00 \N + \N \N 141 2 0
+90 f \N \N \N Paid 2 paid-2 \N 1862 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1154 2026-01-12 11:48:32.925652+00 \N ~ \N \N 119 4 0
+111 f \N \N \N Tester 5 tester-5-8uwopx cus_TkJR4UwEp49WfY 1000 pending_payment stripe 14 tester5@tester.com PK \N \N 2026-01-07 04:58:11.82799+00 2026-01-07 04:58:12.240139+00 936 2026-01-07 04:58:47.939779+00 \N ~ \N \N 141 2 0
+111 f \N \N \N Tester 5 tester-5-8uwopx cus_TkJR4UwEp49WfY 1000 active stripe 14 tester5@tester.com PK \N \N 2026-01-07 04:58:11.82799+00 2026-01-07 04:58:47.942858+00 937 2026-01-07 04:58:47.943421+00 \N ~ \N \N 141 2 0
+109 t 2026-01-07 05:10:05.854524+00 2026-01-21 05:10:05.854524+00 Test cascade delete tester3 tester3-0359lv cus_TkJ1jvnrqmenMN 2000 active stripe 14 test3@tester.com PK \N \N 2026-01-07 04:31:36.074074+00 2026-01-07 04:46:50.150944+00 938 2026-01-07 05:10:05.859427+00 \N ~ \N \N 139 4 0
+111 f \N \N \N Tester 5 tester-5-8uwopx cus_TkJR4UwEp49WfY 0 pending_payment stripe 14 tester5@tester.com PK \N \N 2026-01-07 04:58:11.82799+00 2026-01-07 04:58:12.240139+00 935 2026-01-07 04:58:12.242034+00 \N ~ \N \N 141 2 0
+111 f \N \N \N Tester 5 tester-5-8uwopx cus_TkJR4UwEp49WfY 1000 active stripe 14 tester5@tester.com PK \N \N 2026-01-07 04:58:11.82799+00 2026-01-07 04:58:47.942858+00 939 2026-01-07 05:20:21.740205+00 \N - \N 3 141 2 0
+110 f \N \N \N Tester 4 tester-4-4nxtbq cus_TkJLbOy3RO5QIh 0 pending_payment stripe 14 test4@tester.com PK \N \N 2026-01-07 04:51:32.663751+00 2026-01-07 04:51:33.004942+00 931 2026-01-07 04:51:33.007231+00 \N ~ \N \N 140 2 0
+110 f \N \N \N Tester 4 tester-4-4nxtbq cus_TkJLbOy3RO5QIh 1000 active stripe 14 test4@tester.com PK \N \N 2026-01-07 04:51:32.663751+00 2026-01-07 04:56:11.714256+00 940 2026-01-07 05:20:21.893221+00 \N - \N 3 140 2 0
+108 f \N \N \N Test User test-user-l03rvj cus_TkIqRpowKehUQA 0 pending_payment stripe 14 test-stripe-1767759670@example.com US \N \N 2026-01-07 04:21:10.90742+00 2026-01-07 04:21:11.244124+00 925 2026-01-07 04:21:11.246164+00 \N ~ \N \N 138 2 0
+108 f \N \N \N Test User test-user-l03rvj cus_TkIqRpowKehUQA 0 pending_payment stripe 14 test-stripe-1767759670@example.com US \N \N 2026-01-07 04:21:10.90742+00 2026-01-07 04:21:11.244124+00 941 2026-01-07 05:20:21.977203+00 \N - \N 3 138 2 0
+109 f \N \N \N tester3 tester3-0359lv cus_TkJ1jvnrqmenMN 0 pending_payment stripe 14 test3@tester.com PK \N \N 2026-01-07 04:31:36.074074+00 2026-01-07 04:31:36.474509+00 927 2026-01-07 04:31:36.47628+00 \N ~ \N \N 139 4 0
+112 f \N \N \N Tester 6 tester-6-x009h0 \N 0 pending_payment stripe 14 tester6@tester6.com PK \N \N 2026-01-07 05:22:21.363416+00 2026-01-07 05:22:21.36343+00 942 2026-01-07 05:22:21.364473+00 \N + \N \N 142 2 0
+90 f \N \N \N Paid 2 paid-2 \N 1860 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1156 2026-01-12 11:48:58.61189+00 \N ~ \N \N 119 4 0
+112 f \N \N \N Tester 6 tester-6-x009h0 cus_TkJqnKi3vYJvqh 1000 pending_payment stripe 14 tester6@tester6.com PK \N \N 2026-01-07 05:22:21.363416+00 2026-01-07 05:22:21.712935+00 944 2026-01-07 05:23:03.002265+00 \N ~ \N \N 142 2 0
+112 f \N \N \N Tester 6 tester-6-x009h0 cus_TkJqnKi3vYJvqh 1000 active stripe 14 tester6@tester6.com PK \N \N 2026-01-07 05:22:21.363416+00 2026-01-07 05:23:03.005585+00 945 2026-01-07 05:23:03.00625+00 \N ~ \N \N 142 2 0
+112 f \N \N \N Tester 6 tester-6-x009h0 cus_TkJqnKi3vYJvqh 0 pending_payment stripe 14 tester6@tester6.com PK \N \N 2026-01-07 05:22:21.363416+00 2026-01-07 05:22:21.712935+00 943 2026-01-07 05:22:21.714995+00 \N ~ \N \N 142 2 0
+112 f \N \N \N Tester 6 tester-6-x009h0 cus_TkJqnKi3vYJvqh 1000 active stripe 14 tester6@tester6.com PK \N \N 2026-01-07 05:22:21.363416+00 2026-01-07 05:23:03.005585+00 946 2026-01-07 05:28:23.704087+00 \N - \N 3 142 2 0
+113 f \N \N \N Tester 7 tester-7-py4155 \N 0 pending_payment stripe 14 tester7@tester.com PK \N \N 2026-01-07 05:29:25.708433+00 2026-01-07 05:29:25.708441+00 947 2026-01-07 05:29:25.709322+00 \N + \N \N 143 2 0
+113 f \N \N \N Tester 7 tester-7-py4155 cus_TkJxYcWallZ3i8 1000 pending_payment stripe 14 tester7@tester.com PK \N \N 2026-01-07 05:29:25.708433+00 2026-01-07 05:29:26.127088+00 949 2026-01-07 05:29:52.680561+00 \N ~ \N \N 143 2 0
+113 f \N \N \N Tester 7 tester-7-py4155 cus_TkJxYcWallZ3i8 1000 active stripe 14 tester7@tester.com PK \N \N 2026-01-07 05:29:25.708433+00 2026-01-07 05:29:52.68467+00 950 2026-01-07 05:29:52.685371+00 \N ~ \N \N 143 2 0
+114 f \N \N \N Tester 8 tester-8-4l5drc \N 0 pending_payment stripe 14 tester8@tester.com PK \N \N 2026-01-07 05:49:22.821413+00 2026-01-07 05:49:22.821424+00 951 2026-01-07 05:49:22.822831+00 \N + \N \N 144 2 0
+114 f \N \N \N Tester 8 tester-8-4l5drc cus_TkKHU0KlS0IMWJ 1000 pending_payment stripe 14 tester8@tester.com PK \N \N 2026-01-07 05:49:22.821413+00 2026-01-07 05:49:23.181971+00 953 2026-01-07 05:50:28.823003+00 \N ~ \N \N 144 2 0
+114 f \N \N \N Tester 8 tester-8-4l5drc cus_TkKHU0KlS0IMWJ 1000 active stripe 14 tester8@tester.com PK \N \N 2026-01-07 05:49:22.821413+00 2026-01-07 05:50:28.826359+00 954 2026-01-07 05:50:28.827037+00 \N ~ \N \N 144 2 0
+115 f \N \N \N Tester 9 tester-9-xx4y1a \N 0 pending_payment stripe 14 tester9@tester.com PK \N \N 2026-01-07 05:55:27.240935+00 2026-01-07 05:55:27.240949+00 955 2026-01-07 05:55:27.246763+00 \N + \N \N 145 2 0
+114 f \N \N \N Tester 8 tester-8-4l5drc cus_TkKHU0KlS0IMWJ 0 pending_payment stripe 14 tester8@tester.com PK \N \N 2026-01-07 05:49:22.821413+00 2026-01-07 05:49:23.181971+00 952 2026-01-07 05:49:23.183956+00 \N ~ \N \N 144 2 0
+113 f \N \N \N Tester 7 tester-7-py4155 cus_TkJxYcWallZ3i8 0 pending_payment stripe 14 tester7@tester.com PK \N \N 2026-01-07 05:29:25.708433+00 2026-01-07 05:29:26.127088+00 948 2026-01-07 05:29:26.129484+00 \N ~ \N \N 143 2 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 2000 active stripe 14 tester150@test.com PK 2026-01-07 19:34:20+00 2026-02-07 19:34:20+00 2026-01-07 19:34:04.726731+00 2026-01-07 19:46:42.267485+00 1143 2026-01-12 11:24:56.863591+00 \N ~ \N 3 \N 4 0
+115 f \N \N \N Tester 9 tester-9-xx4y1a cus_TkKNcuMoNpr8iA 1000 pending_payment stripe 14 tester9@tester.com PK \N \N 2026-01-07 05:55:27.240935+00 2026-01-07 05:55:27.637495+00 957 2026-01-07 05:56:04.514509+00 \N ~ \N \N 145 2 0
+115 f \N \N \N Tester 9 tester-9-xx4y1a cus_TkKNcuMoNpr8iA 1000 active stripe 14 tester9@tester.com PK \N \N 2026-01-07 05:55:27.240935+00 2026-01-07 05:56:04.519569+00 958 2026-01-07 05:56:04.520861+00 \N ~ \N \N 145 2 0
+115 f \N \N \N Tester 9 tester-9-xx4y1a cus_TkKNcuMoNpr8iA 0 pending_payment stripe 14 tester9@tester.com PK \N \N 2026-01-07 05:55:27.240935+00 2026-01-07 05:55:27.637495+00 956 2026-01-07 05:55:27.640053+00 \N ~ \N \N 145 2 0
+115 f \N \N \N Tester 9 tester-9-xx4y1a cus_TkKNcuMoNpr8iA 1000 active stripe 14 tester9@tester.com PK \N \N 2026-01-07 05:55:27.240935+00 2026-01-07 05:56:04.519569+00 959 2026-01-07 06:16:17.833002+00 \N - \N 3 145 2 0
+114 f \N \N \N Tester 8 tester-8-4l5drc cus_TkKHU0KlS0IMWJ 1000 active stripe 14 tester8@tester.com PK \N \N 2026-01-07 05:49:22.821413+00 2026-01-07 05:50:28.826359+00 960 2026-01-07 06:16:17.925909+00 \N - \N 3 144 2 0
+113 f \N \N \N Tester 7 tester-7-py4155 cus_TkJxYcWallZ3i8 1000 active stripe 14 tester7@tester.com PK \N \N 2026-01-07 05:29:25.708433+00 2026-01-07 05:29:52.68467+00 961 2026-01-07 06:16:18.002509+00 \N - \N 3 143 2 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma \N 0 pending_payment stripe 14 tester10@test.com PK \N \N 2026-01-07 06:19:22.817542+00 2026-01-07 06:19:22.81755+00 962 2026-01-07 06:19:22.819074+00 \N + \N \N 146 2 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 2000 active stripe 14 tester150@test.com PK 2026-01-07 19:34:20+00 2026-02-07 19:34:20+00 2026-01-07 19:34:04.726731+00 2026-01-07 19:46:42.267485+00 1144 2026-01-12 11:24:56.976649+00 \N - \N 3 \N 4 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma cus_TkKl29oDG3roXc 1000 pending_payment stripe 14 tester10@test.com PK \N \N 2026-01-07 06:19:22.817542+00 2026-01-07 06:19:23.162394+00 964 2026-01-07 06:20:08.574993+00 \N ~ \N \N 146 2 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma cus_TkKl29oDG3roXc 1000 active stripe 14 tester10@test.com PK \N \N 2026-01-07 06:19:22.817542+00 2026-01-07 06:20:08.580786+00 965 2026-01-07 06:20:08.581866+00 \N ~ \N \N 146 2 0
+117 f \N \N \N Tester 20 tester-20-itn71n \N 0 pending_payment stripe 14 tester20@test.com PK \N \N 2026-01-07 06:56:50.656596+00 2026-01-07 06:56:50.656604+00 966 2026-01-07 06:56:50.657835+00 \N + \N \N 147 2 0
+117 f \N \N \N Tester 20 tester-20-itn71n cus_TkLMEMcBsC0DzS 1000 pending_payment stripe 14 tester20@test.com PK \N \N 2026-01-07 06:56:50.656596+00 2026-01-07 06:56:51.109416+00 968 2026-01-07 06:58:02.605034+00 \N ~ \N \N 147 2 0
+117 f \N \N \N Tester 20 tester-20-itn71n cus_TkLMEMcBsC0DzS 1000 active stripe 14 tester20@test.com PK \N \N 2026-01-07 06:56:50.656596+00 2026-01-07 06:58:02.608855+00 969 2026-01-07 06:58:02.609692+00 \N ~ \N \N 147 2 0
+118 f \N \N \N Salman Sadiq salman-sadiq-idyc1o \N 0 pending_payment paypal 14 bluesalman@hotmail.com US \N \N 2026-01-07 07:59:37.24125+00 2026-01-07 07:59:37.241257+00 970 2026-01-07 07:59:37.241956+00 \N + \N \N 148 2 0
+119 f \N \N \N Tester Paypal tester-paypal-0ei84f \N 0 pending_payment paypal 14 tester30@test.com US \N \N 2026-01-07 08:14:32.404127+00 2026-01-07 08:14:32.404135+00 971 2026-01-07 08:14:32.405089+00 \N + \N \N 149 2 0
+120 f \N \N \N Tester4 Paypal tester4-paypal-963kt2 \N 0 pending_payment paypal 14 tester4paypal@test.com US \N \N 2026-01-07 08:52:36.855557+00 2026-01-07 08:52:36.855566+00 974 2026-01-07 08:52:36.856362+00 \N + \N \N 150 2 0
+117 f \N \N \N Tester 20 tester-20-itn71n cus_TkLMEMcBsC0DzS 1000 active stripe 14 tester20@test.com PK 2026-01-07 06:57:58+00 2026-02-07 06:57:58+00 2026-01-07 06:56:50.656596+00 2026-01-07 09:00:00.186391+00 975 2026-01-07 09:00:00.193933+00 \N ~ \N \N 147 2 0
+119 f \N \N \N Tester Paypal tester-paypal-0ei84f \N 5000 active paypal 14 tester30@test.com US 2026-01-07 08:31:36.333585+00 2026-02-06 08:31:36.333585+00 2026-01-07 08:14:32.404127+00 2026-01-07 09:00:00.230595+00 976 2026-01-07 09:00:00.233328+00 \N ~ \N \N 149 5 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma cus_TkKl29oDG3roXc 1000 active stripe 14 tester10@test.com PK 2026-01-07 06:20:04+00 2026-02-07 06:20:04+00 2026-01-07 06:19:22.817542+00 2026-01-07 09:00:00.245392+00 977 2026-01-07 09:00:00.249311+00 \N ~ \N \N 146 2 0
+121 f \N \N \N Salman Alorig salman-alorig-kb3875 \N 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-07 13:15:42.243714+00 2026-01-07 13:15:42.243728+00 980 2026-01-07 13:15:42.249849+00 \N + \N \N 151 5 0
+122 f \N \N \N Tester PK tester-pk-h0pslc \N 0 pending_payment bank_transfer 14 testerpk@test.com PK \N \N 2026-01-07 13:50:58.021846+00 2026-01-07 13:50:58.021858+00 982 2026-01-07 13:50:58.023228+00 \N + \N \N 152 2 0
+122 f \N \N \N Tester PK tester-pk-h0pslc cus_TkSrD3tDCm3GJv 0 active bank_transfer 14 testerpk@test.com PK \N \N 2026-01-07 13:50:58.021846+00 2026-01-07 14:42:09.664827+00 984 2026-01-07 14:42:09.666129+00 \N ~ \N 3 152 2 0
+122 f \N \N \N Tester PK tester-pk-h0pslc cus_TkSrD3tDCm3GJv 1000 active bank_transfer 14 testerpk@test.com PK \N \N 2026-01-07 13:50:58.021846+00 2026-01-07 14:42:09.664827+00 985 2026-01-07 14:42:09.67215+00 \N ~ \N 3 152 2 0
+123 f \N \N \N Tester 10 Paypal tester-10-paypal-el1d37 \N 0 pending_payment bank_transfer 14 tester10pay@test.com PK \N \N 2026-01-07 14:48:02.754706+00 2026-01-07 14:48:02.754723+00 986 2026-01-07 14:48:02.755857+00 \N + \N \N 153 4 0
+124 f \N \N \N Tester US Stripe tester-us-stripe-68y986 \N 0 pending_payment bank_transfer 14 testerus@test.com US \N \N 2026-01-07 15:00:11.246244+00 2026-01-07 15:00:11.246256+00 989 2026-01-07 15:00:11.247848+00 \N + \N \N 154 2 0
+124 f \N \N \N Tester US Stripe tester-us-stripe-68y986 cus_TkT9bXiZh1ChOM 0 pending_payment bank_transfer 14 testerus@test.com US \N \N 2026-01-07 15:00:11.246244+00 2026-01-07 15:00:19.300575+00 990 2026-01-07 15:00:19.303414+00 \N ~ \N \N 154 2 0
+123 f \N \N \N Tester 10 Paypal tester-10-paypal-el1d37 cus_TkSxWU4VZWZThJ 0 pending_payment bank_transfer 14 tester10pay@test.com PK \N \N 2026-01-07 14:48:02.754706+00 2026-01-07 14:48:17.412642+00 987 2026-01-07 14:48:17.415034+00 \N ~ \N \N 153 4 0
+122 f \N \N \N Tester PK tester-pk-h0pslc cus_TkSrD3tDCm3GJv 0 pending_payment bank_transfer 14 testerpk@test.com PK \N \N 2026-01-07 13:50:58.021846+00 2026-01-07 14:41:39.08021+00 983 2026-01-07 14:41:39.084124+00 \N ~ \N \N 152 2 0
+121 f \N \N \N Salman Alorig salman-alorig-kb3875 cus_TkRhniOGXRNZfj 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-07 13:15:42.243714+00 2026-01-07 13:29:56.332069+00 981 2026-01-07 13:29:56.334663+00 \N ~ \N \N 151 5 0
+120 f \N \N \N Tester4 Paypal tester4-paypal-963kt2 cus_TkNNDCYLq5cAAn 0 pending_payment paypal 14 tester4paypal@test.com US \N \N 2026-01-07 08:52:36.855557+00 2026-01-07 09:01:46.041182+00 978 2026-01-07 09:01:46.043431+00 \N ~ \N \N 150 2 0
+120 f \N \N \N Tester4 Paypal tester4-paypal-963kt2 cus_TkNNDCYLq5cAAn 0 pending_payment paypal 14 tester4paypal@test.com US 2026-01-07 08:52:36.686377+00 2026-02-06 08:52:36.686377+00 2026-01-07 08:52:36.855557+00 2026-01-07 09:11:57.129409+00 979 2026-01-07 09:11:57.131669+00 \N ~ \N \N 150 2 0
+119 f \N \N \N Tester Paypal tester-paypal-0ei84f \N 5000 pending_payment paypal 14 tester30@test.com US \N \N 2026-01-07 08:14:32.404127+00 2026-01-07 08:14:32.404135+00 972 2026-01-07 08:31:36.353788+00 \N ~ \N \N 149 2 0
+119 f \N \N \N Tester Paypal tester-paypal-0ei84f \N 5000 active paypal 14 tester30@test.com US \N \N 2026-01-07 08:14:32.404127+00 2026-01-07 08:31:36.358595+00 973 2026-01-07 08:31:36.359684+00 \N ~ \N \N 149 5 0
+117 f \N \N \N Tester 20 tester-20-itn71n cus_TkLMEMcBsC0DzS 0 pending_payment stripe 14 tester20@test.com PK \N \N 2026-01-07 06:56:50.656596+00 2026-01-07 06:56:51.109416+00 967 2026-01-07 06:56:51.111455+00 \N ~ \N \N 147 2 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma cus_TkKl29oDG3roXc 0 pending_payment stripe 14 tester10@test.com PK \N \N 2026-01-07 06:19:22.817542+00 2026-01-07 06:19:23.162394+00 963 2026-01-07 06:19:23.16455+00 \N ~ \N \N 146 2 0
+125 f \N \N \N tester5 us stripe tester5-us-stripe-lwk7sk \N 0 pending_payment bank_transfer 14 tester15us@test.com US \N \N 2026-01-07 15:08:18.486201+00 2026-01-07 15:08:18.48621+00 991 2026-01-07 15:08:18.487039+00 \N + \N \N 155 2 0
+139 t 2026-01-12 11:25:46.258875+00 2026-01-26 11:25:46.258875+00 \N Tester 500 tester-500-lv8n3t \N 5000 active paypal 14 tester500@test.com US 2026-01-07 21:47:32.328924+00 2026-02-06 21:47:32.328924+00 2026-01-07 21:41:07.958604+00 2026-01-08 09:00:00.295194+00 1145 2026-01-12 11:25:46.260001+00 \N ~ \N 3 170 5 0
+126 f \N \N \N tester 30 paypal tester-30-paypal-1u4gns \N 0 pending_payment bank_transfer 14 tester30pp@test.com US \N \N 2026-01-07 15:30:50.703164+00 2026-01-07 15:30:50.703173+00 993 2026-01-07 15:30:50.704838+00 \N + \N \N 156 2 0
+127 f \N \N \N Test 22 stripe test-22-stripe-tp6l8l \N 0 pending_payment bank_transfer 14 test22pp@test.com PK \N \N 2026-01-07 17:15:40.082963+00 2026-01-07 17:15:40.08297+00 994 2026-01-07 17:15:40.083887+00 \N + \N \N 157 2 0
+127 f \N \N \N Test 22 stripe test-22-stripe-tp6l8l cus_TkVLofIBYeaxw8 0 pending_payment bank_transfer 14 test22pp@test.com PK \N \N 2026-01-07 17:15:40.082963+00 2026-01-07 17:15:50.666183+00 995 2026-01-07 17:15:50.668087+00 \N ~ \N \N 157 2 0
+127 f \N \N \N Test 22 stripe test-22-stripe-tp6l8l cus_TkVLofIBYeaxw8 0 pending_payment bank_transfer 14 test22pp@test.com PK \N \N 2026-01-07 17:15:40.082963+00 2026-01-07 17:15:50.666183+00 996 2026-01-07 17:34:15.404028+00 \N - \N 3 157 2 0
+126 f \N \N \N tester 30 paypal tester-30-paypal-1u4gns \N 0 pending_payment bank_transfer 14 tester30pp@test.com US \N \N 2026-01-07 15:30:50.703164+00 2026-01-07 15:30:50.703173+00 997 2026-01-07 17:34:15.53504+00 \N - \N 3 156 2 0
+125 f \N \N \N tester5 us stripe tester5-us-stripe-lwk7sk cus_TkTKruCpNQZG0C 0 pending_payment bank_transfer 14 tester15us@test.com US \N \N 2026-01-07 15:08:18.486201+00 2026-01-07 15:10:49.126546+00 992 2026-01-07 15:10:49.129707+00 \N ~ \N \N 155 2 0
+125 f \N \N \N tester5 us stripe tester5-us-stripe-lwk7sk cus_TkTKruCpNQZG0C 0 pending_payment bank_transfer 14 tester15us@test.com US \N \N 2026-01-07 15:08:18.486201+00 2026-01-07 15:10:49.126546+00 998 2026-01-07 17:34:15.615312+00 \N - \N 3 155 2 0
+124 f \N \N \N Tester US Stripe tester-us-stripe-68y986 cus_TkT9bXiZh1ChOM 0 pending_payment bank_transfer 14 testerus@test.com US \N \N 2026-01-07 15:00:11.246244+00 2026-01-07 15:00:19.300575+00 999 2026-01-07 17:34:15.69738+00 \N - \N 3 154 2 0
+123 f \N \N \N Tester 10 Paypal tester-10-paypal-el1d37 cus_TkSxWU4VZWZThJ 0 pending_payment bank_transfer 14 tester10pay@test.com US \N \N 2026-01-07 14:48:02.754706+00 2026-01-07 14:49:11.784558+00 988 2026-01-07 14:49:11.78649+00 \N ~ \N \N 153 4 0
+123 f \N \N \N Tester 10 Paypal tester-10-paypal-el1d37 cus_TkSxWU4VZWZThJ 0 pending_payment bank_transfer 14 tester10pay@test.com US \N \N 2026-01-07 14:48:02.754706+00 2026-01-07 14:49:11.784558+00 1000 2026-01-07 17:34:15.782022+00 \N - \N 3 153 4 0
+122 f \N \N \N Tester PK tester-pk-h0pslc cus_TkSrD3tDCm3GJv 1000 active bank_transfer 14 testerpk@test.com PK \N \N 2026-01-07 13:50:58.021846+00 2026-01-07 14:42:09.664827+00 1001 2026-01-07 17:34:15.872153+00 \N - \N 3 152 2 0
+121 f \N \N \N Salman Alorig salman-alorig-kb3875 cus_TkRhniOGXRNZfj 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-07 13:15:42.243714+00 2026-01-07 13:29:56.332069+00 1002 2026-01-07 17:34:15.953147+00 \N - \N 3 151 5 0
+120 f \N \N \N Tester4 Paypal tester4-paypal-963kt2 cus_TkNNDCYLq5cAAn 0 pending_payment paypal 14 tester4paypal@test.com US 2026-01-07 08:52:36.686377+00 2026-02-06 08:52:36.686377+00 2026-01-07 08:52:36.855557+00 2026-01-07 09:11:57.129409+00 1003 2026-01-07 17:34:16.026171+00 \N - \N 3 150 2 0
+119 f \N \N \N Tester Paypal tester-paypal-0ei84f \N 5000 active paypal 14 tester30@test.com US 2026-01-07 08:31:36.333585+00 2026-02-06 08:31:36.333585+00 2026-01-07 08:14:32.404127+00 2026-01-07 09:00:00.230595+00 1004 2026-01-07 17:34:16.11134+00 \N - \N 3 149 5 0
+118 f \N \N \N Salman Sadiq salman-sadiq-idyc1o \N 0 pending_payment paypal 14 bluesalman@hotmail.com US \N \N 2026-01-07 07:59:37.24125+00 2026-01-07 07:59:37.241257+00 1005 2026-01-07 17:34:16.185468+00 \N - \N 3 148 2 0
+117 f \N \N \N Tester 20 tester-20-itn71n cus_TkLMEMcBsC0DzS 1000 active stripe 14 tester20@test.com PK 2026-01-07 06:57:58+00 2026-02-07 06:57:58+00 2026-01-07 06:56:50.656596+00 2026-01-07 09:00:00.186391+00 1006 2026-01-07 17:34:16.263296+00 \N - \N 3 147 2 0
+116 f \N \N \N TEster 10 tester-10-kkl9ma cus_TkKl29oDG3roXc 1000 active stripe 14 tester10@test.com PK 2026-01-07 06:20:04+00 2026-02-07 06:20:04+00 2026-01-07 06:19:22.817542+00 2026-01-07 09:00:00.245392+00 1007 2026-01-07 17:34:16.337015+00 \N - \N 3 146 2 0
+128 f \N \N \N tester 101 tester-101-xc00ni \N 0 pending_payment bank_transfer 14 tester101@test.com PK \N \N 2026-01-07 17:35:42.530407+00 2026-01-07 17:35:42.530419+00 1008 2026-01-07 17:35:42.534532+00 \N + \N \N 158 2 0
+129 f \N \N \N Test 10 Stripe test-10-stripe-eh8hpi \N 0 pending_payment bank_transfer 14 tester10@test.com PK \N \N 2026-01-07 18:27:16.298212+00 2026-01-07 18:27:16.298223+00 1010 2026-01-07 18:27:16.299672+00 \N + \N \N 159 2 0
+129 f \N \N \N Test 10 Stripe test-10-stripe-eh8hpi cus_TkWWkZOTv0jJm4 0 pending_payment bank_transfer 14 tester10@test.com PK \N \N 2026-01-07 18:27:16.298212+00 2026-01-07 18:28:31.824307+00 1011 2026-01-07 18:28:31.82624+00 \N ~ \N \N 159 2 0
+129 f \N \N \N Test 10 Stripe test-10-stripe-eh8hpi cus_TkWWkZOTv0jJm4 0 pending_payment bank_transfer 14 tester10@test.com PK \N \N 2026-01-07 18:27:16.298212+00 2026-01-07 18:28:31.824307+00 1012 2026-01-07 18:30:20.952045+00 \N - \N 3 159 2 0
+128 f \N \N \N tester 101 tester-101-xc00ni cus_TkVfTvyh3JXxUW 0 pending_payment bank_transfer 14 tester101@test.com PK \N \N 2026-01-07 17:35:42.530407+00 2026-01-07 17:35:51.911278+00 1009 2026-01-07 17:35:51.913487+00 \N ~ \N \N 158 2 0
+128 f \N \N \N tester 101 tester-101-xc00ni cus_TkVfTvyh3JXxUW 0 pending_payment bank_transfer 14 tester101@test.com PK \N \N 2026-01-07 17:35:42.530407+00 2026-01-07 17:35:51.911278+00 1013 2026-01-07 18:30:21.03878+00 \N - \N 3 158 2 0
+130 f \N \N \N tester 20 tester-20-x8lams \N 0 pending_payment bank_transfer 14 tester20@test.com PK \N \N 2026-01-07 18:37:42.498134+00 2026-01-07 18:37:42.49814+00 1014 2026-01-07 18:37:42.498869+00 \N + \N \N 160 2 0
+131 f \N \N \N tester 30 tester-30-8qhztb \N 0 pending_payment bank_transfer 14 tester30@test.com US \N \N 2026-01-07 18:39:24.028154+00 2026-01-07 18:39:24.028162+00 1015 2026-01-07 18:39:24.028854+00 \N + \N \N 161 2 0
+132 f \N \N \N tester 130 tester-130-lc5o3p \N 0 pending_payment bank_transfer 14 tester130@test.com PK \N \N 2026-01-07 18:49:25.293292+00 2026-01-07 18:49:25.293301+00 1017 2026-01-07 18:49:25.294104+00 \N + \N \N 162 2 0
+132 f \N \N \N tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 1000 pending_payment bank_transfer 14 tester130@test.com PK \N \N 2026-01-07 18:49:25.293292+00 2026-01-07 18:49:30.936934+00 1019 2026-01-07 19:14:56.204078+00 \N ~ \N \N 162 2 0
+131 f \N \N \N tester 30 tester-30-8qhztb cus_TkWif9A5vyPuJl 0 pending_payment bank_transfer 14 tester30@test.com US \N \N 2026-01-07 18:39:24.028154+00 2026-01-07 18:40:32.084447+00 1016 2026-01-07 18:40:32.086955+00 \N ~ \N \N 161 2 0
+16 t 2025-12-07 07:33:43.512962+00 2025-12-21 07:33:43.512962+00 \N newuser newuser \N 0 trial stripe 14 \N \N \N 2025-11-14 16:00:20.986958+00 2025-11-14 16:00:20.986968+00 1135 2026-01-12 10:06:29.877545+00 \N - \N \N \N 1 0
+15 t 2025-12-07 02:21:30.888437+00 2025-12-21 02:21:30.888437+00 \N test test \N 0 trial stripe 14 \N \N \N 2025-11-14 15:54:10.058772+00 2025-11-14 15:54:10.058788+00 1136 2026-01-12 10:06:29.878953+00 \N - \N \N \N 1 0
+14 t 2025-12-28 23:30:50.585228+00 2026-01-11 23:30:50.585228+00 \N Scale Account scale-account \N 8000 active bank_transfer 14 \N \N \N 2025-11-07 19:57:08.532581+00 2025-12-08 12:33:32.310169+00 1137 2026-01-12 10:06:29.87971+00 \N - \N \N \N 5 0
+13 t 2025-12-07 07:33:43.514016+00 2025-12-21 07:33:43.514016+00 \N Growth Account growth-account \N 4000 active stripe 14 \N \N \N 2025-11-07 19:57:08.296352+00 2025-11-07 19:57:08.29636+00 1138 2026-01-12 10:06:29.880465+00 \N - \N \N \N 4 0
+12 t 2025-12-07 07:33:43.51521+00 2025-12-21 07:33:43.51521+00 \N Starter Account starter-account \N 2000 active stripe 14 \N \N \N 2025-11-07 19:57:08.126334+00 2025-11-07 19:57:08.126346+00 1139 2026-01-12 10:06:29.881296+00 \N - \N \N \N 2 0
+132 f \N \N \N tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 1000 active bank_transfer 14 tester130@test.com PK \N \N 2026-01-07 18:49:25.293292+00 2026-01-07 19:14:56.208807+00 1020 2026-01-07 19:14:56.209515+00 \N ~ \N \N 162 2 0
+133 f \N \N \N Tester 140 tester-140-twb705 \N 0 pending_payment bank_transfer 14 tester140@test.com PK \N \N 2026-01-07 19:17:05.219572+00 2026-01-07 19:17:05.219582+00 1021 2026-01-07 19:17:05.22083+00 \N + \N \N 163 2 0
+133 f \N \N \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 pending_payment bank_transfer 14 tester140@test.com PK \N \N 2026-01-07 19:17:05.219572+00 2026-01-07 19:17:11.357283+00 1023 2026-01-07 19:17:23.371795+00 \N ~ \N \N 163 2 0
+133 f \N \N \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 active bank_transfer 14 tester140@test.com PK \N \N 2026-01-07 19:17:05.219572+00 2026-01-07 19:17:23.374215+00 1024 2026-01-07 19:17:23.374764+00 \N ~ \N \N 163 2 0
+133 f \N \N \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 active stripe 14 tester140@test.com PK \N \N 2026-01-07 19:17:05.219572+00 2026-01-07 19:28:12.77244+00 1025 2026-01-07 19:28:12.774534+00 \N ~ \N \N 163 2 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq \N 0 pending_payment bank_transfer 14 tester150@test.com PK \N \N 2026-01-07 19:34:04.726731+00 2026-01-07 19:34:04.726744+00 1026 2026-01-07 19:34:04.727875+00 \N + \N \N 164 4 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 2000 pending_payment bank_transfer 14 tester150@test.com PK \N \N 2026-01-07 19:34:04.726731+00 2026-01-07 19:34:11.703878+00 1028 2026-01-07 19:34:31.606533+00 \N ~ \N \N 164 4 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 2000 active stripe 14 tester150@test.com PK \N \N 2026-01-07 19:34:04.726731+00 2026-01-07 19:34:31.608921+00 1029 2026-01-07 19:34:31.609415+00 \N ~ \N \N 164 4 0
+135 f \N \N \N Tester 160 tester-160-n2gx70 \N 0 pending_payment bank_transfer 14 tester160@test.com PK \N \N 2026-01-07 19:51:36.598818+00 2026-01-07 19:51:36.598825+00 1031 2026-01-07 19:51:36.599478+00 \N + \N \N 166 5 0
+135 f \N \N \N Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 5000 pending_payment bank_transfer 14 tester160@test.com PK \N \N 2026-01-07 19:51:36.598818+00 2026-01-07 19:51:42.902397+00 1033 2026-01-07 19:51:59.020561+00 \N ~ \N \N 166 5 0
+135 f \N \N \N Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 5000 active stripe 14 tester160@test.com PK \N \N 2026-01-07 19:51:36.598818+00 2026-01-07 19:51:59.023426+00 1034 2026-01-07 19:51:59.023983+00 \N ~ \N \N 166 5 0
+136 f \N \N \N Tester 200 tester-200-fnvdza \N 0 pending_payment bank_transfer 14 tester200@test.com PK \N \N 2026-01-07 20:11:27.727821+00 2026-01-07 20:11:27.727831+00 1035 2026-01-07 20:11:27.728649+00 \N + \N \N 167 2 0
+136 f \N \N \N Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 1000 pending_payment bank_transfer 14 tester200@test.com PK \N \N 2026-01-07 20:11:27.727821+00 2026-01-07 20:11:35.916067+00 1037 2026-01-07 20:11:57.969077+00 \N ~ \N \N 167 2 0
+136 f \N \N \N Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 1000 active stripe 14 tester200@test.com PK \N \N 2026-01-07 20:11:27.727821+00 2026-01-07 20:11:57.971324+00 1038 2026-01-07 20:11:57.971811+00 \N ~ \N \N 167 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 \N 0 pending_payment bank_transfer 14 tester300us@test.com US \N \N 2026-01-07 20:58:01.416106+00 2026-01-07 20:58:01.416118+00 1040 2026-01-07 20:58:01.418944+00 \N + \N \N 168 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 1000 pending_payment bank_transfer 14 tester300us@test.com US \N \N 2026-01-07 20:58:01.416106+00 2026-01-07 20:58:14.495794+00 1042 2026-01-07 21:00:08.039105+00 \N ~ \N \N 168 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 1000 active stripe 14 tester300us@test.com US \N \N 2026-01-07 20:58:01.416106+00 2026-01-07 21:00:08.042278+00 1043 2026-01-07 21:00:08.042909+00 \N ~ \N \N 168 2 0
+138 f \N \N \N Tester 400 tester-400-ynzeo4 \N 0 pending_payment bank_transfer 14 tester400pp@test.com US \N \N 2026-01-07 21:15:24.572218+00 2026-01-07 21:15:24.572226+00 1044 2026-01-07 21:15:24.57298+00 \N + \N \N 169 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 0 pending_payment bank_transfer 14 tester300us@test.com US \N \N 2026-01-07 20:58:01.416106+00 2026-01-07 20:58:14.495794+00 1041 2026-01-07 20:58:14.497842+00 \N ~ \N \N 168 2 0
+136 f \N \N \N Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 0 pending_payment bank_transfer 14 tester200@test.com PK \N \N 2026-01-07 20:11:27.727821+00 2026-01-07 20:11:35.916067+00 1036 2026-01-07 20:11:35.918177+00 \N ~ \N \N 167 2 0
+139 f \N \N \N Tester 500 tester-500-lv8n3t \N 0 pending_payment bank_transfer 14 tester500@test.com US \N \N 2026-01-07 21:41:07.958604+00 2026-01-07 21:41:07.958649+00 1047 2026-01-07 21:41:07.959669+00 \N + \N \N 170 5 0
+140 f \N \N \N Salman Sadiq salman-sadiq-mk1kdw \N 0 pending_payment bank_transfer 14 salman@salman-sadiq.com PK \N \N 2026-01-07 21:54:17.430781+00 2026-01-07 21:54:17.430791+00 1050 2026-01-07 21:54:17.432194+00 \N + \N \N 171 4 0
+140 f \N \N \N Salman Sadiq salman-sadiq-mk1kdw \N 0 active bank_transfer 14 salman@salman-sadiq.com PK \N \N 2026-01-07 21:54:17.430781+00 2026-01-07 22:16:42.341819+00 1051 2026-01-07 22:16:42.343312+00 \N ~ \N 3 171 4 0
+140 f \N \N \N Salman Sadiq salman-sadiq-mk1kdw \N 2000 active bank_transfer 14 salman@salman-sadiq.com PK \N \N 2026-01-07 21:54:17.430781+00 2026-01-07 22:16:42.341819+00 1052 2026-01-07 22:16:42.352383+00 \N ~ \N 3 171 4 0
+138 f \N \N \N Tester 400 tester-400-ynzeo4 \N 0 pending_payment bank_transfer 14 tester400pp@test.com US 2026-01-07 21:15:24.399423+00 2026-02-06 21:15:24.399423+00 2026-01-07 21:15:24.572218+00 2026-01-07 21:28:09.339334+00 1045 2026-01-07 21:28:09.341658+00 \N ~ \N \N 169 2 0
+138 f \N \N \N Tester 400 tester-400-ynzeo4 cus_TkZSfkqaA0ga1z 0 pending_payment bank_transfer 14 tester400pp@test.com US 2026-01-07 21:15:24.399423+00 2026-02-06 21:15:24.399423+00 2026-01-07 21:15:24.572218+00 2026-01-07 21:30:29.256809+00 1046 2026-01-07 21:30:29.26011+00 \N ~ \N \N 169 2 0
+138 f \N \N \N Tester 400 tester-400-ynzeo4 cus_TkZSfkqaA0ga1z 0 pending_payment bank_transfer 14 tester400pp@test.com US 2026-01-07 21:15:24.399423+00 2026-02-06 21:15:24.399423+00 2026-01-07 21:15:24.572218+00 2026-01-07 21:30:29.256809+00 1053 2026-01-07 22:34:02.066005+00 \N - \N 3 169 2 0
+136 f \N \N \N Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 1000 active stripe 14 tester200@test.com PK 2026-01-07 20:11:53+00 2026-02-07 20:11:53+00 2026-01-07 20:11:27.727821+00 2026-01-07 20:24:48.155134+00 1039 2026-01-07 20:24:48.156556+00 \N ~ \N \N 167 2 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 0 pending_payment bank_transfer 14 tester150@test.com PK \N \N 2026-01-07 19:34:04.726731+00 2026-01-07 19:34:11.703878+00 1027 2026-01-07 19:34:11.705801+00 \N ~ \N \N 164 4 0
+134 f \N \N \N Tester 150 tester-150-sgtzdq cus_TkXZLOOuGtjXrJ 2000 active stripe 14 tester150@test.com PK 2026-01-07 19:34:20+00 2026-02-07 19:34:20+00 2026-01-07 19:34:04.726731+00 2026-01-07 19:46:42.267485+00 1030 2026-01-07 19:46:42.269124+00 \N ~ \N \N 164 4 0
+139 f \N \N \N Tester 500 tester-500-lv8n3t \N 5000 pending_payment bank_transfer 14 tester500@test.com US \N \N 2026-01-07 21:41:07.958604+00 2026-01-07 21:41:07.958649+00 1048 2026-01-07 21:47:32.341113+00 \N ~ \N \N 170 5 0
+139 f \N \N \N Tester 500 tester-500-lv8n3t \N 5000 active paypal 14 tester500@test.com US \N \N 2026-01-07 21:41:07.958604+00 2026-01-07 21:47:32.345003+00 1049 2026-01-07 21:47:32.345914+00 \N ~ \N \N 170 5 0
+135 f \N \N \N Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 0 pending_payment bank_transfer 14 tester160@test.com PK \N \N 2026-01-07 19:51:36.598818+00 2026-01-07 19:51:42.902397+00 1032 2026-01-07 19:51:42.904228+00 \N ~ \N \N 166 5 0
+135 t 2026-01-12 11:25:46.309251+00 2026-01-26 11:25:46.309251+00 \N Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 5000 active stripe 14 tester160@test.com PK 2026-01-07 19:51:54+00 2026-02-07 19:51:54+00 2026-01-07 19:51:36.598818+00 2026-01-08 09:00:00.11771+00 1146 2026-01-12 11:25:46.310472+00 \N ~ \N 3 166 5 0
+133 f \N \N \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 0 pending_payment bank_transfer 14 tester140@test.com PK \N \N 2026-01-07 19:17:05.219572+00 2026-01-07 19:17:11.357283+00 1022 2026-01-07 19:17:11.359576+00 \N ~ \N \N 163 2 0
+138 f \N \N \N Tester 400 tester-400-ynzeo4 cus_TkZSfkqaA0ga1z 0 pending_payment bank_transfer 14 tester400pp@test.com US 2026-01-07 21:15:24.399423+00 2026-02-06 21:15:24.399423+00 2026-01-07 21:15:24.572218+00 2026-01-07 21:30:29.256809+00 1054 2026-01-07 22:34:02.135573+00 \N - \N 3 169 2 0
+131 f \N \N \N tester 30 tester-30-8qhztb cus_TkWif9A5vyPuJl 0 pending_payment bank_transfer 14 tester30@test.com US \N \N 2026-01-07 18:39:24.028154+00 2026-01-07 18:40:32.084447+00 1056 2026-01-07 22:34:02.240234+00 \N - \N 3 161 2 0
+130 f \N \N \N tester 20 tester-20-x8lams \N 0 pending_payment bank_transfer 14 tester20@test.com PK \N \N 2026-01-07 18:37:42.498134+00 2026-01-07 18:37:42.49814+00 1057 2026-01-07 22:34:02.317998+00 \N - \N 3 160 2 0
+141 f \N \N \N Tester 1000 tester-1000-mjtugx \N 1000 pending_payment bank_transfer 14 tester1000@test.com CA \N \N 2026-01-07 23:32:07.351+00 2026-01-07 23:32:07.351009+00 1060 2026-01-07 23:33:04.893244+00 \N ~ \N \N 172 2 0
+141 f \N \N \N Tester 1000 tester-1000-mjtugx \N 1000 active paypal 14 tester1000@test.com CA \N \N 2026-01-07 23:32:07.351+00 2026-01-07 23:33:04.899342+00 1061 2026-01-07 23:33:04.90029+00 \N ~ \N \N 172 2 0
+141 t 2026-01-12 11:33:34.746175+00 2026-01-26 11:33:34.746175+00 \N Tester 1000 tester-1000-mjtugx \N 1000 active paypal 14 tester1000@test.com CA 2026-01-07 23:33:04.871028+00 2026-02-06 23:33:04.871028+00 2026-01-07 23:32:07.351+00 2026-01-08 09:00:00.274429+00 1147 2026-01-12 11:33:34.74728+00 \N ~ \N 3 172 2 0
+143 t 2026-01-12 11:37:54.598885+00 2026-01-26 11:37:54.598885+00 \N Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 1000 active stripe 14 bluesalman@hotmail.com PK 2026-01-08 03:13:17+00 2026-02-08 03:13:17+00 2026-01-08 02:42:38.501956+00 2026-01-08 09:00:00.311337+00 1149 2026-01-12 11:37:54.599971+00 \N ~ \N 3 174 2 0
+133 t 2026-01-12 11:37:54.644594+00 2026-01-26 11:37:54.644594+00 \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 active stripe 14 tester140@test.com PK 2026-01-07 19:17:19+00 2026-02-07 19:17:19+00 2026-01-07 19:17:05.219572+00 2026-01-08 09:00:00.243959+00 1150 2026-01-12 11:37:54.645584+00 \N ~ \N 3 163 2 0
+132 f \N \N \N tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 0 pending_payment bank_transfer 14 tester130@test.com PK \N \N 2026-01-07 18:49:25.293292+00 2026-01-07 18:49:30.936934+00 1018 2026-01-07 18:49:30.939159+00 \N ~ \N \N 162 2 0
+132 t 2026-01-12 11:37:54.693782+00 2026-01-26 11:37:54.693782+00 \N tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 1000 active bank_transfer 14 tester130@test.com PK 2026-01-07 19:14:51+00 2026-02-07 19:14:51+00 2026-01-07 18:49:25.293292+00 2026-01-08 09:00:00.33411+00 1151 2026-01-12 11:37:54.694811+00 \N ~ \N 3 162 2 0
+90 f \N \N \N Paid 2 paid-2 \N 1863 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1153 2026-01-12 11:48:20.263429+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1861 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1155 2026-01-12 11:48:45.966521+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1859 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1157 2026-01-12 11:49:14.441355+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1858 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1158 2026-01-12 11:49:27.762634+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1857 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1159 2026-01-12 11:49:41.896633+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1856 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1160 2026-01-12 11:49:56.780612+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1855 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1161 2026-01-12 11:50:12.755716+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1854 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1162 2026-01-12 11:50:27.230807+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1853 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1163 2026-01-12 11:50:42.1796+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1852 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1164 2026-01-12 11:50:55.348456+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1851 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1165 2026-01-12 11:51:07.22929+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1850 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1166 2026-01-12 11:51:20.91082+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1849 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1167 2026-01-12 11:51:36.234362+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1848 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1168 2026-01-12 11:51:50.190035+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1847 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1169 2026-01-12 11:52:03.006211+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1846 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1170 2026-01-12 11:52:18.581086+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1845 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1171 2026-01-12 11:52:32.652244+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1844 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1172 2026-01-12 23:41:13.496076+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1843 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1173 2026-01-12 23:41:28.642423+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1842 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1174 2026-01-12 23:41:43.866276+00 \N ~ \N \N 119 4 0
+90 f \N \N \N Paid 2 paid-2 \N 1841 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1175 2026-01-12 23:41:58.051987+00 \N ~ \N \N 119 4 0
+131 f \N \N \N tester 30 tester-30-8qhztb cus_TkWif9A5vyPuJl 0 pending_payment bank_transfer 14 tester30@test.com US \N \N 2026-01-07 18:39:24.028154+00 2026-01-07 18:40:32.084447+00 1055 2026-01-07 22:34:02.215738+00 \N - \N 3 161 2 0
+130 f \N \N \N tester 20 tester-20-x8lams \N 0 pending_payment bank_transfer 14 tester20@test.com PK \N \N 2026-01-07 18:37:42.498134+00 2026-01-07 18:37:42.49814+00 1058 2026-01-07 22:34:02.345905+00 \N - \N 3 160 2 0
+141 f \N \N \N Tester 1000 tester-1000-mjtugx \N 0 pending_payment bank_transfer 14 tester1000@test.com CA \N \N 2026-01-07 23:32:07.351+00 2026-01-07 23:32:07.351009+00 1059 2026-01-07 23:32:07.354709+00 \N + \N \N 172 2 0
+90 f \N \N \N Paid 2 paid-2 \N 1865 active bank_transfer 14 paid2@paid.com line 1 line 2 lahore punjab 12345 PK 2026-01-01 00:00:00+00 2026-01-31 23:59:59.05016+00 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 1062 2026-01-08 00:30:00.058092+00 \N ~ \N \N 119 4 0
+142 f \N \N \N Blue Salman blue-salman-1kp1gt \N 0 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 01:45:24.2024+00 2026-01-08 01:45:24.202409+00 1063 2026-01-08 01:45:24.206427+00 \N + \N \N 173 2 0
+142 f \N \N \N Blue Salman blue-salman-1kp1gt \N 0 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 01:45:24.2024+00 2026-01-08 01:45:24.202409+00 1064 2026-01-08 02:39:57.752108+00 \N ~ \N 3 \N 2 0
+142 f \N \N \N Blue Salman blue-salman-1kp1gt \N 0 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 01:45:24.2024+00 2026-01-08 01:45:24.202409+00 1065 2026-01-08 02:39:57.959583+00 \N - \N 3 \N 2 0
+143 f \N \N \N Salman Sadiq salman-sadiq-dkh6g3 \N 0 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 02:42:38.501956+00 2026-01-08 02:42:38.501968+00 1066 2026-01-08 02:42:38.5044+00 \N + \N \N 174 2 0
+143 f \N \N \N Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 1000 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 02:42:38.501956+00 2026-01-08 03:12:55.744752+00 1068 2026-01-08 03:13:21.116024+00 \N ~ \N \N 174 2 0
+143 f \N \N \N Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 1000 active stripe 14 bluesalman@hotmail.com PK \N \N 2026-01-08 02:42:38.501956+00 2026-01-08 03:13:21.120837+00 1069 2026-01-08 03:13:21.121486+00 \N ~ \N \N 174 2 0
+140 f \N \N \N Salman Sadiq salman-sadiq-mk1kdw \N 2000 active bank_transfer 14 salman@salman-sadiq.com PK \N \N 2026-01-07 21:54:17.430781+00 2026-01-07 22:16:42.341819+00 1070 2026-01-08 03:38:15.061032+00 \N ~ \N 3 \N 4 0
+140 f \N \N \N Salman Sadiq salman-sadiq-mk1kdw \N 2000 active bank_transfer 14 salman@salman-sadiq.com PK \N \N 2026-01-07 21:54:17.430781+00 2026-01-07 22:16:42.341819+00 1071 2026-01-08 03:38:15.199573+00 \N - \N 3 \N 4 0
+144 f \N \N \N Alorig alorig-qy5cvf \N 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-08 03:38:22.892096+00 2026-01-08 03:38:22.892102+00 1072 2026-01-08 03:38:22.894583+00 \N + \N \N 182 5 0
+143 f \N \N \N Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 0 pending_payment bank_transfer 14 bluesalman@hotmail.com PK \N \N 2026-01-08 02:42:38.501956+00 2026-01-08 03:12:55.744752+00 1067 2026-01-08 03:12:55.74656+00 \N ~ \N \N 174 2 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 5000 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-08 03:38:22.892096+00 2026-01-08 03:41:11.330336+00 1074 2026-01-08 03:41:25.128491+00 \N ~ \N \N 182 5 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 5000 active stripe 14 salman@alorig.com PK \N \N 2026-01-08 03:38:22.892096+00 2026-01-08 03:41:25.131331+00 1075 2026-01-08 03:41:25.131859+00 \N ~ \N \N 182 5 0
+145 f \N \N \N tacbit tacbit-5hnbn2 \N 0 pending_payment bank_transfer 14 tacbit.com@gmail.com PK \N \N 2026-01-08 04:07:29.766724+00 2026-01-08 04:07:29.76673+00 1076 2026-01-08 04:07:29.767412+00 \N + \N \N 183 4 0
+145 f \N \N \N tacbit tacbit-5hnbn2 \N 0 active bank_transfer 14 tacbit.com@gmail.com PK \N \N 2026-01-08 04:07:29.766724+00 2026-01-08 04:11:40.083852+00 1077 2026-01-08 04:11:40.084822+00 \N ~ \N 3 183 4 0
+145 f \N \N \N tacbit tacbit-5hnbn2 \N 2000 active bank_transfer 14 tacbit.com@gmail.com PK \N \N 2026-01-08 04:07:29.766724+00 2026-01-08 04:11:40.083852+00 1078 2026-01-08 04:11:40.088141+00 \N ~ \N 3 183 4 0
+135 f \N \N \N Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 5000 active stripe 14 tester160@test.com PK 2026-01-07 19:51:54+00 2026-02-07 19:51:54+00 2026-01-07 19:51:36.598818+00 2026-01-08 09:00:00.11771+00 1079 2026-01-08 09:00:00.132847+00 \N ~ \N \N 166 5 0
+133 f \N \N \N Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 active stripe 14 tester140@test.com PK 2026-01-07 19:17:19+00 2026-02-07 19:17:19+00 2026-01-07 19:17:05.219572+00 2026-01-08 09:00:00.243959+00 1080 2026-01-08 09:00:00.247711+00 \N ~ \N \N 163 2 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 5000 active stripe 14 salman@alorig.com PK 2026-01-08 03:41:20+00 2026-02-08 03:41:20+00 2026-01-08 03:38:22.892096+00 2026-01-08 09:00:00.262358+00 1081 2026-01-08 09:00:00.264656+00 \N ~ \N \N 182 5 0
+141 f \N \N \N Tester 1000 tester-1000-mjtugx \N 1000 active paypal 14 tester1000@test.com CA 2026-01-07 23:33:04.871028+00 2026-02-06 23:33:04.871028+00 2026-01-07 23:32:07.351+00 2026-01-08 09:00:00.274429+00 1082 2026-01-08 09:00:00.27633+00 \N ~ \N \N 172 2 0
+137 f \N \N \N Tester 300 tester-300-01hso1 cus_TkYvABxJE8dumo 1000 active stripe 14 tester300us@test.com US 2026-01-07 21:00:03+00 2026-02-07 21:00:03+00 2026-01-07 20:58:01.416106+00 2026-01-08 09:00:00.283763+00 1083 2026-01-08 09:00:00.285607+00 \N ~ \N \N 168 2 0
+139 f \N \N \N Tester 500 tester-500-lv8n3t \N 5000 active paypal 14 tester500@test.com US 2026-01-07 21:47:32.328924+00 2026-02-06 21:47:32.328924+00 2026-01-07 21:41:07.958604+00 2026-01-08 09:00:00.295194+00 1084 2026-01-08 09:00:00.2968+00 \N ~ \N \N 170 5 0
+143 f \N \N \N Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 1000 active stripe 14 bluesalman@hotmail.com PK 2026-01-08 03:13:17+00 2026-02-08 03:13:17+00 2026-01-08 02:42:38.501956+00 2026-01-08 09:00:00.311337+00 1085 2026-01-08 09:00:00.312654+00 \N ~ \N \N 174 2 0
+145 f \N \N \N tacbit tacbit-5hnbn2 \N 2000 active bank_transfer 14 tacbit.com@gmail.com PK 2026-01-08 04:07:29.59793+00 2026-02-07 04:07:29.59793+00 2026-01-08 04:07:29.766724+00 2026-01-08 09:00:00.319211+00 1086 2026-01-08 09:00:00.321198+00 \N ~ \N \N 183 4 0
+132 f \N \N \N tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 1000 active bank_transfer 14 tester130@test.com PK 2026-01-07 19:14:51+00 2026-02-07 19:14:51+00 2026-01-07 18:49:25.293292+00 2026-01-08 09:00:00.33411+00 1087 2026-01-08 09:00:00.336903+00 \N ~ \N \N 162 2 0
+146 f \N \N \N Alorig Systems alorig-systems-q2htbv \N 0 pending_payment bank_transfer 14 systems@alorig.com PK \N \N 2026-01-08 12:10:08.298636+00 2026-01-08 12:10:08.298649+00 1088 2026-01-08 12:10:08.308949+00 \N + \N \N 184 2 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 5000 active stripe 14 salman@alorig.com PK 2026-01-08 03:41:20+00 2026-02-08 03:41:20+00 2026-01-08 03:38:22.892096+00 2026-01-08 09:00:00.262358+00 1089 2026-01-12 09:43:25.690407+00 \N ~ \N 3 \N 5 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2026-01-08 03:38:22.892096+00 2026-01-08 03:41:11.330336+00 1073 2026-01-08 03:41:11.332226+00 \N ~ \N \N 182 5 0
+144 f \N \N \N Alorig alorig-qy5cvf cus_TkfQmjM3TBE47f 5000 active stripe 14 salman@alorig.com PK 2026-01-08 03:41:20+00 2026-02-08 03:41:20+00 2026-01-08 03:38:22.892096+00 2026-01-08 09:00:00.262358+00 1090 2026-01-12 09:43:25.91935+00 \N - \N 3 \N 5 0
+146 t 2026-01-12 09:48:00.784516+00 2026-01-26 09:48:00.784516+00 \N Alorig Systems alorig-systems-q2htbv \N 0 pending_payment bank_transfer 14 systems@alorig.com PK \N \N 2026-01-08 12:10:08.298636+00 2026-01-08 12:10:08.298649+00 1091 2026-01-12 09:48:00.787352+00 \N ~ \N 3 184 2 0
+103 t 2025-12-13 12:52:38.683092+00 2025-12-27 12:52:38.683092+00 \N Test Account - Limits \N 0 trial stripe 14 \N \N \N 2025-12-12 17:31:48.282845+00 2025-12-12 17:34:19.732204+00 1092 2026-01-12 10:06:29.843967+00 \N - \N \N \N 12 0
+100 t 2025-12-13 12:52:50.846757+00 2025-12-27 12:52:50.846757+00 \N sdadiaosdaodn sdadiaosdaodn \N 1000 active bank_transfer 14 axeeeeeee@cisidj.com PK \N \N 2025-12-09 06:00:45.905549+00 2025-12-09 06:13:29.351253+00 1093 2026-01-12 10:06:29.846196+00 \N - \N \N \N 2 0
+99 t 2025-12-09 06:12:07.782586+00 2025-12-23 06:12:07.782586+00 \N ascewwefwe ascewwefwe \N 0 pending_payment bank_transfer 14 sadwewdas@asdasdasd.com PK \N \N 2025-12-09 05:57:51.573029+00 2025-12-09 05:57:51.573037+00 1094 2026-01-12 10:06:29.847014+00 \N - \N \N \N 2 0
+98 t 2025-12-09 06:12:07.785812+00 2025-12-23 06:12:07.785812+00 \N asdasdasdafafjk asdasdasdafafjk \N 1000 trial bank_transfer 14 asdasdada@askdjkasjd.com \N \N 2025-12-09 05:56:32.674988+00 2025-12-09 05:56:32.675002+00 1095 2026-01-12 10:06:29.848386+00 \N - \N \N \N 1 0
+97 t 2025-12-09 06:12:07.787107+00 2025-12-23 06:12:07.787107+00 \N asdasdsad asdasdsad \N 0 pending_payment bank_transfer 14 asdsada@asdsad.com PK \N \N 2025-12-09 05:55:15.675964+00 2025-12-09 05:55:15.67597+00 1096 2026-01-12 10:06:29.849132+00 \N - \N \N \N 5 0
+96 t 2025-12-09 06:12:07.788721+00 2025-12-23 06:12:07.788721+00 \N asdasdasd asdasdasd \N 0 pending_payment bank_transfer 14 sadasdas@asdasda.com PK \N \N 2025-12-09 05:44:02.857643+00 2025-12-09 05:44:02.857659+00 1097 2026-01-12 10:06:29.849828+00 \N - \N \N \N 2 0
+95 t 2025-12-09 06:12:07.79003+00 2025-12-23 06:12:07.79003+00 \N sdsdds sdsdds \N 1000 trial bank_transfer 14 fdfsdf@dksdsds.com \N \N 2025-12-09 05:40:43.689251+00 2025-12-09 05:40:43.689265+00 1098 2026-01-12 10:06:29.850667+00 \N - \N \N \N 1 0
+94 t 2025-12-09 06:12:07.791002+00 2025-12-23 06:12:07.791002+00 \N asdsadasd asdsadasd \N 1000 trial bank_transfer 14 sdsdsd@asdsadas.com \N \N 2025-12-09 05:35:33.526448+00 2025-12-09 05:35:33.526457+00 1099 2026-01-12 10:06:29.851469+00 \N - \N \N \N 1 0
+93 t 2025-12-09 06:12:07.791963+00 2025-12-23 06:12:07.791963+00 \N sadsadasd sadsadasd \N 1000 trial bank_transfer 14 asdasda@adsad.com \N \N 2025-12-09 05:31:13.840279+00 2025-12-09 05:31:13.840293+00 1100 2026-01-12 10:06:29.852222+00 \N - \N \N \N 1 0
+92 t 2025-12-09 06:12:07.793206+00 2025-12-23 06:12:07.793206+00 \N Free Salman free-salman \N 1000 trial bank_transfer 14 free@salman.com \N \N 2025-12-09 05:21:40.07927+00 2025-12-09 05:21:40.079286+00 1101 2026-01-12 10:06:29.852881+00 \N - \N \N \N 1 0
+91 t 2025-12-09 06:12:07.795038+00 2025-12-23 06:12:07.795038+00 \N Salman Alorig salman-alorig \N 0 pending_payment bank_transfer 14 salman@alorig.com PK \N \N 2025-12-09 05:07:26.824419+00 2025-12-09 05:07:26.824432+00 1102 2026-01-12 10:06:29.853526+00 \N - \N \N \N 2 0
+89 t 2025-12-28 23:30:50.570352+00 2026-01-11 23:30:50.570352+00 \N Paid 1 paid-1 \N 0 active bank_transfer 14 paid1@paid.com \N \N 2025-12-09 01:23:21.533612+00 2025-12-09 01:52:55.679624+00 1103 2026-01-12 10:06:29.854327+00 \N - \N \N \N 4 0
+88 t 2025-12-09 00:39:29.412583+00 2025-12-23 00:39:29.412583+00 \N asdasdsa asdasdsa \N 1000 trial bank_transfer 14 asdas@sdsad.com \N \N 2025-12-09 00:03:24.295864+00 2025-12-09 00:03:24.295875+00 1104 2026-01-12 10:06:29.855106+00 \N - \N \N \N 1 0
+87 t 2025-12-09 00:39:29.41681+00 2025-12-23 00:39:29.41681+00 \N Paid's Account paid-user-1765236936.066345 \N 1000 active stripe 14 billing@example.com 123 Main Street Karachi PK \N \N 2025-12-08 23:35:36.066838+00 2025-12-08 23:35:36.085204+00 1105 2026-01-12 10:06:29.855828+00 \N - \N \N \N 2 0
+86 t 2025-12-09 00:39:29.420024+00 2025-12-23 00:39:29.420024+00 \N Free's Account free-trial-1765236935.883199 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:35:35.88385+00 2025-12-08 23:35:35.883857+00 1106 2026-01-12 10:06:29.856574+00 \N - \N \N \N 1 0
+85 t 2025-12-08 23:35:35.652401+00 2025-12-22 23:35:35.652401+00 \N Paid's Account paid-user-1765236922.413418 \N 0 pending_payment stripe 14 billing@example.com 123 Main Street Karachi PK \N \N 2025-12-08 23:35:22.413812+00 2025-12-08 23:35:22.413817+00 1107 2026-01-12 10:06:29.857319+00 \N - \N \N \N 2 0
+84 t 2025-12-08 23:35:35.624964+00 2025-12-22 23:35:35.624964+00 \N Free's Account free-trial-1765236922.213135 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:35:22.213731+00 2025-12-08 23:35:22.213736+00 1108 2026-01-12 10:06:29.858034+00 \N - \N \N \N 1 0
+83 t 2025-12-08 23:35:22.017086+00 2025-12-22 23:35:22.017086+00 \N Paid's Account paid-user-1765236886.790393 \N 0 pending_payment stripe 14 billing@example.com 123 Main Street Karachi PK \N \N 2025-12-08 23:34:46.790848+00 2025-12-08 23:34:46.790853+00 1109 2026-01-12 10:06:29.858934+00 \N - \N \N \N 2 0
+82 t 2025-12-08 23:35:21.986575+00 2025-12-22 23:35:21.986575+00 \N Free's Account free-trial-1765236886.557967 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:34:46.558658+00 2025-12-08 23:34:46.558669+00 1110 2026-01-12 10:06:29.859692+00 \N - \N \N \N 1 0
+80 t 2025-12-08 23:34:46.354291+00 2025-12-22 23:34:46.354291+00 \N Free's Account free-trial-1765236768.239178 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:32:48.239665+00 2025-12-08 23:32:48.23967+00 1111 2026-01-12 10:06:29.860572+00 \N - \N \N \N 1 0
+78 t 2025-12-08 23:32:48.023042+00 2025-12-22 23:32:48.023042+00 \N Free's Account free-trial-1765236734.737537 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:32:14.738109+00 2025-12-08 23:32:14.738115+00 1112 2026-01-12 10:06:29.861567+00 \N - \N \N \N 1 0
+77 t 2025-12-08 23:32:14.518655+00 2025-12-22 23:32:14.518655+00 \N Free's Account free-trial-1765236716.736076 \N 1000 trial stripe 14 \N \N \N 2025-12-08 23:31:56.738159+00 2025-12-08 23:31:56.738169+00 1113 2026-01-12 10:06:29.862317+00 \N - \N \N \N 1 0
+74 t 2025-12-09 00:39:29.421968+00 2025-12-23 00:39:29.421968+00 \N Test Account test-account \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:49:45.814379+00 2025-12-08 18:49:45.814392+00 1114 2026-01-12 10:06:29.863111+00 \N - \N \N \N 1 0
+73 t 2025-12-09 00:39:29.422994+00 2025-12-23 00:39:29.422994+00 \N asdasdadaadsasd asdasdadaadsasd \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:28:52.692428+00 2025-12-08 18:28:52.69244+00 1115 2026-01-12 10:06:29.86372+00 \N - \N \N \N 1 0
+72 t 2025-12-09 00:39:29.424025+00 2025-12-23 00:39:29.424025+00 \N adsasdsa adsasdsa \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:24:10.678199+00 2025-12-08 18:24:10.678217+00 1116 2026-01-12 10:06:29.864395+00 \N - \N \N \N 1 0
+39 t 2025-12-09 00:39:29.424928+00 2025-12-23 00:39:29.424928+00 \N asdklasjdk asdklasjdk \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:21:47.623842+00 2025-12-08 18:21:47.623852+00 1117 2026-01-12 10:06:29.865247+00 \N - \N \N \N 1 0
+38 t 2025-12-09 00:39:29.425965+00 2025-12-23 00:39:29.425965+00 \N abc abc \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:16:11.894674+00 2025-12-08 18:16:11.894688+00 1118 2026-01-12 10:06:29.866012+00 \N - \N \N \N 1 0
+37 t 2025-12-09 00:39:29.426862+00 2025-12-23 00:39:29.426862+00 \N Debug Test debug-test \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:14:28.655447+00 2025-12-08 18:14:28.655458+00 1119 2026-01-12 10:06:29.866756+00 \N - \N \N \N 1 0
+36 t 2025-12-09 00:39:29.427876+00 2025-12-23 00:39:29.427876+00 \N Alorig 6 alorig-6 \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:08:21.885756+00 2025-12-08 18:08:21.885766+00 1120 2026-01-12 10:06:29.867491+00 \N - \N \N \N 1 0
+35 t 2025-12-09 00:39:29.429062+00 2025-12-23 00:39:29.429062+00 \N Alorig 5 alorig-5 \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 18:04:12.480318+00 2025-12-08 18:04:12.480327+00 1121 2026-01-12 10:06:29.868251+00 \N - \N \N \N 1 0
+34 t 2025-12-09 00:39:29.430192+00 2025-12-23 00:39:29.430192+00 \N New User new-user \N 1000 trial bank_transfer 14 \N \N \N 2025-12-08 17:44:18.620096+00 2025-12-08 17:44:18.620103+00 1122 2026-01-12 10:06:29.868982+00 \N - \N \N \N 1 0
+33 t 2025-12-09 00:39:29.431533+00 2025-12-23 00:39:29.431533+00 \N Test User456 test-user456 \N 100 trial bank_transfer 14 \N \N \N 2025-12-08 17:43:33.282346+00 2025-12-08 17:43:33.282361+00 1123 2026-01-12 10:06:29.869639+00 \N - \N \N \N 1 0
+32 t 2025-12-08 08:56:13.981751+00 2025-12-22 08:56:13.981751+00 \N Alorig 2 alorig-2 \N 100 trial bank_transfer 14 \N \N \N 2025-12-08 08:52:13.331065+00 2025-12-08 08:52:13.331076+00 1124 2026-01-12 10:06:29.8703+00 \N - \N \N \N 1 0
+31 t 2025-12-08 08:56:13.985052+00 2025-12-22 08:56:13.985052+00 \N Alorig1 alorig1 \N 0 pending_payment bank_transfer 14 \N \N \N 2025-12-08 08:37:17.702577+00 2025-12-08 08:37:17.702588+00 1125 2026-01-12 10:06:29.871017+00 \N - \N \N \N 4 0
+30 t 2025-12-08 08:56:13.986679+00 2025-12-22 08:56:13.986679+00 \N TacBit tacbit \N 100 trial stripe 14 \N \N \N 2025-12-08 06:13:38.583555+00 2025-12-08 06:22:32.243818+00 1126 2026-01-12 10:06:29.871631+00 \N - \N \N \N 1 0
+29 t 2025-12-28 23:30:50.581737+00 2026-01-11 23:30:50.581737+00 \N Home G8 home-g8 \N 8000 active stripe 14 \N \N \N 2025-12-07 08:57:12.044018+00 2025-12-07 14:11:16.788723+00 1127 2026-01-12 10:06:29.872289+00 \N - \N \N \N 2 0
+28 t 2025-12-08 08:56:13.988502+00 2025-12-22 08:56:13.988502+00 \N Auto Remote auto-remote \N 0 trial stripe 14 \N \N \N 2025-12-07 07:49:39.402328+00 2025-12-07 07:49:39.402335+00 1128 2026-01-12 10:06:29.872943+00 \N - \N \N \N 6 0
+27 t 2025-12-08 08:56:13.990073+00 2025-12-22 08:56:13.990073+00 \N testing ssytem testing-ssytem \N 0 trial stripe 14 \N \N \N 2025-12-07 07:45:23.70806+00 2025-12-07 07:45:23.708069+00 1129 2026-01-12 10:06:29.873516+00 \N - \N \N \N 6 0
+26 t 2025-12-08 08:56:13.99266+00 2025-12-22 08:56:13.99266+00 \N Slug Fix slug-fix \N 0 trial stripe 14 \N \N \N 2025-12-07 07:44:18.847776+00 2025-12-07 07:44:18.847789+00 1130 2026-01-12 10:06:29.874214+00 \N - \N \N \N 6 0
+25 t 2025-12-08 08:56:13.993772+00 2025-12-22 08:56:13.993772+00 \N Salman Raza Sadiq salman-raza-sadiq \N 0 trial stripe 14 \N \N \N 2025-12-07 07:38:47.707388+00 2025-12-07 07:38:47.707398+00 1131 2026-01-12 10:06:29.874881+00 \N - \N \N \N 6 0
+19 t 2025-12-07 07:33:43.511567+00 2025-12-21 07:33:43.511567+00 \N Salman Sadiq salman-sadiq \N 4500 active stripe 14 \N \N \N 2025-11-20 01:34:16.481172+00 2025-11-20 01:36:16.781712+00 1132 2026-01-12 10:06:29.875494+00 \N - \N \N \N 5 0
+18 t 2025-12-07 02:21:30.884172+00 2025-12-21 02:21:30.884172+00 \N test3 test3 \N 0 trial stripe 14 \N \N \N 2025-11-14 16:08:18.880277+00 2025-11-14 16:08:18.880285+00 1133 2026-01-12 10:06:29.87613+00 \N - \N \N \N 1 0
+17 t 2025-12-07 02:21:30.886458+00 2025-12-21 02:21:30.886458+00 \N test2 test2 \N 0 trial stripe 14 \N \N \N 2025-11-14 16:03:17.312034+00 2025-11-14 16:03:17.312057+00 1134 2026-01-12 10:06:29.876789+00 \N - \N \N \N 1 0
+\.
+
+
+--
+-- Data for Name: igny8_credit_cost_config; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_credit_cost_config (operation_type, display_name, description, is_active, calculation_mode, flat_rate_credits, per_item_credits, per_item_unit, base_credits) FROM stdin;
+clustering Keyword Clustering AI-powered keyword clustering into semantic groups t flat_rate 10 \N 1 1
+content_generation Content Generation AI-powered article content generation t per_item \N 0.01 100 1
+idea_generation Content Ideas Generation Generate content ideas from keyword clusters t per_item \N 2.00 1 1
+image_generation Image Generation AI-powered image generation t per_image 5 \N 1 1
+image_prompt_extraction Image Prompt Extraction Extract image prompts from content t per_tokens \N \N 1 1
+site_structure_generation Site Structure Generation Generate complete site blueprint f per_tokens \N \N 1 1
+site_page_generation Site Page Generation Generate site pages from blueprint f per_tokens \N \N 1 1
+linking Internal Linking AI-powered internal link suggestions f flat_rate 8 \N 1 1
+optimization Content Optimization AI-powered content optimization f per_item \N 0.01 100 1
+reparse Content Reparse Reparse existing content f flat_rate 1 \N 1 1
+\.
+
+
+--
+-- Data for Name: igny8_credit_packages; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_credit_packages (id, name, slug, credits, price, discount_percentage, stripe_product_id, stripe_price_id, paypal_plan_id, is_active, is_featured, description, features, sort_order, created_at, updated_at) FROM stdin;
+1 Starter Pack starter-pack 1000 9.99 0 \N \N \N t f Perfect for trying out the platform [] 1 2025-12-04 23:47:42.610533+00 2025-12-04 23:47:42.610554+00
+3 Business Pack business-pack 15000 99.99 30 \N \N \N t f Ideal for established businesses [] 3 2025-12-04 23:47:42.617445+00 2025-12-04 23:47:42.617453+00
+4 Enterprise Pack enterprise-pack 50000 299.99 40 \N \N \N t t Maximum value for high-volume users [] 4 2025-12-04 23:47:42.619287+00 2025-12-04 23:47:42.619296+00
+\.
+
+
+--
+-- Data for Name: igny8_credit_transactions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_credit_transactions (id, updated_at, transaction_type, amount, balance_after, description, metadata, created_at, tenant_id, reference_id, payment_id) FROM stdin;
+527 2025-12-29 02:39:14.141213+00 deduction -3 651 clustering: 2715 tokens (2537 in, 178 out) = 3 credits {"count": 1, "function_name": "auto_cluster", "clusters_created": 1, "keywords_updated": 6} 2025-12-29 02:39:14.1413+00 90 \N
+528 2025-12-29 02:39:34.9522+00 deduction -5 646 idea_generation: 4197 tokens (1753 in, 2444 out) = 5 credits {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:39:34.952227+00 90 \N
+529 2025-12-29 02:40:10.312593+00 deduction -6 640 content_generation: 5558 tokens (2200 in, 3358 out) = 6 credits {"count": 1, "task_id": 288, "content_id": 200, "word_count": 1772, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:40:10.312643+00 90 \N
+530 2025-12-29 02:40:39.140263+00 deduction -6 634 content_generation: 5659 tokens (2041 in, 3618 out) = 6 credits {"count": 1, "task_id": 287, "content_id": 201, "word_count": 1910, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:40:39.140296+00 90 \N
+531 2025-12-29 02:41:08.576495+00 deduction -6 628 content_generation: 5198 tokens (2101 in, 3097 out) = 6 credits {"count": 1, "task_id": 286, "content_id": 202, "word_count": 1778, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:08.576517+00 90 \N
+532 2025-12-29 02:41:44.664444+00 deduction -6 622 content_generation: 5364 tokens (2093 in, 3271 out) = 6 credits {"count": 1, "task_id": 285, "content_id": 203, "word_count": 1732, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:44.664463+00 90 \N
+533 2025-12-29 02:41:57.554114+00 deduction -2 620 image_prompt_extraction: 1407 tokens (607 in, 800 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:57.554137+00 90 \N
+534 2025-12-29 02:42:06.162079+00 deduction -2 618 image_prompt_extraction: 1295 tokens (613 in, 682 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:06.162101+00 90 \N
+535 2025-12-29 02:42:14.314136+00 deduction -2 616 image_prompt_extraction: 1305 tokens (609 in, 696 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:14.314157+00 90 \N
+536 2025-12-29 02:42:22.303018+00 deduction -2 614 image_prompt_extraction: 1301 tokens (599 in, 702 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:22.303038+00 90 \N
+537 2026-01-01 00:00:00.41308+00 subscription 10000 10323 Monthly credit replenishment - Internal (System/Superuser) plan {"plan_id": 6, "plan_name": "Internal (System/Superuser)", "monthly_credits": 10000, "replenishment_date": "2026-01-01T00:00:00.394050+00:00"} 2026-01-01 00:00:00.413126+00 5 \N
+538 2026-01-01 00:00:00.462641+00 subscription 2000 2614 Monthly credit replenishment - Growth plan {"plan_id": 4, "plan_name": "Growth", "monthly_credits": 2000, "replenishment_date": "2026-01-01T00:00:00.458237+00:00"} 2026-01-01 00:00:00.462676+00 90 \N
+539 2026-01-01 00:04:58.55052+00 deduction -3 2611 clustering: 2782 tokens (2535 in, 247 out) = 3 credits {"count": 2, "function_name": "auto_cluster", "clusters_created": 2, "keywords_updated": 6} 2026-01-01 00:04:58.550551+00 90 \N
+540 2026-01-01 00:05:24.293111+00 deduction -5 2606 idea_generation: 4078 tokens (1715 in, 2363 out) = 5 credits {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:05:24.293132+00 90 \N
+541 2026-01-01 00:05:46.72621+00 deduction -5 2601 idea_generation: 4154 tokens (1700 in, 2454 out) = 5 credits {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:05:46.726229+00 90 \N
+542 2026-01-01 00:06:25.709145+00 deduction -6 2595 content_generation: 5159 tokens (2167 in, 2992 out) = 6 credits {"count": 1, "task_id": 296, "content_id": 204, "word_count": 1683, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:06:25.70918+00 90 \N
+543 2026-01-01 00:06:52.453844+00 deduction -6 2589 content_generation: 5115 tokens (2023 in, 3092 out) = 6 credits {"count": 1, "task_id": 295, "content_id": 205, "word_count": 1728, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:06:52.453864+00 90 \N
+544 2026-01-01 00:07:24.669555+00 deduction -6 2583 content_generation: 5850 tokens (2054 in, 3796 out) = 6 credits {"count": 1, "task_id": 294, "content_id": 206, "word_count": 2114, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:07:24.669583+00 90 \N
+545 2026-01-01 00:07:59.699928+00 deduction -7 2576 content_generation: 6056 tokens (2028 in, 4028 out) = 7 credits {"count": 1, "task_id": 293, "content_id": 207, "word_count": 2222, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:07:59.699977+00 90 \N
+546 2026-01-01 00:08:32.549312+00 deduction -6 2570 content_generation: 5228 tokens (2189 in, 3039 out) = 6 credits {"count": 1, "task_id": 292, "content_id": 208, "word_count": 1643, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:08:32.549337+00 90 \N
+547 2026-01-01 00:09:15.286884+00 deduction -6 2564 content_generation: 5916 tokens (2019 in, 3897 out) = 6 credits {"count": 1, "task_id": 291, "content_id": 209, "word_count": 2119, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:09:15.286911+00 90 \N
+548 2026-01-01 00:09:48.76696+00 deduction -6 2558 content_generation: 5564 tokens (2074 in, 3490 out) = 6 credits {"count": 1, "task_id": 290, "content_id": 210, "word_count": 1878, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:09:48.766981+00 90 \N
+549 2026-01-01 00:10:19.192952+00 deduction -6 2552 content_generation: 5256 tokens (2068 in, 3188 out) = 6 credits {"count": 1, "task_id": 289, "content_id": 211, "word_count": 1670, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:19.19298+00 90 \N
+550 2026-01-01 00:10:32.326644+00 deduction -2 2550 image_prompt_extraction: 1316 tokens (608 in, 708 out) = 2 credits {"count": 3, "function_name": "generate_image_prompts", "prompts_created": 3, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:32.326667+00 90 \N
+551 2026-01-01 00:10:39.733542+00 deduction -2 2548 image_prompt_extraction: 1307 tokens (596 in, 711 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:39.733573+00 90 \N
+552 2026-01-01 00:10:47.058805+00 deduction -2 2546 image_prompt_extraction: 1296 tokens (590 in, 706 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:47.058834+00 90 \N
+553 2026-01-01 00:10:56.613206+00 deduction -2 2544 image_prompt_extraction: 1362 tokens (606 in, 756 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:56.613226+00 90 \N
+554 2026-01-01 00:11:05.938944+00 deduction -2 2542 image_prompt_extraction: 1362 tokens (605 in, 757 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:05.938981+00 90 \N
+555 2026-01-01 00:11:13.468177+00 deduction -2 2540 image_prompt_extraction: 1158 tokens (450 in, 708 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:13.468207+00 90 \N
+556 2026-01-01 00:11:21.34208+00 deduction -2 2538 image_prompt_extraction: 1329 tokens (609 in, 720 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:21.342105+00 90 \N
+557 2026-01-01 00:11:29.146435+00 deduction -2 2536 image_prompt_extraction: 1335 tokens (610 in, 725 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:29.146519+00 90 \N
+558 2026-01-03 17:52:05.373192+00 deduction -6 1876 content_generation: 5487 tokens (2167 in, 3320 out) = 6 credits {"count": 1, "task_id": 296, "content_id": 212, "word_count": 1837, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-03 17:52:05.373223+00 90 \N
+559 2026-01-03 17:52:34.680438+00 deduction -2 1874 image_prompt_extraction: 1315 tokens (595 in, 720 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 17:52:34.680459+00 90 \N
+560 2026-01-03 18:10:26.109281+00 deduction -2 1872 image_prompt_extraction: 1254 tokens (590 in, 664 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 18:10:26.109301+00 90 \N
+561 2026-01-03 18:14:28.85609+00 deduction -2 1870 image_prompt_extraction: 1318 tokens (609 in, 709 out) = 2 credits {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 18:14:28.85612+00 90 \N
+562 2026-01-06 00:11:36.550709+00 deduction -5 1865 Test image generation {} 2026-01-06 00:11:36.550753+00 90 \N
+586 2026-01-12 11:48:06.362921+00 deduction -1 1864 Image generation: 10 Best Back Massagers for Pain Relief in 2023 {"size": "1024x1024", "model": "runware:97@1", "image_id": 545, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:06.362971+00 90 \N
+587 2026-01-12 11:48:20.265273+00 deduction -1 1863 Image generation: 10 Best Back Massagers for Pain Relief in 2023 {"size": "1792x1024", "model": "runware:97@1", "image_id": 544, "provider": "runware", "content_id": 216, "image_type": "featured"} 2026-01-12 11:48:20.265306+00 90 \N
+588 2026-01-12 11:48:32.928017+00 deduction -1 1862 Image generation: 10 Best Back Massagers for Pain Relief in 2023 {"size": "1792x1024", "model": "runware:97@1", "image_id": 546, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:32.928036+00 90 \N
+589 2026-01-12 11:48:45.968113+00 deduction -1 1861 Image generation: 10 Best Back Massagers for Pain Relief in 2023 {"size": "1024x1024", "model": "runware:97@1", "image_id": 547, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:45.968136+00 90 \N
+590 2026-01-12 11:48:58.614413+00 deduction -1 1860 Image generation: 10 Best Back Massagers for Pain Relief in 2023 {"size": "1792x1024", "model": "runware:97@1", "image_id": 548, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:58.614458+00 90 \N
+591 2026-01-12 11:49:14.443325+00 deduction -1 1859 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1024x1024", "model": "runware:97@1", "image_id": 540, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:14.44335+00 90 \N
+592 2026-01-12 11:49:27.766234+00 deduction -1 1858 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1792x1024", "model": "runware:97@1", "image_id": 539, "provider": "runware", "content_id": 215, "image_type": "featured"} 2026-01-12 11:49:27.766262+00 90 \N
+593 2026-01-12 11:49:41.898911+00 deduction -1 1857 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1792x1024", "model": "runware:97@1", "image_id": 541, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:41.898953+00 90 \N
+594 2026-01-12 11:49:56.782125+00 deduction -1 1856 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1024x1024", "model": "runware:97@1", "image_id": 542, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:56.782144+00 90 \N
+595 2026-01-12 11:50:12.757407+00 deduction -1 1855 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1792x1024", "model": "runware:97@1", "image_id": 543, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:50:12.757432+00 90 \N
+596 2026-01-12 11:50:27.232592+00 deduction -1 1854 Image generation: How to Choose the Best Back Massager for Your Need {"size": "1024x1024", "model": "runware:97@1", "image_id": 535, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:50:27.232617+00 90 \N
+597 2026-01-12 11:50:42.181392+00 deduction -1 1853 Image generation: How to Choose the Best Back Massager for Your Need {"size": "1792x1024", "model": "runware:97@1", "image_id": 534, "provider": "runware", "content_id": 214, "image_type": "featured"} 2026-01-12 11:50:42.18142+00 90 \N
+598 2026-01-12 11:50:55.350627+00 deduction -1 1852 Image generation: How to Choose the Best Back Massager for Your Need {"size": "1792x1024", "model": "runware:97@1", "image_id": 536, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:50:55.350654+00 90 \N
+599 2026-01-12 11:51:07.230761+00 deduction -1 1851 Image generation: How to Choose the Best Back Massager for Your Need {"size": "1024x1024", "model": "runware:97@1", "image_id": 537, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:51:07.230796+00 90 \N
+600 2026-01-12 11:51:20.912464+00 deduction -1 1850 Image generation: How to Choose the Best Back Massager for Your Need {"size": "1792x1024", "model": "runware:97@1", "image_id": 538, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:51:20.91249+00 90 \N
+601 2026-01-12 11:51:36.235891+00 deduction -1 1849 Image generation: Complete Guide to the Best Back Massagers for Pain {"size": "1024x1024", "model": "runware:97@1", "image_id": 530, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:51:36.23591+00 90 \N
+602 2026-01-12 11:51:50.191826+00 deduction -1 1848 Image generation: Complete Guide to the Best Back Massagers for Pain {"size": "1792x1024", "model": "runware:97@1", "image_id": 529, "provider": "runware", "content_id": 213, "image_type": "featured"} 2026-01-12 11:51:50.191855+00 90 \N
+603 2026-01-12 11:52:03.009581+00 deduction -1 1847 Image generation: Complete Guide to the Best Back Massagers for Pain {"size": "1792x1024", "model": "runware:97@1", "image_id": 531, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:03.009611+00 90 \N
+604 2026-01-12 11:52:18.582391+00 deduction -1 1846 Image generation: Complete Guide to the Best Back Massagers for Pain {"size": "1024x1024", "model": "runware:97@1", "image_id": 532, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:18.58241+00 90 \N
+605 2026-01-12 11:52:32.654046+00 deduction -1 1845 Image generation: Complete Guide to the Best Back Massagers for Pain {"size": "1792x1024", "model": "runware:97@1", "image_id": 533, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:32.654072+00 90 \N
+606 2026-01-12 23:41:13.51092+00 deduction -1 1844 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1024x1024", "model": "runware:97@1", "image_id": 550, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:13.510998+00 90 \N
+607 2026-01-12 23:41:28.645179+00 deduction -1 1843 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1792x1024", "model": "runware:97@1", "image_id": 549, "provider": "runware", "content_id": 217, "image_type": "featured"} 2026-01-12 23:41:28.645225+00 90 \N
+608 2026-01-12 23:41:43.867726+00 deduction -1 1842 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1792x1024", "model": "runware:97@1", "image_id": 551, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:43.867746+00 90 \N
+609 2026-01-12 23:41:58.053531+00 deduction -1 1841 Image generation: Back Massagers vs. Traditional Massage: Which Is B {"size": "1024x1024", "model": "runware:97@1", "image_id": 552, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:58.053555+00 90 \N
+\.
+
+
+--
+-- Data for Name: igny8_credit_usage_logs; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_credit_usage_logs (id, updated_at, operation_type, credits_used, cost_usd, model_used, tokens_input, tokens_output, related_object_type, related_object_id, metadata, created_at, tenant_id, site_id) FROM stdin;
+705 2026-01-12 23:41:58.054224+00 image_generation 1 0.0090 runware:97@1 \N \N image 552 {"size": "1024x1024", "model": "runware:97@1", "image_id": 552, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:58.05428+00 90 21
+702 2026-01-12 23:41:13.516366+00 image_generation 1 0.0090 runware:97@1 \N \N image 550 {"size": "1024x1024", "model": "runware:97@1", "image_id": 550, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:13.516635+00 90 21
+700 2026-01-12 11:52:18.583129+00 image_generation 1 0.0090 runware:97@1 \N \N image 532 {"size": "1024x1024", "model": "runware:97@1", "image_id": 532, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:18.583165+00 90 21
+697 2026-01-12 11:51:36.236721+00 image_generation 1 0.0090 runware:97@1 \N \N image 530 {"size": "1024x1024", "model": "runware:97@1", "image_id": 530, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:51:36.236798+00 90 21
+694 2026-01-12 11:50:55.351622+00 image_generation 1 0.0090 runware:97@1 \N \N image 536 {"size": "1792x1024", "model": "runware:97@1", "image_id": 536, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:50:55.351668+00 90 21
+685 2026-01-12 11:48:45.968943+00 image_generation 1 0.0090 runware:97@1 \N \N image 547 {"size": "1024x1024", "model": "runware:97@1", "image_id": 547, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:45.968995+00 90 21
+682 2026-01-12 11:48:06.365168+00 image_generation 1 0.0090 runware:97@1 \N \N image 545 {"size": "1024x1024", "model": "runware:97@1", "image_id": 545, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:06.365274+00 90 21
+688 2026-01-12 11:49:27.767009+00 image_generation 1 0.0090 runware:97@1 \N \N image 539 {"size": "1792x1024", "model": "runware:97@1", "image_id": 539, "provider": "runware", "content_id": 215, "image_type": "featured"} 2026-01-12 11:49:27.767057+00 90 21
+691 2026-01-12 11:50:12.758539+00 image_generation 1 0.0090 runware:97@1 \N \N image 543 {"size": "1792x1024", "model": "runware:97@1", "image_id": 543, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:50:12.758585+00 90 21
+648 2025-12-29 02:39:14.144952+00 clustering 3 0.0050 gpt-5.1 2537 178 cluster \N {"count": 1, "function_name": "auto_cluster", "clusters_created": 1, "keywords_updated": 6} 2025-12-29 02:39:14.14534+00 90 21
+649 2025-12-29 02:39:34.952799+00 idea_generation 5 0.0266 gpt-5.1 1753 2444 content_idea \N {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:39:34.952842+00 90 21
+650 2025-12-29 02:40:10.313444+00 content_generation 6 0.0363 gpt-5.1 2200 3358 content 288 {"count": 1, "task_id": 288, "content_id": 200, "word_count": 1772, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:40:10.313512+00 90 21
+651 2025-12-29 02:40:39.140755+00 content_generation 6 0.0387 gpt-5.1 2041 3618 content 287 {"count": 1, "task_id": 287, "content_id": 201, "word_count": 1910, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:40:39.140788+00 90 21
+652 2025-12-29 02:41:08.576985+00 content_generation 6 0.0336 gpt-5.1 2101 3097 content 286 {"count": 1, "task_id": 286, "content_id": 202, "word_count": 1778, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:08.577027+00 90 21
+653 2025-12-29 02:41:44.664857+00 content_generation 6 0.0353 gpt-5.1 2093 3271 content 285 {"count": 1, "task_id": 285, "content_id": 203, "word_count": 1732, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:44.664887+00 90 21
+654 2025-12-29 02:41:57.554567+00 image_prompt_extraction 2 0.0088 gpt-5.1 607 800 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:41:57.554604+00 90 21
+655 2025-12-29 02:42:06.162608+00 image_prompt_extraction 2 0.0076 gpt-5.1 613 682 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:06.162641+00 90 21
+656 2025-12-29 02:42:14.314654+00 image_prompt_extraction 2 0.0077 gpt-5.1 609 696 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:14.314688+00 90 21
+657 2025-12-29 02:42:22.303472+00 image_prompt_extraction 2 0.0078 gpt-5.1 599 702 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2025-12-29 02:42:22.303505+00 90 21
+658 2026-01-01 00:04:58.552006+00 clustering 3 0.0056 gpt-5.1 2535 247 cluster \N {"count": 2, "function_name": "auto_cluster", "clusters_created": 2, "keywords_updated": 6} 2026-01-01 00:04:58.552205+00 90 21
+659 2026-01-01 00:05:24.293626+00 idea_generation 5 0.0258 gpt-5.1 1715 2363 content_idea \N {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:05:24.293661+00 90 21
+660 2026-01-01 00:05:46.726734+00 idea_generation 5 0.0267 gpt-5.1 1700 2454 content_idea \N {"count": 4, "function_name": "generate_ideas", "ideas_created": 4, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:05:46.726774+00 90 21
+661 2026-01-01 00:06:25.709842+00 content_generation 6 0.0326 gpt-5.1 2167 2992 content 296 {"count": 1, "task_id": 296, "content_id": 204, "word_count": 1683, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:06:25.709898+00 90 21
+662 2026-01-01 00:06:52.454338+00 content_generation 6 0.0334 gpt-5.1 2023 3092 content 295 {"count": 1, "task_id": 295, "content_id": 205, "word_count": 1728, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:06:52.454369+00 90 21
+663 2026-01-01 00:07:24.670167+00 content_generation 6 0.0405 gpt-5.1 2054 3796 content 294 {"count": 1, "task_id": 294, "content_id": 206, "word_count": 2114, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:07:24.670226+00 90 21
+664 2026-01-01 00:07:59.700906+00 content_generation 7 0.0428 gpt-5.1 2028 4028 content 293 {"count": 1, "task_id": 293, "content_id": 207, "word_count": 2222, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:07:59.700964+00 90 21
+665 2026-01-01 00:08:32.549853+00 content_generation 6 0.0331 gpt-5.1 2189 3039 content 292 {"count": 1, "task_id": 292, "content_id": 208, "word_count": 1643, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:08:32.549888+00 90 21
+681 2026-01-06 00:11:36.556686+00 image_generation 5 \N dall-e-3 \N \N \N {} 2026-01-06 00:11:36.556735+00 90 21
+701 2026-01-12 11:52:32.654928+00 image_generation 1 0.0090 runware:97@1 \N \N image 533 {"size": "1792x1024", "model": "runware:97@1", "image_id": 533, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:32.654971+00 90 21
+698 2026-01-12 11:51:50.19268+00 image_generation 1 0.0090 runware:97@1 \N \N image 529 {"size": "1792x1024", "model": "runware:97@1", "image_id": 529, "provider": "runware", "content_id": 213, "image_type": "featured"} 2026-01-12 11:51:50.192723+00 90 21
+695 2026-01-12 11:51:07.231586+00 image_generation 1 0.0090 runware:97@1 \N \N image 537 {"size": "1024x1024", "model": "runware:97@1", "image_id": 537, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:51:07.231625+00 90 21
+692 2026-01-12 11:50:27.23347+00 image_generation 1 0.0090 runware:97@1 \N \N image 535 {"size": "1024x1024", "model": "runware:97@1", "image_id": 535, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:50:27.233509+00 90 21
+686 2026-01-12 11:48:58.615684+00 image_generation 1 0.0090 runware:97@1 \N \N image 548 {"size": "1792x1024", "model": "runware:97@1", "image_id": 548, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:58.615789+00 90 21
+683 2026-01-12 11:48:20.266192+00 image_generation 1 0.0090 runware:97@1 \N \N image 544 {"size": "1792x1024", "model": "runware:97@1", "image_id": 544, "provider": "runware", "content_id": 216, "image_type": "featured"} 2026-01-12 11:48:20.266239+00 90 21
+689 2026-01-12 11:49:41.90044+00 image_generation 1 0.0090 runware:97@1 \N \N image 541 {"size": "1792x1024", "model": "runware:97@1", "image_id": 541, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:41.900499+00 90 21
+666 2026-01-01 00:09:15.287481+00 content_generation 6 0.0415 gpt-5.1 2019 3897 content 291 {"count": 1, "task_id": 291, "content_id": 209, "word_count": 2119, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:09:15.287526+00 90 21
+667 2026-01-01 00:09:48.767527+00 content_generation 6 0.0375 gpt-5.1 2074 3490 content 290 {"count": 1, "task_id": 290, "content_id": 210, "word_count": 1878, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:09:48.767561+00 90 21
+668 2026-01-01 00:10:19.193571+00 content_generation 6 0.0345 gpt-5.1 2068 3188 content 289 {"count": 1, "task_id": 289, "content_id": 211, "word_count": 1670, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:19.193608+00 90 21
+669 2026-01-01 00:10:32.327336+00 image_prompt_extraction 2 0.0078 gpt-5.1 608 708 image \N {"count": 3, "function_name": "generate_image_prompts", "prompts_created": 3, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:32.32738+00 90 21
+670 2026-01-01 00:10:39.734014+00 image_prompt_extraction 2 0.0079 gpt-5.1 596 711 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:39.734045+00 90 21
+671 2026-01-01 00:10:47.059336+00 image_prompt_extraction 2 0.0078 gpt-5.1 590 706 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:47.05938+00 90 21
+672 2026-01-01 00:10:56.613812+00 image_prompt_extraction 2 0.0083 gpt-5.1 606 756 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:10:56.613856+00 90 21
+673 2026-01-01 00:11:05.939718+00 image_prompt_extraction 2 0.0083 gpt-5.1 605 757 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:05.939761+00 90 21
+674 2026-01-01 00:11:13.468777+00 image_prompt_extraction 2 0.0076 gpt-5.1 450 708 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:13.468818+00 90 21
+675 2026-01-01 00:11:21.342646+00 image_prompt_extraction 2 0.0080 gpt-5.1 609 720 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:21.342686+00 90 21
+676 2026-01-01 00:11:29.146994+00 image_prompt_extraction 2 0.0080 gpt-5.1 610 725 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-01 00:11:29.147029+00 90 21
+677 2026-01-03 17:52:05.376517+00 content_generation 6 0.0359 gpt-5.1 2167 3320 content 296 {"count": 1, "task_id": 296, "content_id": 212, "word_count": 1837, "function_name": "generate_content", "clusters_created": 0, "keywords_updated": 0} 2026-01-03 17:52:05.376624+00 90 21
+678 2026-01-03 17:52:34.681152+00 image_prompt_extraction 2 0.0079 gpt-5.1 595 720 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 17:52:34.681186+00 90 21
+679 2026-01-03 18:10:26.110037+00 image_prompt_extraction 2 0.0074 gpt-5.1 590 664 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 18:10:26.11007+00 90 21
+680 2026-01-03 18:14:28.857052+00 image_prompt_extraction 2 0.0079 gpt-5.1 609 709 image \N {"count": 5, "function_name": "generate_image_prompts", "prompts_created": 5, "clusters_created": 0, "keywords_updated": 0} 2026-01-03 18:14:28.857092+00 90 21
+704 2026-01-12 23:41:43.868395+00 image_generation 1 0.0090 runware:97@1 \N \N image 551 {"size": "1792x1024", "model": "runware:97@1", "image_id": 551, "provider": "runware", "content_id": 217, "image_type": "in_article"} 2026-01-12 23:41:43.868429+00 90 21
+703 2026-01-12 23:41:28.646133+00 image_generation 1 0.0090 runware:97@1 \N \N image 549 {"size": "1792x1024", "model": "runware:97@1", "image_id": 549, "provider": "runware", "content_id": 217, "image_type": "featured"} 2026-01-12 23:41:28.646179+00 90 21
+699 2026-01-12 11:52:03.011292+00 image_generation 1 0.0090 runware:97@1 \N \N image 531 {"size": "1792x1024", "model": "runware:97@1", "image_id": 531, "provider": "runware", "content_id": 213, "image_type": "in_article"} 2026-01-12 11:52:03.01134+00 90 21
+696 2026-01-12 11:51:20.913451+00 image_generation 1 0.0090 runware:97@1 \N \N image 538 {"size": "1792x1024", "model": "runware:97@1", "image_id": 538, "provider": "runware", "content_id": 214, "image_type": "in_article"} 2026-01-12 11:51:20.913496+00 90 21
+693 2026-01-12 11:50:42.182791+00 image_generation 1 0.0090 runware:97@1 \N \N image 534 {"size": "1792x1024", "model": "runware:97@1", "image_id": 534, "provider": "runware", "content_id": 214, "image_type": "featured"} 2026-01-12 11:50:42.182864+00 90 21
+684 2026-01-12 11:48:32.928685+00 image_generation 1 0.0090 runware:97@1 \N \N image 546 {"size": "1792x1024", "model": "runware:97@1", "image_id": 546, "provider": "runware", "content_id": 216, "image_type": "in_article"} 2026-01-12 11:48:32.928764+00 90 21
+687 2026-01-12 11:49:14.444237+00 image_generation 1 0.0090 runware:97@1 \N \N image 540 {"size": "1024x1024", "model": "runware:97@1", "image_id": 540, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:14.444279+00 90 21
+690 2026-01-12 11:49:56.782902+00 image_generation 1 0.0090 runware:97@1 \N \N image 542 {"size": "1024x1024", "model": "runware:97@1", "image_id": 542, "provider": "runware", "content_id": 215, "image_type": "in_article"} 2026-01-12 11:49:56.782949+00 90 21
+\.
+
+
+--
+-- Data for Name: igny8_deployment_records; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_deployment_records (id, version, deployed_version, status, deployed_at, deployment_url, error_message, metadata, created_at, updated_at, tenant_id, sector_id, site_id, site_blueprint_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_email_log; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_email_log (id, message_id, to_email, from_email, subject, template_name, status, provider, error_message, tags, sent_at) FROM stdin;
+1 a0389ff5-a758-4192-a99d-98a81fde8737 test-tuzous8th@srv1.mail-tester.com support@igny8.com [TEST] Welcome to IGNY8! welcome sent resend ["test", "auth"] 2026-01-08 09:49:50.242985+00
+2 25ce1364-ce9e-4af9-951e-3f3526b528dc test-nepwlafep@srv1.mail-tester.com support@igny8.com [TEST] Welcome to IGNY8! welcome sent resend ["test", "auth"] 2026-01-08 10:03:06.265575+00
+3 07e36c1c-b6d0-4cd7-a95a-4bccf7b4d342 tacbit.com@gmail.com support@igny8.com [TEST] Welcome to IGNY8! welcome sent resend ["test", "auth"] 2026-01-08 10:05:12.405064+00
+4 3c5cb115-898d-47c1-a6df-3da3344efeff test-7uywffsfo@srv1.mail-tester.com support@igny8.com [TEST] Welcome to IGNY8! welcome sent resend ["test", "auth"] 2026-01-08 10:28:42.522402+00
+5 a43ba8be-9552-434c-88fa-a7a55f51b69b test-r7ia9xqs5@srv1.mail-tester.com support@igny8.com [TEST] Welcome to IGNY8! welcome sent resend ["test", "auth"] 2026-01-08 11:54:16.997143+00
+6 c7c92cea-93a8-4d8b-a1b0-b51ce33f5bc1 bluesalman@hotmail.com support@igny8.com [TEST] Subscription Renewal Reminder subscription_renewal sent resend ["test", "billing"] 2026-01-12 13:43:50.796824+00
+\.
+
+
+--
+-- Data for Name: igny8_email_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_email_settings (id, from_email, from_name, reply_to_email, company_name, company_address, logo_url, support_email, support_url, unsubscribe_url, send_welcome_emails, send_billing_emails, send_subscription_emails, send_low_credit_warnings, low_credit_threshold, renewal_reminder_days, updated_at, updated_by_id, email_provider, smtp_host, smtp_password, smtp_port, smtp_timeout, smtp_use_ssl, smtp_use_tls, smtp_username) FROM stdin;
+1 support@igny8.com IGNY8 support@igny8.com IGNY8 AI SEO 17595 Harvard Ave, Suite C,\r\nIrvine, California, 92614 https://app.igny8.com/images/logo/IGNY8_DARK_LOGO.png support@igny8.com https://igny8.com/contact https://app.igny8.com/account/settings t t t t 100 7 2026-01-08 05:20:08.295364+00 3 resend 587 30 f t
+\.
+
+
+--
+-- Data for Name: igny8_email_templates; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_email_templates (id, template_name, template_path, display_name, description, template_type, default_subject, required_context, sample_context, is_active, send_count, last_sent_at, created_at, updated_at) FROM stdin;
+2 password_reset emails/password_reset.html Password Reset Sent when user requests password reset auth Reset Your IGNY8 Password ["user_name", "reset_url", "frontend_url"] {"reset_url": "https://app.igny8.com/reset?token=abc123", "user_name": "John", "frontend_url": "https://app.igny8.com"} t 0 \N 2026-01-08 01:24:08.786441+00 2026-01-08 01:24:08.786449+00
+3 email_verification emails/email_verification.html Email Verification Sent to verify user email address auth Verify Your IGNY8 Email ["user_name", "verification_url", "frontend_url"] {"user_name": "John", "frontend_url": "https://app.igny8.com", "verification_url": "https://app.igny8.com/verify?token=abc123"} t 0 \N 2026-01-08 01:24:08.788642+00 2026-01-08 01:24:08.78865+00
+4 payment_confirmation emails/payment_confirmation.html Payment Confirmation Sent when user submits payment for approval billing Payment Confirmation Received ["account_name", "invoice_number", "amount", "currency", "payment_method"] {"amount": "99.00", "currency": "USD", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "invoice_number": "INV-001", "payment_method": "Bank Transfer", "manual_reference": "REF123"} t 0 \N 2026-01-08 01:24:08.790751+00 2026-01-08 01:24:08.790758+00
+5 payment_approved emails/payment_approved.html Payment Approved Sent when payment is approved and account activated billing Payment Approved - Account Activated ["account_name", "invoice_number", "amount", "plan_name"] {"amount": "99.00", "currency": "USD", "plan_name": "Starter Plan", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "dashboard_url": "https://app.igny8.com/dashboard", "invoice_number": "INV-001"} t 0 \N 2026-01-08 01:24:08.792752+00 2026-01-08 01:24:08.792757+00
+6 payment_rejected emails/payment_rejected.html Payment Rejected Sent when payment is rejected/declined billing Payment Declined - Action Required ["account_name", "invoice_number", "reason"] {"amount": "99.00", "reason": "Invalid reference number", "currency": "USD", "billing_url": "https://app.igny8.com/account/billing", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "invoice_number": "INV-001"} t 0 \N 2026-01-08 01:24:08.795233+00 2026-01-08 01:24:08.795243+00
+7 payment_failed emails/payment_failed.html Payment Failed Sent when automatic payment fails billing Payment Failed - Action Required ["account_name", "plan_name", "failure_reason"] {"plan_name": "Starter Plan", "billing_url": "https://app.igny8.com/account/plans", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "failure_reason": "Card declined"} t 0 \N 2026-01-08 01:24:08.797531+00 2026-01-08 01:24:08.797537+00
+8 subscription_activated emails/subscription_activated.html Subscription Activated Sent when subscription is activated billing Subscription Activated ["account_name", "plan_name", "included_credits"] {"plan_name": "Starter Plan", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "dashboard_url": "https://app.igny8.com/dashboard", "included_credits": 5000} t 0 \N 2026-01-08 01:24:08.80002+00 2026-01-08 01:24:08.800032+00
+10 refund_notification emails/refund_notification.html Refund Notification Sent when refund is processed billing Refund Processed ["user_name", "invoice_number", "refund_amount", "reason"] {"reason": "Customer request", "currency": "USD", "user_name": "John", "frontend_url": "https://app.igny8.com", "refund_amount": "99.00", "invoice_number": "INV-001", "original_amount": "99.00"} t 0 \N 2026-01-08 01:24:08.80495+00 2026-01-08 01:24:08.804958+00
+11 low_credits emails/low_credits.html Low Credits Warning Sent when account credits fall below threshold notification Low Credits Warning - IGNY8 ["account_name", "current_credits", "threshold"] {"threshold": 100, "topup_url": "https://app.igny8.com/account/usage", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "current_credits": 50} t 0 \N 2026-01-08 01:24:08.807352+00 2026-01-08 01:24:08.80736+00
+9 subscription_renewal emails/subscription_renewal.html Subscription Renewal Reminder Sent before subscription renewal billing Subscription Renewal Reminder ["account_name", "plan_name", "renewal_date", "days_until_renewal"] {"amount": "99.00", "currency": "USD", "plan_name": "Starter Plan", "account_name": "Test Account", "frontend_url": "https://app.igny8.com", "renewal_date": "2026-01-15", "subscription_url": "https://app.igny8.com/account/plans", "days_until_renewal": 7} t 1 2026-01-12 13:43:50.793686+00 2026-01-08 01:24:08.80268+00 2026-01-08 01:24:08.80269+00
+1 welcome emails/welcome.html Welcome Email Sent to new users after registration auth Welcome to IGNY8! ["user_name", "account_name", "login_url", "frontend_url"] {"login_url": "https://app.igny8.com/login", "user_name": "John", "account_name": "Test Account", "frontend_url": "https://app.igny8.com"} t 5 2026-01-08 11:54:16.986286+00 2026-01-08 01:24:08.783368+00 2026-01-08 01:24:08.783377+00
+\.
+
+
+--
+-- Data for Name: igny8_global_ai_prompts; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_global_ai_prompts (id, prompt_type, prompt_value, description, variables, is_active, version, last_updated, created_at) FROM stdin;
+1 clustering # Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n "keywords": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n "clusters": [\r\n {\r\n "name": "...",\r\n "description": "...",\r\n "keywords": ["...", "...", "..."]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- "best foot massagers for plantar fasciitis"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- "heated shiatsu back massager"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- "are back massagers safe during pregnancy"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - "what causes plantar fasciitis" → "best treatments for plantar fasciitis" → "foot massagers for plantar fasciitis"\r\n \r\n- **General → Specific → Variant**\r\n - "foot massagers" → "shiatsu foot massagers" → "heated shiatsu foot massagers"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - "do vitamin c serums work" → "how vitamin c brightens skin" → "best vitamin c serums" → "vitamin c vs retinol"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - "heated massagers" → "heated vs unheated massagers" → "heated massagers for arthritis"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ "foot massagers for plantar fasciitis" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ "vitamin c serums for brightening" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ "massagers" (too broad, no natural ecosystem)\r\n- ❌ "renpho foot massager cord length" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - "back massager" + "back support pillow" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n "clusters": [\r\n {\r\n "name": "[Natural, SEO-relevant cluster name representing the root topic]",\r\n "description": "[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]",\r\n "keywords": ["keyword 1", "keyword 2", "keyword 3", "..."]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- "Foot Massagers for Plantar Fasciitis Treatment"\r\n- "Organic Cotton Bedding for Summer"\r\n- "Vitamin C Serums for Skin Brightening"\r\n- "Waterproof Car Trunk Organizers"\r\n\r\n**Poor Cluster Names:**\r\n- "Massagers" (too broad)\r\n- "Products" (meaningless)\r\n- "Heated" (just a feature, not a topic)\r\n- "Queries about safety" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY]."\r\n\r\n**Example:**\r\n"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options."\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** "All keywords with 'heated' go together"\r\n❌ **Forced categorization:** "Must fit everything into clusters"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use "informational" or "commercial" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** "massage" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n "name": "Heated Shiatsu Back Massagers for Pain Relief",\r\n "description": "This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.",\r\n "keywords": [\r\n "heated back massagers",\r\n "shiatsu back massager with heat",\r\n "best heated massagers for back pain",\r\n "do heated massagers help muscle pain",\r\n "heated vs unheated back massagers",\r\n "shiatsu massage for lower back pain"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n "name": "Organic Cotton Bed Sheets for Hot Sleepers",\r\n "description": "This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.",\r\n "keywords": [\r\n "organic cotton sheets for summer",\r\n "best cooling cotton bed sheets",\r\n "breathable organic cotton bedding",\r\n "cotton vs linen sheets for hot sleepers",\r\n "organic cotton king size sheets",\r\n "are cotton sheets good for hot weather"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n "name": "Massager Products",\r\n "keywords": [\r\n "foot massagers",\r\n "back massagers", \r\n "neck massagers",\r\n "massage oils",\r\n "massage chairs"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word "massage" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters. {"clusters": [{"name": "...", "keywords": ["...", "...", "..."], "description": "..."}]} t 1 2025-12-20 19:25:26.256456+00 2025-12-20 12:53:51.902206+00
+2 ideas # SEO Content Idea Generator\r\n\r\nYou are a content strategist. Generate content ideas and simple outlines for keyword clusters. The actual content will be written by a separate system.\r\n\r\n---\r\n\r\n## INPUT FORMAT\r\n\r\n**Clusters to analyze:**\r\n[IGNY8_CLUSTERS]\r\n\r\n**Keywords in each cluster:**\r\n[IGNY8_CLUSTER_KEYWORDS]\r\n\r\n---\r\n\r\n## OUTPUT REQUIREMENTS\r\n\r\nGenerate exactly **4 content ideas per cluster**:\r\n- 1 cluster hub page (comprehensive overview)\r\n- 3 supporting articles (focused on specific angles)\r\n\r\n---\r\n\r\n## OUTPUT JSON OBJECT STRUCTURE\r\n\r\n\r\n## OUTPUT JSON OBJECT STRUCTURE\r\n{\r\n "ideas": [\r\n {\r\n "title": "[Compelling title with primary keyword]",\r\n "description": {\r\n "overview": "[2-3 sentence description of what this content covers and its unique angle]",\r\n "outline": {\r\n "intro_focus": "[What the introduction should establish]",\r\n "main_sections": [\r\n {\r\n "h2_topic": "[Section topic/angle]",\r\n "coverage": "[What this section should cover - 1 sentence]"\r\n }\r\n ]\r\n }\r\n },\r\n "covered_keywords": "[3-8 relevant keywords from cluster, comma-separated]",\r\n "content_type": "post|page",\r\n "content_structure": "cluster_hub|guide_tutorial|how_to|comparison|review|top_listicle|question",\r\n "cluster_id": "[Cluster ID number]",\r\n "estimated_word_count": 1500\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CONTENT STRUCTURE BY TYPE\r\n\r\n### Cluster Hub (1 per cluster)\r\n- **Purpose**: Comprehensive overview of entire topic cluster\r\n- **Sections**: 8-10 H2 sections\r\n- **Coverage**: Introduces all major subtopics, links to supporting content\r\n- **Keywords**: Covers 5-8 keywords from cluster naturally\r\n\r\n### Guide/Tutorial (Supporting)\r\n- **Purpose**: Step-by-step educational content\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Process-oriented, actionable steps\r\n- **Keywords**: Focuses on 2-4 specific keywords\r\n\r\n### How-To (Supporting)\r\n- **Purpose**: Solve a specific problem\r\n- **Sections**: 5-7 H2 sections\r\n- **Coverage**: Problem → solution framework\r\n- **Keywords**: Long-tail, question-based keywords\r\n\r\n### Comparison (Supporting)\r\n- **Purpose**: Compare options/alternatives\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Feature analysis, pros/cons, recommendations\r\n- **Keywords**: "vs", "best", "alternative" keywords\r\n\r\n### Review (Supporting)\r\n- **Purpose**: Evaluate specific products/services\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Features, testing, verdict\r\n- **Keywords**: Product/brand names + descriptive terms\r\n\r\n### Top Listicle (Supporting)\r\n- **Purpose**: Curated ranked list\r\n- **Sections**: 6-8 H2 sections (intro + items + conclusion)\r\n- **Coverage**: Criteria, ranked items, selection guide\r\n- **Keywords**: "best", "top", number-based keywords\r\n\r\n### Question (Supporting)\r\n- **Purpose**: Answer specific query\r\n- **Sections**: 5-7 H2 sections\r\n- **Coverage**: Question → context → answer → implications\r\n- **Keywords**: Question keywords, related queries\r\n\r\n---\r\n\r\n## OUTLINE REQUIREMENTS\r\n\r\nFor each idea, provide:\r\n\r\n1. **Intro Focus**: What angle/hook the introduction should take (1 sentence)\r\n\r\n2. **Main Sections**: 5-10 H2 topics with brief coverage notes\r\n - List the H2 section topics only\r\n - 1 sentence on what each section should cover\r\n - No need for H3 breakdown (content generator will handle)\r\n - No formatting details (content generator will handle)\r\n\r\n3. **Section suggestions**:\r\n - Foundation/basics sections (if needed)\r\n - Core concept sections (main body)\r\n - Application/implementation sections\r\n - Advanced/future sections (if appropriate)\r\n\r\n---\r\n\r\n## TITLE GUIDELINES\r\n\r\n- Naturally include primary keyword\r\n- 50-65 characters ideal\r\n- Compelling and specific\r\n- Match content structure type:\r\n - Hub: "Complete Guide to [Topic]"\r\n - How-to: "How to [Action] [Object/Goal]"\r\n - Comparison: "[X] vs [Y]: Which Is Better?"\r\n - Review: "[Product/Service] Review: [Key Benefit]"\r\n - Listicle: "[Number] Best [Items] for [Purpose]"\r\n - Question: "[Question Using Primary Keyword]?"\r\n\r\n---\r\n\r\n## KEYWORD COVERAGE\r\n\r\n### Covered Keywords (5-8 per idea)\r\nList all relevant keywords from the cluster that this content will naturally address:\r\n- Include the main keyword that appears in the title\r\n- Include related search terms from cluster\r\n- Include natural variations and long-tail keywords\r\n- Include supporting/related terms\r\n\r\n**The content generator will automatically:**\r\n- Identify the primary keyword from title and context\r\n- Categorize remaining keywords as secondary\r\n- Optimize keyword placement and density\r\n\r\n### Coverage Strategy\r\n- **Cluster Hub**: 6-10 keywords (comprehensive coverage)\r\n- **Supporting Content**: 4-6 keywords (focused coverage)\r\n\r\n---\r\n\r\n## CONTENT ANGLE REQUIREMENTS\r\n\r\nEach idea must have a **unique angle**:\r\n\r\n✓ Different content structure types across the 4 ideas\r\n✓ Different target intents (informational, commercial, navigational)\r\n✓ Different depth levels (overview vs deep-dive)\r\n✓ No duplicate section topics across ideas in same cluster\r\n\r\n**Example for "Email Marketing" cluster:**\r\n1. Hub: "Complete Guide to Email Marketing" \r\n - covered_keywords: "email marketing, email campaigns, newsletter marketing, email automation, email list building, email marketing strategy"\r\n2. Supporting: "How to Build an Email List from Scratch"\r\n - covered_keywords: "email list building, grow email list, subscriber acquisition, lead magnets, email signup forms"\r\n3. Supporting: "Mailchimp vs ConvertKit: Email Platform Comparison"\r\n - covered_keywords: "mailchimp vs convertkit, email marketing platforms, email software comparison, best email tools"\r\n4. Supporting: "10 Best Email Marketing Tools for Small Businesses"\r\n - covered_keywords: "email marketing tools, email software, email marketing platforms, small business email marketing"\r\n\r\n---\r\n\r\n## QUALITY CHECKS\r\n\r\nBefore finalizing, verify:\r\n- ✓ 4 ideas per cluster (1 hub + 3 supporting)\r\n- ✓ Each idea has unique content_structure type\r\n- ✓ Title includes a relevant keyword from cluster\r\n- ✓ 5-10 H2 sections outlined per idea\r\n- ✓ 5-8 covered_keywords listed per idea\r\n- ✓ Content angles don't overlap\r\n- ✓ Valid JSON format\r\n\r\n---\r\n\r\n## OUTPUT FORMAT\r\n\r\nReturn ONLY valid JSON with no comments or explanations.\r\n\r\nThe "outline" object should be simple and high-level - just enough to guide the content generator. The actual detailed structure, word counts, formatting, H3 subsections, lists, tables, etc. will be handled by the content generation system.\r\n\r\n---\r\n\r\n## WHAT NOT TO INCLUDE\r\n\r\n❌ Detailed H3 subsections (content generator handles this)\r\n❌ Specific formatting instructions (paragraph/list/table details)\r\n❌ Word count per section (content generator calculates)\r\n❌ Detailed content descriptions (keep coverage notes brief)\r\n❌ HTML structure (content generator outputs HTML)\r\n❌ Introduction hook text (content generator writes this)\r\n\r\nKeep outlines strategic and high-level. Let the content generation system handle tactical execution. {"ideas": [{"title": "[Compelling title with primary keyword]", "cluster_id": "[Cluster ID number]", "description": {"outline": {"intro_focus": "[What the introduction should establish]", "main_sections": [{"coverage": "[What this section should cover - 1 sentence]", "h2_topic": "[Section topic/angle]"}]}, "overview": "[2-3 sentence description of what this content covers and its unique angle]"}, "content_type": "post|page", "covered_keywords": "[3-8 relevant keywords from cluster, comma-separated]", "content_structure": "cluster_hub|guide_tutorial|how_to|comparison|review|top_listicle|question", "estimated_word_count": 1500}]} t 1 2025-12-20 19:27:56.816041+00 2025-12-20 12:53:51.905161+00
+5 image_prompt_template Image Type: {image_type},\r\nImage Prompt: {image_prompt} [] t 1 2025-12-20 19:57:17.579009+00 2025-12-20 12:53:51.910653+00
+6 negative_prompt text, watermark, logo, signature, username, artist name, blurry, low quality, pixelated, distorted, deformed, duplicate, cropped, out of frame, bad anatomy, bad proportions, extra limbs, missing limbs, floating limbs, disconnected limbs, mutation, mutated, ugly, disgusting, amputation, cartoon, anime [] t 1 2025-12-20 19:57:43.034529+00 2025-12-20 12:53:51.912684+00
+8 product_generation Create comprehensive product content for:\r\n\r\nProduct Name: {product_name}\r\nCategory: {category}\r\nFeatures: {features}\r\nTarget Audience: {audience}\r\n\r\nGenerate:\r\n1. Compelling product description (200-300 words)\r\n2. Key features and benefits (bullet points)\r\n3. Technical specifications\r\n4. Use cases or applications\r\n5. SEO-optimized meta description\r\n\r\nReturn structured JSON with all elements. [] f 1 2025-12-20 19:58:14.244216+00 2025-12-20 12:53:51.917325+00
+9 service_generation Create detailed service page content for:\r\n\r\nService Name: {service_name}\r\nCategory: {category}\r\nKey Benefits: {benefits}\r\nTarget Audience: {audience}\r\n\r\nGenerate:\r\n1. Overview section (150-200 words)\r\n2. Process or methodology (step-by-step)\r\n3. Benefits and outcomes\r\n4. Why choose us / differentiators\r\n5. FAQ section (5-7 questions)\r\n6. Call-to-action suggestions\r\n\r\nReturn structured HTML content. [] f 1 2025-12-20 19:58:23.805071+00 2025-12-20 12:53:51.919307+00
+7 site_structure_generation Design a comprehensive site structure for:\r\n\r\nBusiness Type: {business_type}\r\nPrimary Keywords: {keywords}\r\nTarget Audience: {audience}\r\nGoals: {goals}\r\n\r\nInstructions:\r\n1. Create a logical, user-friendly navigation hierarchy\r\n2. Include essential pages (Home, About, Services/Products, Contact)\r\n3. Design category pages for primary keywords\r\n4. Plan supporting content pages\r\n5. Consider user journey and conversion paths\r\n\r\nReturn a JSON structure:\r\n{\r\n "navigation": [\r\n {\r\n "page": "Page name",\r\n "slug": "url-slug",\r\n "type": "home|category|product|service|content|utility",\r\n "children": []\r\n }\r\n ]\r\n} [] f 1 2025-12-20 19:58:33.034858+00 2025-12-20 12:53:51.914768+00
+10 taxonomy_generation Create a logical taxonomy structure for:\r\n\r\nContent Type: {content_type}\r\nDomain: {domain}\r\nExisting Keywords: {keywords}\r\n\r\nInstructions:\r\n1. Design parent categories that organize content logically\r\n2. Create subcategories for detailed organization\r\n3. Ensure balanced hierarchy (not too deep or flat)\r\n4. Use clear, descriptive category names\r\n5. Consider SEO and user navigation\r\n\r\nReturn a JSON structure:\r\n{\r\n "categories": [\r\n {\r\n "name": "Category Name",\r\n "slug": "category-slug",\r\n "description": "Brief description",\r\n "subcategories": []\r\n }\r\n ]\r\n} [] f 1 2025-12-20 19:58:48.350291+00 2025-12-20 12:53:51.922882+00
+3 content_generation # Editorial Content Generator\r\n\r\nGenerate complete, SEO-optimized HTML content from the provided outline.\r\n\r\n---\r\n\r\n## INPUT\r\n\r\n**CONTENT IDEA:**\r\n[IGNY8_IDEA]\r\n\r\n**KEYWORD CLUSTER:**\r\n[IGNY8_CLUSTER]\r\n\r\n**KEYWORDS:**\r\n[IGNY8_KEYWORDS]\r\n\r\n---\r\n\r\n## OUTPUT FORMAT\r\n\r\n\r\n{\r\n "title": "string",\r\n "meta_title": "string (max 60 chars)",\r\n "meta_description": "string (max 160 chars)",\r\n "content": "string (HTML)",\r\n "word_count": integer,\r\n "primary_keyword": "string",\r\n "secondary_keywords": ["string"],\r\n "tags": ["string"],\r\n "categories": ["Parent > Child"]\r\n}\r\n\r\n\r\n---\r\n\r\n## CRITICAL REQUIREMENTS\r\n\r\n### 1. WORD COUNT: 1000-1200 words target\r\n\r\n**Section breakdown:**\r\n- Introduction: 100-150 words\r\n- Each H2 section: 150-180 words\r\n- Write 6 H2 sections\r\n\r\n### 2. SECTION FORMAT VARIETY\r\n\r\n**For 6 H2 sections, distribute as:**\r\n- 2 sections: Paragraphs ONLY \r\n- 2 section: Paragraphs + Lists\r\n- 1 section: Paragraphs + Tables\r\n* Use block quote element in different sections randomly in sections where table is not used, and make sure to provide the most insightful information within block quote\r\n\r\n**Rules:**\r\n- Randomize which sections get which format\r\n- Never use same pattern for consecutive sections\r\n- Maximum 2 sections can have lists\r\n- Maximum 2 sections can have tables\r\n- Lists: 4-5 items, 15-20 words each\r\n- Tables: 4-5 columns, 5-6 rows with real data\r\n\r\n### 3. CONTENT DEPTH (NOT surface explanations)\r\n\r\n**Every paragraph must:**\r\n- Be 50-60 words \r\n- Explain HOW/WHY, not just WHAT\r\n- Include specific numbers, examples, mechanisms\r\n- Provide actionable insights\r\n\r\n**Lists must contain:**\r\n- 4-5 items maximum\r\n- Each item: 15-20 words\r\n- Specific details with real examples\r\n- Technical specifics (measurements, ranges, capabilities)\r\n\r\n**Tables must contain:**\r\n- 4-5 columns\r\n- 5-6 rows \r\n- Real comparative data (prices, specs, measurements)\r\n- No vague terms (avoid "good", "quality", "effective")\r\n\r\n---\r\n\r\n## HTML STRUCTURE\r\n\r\n### Introduction Format:\r\n\r\n[Hook: 40-50 words]
\r\n[Paragraph 1: 50-70 words with primary keyword]
\r\n[Paragraph 2: 50-60 words]
\r\n[Paragraph 3: 50-60 words]
\r\n\r\n\r\n### H2 Section Format:\r\n\r\n[Heading]
\r\n[Opening: 50-70 words explaining core concept]
\r\n\r\n\r\n\r\n\r\n[Subheading]
\r\n[60-70 words of detailed explanation]
\r\n[Subheading]
\r\n[60-70 words of detailed explanation]
\r\n\r\n\r\n[Subheading]
\r\n[50-70 words introducing the list]
\r\n\r\n - [15-20 word item with specific details]
\r\n \r\n
\r\n\r\n\r\n[Subheading]
\r\n[50-70 words introducing the table]
\r\n\r\n\r\n | Col1 | Col2 | Col3 | Col4 |
\r\n\r\n\r\n | Data | Data | Data | Data |
\r\n \r\n\r\n
\r\n\r\n[Closing: 50-70 words synthesizing the section]
\r\n\r\n\r\n**Valid HTML tags only:** ``, ``, `
`, ``, ``, ``, ``, `- `, `
`, ``, ``, ``, `| `, ` | `\r\n\r\n---\r\n\r\n## WRITING RULES\r\n\r\n### DO:\r\n✓ Use specific examples, brands, models, numbers\r\n✓ Explain mechanisms and technical details\r\n✓ Include real data (prices, percentages, measurements)\r\n✓ Write naturally with varied sentence length\r\n✓ Use active voice\r\n✓ Connect ideas logically between paragraphs\r\n\r\n### DON'T:\r\n✗ Generic openings ("In today's world...")\r\n✗ Repeat H2/H3 in first sentence\r\n✗ Robotic transitions ("First...", "Second...")\r\n✗ Filler phrases ("It's important to note...")\r\n✗ Placeholder content ("Brand A", "Model X", "Data 1")\r\n✗ Paragraphs under 40 words or over 80 words\r\n✗ Lists with more than 6 items or items over 25 words\r\n✗ Tables with more than 5 columns or 6 rows\r\n✗ Writing more than 1200 words total\r\n\r\n---\r\n\r\n## KEYWORD USAGE\r\n\r\n**Primary keyword** (identify from title):\r\n- Use in title, intro, meta title/description\r\n- Include in 2-3 H2 headings naturally\r\n- Mention 2-3 times in content (0.5-1% density)\r\n\r\n**Secondary keywords** (3-4 from keyword list):\r\n- Distribute across H2 sections\r\n- Use in H2/H3 headings where natural\r\n- 2-3 mentions each (0.3-0.6% density)\r\n- Include variations and related terms\r\n\r\n---\r\n\r\n## METADATA\r\n\r\n**Meta Title:** Under 60 chars, primary keyword included, action-oriented\r\n**Meta Description:** 140-160 chars, primary keyword, clear value proposition\r\n**Tags:** 5 tags, 2-4 words each, lowercase, topically relevant\r\n**Categories:** 1-2 in format "Parent > Child"\r\n\r\n---\r\n\r\n## VERIFICATION BEFORE OUTPUT\r\n\r\n- [ ] 1000-1200 words ONLY (excluding HTML tags) - STOP if exceeding\r\n- [ ] 6 H2 sections\r\n- [ ] Maximum 2 sections with lists\r\n- [ ] Maximum 2 sections with tables\r\n- [ ] Random sections sequence with differnet format\r\n- [ ] All paragraphs 50-80 words\r\n- [ ] All lists 4-5 items, 15-20 words each\r\n- [ ] All tables 4-5 columns, 5-6 rows, real data\r\n- [ ] No placeholder content anywhere\r\n- [ ] Primary keyword optimized correctly\r\n- [ ] Meta title <60 chars, description <160 chars\r\n- [ ] Valid JSON with escaped quotes\r\n\r\n---\r\n\r\n## IMPORTANT\r\n\r\nReturn ONLY valid JSON. No explanatory text. Ensure word_count reflects actual content words. [] t 1 2025-12-20 20:21:47.267617+00 2025-12-20 12:53:51.906875+00
+4 image_prompt_extraction Extract image prompts from the following article content.\r\n\r\n**ARTICLE TITLE:** {title}\r\n\r\n**ARTICLE CONTENT:** {content}\r\n\r\n**INSTRUCTIONS:**\r\n\r\nExtract image prompts for:\r\n1. **Featured Image:** One main image that represents the article topic\r\n2. **In-Article Images:** Up to {max_images} images that would be useful within the article content\r\n3. **Content Paragraphs (caption):** For each image, write a natural content paragraph (40-60 words) that discusses the topic represented by the image. This should read as regular article content that flows naturally with the surrounding text, NOT as an image description or caption. The paragraph should provide substantive information about the topic while contextually relating to what the image shows.\r\n\r\n**Return a JSON object with this structure:**\r\n\r\n{{\r\n "featured_prompt": "Detailed description of the featured image (max 600 characters)",\r\n "featured_caption": "A 40-60 word paragraph that serves as both an image caption and represents content from the article, providing context naturally",\r\n "in_article_prompts": [\r\n {{\r\n "prompt": "Description of first in-article image (max 600 characters)",\r\n "caption": "A 40-60 word paragraph describing this image while incorporating relevant content from the corresponding section"\r\n }},\r\n {{\r\n "prompt": "Description of second in-article image (max 600 characters)",\r\n "caption": "A 40-60 word paragraph describing this image while incorporating relevant content from the corresponding section"\r\n }}\r\n ]\r\n}}\r\n\r\n**Requirements:**\r\n- Each prompt must be detailed enough for image generation, describing visual elements, style, mood, and composition\r\n- Maximum prompt length: 600 characters per image prompt\r\n- Caption length: 40-60 words each\r\n- Captions should blend image description with article content naturally [] t 1 2025-12-25 02:05:23.641149+00 2025-12-20 12:53:51.908653+00
+\.
+
+
+--
+-- Data for Name: igny8_global_author_profiles; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_global_author_profiles (id, name, description, tone, language, structure_template, category, is_active, created_at, updated_at) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_global_integration_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_global_integration_settings (id, openai_api_key, openai_model, openai_temperature, openai_max_tokens, dalle_api_key, dalle_model, dalle_size, runware_api_key, is_active, last_updated, updated_by_id, image_quality, image_style, runware_model, desktop_image_size, max_in_article_images, default_image_service, bria_api_key, bria_model, anthropic_api_key, anthropic_model, anthropic_temperature, anthropic_max_tokens, default_text_provider) FROM stdin;
+1 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 gpt-4o-mini 0.7 16000 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 dall-e-3 1792x1024 tuHmZhhyUcArJUQ3r0Jiw8ViPaiit0Z3 t 2026-01-03 21:54:01.912554+00 \N hd realistic bria:10@1 1024x1024 4 openai bria-2.3 claude-3-5-sonnet-20241022 0.7 8192 openai
+\.
+
+
+--
+-- Data for Name: igny8_global_module_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_global_module_settings (id, planner_enabled, writer_enabled, thinker_enabled, automation_enabled, site_builder_enabled, linker_enabled, optimizer_enabled, publisher_enabled, updated_at, created_at) FROM stdin;
+1 t t t t f f f f 2025-12-20 23:00:59.378632+00 2025-12-20 21:12:39.039104+00
+\.
+
+
+--
+-- Data for Name: igny8_global_strategies; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_global_strategies (id, name, description, prompt_types, section_logic, category, is_active, created_at, updated_at) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_images; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_images (id, image_type, image_url, image_path, prompt, status, "position", created_at, updated_at, tenant_id, content_id, sector_id, site_id, task_id, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until, caption) FROM stdin;
+533 in_article https://im.runware.ai/image/ws/2/ii/cec91754-e369-4481-aebe-35c3eb36740d.webp /data/app/igny8/frontend/public/images/ai-images/image_533_1768218752.webp A peaceful home environment showing a person using a back massager while reading a book on a cozy chair. The setting includes soft lighting, a warm blanket, and a peaceful ambiance, emphasizing relaxation. This image illustrates the therapeutic benefits of using a back massager in a calming space. generated 3 2026-01-12 11:47:03.684461+00 2026-01-12 11:47:03.684473+00 90 213 61 21 \N \N \N \N f \N Incorporating a back massager into your relaxation routine can significantly improve your well-being. This image portrays the ideal setting for unwinding, where one can enjoy a good book while experiencing the soothing effects of a massager, highlighting its role in stress relief.
+532 in_article https://im.runware.ai/image/ws/2/ii/d070dce9-a1fd-4f34-b105-407564fecb72.webp /data/app/igny8/frontend/public/images/ai-images/image_532_1768218737.webp A close-up image of a back massager's features, including buttons for different settings, a heating element, and ergonomic design. The background is neutral to keep the focus on the product, which is shown in use on a person's back. This visual emphasizes the technological advancements in back massagers. generated 2 2026-01-12 11:47:03.677128+00 2026-01-12 11:47:03.677146+00 90 213 61 21 \N \N \N \N f \N Modern back massagers come equipped with various features designed to enhance user experience. This image highlights crucial elements like adjustable settings and heating options, showcasing how these advancements cater to individual comfort levels and enhance pain relief.
+531 in_article https://im.runware.ai/image/ws/2/ii/0857c7c6-3db0-47e2-983c-bcd2a4ad3081.webp /data/app/igny8/frontend/public/images/ai-images/image_531_1768218722.webp A side-by-side comparison of different types of back massagers, including handheld devices, massage chairs, and foam rollers. Each product is displayed with clear labels and images showcasing their unique features. The layout is clean and informative, making it easy for readers to visualize their choices. generated 1 2026-01-12 11:47:03.672974+00 2026-01-12 11:47:03.672981+00 90 213 61 21 \N \N \N \N f \N With a variety of back massagers available, choosing the right one can be overwhelming. This comparison showcases several types, from handheld devices to massage chairs, allowing readers to weigh their options based on personal needs and preferences for optimal pain relief.
+529 featured https://im.runware.ai/image/ws/2/ii/b221b67d-4c9b-4b00-a498-e9ab1b82c6c6.webp /data/app/igny8/frontend/public/images/ai-images/image_529_1768218709.webp A serene living room scene featuring a person relaxing on a plush couch with a back massager. The room is softly lit, with warm colors and plants in the background, conveying a sense of comfort and tranquility. The person appears content, with their eyes closed, enjoying the soothing effects of the massager. This image captures the essence of pain relief and relaxation that back massagers provide. generated 0 2026-01-12 11:47:03.662607+00 2026-01-12 11:47:03.662619+00 90 213 61 21 \N \N \N \N f \N Back massagers are essential tools for alleviating discomfort and tension in the back. This image illustrates how these devices can create a peaceful and relaxing environment, allowing individuals to unwind after a long day while effectively managing their back pain.
+530 in_article https://im.runware.ai/image/ws/2/ii/fe77f4b0-998b-473b-ae4e-f0cf927528e2.webp /data/app/igny8/frontend/public/images/ai-images/image_530_1768218695.webp An infographic illustrating the common causes of back pain, featuring icons and illustrations representing various factors like poor posture, heavy lifting, and stress. The design is colorful and engaging, making the information easy to understand. This visual aims to highlight the complexity of back pain and its impact on daily life. generated 0 2026-01-12 11:47:03.669174+00 2026-01-12 11:47:03.669186+00 90 213 61 21 \N \N \N \N f \N Understanding the causes of back pain is crucial for effective management. This infographic highlights various factors, including poor posture and stress, which can contribute to discomfort. Recognizing these causes can help individuals make informed decisions about prevention and treatment, including the use of back massagers.
+537 in_article https://im.runware.ai/image/ws/2/ii/be0052ee-46d4-4ca6-9f37-2f49a7516110.webp /data/app/igny8/frontend/public/images/ai-images/image_537_1768218666.webp A comparison chart showcasing various types of back massagers, including handheld, massage chairs, and vibrating cushions. Each type is represented visually with clear icons and brief descriptions, set against a clean, professional layout that makes it easy to understand the differences and benefits of each type. generated 2 2026-01-12 11:47:16.637938+00 2026-01-12 11:47:16.637944+00 90 214 61 21 \N \N \N \N f \N Understanding the different types of back massagers available can significantly influence your choice. This chart compares handheld units, massage chairs, and vibrating cushions, highlighting their unique features and benefits, helping you make an informed decision based on your specific needs and preferences.
+536 in_article https://im.runware.ai/image/ws/2/ii/8fb8c23a-59a8-4796-9e66-928da74c0e89.webp /data/app/igny8/frontend/public/images/ai-images/image_536_1768218655.webp A vibrant lifestyle image showing a busy individual using a portable back massager at home, surrounded by work-related items such as a laptop and documents. The scene conveys the integration of self-care into a hectic schedule, highlighting the convenience and practicality of modern massagers for people on the go. generated 1 2026-01-12 11:47:16.635642+00 2026-01-12 11:47:16.635647+00 90 214 61 21 \N \N \N \N f \N Your lifestyle plays a pivotal role in selecting a back massager. This image exemplifies how easy it is to incorporate a portable device into a busy day, allowing for quick relief from tension without sacrificing productivity. Choose a model that fits seamlessly into your routine for maximum benefit.
+534 featured https://im.runware.ai/image/ws/2/ii/f01bc427-75e4-449a-b3ac-36da3bd6973b.webp /data/app/igny8/frontend/public/images/ai-images/image_534_1768218641.webp A serene and inviting home setting featuring a person enjoying a relaxing back massage with a modern back massager. The background includes soft lighting, comfortable furniture, and calming decor, suggesting a peaceful environment. The individual shows a look of relief and comfort, highlighting the benefits of using a back massager to alleviate stress and tension. generated 0 2026-01-12 11:47:16.630053+00 2026-01-12 11:47:16.630061+00 90 214 61 21 \N \N \N \N f \N Back massagers can significantly enhance your relaxation routine, providing targeted relief for sore muscles. This image captures the essence of comfort and tranquility, emphasizing how a good back massager can transform your home into a personal spa, allowing you to unwind and rejuvenate effectively.
+547 in_article https://im.runware.ai/image/ws/2/ii/2f375927-288b-45b6-acf1-9b8a55131d26.webp /data/app/igny8/frontend/public/images/ai-images/image_547_1768218525.webp An image of a person using a specific back massager while seated at a desk. The environment is a modern home office, with ergonomic furniture and soft natural lighting. The individual appears relaxed and focused, highlighting the massager's convenience during work hours. generated 2 2026-01-12 11:47:47.475334+00 2026-01-12 11:47:47.47534+00 90 216 61 21 \N \N \N \N f \N Incorporating a back massager into your workspace can significantly enhance comfort and productivity. This image illustrates how a quality massager can provide relief during long hours at a desk, allowing users to maintain focus while enjoying the benefits of relaxation.
+546 in_article https://im.runware.ai/image/ws/2/ii/ba8df9ec-68e1-42ed-a0f1-c67b26f333cd.webp /data/app/igny8/frontend/public/images/ai-images/image_546_1768218512.webp A collage of the top 10 back massagers, featuring each product with a clear image, name, and a brief description. The layout is organized and visually striking, showcasing diverse designs and brands to highlight their unique features. generated 1 2026-01-12 11:47:47.472185+00 2026-01-12 11:47:47.472192+00 90 216 61 21 \N \N \N \N f \N This collage presents the top 10 back massagers of 2023, showcasing a variety of designs and functionalities. Each product is tailored to address different user needs, from portable options for travel to advanced models equipped with heat and multiple massage settings.
+544 featured https://im.runware.ai/image/ws/2/ii/da3ed683-f6c6-4e74-ba24-758a7fd72e6d.webp /data/app/igny8/frontend/public/images/ai-images/image_544_1768218499.webp A serene home setting featuring a cozy living room with a person relaxing in a comfortable chair while using a high-tech back massager. The room is softly lit, with calming colors and plush décor. The massager is sleek and modern, showcasing its ergonomic design. A gentle aura of tranquility envelops the scene, emphasizing the relief and relaxation provided by the massager. generated 0 2026-01-12 11:47:47.466176+00 2026-01-12 11:47:47.466192+00 90 216 61 21 \N \N \N \N f \N The right back massager can transform your relaxation routine, providing effective pain relief and comfort right in your living room. With advancements in technology, these devices now offer ergonomic designs that cater to various needs, making them essential tools for wellness in 2023.
+551 in_article https://im.runware.ai/image/ws/2/ii/be54ae7c-c3ee-478d-9736-c65d8be90225.webp /data/app/igny8/frontend/public/images/ai-images/image_551_1768261302.webp An infographic comparing the benefits of traditional massage and back massagers. The visual features a split design with icons and brief text highlighting key advantages such as relaxation, convenience, and cost. A calm and engaging color palette invites viewers to consider the differences in approach between these two methods. generated 1 2026-01-12 23:40:57.536353+00 2026-01-12 23:40:57.536366+00 90 217 61 21 \N \N \N \N f \N Comparing traditional massage and back massagers reveals distinct benefits for each. While traditional massage offers personalized care and a holistic approach, back massagers provide immediate accessibility and convenience, making them ideal for individuals seeking quick relief without the need for appointments or travel.
+552 in_article https://im.runware.ai/image/ws/2/ii/1f0b50f1-395a-41ba-be26-17f232303a2d.webp /data/app/igny8/frontend/public/images/ai-images/image_552_1768261317.webp A close-up image of a person using a handheld back massager while sitting on a sofa. The person appears relaxed, with a focused expression, demonstrating the ease of use of the device. The background features soft furnishings and warm decor, creating a comfortable atmosphere conducive to relaxation. generated 2 2026-01-12 23:40:57.540096+00 2026-01-12 23:40:57.540108+00 90 217 61 21 \N \N \N \N f \N Using a handheld back massager can be a simple yet effective way to relieve tension after a long day. The ease of application allows individuals to target specific areas of discomfort, ensuring a personalized experience that can fit seamlessly into daily routines, promoting better overall well-being.
+545 in_article https://im.runware.ai/image/ws/2/ii/27279c94-3ee9-4377-80a5-017180788166.webp /data/app/igny8/frontend/public/images/ai-images/image_545_1768218485.webp An infographic displaying the criteria used for selecting the best back massagers, including factors like effectiveness, user reviews, price range, and design features. The design is colorful and engaging, presenting information in a clear and visually appealing manner. generated 0 2026-01-12 11:47:47.469179+00 2026-01-12 11:47:47.469185+00 90 216 61 21 \N \N \N \N f \N Selecting the best back massager involves various criteria, such as effectiveness, user reviews, and design features. This infographic summarizes the key factors that contribute to a massager's performance, helping readers make informed choices when seeking pain relief solutions.
+550 in_article https://im.runware.ai/image/ws/2/ii/2a7abf4d-04ba-443e-aced-2e984b1007cc.webp /data/app/igny8/frontend/public/images/ai-images/image_550_1768261272.webp A detailed image of a back massager in action, showcasing various features such as heat settings, kneading rollers, and ergonomic design. The device is placed on a comfortable chair in a cozy living room, suggesting a home environment. Soft lighting enhances the feeling of relaxation and comfort, illustrating how back massagers can provide therapeutic relief at home. generated 0 2026-01-12 23:40:57.531245+00 2026-01-12 23:40:57.531261+00 90 217 61 21 \N \N \N \N f \N Back massagers are designed for convenience and comfort, allowing users to enjoy therapeutic relief from the comfort of their homes. With features like heat and adjustable settings, these devices can effectively alleviate muscle tension and promote relaxation, making them a popular choice for those with busy lifestyles.
+548 in_article https://im.runware.ai/image/ws/2/ii/a584d1e8-5971-4047-86aa-c40bb5aa05d4.webp /data/app/igny8/frontend/public/images/ai-images/image_548_1768218538.webp A split image showing the pros and cons of a popular back massager, with one side listing advantages like portability and user-friendly design, and the other side detailing drawbacks like price or limited features. The design is balanced and informative. generated 3 2026-01-12 11:47:47.478183+00 2026-01-12 11:47:47.47819+00 90 216 61 21 \N \N \N \N f \N Understanding the pros and cons of each back massager is essential for making an informed purchase. This image effectively breaks down the advantages and limitations of a popular model, ensuring readers are equipped with comprehensive insights before deciding on their ideal product.
+549 featured https://im.runware.ai/image/ws/2/ii/50986f53-f385-4b27-800e-e6b492c02932.webp /data/app/igny8/frontend/public/images/ai-images/image_549_1768261287.webp An inviting and serene spa environment showcasing a professional masseuse performing a traditional massage on a client. The room is softly lit with candles, and soothing colors create a calming atmosphere. Essential oils and massage tools are visible, highlighting the luxurious experience of traditional massage therapy. This image embodies the relaxation and therapeutic benefits associated with professional massages. generated 0 2026-01-12 23:40:57.523096+00 2026-01-12 23:40:57.523114+00 90 217 61 21 \N \N \N \N f \N Traditional massage offers a unique, hands-on approach to relaxation and pain relief, often performed in a serene spa setting. The use of skilled techniques by a professional can enhance physical well-being and promote mental tranquility, making it a cherished method for many seeking relief from stress and muscle tension.
+471 featured https://im.runware.ai/image/ws/2/ii/9c007f87-9103-4946-abc5-0e9b54bbf3fb.webp /data/app/igny8/frontend/public/images/ai-images/image_471_1766976180.webp A calm home setting with a person sitting on a sofa using a curved back massager hook on their upper back and shoulder. Several different manual back massager sticks and hooks lie on a coffee table nearby. Bright natural light, clean modern decor, soft neutral colors, realistic photography style, health and wellness mood. generated 0 2025-12-29 02:42:22.270608+00 2025-12-29 02:42:22.270618+00 90 203 61 21 \N \N \N \N f \N Manual back massager sticks and hooks make it easy to target stubborn shoulder and upper back knots without batteries, noise, or complicated settings. By focusing pressure into small trigger points and letting you control the exact angle and intensity, these simple tools can deliver clinic-style relief right in your living room at a fraction of the cost.
+478 in_article https://im.runware.ai/image/ws/2/ii/23ee1bc8-73d8-4721-8e58-2e03cf072246.webp /data/app/igny8/frontend/public/images/ai-images/image_478_1767227013.webp Collage of four types of back massagers with heat: a large shiatsu chair pad, a compact heated lumbar cushion, a wand-style handheld massager, and a massage gun with a heating attachment. Clean, bright background, each product clearly separated with subtle icons showing features like heat, vibration, and intensity levels. failed 1 2026-01-01 00:10:32.313915+00 2026-01-01 00:10:32.31392+00 90 204 61 21 \N \N \N \N f \N Today’s market includes everything from full-back shiatsu chair pads to small heated cushions, handheld wands, and powerful massage guns. Your choice should reflect how and when you experience pain. Office workers may prefer a heated lumbar cushion, while active users might lean toward a massage gun with optional heating features.
+520 in_article https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-ztrIVBN5KaDMBmZif7oE3PiO.png?st=2026-01-03T20%3A56%3A45Z&se=2026-01-03T22%3A56%3A45Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=52f8f7b3-ca8d-4b21-9807-8b9df114d84c&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T13%3A06%3A51Z&ske=2026-01-04T13%3A06%3A51Z&sks=b&skv=2024-08-04&sig=0kWqvELgJgiulO5nhf3HpAS4HnIGUP8UWCkaLHY2QAQ%3D /data/app/igny8/frontend/public/images/ai-images/image_520_1767477405.png Close-up of a traditional handheld back massager with a long curved handle, multiple interchangeable heads, and visible heating element indicator light resting on a couch arm. A person’s hand reaches for it in a cozy living room at night, warm ambient lighting, lifestyle product photography, clean and realistic. generated 0 2026-01-03 18:10:26.070011+00 2026-01-03 18:10:26.07002+00 90 206 61 21 \N \N \N \N f \N Handheld back massagers typically feature a longer handle, lighter weight, and sometimes built-in heat, making them easy to use while relaxing on the couch. Their design favors reach and comfort over raw power, which suits people dealing with everyday stiffness who want something simple to operate themselves at home.
+513 in_article https://im.runware.ai/image/ws/2/ii/b1d9c5aa-0e79-4eba-a984-4a084f484724.webp /data/app/igny8/frontend/public/images/ai-images/image_513_1767226385.webp Cozy interior of a neighborhood pharmacy or drugstore aisle, with a small but tidy section of back massagers, heating wraps, and pain relief products. A person in business-casual clothing studies a compact handheld massager next to over-the-counter pain medications. Soft lighting, approachable atmosphere, realistic documentary style. generated 3 2026-01-01 00:11:29.138431+00 2026-01-01 00:11:29.138446+00 90 211 61 21 \N \N \N \N f \N Drugstores and pharmacies typically offer a smaller selection of back massagers, but they’re convenient when you need quick relief. You’ll usually find compact handheld units, heated wraps, and lower-priced cushions near the pain relief aisle. While choices are limited, extended hours and multiple neighborhood locations make pharmacies a practical last-minute option.
+467 in_article https://im.runware.ai/image/ws/2/ii/aa0c0ebe-c40c-4523-97ac-efaddb9f8619.webp /data/app/igny8/frontend/public/images/ai-images/image_467_1766976250.webp Close-up of a back massager attached to an office chair, showing multiple massage nodes aligned with the spine, control panel on the side, and adjustable straps around the chair back. Neutral background, clear focus on the device’s structure and how it fits on the chair, realistic product photography. generated 0 2025-12-29 02:42:14.283031+00 2025-12-29 02:42:14.283045+00 90 202 61 21 \N \N \N \N f \N A back massager for chair is designed to strap securely onto most office or dining chairs, aligning its massage nodes with your spine. By delivering continuous, targeted pressure while you sit, it replaces the need to stop and use a handheld device, making relief part of your normal work routine.
+535 in_article https://im.runware.ai/image/ws/2/ii/ac941219-4591-402f-9e86-130583b7b61b.webp /data/app/igny8/frontend/public/images/ai-images/image_535_1768218626.webp An infographic displaying common pain points associated with back discomfort, featuring an outline of the human body with highlighted areas such as the lower back, shoulders, and neck. The design includes labeled pain points and statistics about back pain prevalence, set against a soothing color palette that evokes calmness and healing. generated 0 2026-01-12 11:47:16.632788+00 2026-01-12 11:47:16.632796+00 90 214 61 21 \N \N \N \N f \N Identifying your pain points is crucial when choosing a back massager. This infographic illustrates common areas of discomfort, helping you understand where you need the most relief. By pinpointing these areas, you can select a massager that targets your specific issues, ensuring more effective and personalized treatment.
+538 in_article https://im.runware.ai/image/ws/2/ii/2dd75ee8-24b5-40ce-86e1-b407ae89bab0.webp /data/app/igny8/frontend/public/images/ai-images/image_538_1768218680.webp An image of a person reviewing a selection of back massagers in a retail store, examining various models while holding a price tag. The shelves are lined with a diverse range of options, showcasing different brands and styles, with a focus on the importance of budget considerations in the buying process. generated 3 2026-01-12 11:47:16.640731+00 2026-01-12 11:47:16.640771+00 90 214 61 21 \N \N \N \N f \N Budget considerations are essential when selecting a back massager. This image illustrates the variety available in store, encouraging potential buyers to evaluate their options. It's important to balance quality with affordability, ensuring you invest in a product that meets your needs without overspending.
+490 in_article https://im.runware.ai/image/ws/2/ii/03cf71ab-beab-497b-bab6-b96effd94d0f.webp /data/app/igny8/frontend/public/images/ai-images/image_490_1767474829.webp Flat lay of several different back massagers on a wooden table: two heated handheld back massagers with long handles, two compact massage guns, a digital thermometer showing 115°F, and a notepad listing criteria like “104–131°F heat,” “25+ lb stall force,” and “4.3★, 1000+ reviews.” Bright, neutral lighting, realistic, editorial style. generated 0 2026-01-01 00:10:56.568014+00 2026-01-01 00:10:56.568022+00 90 207 61 21 \N \N \N \N f \N To narrow more than 30 contenders, we focused on measurable criteria instead of hype. That meant verifying heat output stayed between 104°F and 131°F, checking stall force above 25 pounds for meaningful pressure, and filtering for real-world reliability by only considering models with at least 1,000 reviews and an average rating of 4.3 stars or higher.
+491 in_article https://im.runware.ai/image/ws/2/ii/d4e676f8-c689-452f-8e0f-70e90ea81554.webp /data/app/igny8/frontend/public/images/ai-images/image_491_1767474849.webp Close-up of a premium heated back massager draped over a person’s shoulders and upper back, visible red heat zones, simple control panel with heat and intensity buttons. The user sits comfortably at a desk, relaxed expression, soft daylight from a window. Clean, realistic product-focused shot with subtle emphasis on comfort and build quality. generated 1 2026-01-01 00:10:56.578832+00 2026-01-01 00:10:56.57884+00 90 207 61 21 \N \N \N \N f \N Our top overall heated back massager balances comfort, power, and ease of use. The contoured design sits securely across your shoulders while the heat function warms gradually to a steady, therapeutic temperature. Simple controls let you adjust intensity without twisting or straining, making it practical for daily use while working, reading, or watching TV.
+493 in_article https://im.runware.ai/image/ws/2/ii/31303082-4938-48d6-9c72-073f42ef0f9a.webp /data/app/igny8/frontend/public/images/ai-images/image_493_1767474889.webp Athletic person sitting on a gym bench using a compact massage gun on their lower back, visible interchangeable head attachments on the bench, subtle LED indicators on the device. Gym background with weights slightly out of focus. Realistic, high-contrast lighting, energetic yet controlled mood emphasizing deep tissue relief and recovery. generated 3 2026-01-01 00:10:56.599519+00 2026-01-01 00:10:56.599529+00 90 207 61 21 \N \N \N \N f \N When you need deep tissue relief, a massage gun designed for the back offers more targeted power than classic handheld models. Higher stall force lets you press into tight muscles without stalling the motor, while multiple head attachments adapt to different areas so you can address stubborn knots after lifting sessions or long days of physical work.
+460 in_article https://im.runware.ai/image/ws/2/ii/a3da5fe5-38a5-460d-beef-a809c587632d.webp /data/app/igny8/frontend/public/images/ai-images/image_460_1766976509.webp Close-up of a person using a U-shaped back and neck massager around the shoulders, with heat function glowing softly, and another hand holding a manual massage hook reaching between the shoulder blades. Cozy home setting, soft lighting, focus on upper back and neck area, expression of relief and concentration. generated 3 2025-12-29 02:41:57.538195+00 2025-12-29 02:41:57.538205+00 90 200 61 21 \N \N \N \N f \N For upper back and neck pain, targeted tools can be more effective than broad, full-back devices. A U-shaped massager wraps around tense shoulders, combining kneading with soothing heat, while a manual hook lets you lean into specific knots between the shoulder blades, adjusting pressure precisely where your muscles are most reactive.
+458 in_article https://im.runware.ai/image/ws/2/ii/cde9bd6a-39b0-4928-810c-4e9f937b352d.webp /data/app/igny8/frontend/public/images/ai-images/image_458_1766976473.webp Flat-lay of different back massagers on a neutral background: a full-featured massage chair, a portable back massager cushion, a U-shaped neck and shoulder massager, a handheld percussion gun, and a manual trigger-point hook. Clean, well-lit, organized composition with labels or subtle icons suggesting their different uses. generated 1 2025-12-29 02:41:57.527156+00 2025-12-29 02:41:57.527161+00 90 200 61 21 \N \N \N \N f \N Back massagers range from full-body chairs that mimic a therapist’s hands to simple manual tools that pinpoint a single knot. Electric cushions and U-shaped neck devices are ideal for everyday use, while percussion guns and massage hooks excel at breaking up stubborn trigger points when you need focused, deeper work.
+456 featured https://im.runware.ai/image/ws/2/ii/5d478ee0-fd88-489d-af75-8f502aaef1ec.webp /data/app/igny8/frontend/public/images/ai-images/image_456_1766976453.webp Calm, modern living room with a young adult sitting in an ergonomic chair using a sleek back and neck massager. Soft evening light, neutral colors, subtle tech details on the device, relaxed facial expression. Emphasis on comfort, relief, and self-care at home. Photorealistic, clean, wellness-focused aesthetic. generated 0 2025-12-29 02:41:57.5095+00 2025-12-29 02:41:57.509509+00 90 200 61 21 \N \N \N \N f \N Consistent, targeted massage can turn a typical evening of stiffness into a short, restorative ritual. A well-chosen back massager acts like an on-demand therapist, easing tight bands along the spine and neck in just 10–20 minutes, helping counteract the micro-strains that build up from desks, driving, and constant screen time.
+457 in_article https://im.runware.ai/image/ws/2/ii/69bd072e-1147-4606-a966-199329371fac.webp /data/app/igny8/frontend/public/images/ai-images/image_457_1766976435.webp Medical-style illustration of upper back, neck, and shoulders showing major muscle groups and common tension areas highlighted in red. Subtle overlay of a person sitting at a desk, hunched over a laptop. Clean, educational, slightly stylized but realistic anatomy, white background, labels minimized for clarity, health and wellness theme. generated 0 2025-12-29 02:41:57.521742+00 2025-12-29 02:41:57.52175+00 90 200 61 21 \N \N \N \N f \N Most back, neck, and shoulder pain starts with subtle postural habits that overload the same muscles day after day. When you hunch over a screen or drive for hours, the upper trapezius, rhomboids, and neck extensors tighten and shorten, restricting circulation and creating those familiar burning bands between your shoulder blades and up into your neck.
+463 in_article https://im.runware.ai/image/ws/2/ii/a8ec38b7-06b2-4ad9-bf92-ff3043e99e20.webp /data/app/igny8/frontend/public/images/ai-images/image_463_1766976378.webp Scene of a person reading a safety checklist on a tablet while holding a back hook massager. Callout icons highlight sensitive areas like the spine and neck joints, with soft red zones to avoid. Calm indoor environment, neutral tones, clear educational feel, realistic style emphasizing safety and careful use. generated 1 2025-12-29 02:42:06.136586+00 2025-12-29 02:42:06.136597+00 90 201 61 21 \N \N \N \N f \N Before you start, it’s important to review a few safety basics. Avoid pressing directly on the spine or front of the neck, and never force through sharp or radiating pain. Instead, aim for moderate, tolerable pressure on muscle tissue only, gradually increasing intensity as your body warms and relaxes.
+528 in_article https://im.runware.ai/image/ws/2/ii/2ed11307-09af-4614-bb33-460567e7d0f3.webp /data/app/igny8/frontend/public/images/ai-images/image_528_1767466124.webp Split-screen style image: left side shows a shopper testing a demo back massager cushion in a Walmart store; right side shows a person at home browsing an expanded selection of back massagers on Walmart’s website. Consistent realistic style, clear contrast between in-store immediacy and online variety. failed 3 2026-01-03 18:14:28.841815+00 2026-01-03 18:14:28.841824+00 90 210 61 21 \N \N \N \N f \N Comparing in-store and online-only back massager options at Walmart often comes down to priorities. In-store models offer instant pickup and the chance to inspect size and controls, while online listings usually include more advanced features and brands. Balancing speed, price, and functionality helps you decide which buying path makes the most sense.
+465 in_article https://im.runware.ai/image/ws/2/ii/11c34e79-f1a5-43a2-9698-fc02d739370e.webp /data/app/igny8/frontend/public/images/ai-images/image_465_1766976416.webp Close-up of a person using a back hook massager on the side of the neck and upper shoulder (trapezius). Step-by-step overlay numbers show hand placement and direction of pull, with the person’s face relaxed. Warm lighting, realistic style, clinical yet approachable instructional mood. generated 3 2025-12-29 02:42:06.152214+00 2025-12-29 02:42:06.152221+00 90 201 61 21 \N \N \N \N f \N When working on neck tension, start at the upper shoulder where the trapezius muscle meets the neck. Hook the knob over a tender spot, then gently pull down or slightly forward while breathing slowly. Adjust the angle millimeter by millimeter so you can explore around joints and sensitive structures with precision.
+464 in_article https://im.runware.ai/image/ws/2/ii/09b9302e-f29c-4483-959e-609e233c1fe3.webp /data/app/igny8/frontend/public/images/ai-images/image_464_1766976397.webp Side view of a person sitting upright in a chair, feet flat on the floor, using a back hook massager on the upper back between the shoulder blade and spine. Arrows illustrate correct body alignment and pulling direction. Bright, realistic, instructional composition focused on posture and positioning. generated 2 2025-12-29 02:42:06.144392+00 2025-12-29 02:42:06.144399+00 90 201 61 21 \N \N \N \N f \N Body positioning matters as much as the tool itself. Sit or stand with a neutral spine, feet grounded, and shoulders relaxed so you can pull the hook smoothly instead of tensing up. Good alignment lets you deliver steady pressure to knots around the shoulder blades without overworking your hands or wrists.
+470 in_article https://im.runware.ai/image/ws/2/ii/a2728b99-edcc-4a3c-a9a3-3aeddf5d226d.webp /data/app/igny8/frontend/public/images/ai-images/image_470_1766976324.webp Interior of a car with a driver’s seat fitted with a compact back massager pad and another on a living room recliner in the background, split-scene composition. The car shows the device powered and glowing slightly; the home scene is cozy with warm lighting. Realistic style, lifestyle-focused. generated 3 2025-12-29 02:42:14.305096+00 2025-12-29 02:42:14.305101+00 90 202 61 21 \N \N \N \N f \N These massagers aren’t just for the office. A compact model can strap onto your car seat to ease tightness during commutes, while a larger version can live on your favorite recliner at home. Consistent use in both settings helps counteract the cumulative strain of hours spent sitting each day.
+469 in_article https://im.runware.ai/image/ws/2/ii/e84d6d67-5799-4a28-bcf8-597ff320be17.webp /data/app/igny8/frontend/public/images/ai-images/image_469_1766976304.webp Open-plan office with several employees at desks; one person sits in a task chair fitted with a back massager, discreetly visible. The person looks focused on their computer, relaxed posture, soft daylight from windows. Professional, realistic photography emphasizing productivity and comfort together. generated 2 2025-12-29 02:42:14.299226+00 2025-12-29 02:42:14.299235+00 90 202 61 21 \N \N \N \N f \N At work, a chair back massager can quietly tackle the stiffness that builds during long stretches at your desk. Short 10–20 minute sessions between meetings can ease muscle tension by around 15–30% over weeks, which many people notice as fewer tension headaches, better posture, and less late-day fatigue.
+466 featured https://im.runware.ai/image/ws/2/ii/b147aee0-6291-496e-80a9-0a17cf1d296f.webp /data/app/igny8/frontend/public/images/ai-images/image_466_1766976269.webp A modern home office scene with a person sitting in an ergonomic chair fitted with a sleek black back massager pad. The massager shows glowing red heated nodes along the spine area. Soft natural light, warm and relaxing mood, clean minimal desk setup with laptop, realistic photography style, high detail. generated 0 2025-12-29 02:42:14.272587+00 2025-12-29 02:42:14.272597+00 90 202 61 21 \N \N \N \N f \N Turning an ordinary chair into a relaxation zone is as simple as strapping on a back massager. While you type or take calls, rolling or kneading nodes work along your spine for 10–20 minutes, easing stiffness that builds from long hours of sitting and helping reduce evening fatigue over time.
+473 in_article https://im.runware.ai/image/ws/2/ii/b18a69c6-afe2-46ef-986c-ada904a5052f.webp /data/app/igny8/frontend/public/images/ai-images/image_473_1766976197.webp Flat lay of several back massager tools on a wooden surface: a straight massage stick with knobs, an S-shaped hook, a compact double-ball roller. Small labels indicate features like grip texture, knob size, and reach. Clean, bright overhead lighting, minimalist product photography style. generated 1 2025-12-29 02:42:22.284404+00 2025-12-29 02:42:22.284409+00 90 203 61 21 \N \N \N \N f \N Choosing the right back and shoulder massager tool comes down to reach, handle comfort, and how focused the pressure feels. Longer hooks are ideal for upper back and neck trigger points, while straight sticks with textured grips work well along the spine. Knob size also matters—smaller tips dig deeper, larger ones feel more diffuse.
+459 in_article https://im.runware.ai/image/ws/2/ii/4b319322-0da5-4669-a1eb-075966677a4b.webp /data/app/igny8/frontend/public/images/ai-images/image_459_1766976490.webp Office setting with a person sitting in an ergonomic desk chair fitted with a sleek back massager cushion. The device shows a gentle glow where rollers are working along the spine. Computer and tidy desk in view, natural daylight, relaxed posture, subtle sense of productivity and comfort. Photorealistic, professional yet cozy. generated 2 2025-12-29 02:41:57.53232+00 2025-12-29 02:41:57.532326+00 90 200 61 21 \N \N \N \N f \N A back massager for chair is one of the easiest ways to build relief into your day without changing your routine. While you answer emails or join virtual meetings, rollers or vibration panels quietly work along your spine, loosening tight spots and improving circulation so your back doesn’t feel wrecked by the time you log off.
+461 featured https://im.runware.ai/image/ws/2/ii/733df960-90e6-4bc2-9a57-520fb72ebbc5.webp /data/app/igny8/frontend/public/images/ai-images/image_461_1766976360.webp Bright, clean home setting with a person sitting on a couch using a blue plastic back hook massager on their upper back and shoulder. Focus on the curved hook applying pressure to a knot, relaxed posture, natural daylight, soft neutral colors, realistic photography style, wellness and self-care mood. generated 0 2025-12-29 02:42:06.118719+00 2025-12-29 02:42:06.118728+00 90 201 61 21 \N \N \N \N f \N A back hook massager makes it easy to reach stubborn knots along your neck, shoulders, and upper back without straining your hands. By using the curved handle as a lever, you can generate firm, controlled pressure while staying relaxed, turning a few minutes of focused self-massage into an effective daily self-care routine.
+462 in_article https://im.runware.ai/image/ws/2/ii/84f7c35b-c87a-4632-8d9e-a9401233f985.webp /data/app/igny8/frontend/public/images/ai-images/image_462_1766976342.webp Close-up on a back hook massager against a white background, showing its curved hook, multiple knobs, and ergonomic handle. Next to it, a simple diagram overlay illustrates how the lever action multiplies force on a muscle knot. Clean, instructional, realistic style suitable for an educational health article. generated 0 2025-12-29 02:42:06.1276+00 2025-12-29 02:42:06.127611+00 90 201 61 21 \N \N \N \N f \N A back hook massager is designed with curves and knobs that match the contours of your back, shoulders, and neck. By pulling gently on the handle, you use simple leverage to direct 10–20 pounds of pressure into a single tight spot, making it far more precise than most electric massage devices.
+468 in_article https://im.runware.ai/image/ws/2/ii/7a30ec78-d6e7-45d4-94ef-19fecfaeb966.webp /data/app/igny8/frontend/public/images/ai-images/image_468_1766976286.webp Diagram-style scene showing key features of a chair back massager: labeled shiatsu nodes, rolling track, vibration zones, and a glowing heat function around 40–50°C. Clean, modern infographic look with subtle gradients, neutral background, and simple icons to highlight adjustability, presets, and safety features. generated 1 2025-12-29 02:42:14.291307+00 2025-12-29 02:42:14.291314+00 90 202 61 21 \N \N \N \N f \N When comparing models, it helps to understand the core features: mechanical massage heads that mimic shiatsu or rolling, vibration motors for broader relaxation, and optional heat in the 40–50°C range to boost circulation. Preset programs and adjustable intensities let you tailor each session to your comfort level.
+475 in_article https://im.runware.ai/image/ws/2/ii/a82aa24b-5d4b-48ec-ba96-692eb7b2af0e.webp /data/app/igny8/frontend/public/images/ai-images/image_475_1766976234.webp A close, three-quarter view of a person using an S-shaped back hook massager over their shoulder to reach the upper back and neck. The hook has multiple rounded knobs along its curve. Soft indoor lighting, neutral background, realistic wellness photography emphasizing deep, focused pressure on shoulder and neck knots. generated 3 2025-12-29 02:42:22.295585+00 2025-12-29 02:42:22.29559+00 90 203 61 21 \N \N \N \N f \N Back hook massagers excel at reaching deep knots at the tops of the shoulders and along the base of the neck. By pulling the hook’s handle forward, you can generate strong, controlled pressure on hard-to-reach spots while keeping your arms relaxed, making it easier to work on stubborn tension without tiring yourself out.
+474 in_article https://im.runware.ai/image/ws/2/ii/0381116b-723e-48fc-bcf4-fa3652b96443.webp /data/app/igny8/frontend/public/images/ai-images/image_474_1766976215.webp A person in casual clothes standing and using a straight back massager stick across their upper back, hands gripping both ends to apply pressure. Cozy living room setting, natural daylight, realistic photography. The stick has ergonomic handles and a slightly curved center with small massage nodes. generated 2 2025-12-29 02:42:22.290268+00 2025-12-29 02:42:22.290276+00 90 203 61 21 \N \N \N \N f \N For everyday use, a well-designed back massager stick should feel intuitive to hold and easy to maneuver across the upper back. Ergonomic handles reduce strain in the wrists and forearms, while a slightly curved center with small nodes lets you roll or press into tight bands of muscle without needing extreme strength or flexibility.
+472 in_article https://im.runware.ai/image/ws/2/ii/160b2c31-fb5f-48ad-a6af-8f67e4a78562.webp /data/app/igny8/frontend/public/images/ai-images/image_472_1766976162.webp Close-up of a person using a curved back massager hook on a trigger point between the shoulder blade and spine. Transparent anatomical overlay subtly shows muscle knots and tension lines. Neutral background, soft lighting, realistic medical-education style, emphasizing how precise pressure is applied to specific points in the upper back. generated 0 2025-12-29 02:42:22.278181+00 2025-12-29 02:42:22.278186+00 90 203 61 21 \N \N \N \N f \N When you press a back massager hook into a tight spot between the shoulder blade and spine, you’re targeting a trigger point rather than spreading force across a broad area. Staying just below a 7 out of 10 on the pain scale helps the muscle release instead of tensing up, gradually easing that deep, concrete-like tightness.
+483 in_article https://im.runware.ai/image/ws/2/ii/9c1b010f-60d6-47d3-b676-9f11c3375dbc.webp /data/app/igny8/frontend/public/images/ai-images/image_483_1767226958.webp A person sitting on a sofa with a heated back massager, next to a visible timer or phone showing 15–20 minutes, and a weekly planner with several short sessions marked. Warm, relaxed living room, realistic style, emphasizing moderation and routine rather than intensity, health and self-care theme. generated 3 2026-01-01 00:10:39.723812+00 2026-01-01 00:10:39.723817+00 90 205 61 21 \N \N \N \N f \N Short, consistent sessions are safer and more effective than long, intense ones. Aim for about 10–20 minutes per area, then give your tissues time to recover. Building a routine of moderate daily use lets your muscles adapt to the combination of heat and pressure without causing next-day soreness or fatigue.
+482 in_article https://im.runware.ai/image/ws/2/ii/ce08e24e-c173-472c-bf59-26032de65377.webp /data/app/igny8/frontend/public/images/ai-images/image_482_1767226942.webp Three-panel illustration showing proper positioning of a heated back massager: seated against a chair for upper back, reclining with support for mid-back, and lying with knees bent for lower back. Neutral, clear colors, realistic but simplified style focused on posture and spinal alignment, no text, educational look. generated 2 2026-01-01 00:10:39.718575+00 2026-01-01 00:10:39.718581+00 90 205 61 21 \N \N \N \N f \N Positioning changes how the massage feels on different parts of your back. For upper and mid-back, leaning against a supportive chair or cushion helps the device contact muscles without digging into bone. For the lower back, lying down with knees bent keeps your spine neutral so the heat and pressure spread more comfortably.
+481 in_article https://im.runware.ai/image/ws/2/ii/f610712c-e634-4848-9836-55cd31ff4960.webp /data/app/igny8/frontend/public/images/ai-images/image_481_1767226923.webp Bathroom or bedroom scene where a person gently stretches their back and applies a thin towel over the lower back area before using a heated back massager. Soft, natural lighting, tidy space with a water bottle and small towel nearby, realistic wellness photography style, calm and prepared atmosphere. generated 1 2026-01-01 00:10:39.712838+00 2026-01-01 00:10:39.712844+00 90 205 61 21 \N \N \N \N f \N Preparing your body and environment makes each massage session more effective. Light stretching, staying hydrated, and placing a thin layer of fabric between the device and your skin help your back tolerate both pressure and heat. This simple setup reduces the risk of hot spots or friction while making the warmth feel more evenly distributed.
+479 featured https://im.runware.ai/image/ws/2/ii/a3bc8606-8155-4ea7-8dd6-82a6c2c88ba8.webp /data/app/igny8/frontend/public/images/ai-images/image_479_1767226907.webp A calm, modern bedroom scene with a person lying on their back on a bed, using an electric back massager with visible soft red heat glow along the spine. Warm, neutral lighting, cozy blankets, and a relaxed expression emphasize comfort and safety. Clean, realistic style, health and wellness magazine photography, no branding, diverse adult. generated 0 2026-01-01 00:10:39.700655+00 2026-01-01 00:10:39.700665+00 90 205 61 21 \N \N \N \N f \N Using a back massager with heat should feel soothing, not intense or overwhelming. Combining gentle mechanical pressure with moderate warmth can boost blood flow and ease tight muscles when matched to your body’s needs. The goal is to create a calm, comfortable environment where you can relax while the device does gradual, controlled work.
+480 in_article https://im.runware.ai/image/ws/2/ii/e7a787a3-0abe-49ae-b5fd-1eed55550b4d.webp /data/app/igny8/frontend/public/images/ai-images/image_480_1767226889.webp Close-up of a handheld back massager with heat, showing clearly labeled intensity, speed, and heat buttons or dials. A person’s hands adjust the settings while an illustrated overlay highlights different levels. Clean, bright background, instructional yet friendly feel, realistic style suitable for a health guide, no visible branding. generated 0 2026-01-01 00:10:39.706657+00 2026-01-01 00:10:39.706663+00 90 205 61 21 \N \N \N \N f \N Before you start, take a moment to understand your back massager’s settings. Identify which controls adjust intensity, speed, and heat, and begin at the lowest levels. Gradually increase only if your muscles feel comfortable. This step helps you avoid excessive pressure or temperature that can irritate sensitive tissues instead of relaxing them.
+489 featured https://im.runware.ai/image/ws/2/ii/4af61c2f-126d-45d0-b1ed-2bfb0727eb48.webp /data/app/igny8/frontend/public/images/ai-images/image_489_1767474804.webp A modern, cozy living room scene with a person sitting on a sofa using a sleek heated back massager on their upper back, soft red/orange glow indicating soothing heat. Nearby on the coffee table, a compact massage gun rests beside a laptop and water bottle. Warm, natural lighting, realistic photography style, clean, health-focused aesthetic. generated 0 2026-01-01 00:10:56.560641+00 2026-01-01 00:10:56.560651+00 90 207 61 21 \N \N \N \N f \N Choosing the best back massager with heat starts with understanding how you actually use it day to day. Whether you’re unwinding on the couch after work or recovering from a workout, a good model should combine consistent heat, ergonomic reach, and enough power to loosen knots without leaving your back feeling sore or bruised.
+497 in_article https://im.runware.ai/image/ws/2/ii/547dfcda-939d-4630-a868-bdf5563fd0ab.webp /data/app/igny8/frontend/public/images/ai-images/image_497_1767226652.webp Smartphone in a person’s hand showing a map app with multiple pins labeled pharmacy, big-box store, and wellness shop. On-screen search bar reads “back massager near me.” Background subtly shows a living room setting. Bright, clear interface, realistic style, emphasizing local search and planning purchases. generated 2 2026-01-01 00:11:05.915312+00 2026-01-01 00:11:05.915319+00 90 208 61 21 \N \N \N \N f \N Using a “back massager near me” search strategically means going beyond the first result. Check which locations actually list massagers in stock, filter by price range, and read quick reviews. This lets you plan two or three promising stops instead of driving blindly from store to store hoping they carry what you need.
+496 in_article https://im.runware.ai/image/ws/2/ii/cde5a305-7248-40b2-af4a-9331d2099f45.webp /data/app/igny8/frontend/public/images/ai-images/image_496_1767226632.webp Close-up of several types of back massagers displayed on a store shelf: a long-handled wand, a compact vibrating pad, a large shiatsu back cushion with rollers, and a high-end massage gun. Clear packaging highlights features like heat, intensity, and targeted zones. Clean, well-lit, realistic product-focused composition. generated 1 2026-01-01 00:11:05.907601+00 2026-01-01 00:11:05.907611+00 90 208 61 21 \N \N \N \N f \N Local stores usually carry a mix of back massager styles, from simple vibrating wands to more advanced shiatsu cushions with rotating nodes and heat. Seeing them side by side makes it easier to understand how each design targets different areas of your back and what level of intensity fits your comfort level.
+498 in_article https://im.runware.ai/image/ws/2/ii/8c98e1e6-cd15-48f6-95df-220b9224544c.webp /data/app/igny8/frontend/public/images/ai-images/image_498_1767226670.webp Interior of a Walmart store health and wellness aisle with a dedicated section for massagers. Shelves display affordable handheld massagers, mid-range shiatsu cushions, and a few premium models. Overhead signage and price tags are visible. Bright fluorescent lighting, wide-angle view, realistic style, everyday shopping environment. generated 3 2026-01-01 00:11:05.924805+00 2026-01-01 00:11:05.924813+00 90 208 61 21 \N \N \N \N f \N At Walmart, back massagers are often grouped with other personal care or wellness devices, making it easy to compare prices quickly. You’ll usually find budget-friendly handheld models alongside mid-range shiatsu cushions. Checking in-store labels for features and return policies helps you decide whether to grab a basic option or invest in something more advanced.
+502 in_article https://im.runware.ai/image/ws/2/ii/d3f240f4-c8a6-419f-b88e-30017aaee82c.webp /data/app/igny8/frontend/public/images/ai-images/image_502_1767226559.webp A split-screen style image showing a smartphone displaying live inventory for back massagers at major retailers like a big-box store and a pharmacy. Product thumbnails show different massager styles with stock indicators such as 'In Stock' and 'Low Stock'. Clean, bright interface, realistic photography, neutral background. generated 2 2026-01-01 00:11:13.452513+00 2026-01-01 00:11:13.452518+00 90 209 61 21 \N \N \N \N f \N Checking live inventory at major retailers can save you wasted trips and frustration. Many store apps and websites now show whether specific back massagers are in stock at locations near you. Use this feature to confirm availability, compare models, and even place items on hold before you head out the door.
+501 in_article https://im.runware.ai/image/ws/2/ii/3cefaae5-0ded-4edb-b50b-50c64471ec33.webp /data/app/igny8/frontend/public/images/ai-images/image_501_1767226540.webp Over-the-shoulder view of a person at a desk using a laptop and smartphone, both screens showing search results for 'back massager near me' with map pins, filters for price, ratings, and distance. Clean, modern workspace, daylight, realistic photography, slight depth of field focusing on the screens. generated 1 2026-01-01 00:11:13.447508+00 2026-01-01 00:11:13.447513+00 90 209 61 21 \N \N \N \N f \N Typing “back massager near me” is just the starting point. Use filters for distance, price range, and customer ratings to refine results, then compare a few promising options side by side. This smart approach helps you avoid endless scrolling and quickly spot stores that carry the kinds of massagers you actually want.
+499 featured https://im.runware.ai/image/ws/2/ii/963fb586-73e4-46e7-9669-785f4d128c2e.webp /data/app/igny8/frontend/public/images/ai-images/image_499_1767226522.webp A cozy living room scene with a person sitting comfortably in an armchair using an electric back massager on their upper back, smartphone in hand showing a map with nearby store pins. Warm natural light, modern but relatable home decor, calm and relieved facial expression, realistic photography style, soft focus background emphasizing comfort and convenience. generated 0 2026-01-01 00:11:13.433743+00 2026-01-01 00:11:13.433751+00 90 209 61 21 \N \N \N \N f \N Finding the best back massager near you doesn’t have to be stressful or time-consuming. By combining online search tools with a clear idea of what you need, you can quickly narrow down nearby options and walk into a store confident that you’ll leave with a device that truly eases your back tension.
+500 in_article https://im.runware.ai/image/ws/2/ii/6081a55a-3086-476c-8e06-22193716b559.webp /data/app/igny8/frontend/public/images/ai-images/image_500_1767226502.webp Close-up of a person thoughtfully comparing different types of back massagers on a coffee table: a handheld percussion massager, a shiatsu massage pillow, and a full back massage cushion. The person is holding a notepad with notes like 'upper back pain', 'budget', 'heat function'. Bright, neutral background, realistic style. generated 0 2026-01-01 00:11:13.441401+00 2026-01-01 00:11:13.441406+00 90 209 61 21 \N \N \N \N f \N Before you even type “back massager near me” into a search bar, it helps to define exactly what you’re looking for. Consider where your pain is located, how intense it feels, and whether you prefer deep kneading, gentle vibration, or targeted percussion so you can focus on products that match your specific needs.
+512 in_article https://im.runware.ai/image/ws/2/ii/d4d83955-f97e-454d-8487-955feeb860fe.webp /data/app/igny8/frontend/public/images/ai-images/image_512_1767226365.webp Wide view of a warehouse club like Costco or Sam’s Club, showing large massage chair displays alongside stacked pallets of electronics and home goods. A shopper tests a full-body massage chair while another examines a boxed back massager bundle. Spacious warehouse setting, high ceilings, natural and artificial lighting, realistic style. generated 2 2026-01-01 00:11:29.132182+00 2026-01-01 00:11:29.132193+00 90 211 61 21 \N \N \N \N f \N Big-box retailers and warehouse clubs near you can be ideal if you want value bundles or higher-end massage chairs. These stores may have fewer models than Walmart, but they often feature premium brands, in-store demos, and occasional instant rebates, making them a smart stop when you’re considering a larger investment in pain relief.
+511 in_article https://im.runware.ai/image/ws/2/ii/6531a5d1-e8d6-472a-b9e7-5129afb65eb4.webp /data/app/igny8/frontend/public/images/ai-images/image_511_1767226347.webp Interior of a Walmart health and personal care aisle, with shelves full of affordable back massagers: boxed shiatsu cushions, handheld percussion models, and heating pads. A shopper checks a product label while another uses the Walmart app on their phone. Bright, realistic lighting, clear Walmart branding, everyday-life photography style. generated 1 2026-01-01 00:11:29.125407+00 2026-01-01 00:11:29.125412+00 90 211 61 21 \N \N \N \N f \N Walmart often ranks high for back massagers because it combines wide coverage with budget-friendly pricing. Most locations carry multiple brands and styles, from entry-level handheld massagers to mid-range cushions with heat. You can compare features in person, check online reviews on your phone, and usually walk out with something the same day.
+509 featured https://im.runware.ai/image/ws/2/ii/388d681c-de56-4ae6-9b7d-69b47bf479a4.webp /data/app/igny8/frontend/public/images/ai-images/image_509_1767226329.webp Bright, modern retail aisle with various back massagers on shelves: handheld percussion massagers, shiatsu cushions, and compact massage chairs. A diverse adult couple compares boxes, checking prices and features. Clear store signage, warm lighting, clean layout. Realistic photography style, inviting and informative mood, slight depth of field emphasizing the massager section. generated 0 2026-01-01 00:11:29.114092+00 2026-01-01 00:11:29.114102+00 90 211 61 21 \N \N \N \N f \N When you start searching for a back massager nearby, you’ll usually find a surprising variety of options within a short drive. From simple handheld devices to mid-range cushions and premium massage chairs, understanding how different stores stock and price these products helps you match your pain relief needs to your budget and timeline.
+510 in_article https://im.runware.ai/image/ws/2/ii/a1d52e48-250f-4d55-8b21-5ed047d6009f.webp /data/app/igny8/frontend/public/images/ai-images/image_510_1767226309.webp Collage-style scene showing a comparison of four store types: a big-box retailer aisle, a warehouse club with pallets, a small wellness shop with display shelves, and a pharmacy counter. Icons or subtle labels indicate price, selection, and convenience. Clean, infographic-inspired layout, realistic elements, neutral background, clear and organized composition. generated 0 2026-01-01 00:11:29.119934+00 2026-01-01 00:11:29.119941+00 90 211 61 21 \N \N \N \N f \N To choose the best place to buy a back massager locally, it helps to compare store types side by side. Big-box chains, warehouse clubs, pharmacies, and specialty wellness shops each differ in selection, pricing consistency, and convenience. Knowing these trade-offs lets you quickly narrow down where to shop before you even leave home.
+477 in_article https://im.runware.ai/image/ws/2/ii/df8d1f0b-69e9-48d4-96cc-e59b0b9bdfee.webp /data/app/igny8/frontend/public/images/ai-images/image_477_1767226977.webp Side-by-side comparison layout: on the left, a slim handheld wand-style massager with a long handle reaching a person’s mid-back; on the right, a compact massage gun being used on the upper back and lats. Clean white background, subtle labels, modern product-photography style emphasizing ergonomic shapes and different head attachments. failed 0 2026-01-01 00:10:32.307133+00 2026-01-01 00:10:32.307145+00 90 204 61 21 \N \N \N \N f \N Handheld wands and massage guns may look similar, but they feel very different in use. Wands usually offer lighter, broader vibration and are easier for beginners or desk workers who want gentle relief. Massage guns deliver deeper percussion, better suited to athletes or anyone targeting dense tissue around the lats and spinal erectors.
+492 in_article https://im.runware.ai/image/ws/2/ii/878b64bf-16b2-4a36-99a6-dd385096c002.webp /data/app/igny8/frontend/public/images/ai-images/image_492_1767474869.webp Person standing in a bedroom using a long-handled heated back massager to reach the middle of their back, ergonomic curved handle clearly visible. Soft warm glow at the massage head suggests heat. Casual home setting with tidy bed and nightstand in background. Natural, lifestyle photography with emphasis on reach and everyday usability. generated 2 2026-01-01 00:10:56.588039+00 2026-01-01 00:10:56.588053+00 90 207 61 21 \N \N \N \N f \N For everyday use, a handheld back massager with a long, ergonomic handle can be a game changer, especially if you live alone or have limited shoulder mobility. The extended reach lets you target mid- and lower-back knots without awkward stretching, while built-in heat supports circulation and relaxation during short, frequent sessions throughout the week.
+494 featured https://im.runware.ai/image/ws/2/ii/a03cd83e-bea1-42be-89ba-ee6a1b1d4c4f.webp /data/app/igny8/frontend/public/images/ai-images/image_494_1767226613.webp Bright, modern retail store aisle focused on back massagers: neatly arranged shelves with various massagers (handheld, percussion guns, shiatsu cushions, chair pads) in colorful boxes. A shopper compares two boxes, checking labels for intensity levels, heat, and warranty. Natural lighting, clean design, realistic photography style, inviting and informative mood. generated 0 2026-01-01 00:11:05.887969+00 2026-01-01 00:11:05.887978+00 90 208 61 21 \N \N \N \N f \N Buying a back massager locally lets you see real devices instead of guessing from product photos. You can compare sizes, test weight and grip, and quickly scan packaging for features like heat, intensity settings, and warranty coverage. This hands-on experience makes it easier to narrow down options before you commit.
+495 in_article https://im.runware.ai/image/ws/2/ii/1bdcc9c6-bfb2-45fe-9c55-6dddb2362c8b.webp /data/app/igny8/frontend/public/images/ai-images/image_495_1767226594.webp Cozy wellness store interior with a small display of back massagers on a wooden table: premium shiatsu cushions, sleek percussion guns, and compact handheld models. A shopper talks with a staff member who gestures toward the products. Warm lighting, calm atmosphere, realistic style, emphasizing personal guidance and local shopping benefits. generated 0 2026-01-01 00:11:05.894004+00 2026-01-01 00:11:05.894009+00 90 208 61 21 \N \N \N \N f \N When you buy locally instead of online, you gain the chance to ask questions, feel build quality, and sometimes even test demo units. Staff at pharmacies or wellness boutiques can explain which models suit chronic tension versus occasional soreness, helping you avoid guesswork and costly returns that often come with online orders.
+503 in_article https://im.runware.ai/image/ws/2/ii/abf6fdf4-b756-4d0c-aecc-bce5bba65cef.webp /data/app/igny8/frontend/public/images/ai-images/image_503_1767226578.webp A person holding a smartphone while standing in a parking lot, map app open showing several nearby stores with star ratings, distances, and price tags for back massagers. In the background, a recognizable big-box store entrance and a smaller local shop. Golden hour lighting, realistic, everyday look. generated 3 2026-01-01 00:11:13.457784+00 2026-01-01 00:11:13.457789+00 90 209 61 21 \N \N \N \N f \N Once you’ve found a few options, compare nearby stores by distance, price, and reviews. A slightly longer drive might be worth it if the store has better-rated products or more knowledgeable staff. Balancing convenience with value helps you choose a place where you’re more likely to find a massager you’ll truly enjoy.
+476 featured https://im.runware.ai/image/ws/2/ii/d5022435-d25b-45ff-b3bd-a897a73a6a75.webp /data/app/igny8/frontend/public/images/ai-images/image_476_1767226993.webp A cozy modern living room scene with a person sitting comfortably in a soft armchair using a heated back massager on their upper back. Warm orange-red glow indicates heat. A massage gun and a handheld wand-style massager lie on a nearby coffee table. Soft evening lighting, clean minimalist decor, realistic photography style. failed 0 2026-01-01 00:10:32.289918+00 2026-01-01 00:10:32.289934+00 90 204 61 21 \N \N \N \N f \N Using a back massager with heat at home lets you tackle stiffness and stress on your own schedule, without last‑minute chiropractor visits. Modern devices combine targeted vibration or percussion with soothing warmth, helping muscles relax in under 15 minutes so you can recover from long workdays or intense workouts more efficiently.
+517 in_article https://im.runware.ai/image/ws/2/ii/755279ca-42ce-4e73-a32b-04d447d8a9a0.webp /data/app/igny8/frontend/public/images/ai-images/image_517_1767463437.webp Person lying semi-reclined in a chair using a heated back cushion, with a subtle overlay showing temperature zones along the spine. Warm orange-red gradients over the back area, calm facial expression, dim cozy lighting suggesting relaxation and pain relief. Realistic photography with slight infographic elements. generated 2 2026-01-03 17:52:34.656802+00 2026-01-03 17:52:34.656809+00 90 212 61 21 \N \N \N \N f \N Heat plays a central role in easing back pain and tension by relaxing tight muscle fibers and improving tissue elasticity. When combined with rhythmic massage, it can reduce stiffness, increase comfort during movement, and make stretching more effective, especially for people dealing with chronic low‑back tightness or long hours at a desk.
+514 featured https://im.runware.ai/image/ws/2/ii/c95a8ee2-7095-42b6-8fc1-a9d75f0b6582.webp /data/app/igny8/frontend/public/images/ai-images/image_514_1767463418.webp Modern home setting with a person sitting on a sofa using a heated back massager on their lower back. Visible soft red/orange glow indicating heat, relaxed posture, casual clothing. Clean, bright, wellness-focused environment with a laptop and water bottle on a side table. Realistic photography style, warm lighting, calm mood. generated 0 2026-01-03 17:52:34.635205+00 2026-01-03 17:52:34.635214+00 90 212 61 21 \N \N \N \N f \N A quality heated back massager turns your living room into a personal recovery space, easing desk-related stiffness and post‑workout soreness without appointments. By combining mechanical pressure with gentle warmth, it boosts local circulation, helps clear metabolic waste, and reduces that guarded, locked‑up feeling that often builds across the lower and mid back.
+518 in_article https://im.runware.ai/image/ws/2/ii/6dd369a2-162c-40c8-8ba5-2c40c63b7f0f.webp /data/app/igny8/frontend/public/images/ai-images/image_518_1767463443.webp Flat-lay arrangement of different heated back massagers: handheld wand, massage gun, heated wrap, and a shiatsu back cushion. Each device neatly arranged on a neutral background with subtle glow effects indicating heat. Clean, modern, product-comparison aesthetic, overhead view, soft natural lighting. generated 3 2026-01-03 17:52:34.664251+00 2026-01-03 17:52:34.664259+00 90 212 61 21 \N \N \N \N f \N Today’s market offers several types of heated back massagers, from long-handled wands and powerful massage guns to wraparound belts and shiatsu cushions for chairs. Each style varies in reach, intensity, and heat coverage, so choosing the right design depends on whether you prioritize portability, deep tissue work, or hands‑free, full‑back comfort.
+516 in_article https://im.runware.ai/image/ws/2/ii/0ad0ae2b-5bcd-422b-8b82-a27de4fdf108.webp /data/app/igny8/frontend/public/images/ai-images/image_516_1767463427.webp Side-by-side comparison layout: on the left, a classic handheld wand-style back massager with a long handle; on the right, a compact massage gun with multiple attachments. Clean white background, subtle labels, soft shadows, product-style photography emphasizing ergonomic shapes and controls. generated 1 2026-01-03 17:52:34.650085+00 2026-01-03 17:52:34.650098+00 90 212 61 21 \N \N \N \N f \N Handheld wands and massage guns both target back tension, but they deliver force differently. A wand-style back massager excels at broad, sweeping strokes and easier reach to the mid and lower back, while a massage gun focuses more percussive force into smaller areas, ideal for dense knots and post‑workout trigger points.
+515 in_article https://im.runware.ai/image/ws/2/ii/1953137e-e572-4e06-8936-88fe4d355b23.webp /data/app/igny8/frontend/public/images/ai-images/image_515_1767463405.webp Close-up of a heated back massager applied to the lumbar area over clothing, with a transparent overlay showing muscles and increased blood flow in red tones. Soft orange heat glow from the device. Educational, medical-illustration style blended with realistic photography, neutral background, clear focus on how heat penetrates muscle tissue. generated 0 2026-01-03 17:52:34.643204+00 2026-01-03 17:52:34.64321+00 90 212 61 21 \N \N \N \N f \N A heated back massager works by delivering both mechanical pressure and therapeutic warmth to the deeper layers of back muscles. As tissues warm, blood vessels dilate and circulation can increase by as much as 20–25%, which supports nutrient delivery, waste removal, and easing the rigid muscle guarding that makes your back feel chronically tight.
+524 featured https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-5ltf78WDwTuU4Dz59TrqZL8S.png?st=2026-01-03T21%3A28%3A31Z&se=2026-01-03T23%3A28%3A31Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=0ec745ad-3d9b-4d43-86db-87a2c9b420f1&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T20%3A00%3A18Z&ske=2026-01-04T20%3A00%3A18Z&sks=b&skv=2024-08-04&sig=s0lpcPQcpBVPe8HmXnPSoiRI/fwXXKtlLYvc%2BdBdGi8%3D /data/app/igny8/frontend/public/images/ai-images/image_524_1767479311.png Bright, modern Walmart store interior showing a shopper comparing several back massagers on a neatly organized shelf. Visible boxes for handheld, shiatsu cushion, and massage chair toppers with clear price tags and rollback signs. Warm, inviting lighting, realistic photography style, slightly elevated angle, diverse shoppers in background, clean and budget-friendly atmosphere. generated 0 2026-01-03 18:14:28.811293+00 2026-01-03 18:14:28.811304+00 90 210 61 21 \N \N \N \N f \N When you search for a back massager at Walmart, you’ll usually see a wide price range and plenty of options on the shelf. From compact handheld units to larger shiatsu cushions, the variety makes it easier to match your budget and comfort preferences while taking advantage of Walmart’s frequent rollbacks and promotions.
+525 in_article https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-iaKaRK6t207U8eA9O0z1NlbO.png?st=2026-01-03T21%3A28%3A50Z&se=2026-01-03T23%3A28%3A50Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=1726b4ce-fee1-450b-8b92-1731ad8745f6&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T22%3A28%3A50Z&ske=2026-01-04T22%3A28%3A50Z&sks=b&skv=2024-08-04&sig=1GqSdQaOBo9vJdU54nhLxP6KUcr%2B9d%2BxWhuTxgXGE24%3D /data/app/igny8/frontend/public/images/ai-images/image_525_1767479331.png Wide shot of a Walmart health and wellness aisle with a prominent back massager section. Shelves display multiple brands and models, with rollback and clearance tags visible. A shopper holds a box, checking features on the back. Realistic style, bright lighting, clean layout, emphasizing affordability and choice. generated 0 2026-01-03 18:14:28.819937+00 2026-01-03 18:14:28.819958+00 90 210 61 21 \N \N \N \N f \N Choosing Walmart for a back massager purchase often comes down to convenience and value. With dedicated sections in many stores, you can quickly compare brands, read feature lists on the packaging, and see current rollback prices. This in-person comparison helps you avoid overpaying for features you may not actually use at home.
+527 in_article https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-yNmQf1icAjYhP6io6gW6SySo.png?st=2026-01-03T21%3A29%3A34Z&se=2026-01-03T23%3A29%3A34Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=92b997d6-f0dd-439d-8087-b26c74d72365&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T06%3A21%3A02Z&ske=2026-01-04T06%3A21%3A02Z&sks=b&skv=2024-08-04&sig=iRPmfFuWDAdAtvejbk5V8pX91H8JLGhJp/sA9WlY2nM%3D /data/app/igny8/frontend/public/images/ai-images/image_527_1767479374.png Laptop and smartphone on a kitchen table showing Walmart’s website and app with a search for “back massager.” Filters for price, pickup today, and brand are visible. A hand taps the ‘Pickup today’ option. Realistic, bright home setting, casual mood, focus on screens and interface. generated 2 2026-01-03 18:14:28.835716+00 2026-01-03 18:14:28.835724+00 90 210 61 21 \N \N \N \N f \N Before heading to the store, checking Walmart’s website or app for back massager availability can save time. Using filters like “Pickup today,” price range, and customer ratings helps you narrow options to what’s actually in stock locally, so you can reserve a unit online and avoid hunting through multiple aisles in person.
+526 in_article https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-c2N9oPQchAo5d003U2o7hHTb.png?st=2026-01-03T21%3A29%3A13Z&se=2026-01-03T23%3A29%3A13Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=75dd98d5-7f83-456f-ae8d-a58a7fba1b61&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T21%3A27%3A35Z&ske=2026-01-04T21%3A27%3A35Z&sks=b&skv=2024-08-04&sig=wUHUqfs7PchtMLhZzmodRVBfkpQa9JvMyUd4SRHtteI%3D /data/app/igny8/frontend/public/images/ai-images/image_526_1767479353.png Close-up display of different types of back massagers at Walmart: a compact handheld percussion massager, a shiatsu back cushion with heat, a massage gun, and a larger massage seat topper. Each product is clearly labeled with price and key features. Realistic product photography, neutral background, sharp focus. generated 1 2026-01-03 18:14:28.82721+00 2026-01-03 18:14:28.827217+00 90 210 61 21 \N \N \N \N f \N In a single Walmart aisle, you’ll typically find several massager types: handheld units for targeted knots, shiatsu cushions that mimic kneading hands, massage guns for deep muscle work, and seat toppers that cover the full back. Understanding these categories makes it easier to match a device to your specific pain points and routine.
+523 in_article https://oaidalleapiprodscus.blob.core.windows.net/private/org-d6y6V9UCfxJGPrrw8U9X7iX2/user-Hcrg9zi6BPbsvyJfu4qZ5wyy/img-GNTw5h5FTjAXKwTyyigbT36g.png?st=2026-01-03T20%3A57%3A41Z&se=2026-01-03T22%3A57%3A41Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=7aed557a-269d-4dda-ab8b-c66e34024151&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-01-03T21%3A57%3A41Z&ske=2026-01-04T21%3A57%3A41Z&sks=b&skv=2024-08-04&sig=an8xRD/Yxiai4bl4z8CNC/JZLZjtBLCEm7x32NNWdJ4%3D /data/app/igny8/frontend/public/images/ai-images/image_523_1767477462.png A person lounging on a sofa using a heated handheld back massager, with a subtle orange glow indicating warmth on the lower back. Next to them, a massage gun without visible heat function sits on a side table. Soft, relaxing evening lighting, home wellness atmosphere, realistic photography. generated 3 2026-01-03 18:10:26.09425+00 2026-01-03 18:10:26.094256+00 90 206 61 21 \N \N \N \N f \N Heat is where many handheld designs stand out. Built-in warming elements can boost blood flow and help muscles relax more quickly, which feels especially soothing at the end of a long day. Most massage guns skip heat and instead focus on stronger mechanical impact, trading cozy comfort for more intense muscle work.
+522 in_article https://im.runware.ai/image/ws/2/ii/8a851d37-2025-422d-b405-a2b7e32617f1.webp /data/app/igny8/frontend/public/images/ai-images/image_522_1767475251.webp Side-by-side illustration-style image showing a handheld massager applying shallow, wide vibrations to the back muscles, and a massage gun delivering deeper, focused percussive strokes into muscle tissue. Cross-section style with simplified muscles, clean medical infographic look, soft blues and neutrals. failed 2 2026-01-03 18:10:26.087902+00 2026-01-03 18:10:26.087915+00 90 206 61 21 \N \N \N \N f \N The main difference between these devices is how they deliver pressure into your muscles. Handheld models usually provide broader, surface-level vibration that gently relaxes tight areas, while massage guns drive more concentrated, rhythmic percussive force deeper into tissue, better suited for dense knots and post-workout soreness.
+519 featured https://im.runware.ai/image/ws/2/ii/581daeb7-00f8-4519-ae33-feed7e247b56.webp /data/app/igny8/frontend/public/images/ai-images/image_519_1767475217.webp A split-screen comparison of a person using a sleek cordless massage gun on the upper back on one side, and another person using a curved handheld back massager with heat on the lower back on the other side. Bright, modern home setting, neutral colors, clear focus on the two device styles, clean editorial style photography. failed 0 2026-01-03 18:10:26.061495+00 2026-01-03 18:10:26.06151+00 90 206 61 21 \N \N \N \N f \N Choosing between a handheld back massager and a massage gun starts with understanding how your pain feels and where it lives. Surface-level tightness from desk work usually responds well to gentler vibration and heat, while deep, stubborn knots from intense training often need the stronger percussive force of a massage gun.
+521 in_article https://im.runware.ai/image/ws/2/ii/a8d5dc8a-3190-4156-bca7-a8753a431690.webp /data/app/igny8/frontend/public/images/ai-images/image_521_1767475240.webp A compact, cordless massage gun with multiple attachment heads laid out on a gym bench beside a water bottle and towel. An athletic person in workout clothes picks up the gun, locker-room or gym background slightly blurred, cool and energetic lighting, modern fitness product photography. failed 1 2026-01-03 18:10:26.078027+00 2026-01-03 18:10:26.078043+00 90 206 61 21 \N \N \N \N f \N Massage guns are designed with athletes and active users in mind, pairing a compact body with interchangeable heads that target different muscle groups. Their cordless design and higher-intensity percussion make them easy to toss in a gym bag and use before or after workouts to address deep muscle fatigue.
+\.
+
+
+--
+-- Data for Name: igny8_industries; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_industries (id, name, slug, description, is_active, created_at, updated_at) FROM stdin;
+21 Home & Garden home-garden Home improvement, gardening, landscaping, and interior design t 2025-11-05 11:07:20.33184+00 2025-11-05 11:07:20.331857+00
+22 Apparel & Fashion apparel-fashion Fashion, clothing, and apparel industry t 2025-11-19 20:57:22.128761+00 2025-11-19 20:57:22.128785+00
+23 Beauty & Personal Care beauty-personal-care Beauty, skincare, and personal care products and services t 2025-11-19 20:57:22.140996+00 2025-11-19 20:57:22.141002+00
+9 Automotive automotive Automotive sales, services, and parts t 2025-11-04 16:43:57.02681+00 2025-11-19 20:57:22.146579+00
+24 Home & Furniture home-furniture Furniture, home decor, and home improvement t 2025-11-19 20:57:22.155198+00 2025-11-19 20:57:22.155219+00
+25 Healthcare & Medical healthcare-medical Healthcare services, medical practices, and health-related services t 2025-11-19 20:57:22.161659+00 2025-11-19 20:57:22.161668+00
+26 Real Estate & Construction real-estate-construction Real estate, property management, and construction services t 2025-11-19 20:57:22.168532+00 2025-11-19 20:57:22.168538+00
+27 Technology & IT Services technology-it-services Technology services, software development, and IT solutions t 2025-11-19 20:57:22.175035+00 2025-11-19 20:57:22.175044+00
+28 Finance & Insurance finance-insurance Financial services, banking, insurance, and investment t 2025-11-19 20:57:22.182419+00 2025-11-19 20:57:22.182436+00
+29 Education & Training education-training Educational institutions, training programs, and learning services t 2025-11-19 20:57:22.190068+00 2025-11-19 20:57:22.190076+00
+7 Food & Beverage food-beverage Restaurants, food services, and beverage industry t 2025-11-04 16:43:57.006837+00 2025-11-19 20:57:22.196169+00
+1 Technology technology Software, cloud computing, cybersecurity, and technology services f 2025-11-04 14:56:39.099439+00 2025-11-19 21:05:19.931662+00
+10 Fashion & Apparel fashion-apparel Fashion, clothing, and apparel businesses f 2025-11-04 16:43:57.035905+00 2025-11-19 21:05:19.935264+00
+\.
+
+
+--
+-- Data for Name: igny8_industry_sectors; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_industry_sectors (id, name, slug, description, suggested_keywords, is_active, created_at, updated_at, industry_id) FROM stdin;
+3 Cybersecurity cybersecurity Security services, threat protection, and compliance ["cybersecurity services", "network security", "data protection", "security audit", "penetration testing", "managed security services", "compliance consulting", "security monitoring", "incident response", "security training"] f 2025-11-04 14:56:39.110999+00 2025-11-04 16:44:55.595256+00 1
+5 IT Consulting IT-consulting IT strategy, implementation, and support services ["IT consulting", "IT strategy", "digital transformation", "IT infrastructure", "network setup", "IT support services", "system integration", "IT project management", "technology assessment", "IT outsourcing"] f 2025-11-04 16:43:56.954125+00 2025-11-04 16:44:55.598454+00 1
+31 Auto Parts auto-parts Automotive parts and accessories ["auto parts", "car parts", "automotive parts", "car accessories", "auto parts store", "car parts online", "replacement parts", "aftermarket parts", "OEM parts", "auto supplies"] t 2025-11-04 16:43:57.03431+00 2025-11-04 16:44:55.646738+00 9
+32 Clothing Stores clothing-stores Clothing and apparel retail ["clothing store", "fashion store", "apparel store", "online clothing", "fashion retail", "clothing boutique", "fashion brand", "clothing online", "fashion shop", "apparel shop"] t 2025-11-04 16:43:57.038132+00 2025-11-04 16:44:55.649202+00 10
+34 Accessories accessories Fashion accessories and jewelry ["fashion accessories", "jewelry", "handbags", "watches", "sunglasses", "accessories store", "fashion jewelry", "designer accessories", "accessories online", "fashion accessories shop"] t 2025-11-04 16:43:57.042827+00 2025-11-04 16:44:55.65198+00 10
+30 Auto Repair auto-repair Auto repair and maintenance services ["auto repair", "car repair", "auto mechanic", "car maintenance", "auto service", "vehicle repair", "car diagnostics", "engine repair", "brake repair", "auto shop"] f 2025-11-04 16:43:57.032463+00 2025-11-19 20:57:22.153182+00 9
+29 Car Dealerships car-dealerships Car sales and dealership services ["car dealership", "car sales", "new car dealer", "used car dealer", "car buying", "car financing", "automotive dealer", "car showroom", "vehicle sales", "car trade-in"] f 2025-11-04 16:43:57.029156+00 2025-11-19 20:57:22.154138+00 9
+33 Fashion Design fashion-design Fashion design and custom clothing ["fashion design", "custom clothing", "fashion designer", "bespoke tailoring", "custom suits", "fashion consulting", "clothing design", "fashion styling", "wardrobe consulting", "personal styling"] t 2025-11-04 16:43:57.040655+00 2025-11-04 16:44:55.650486+00 10
+1 Software Development software-development Custom software development, SaaS products, and applications ["custom software development", "SaaS development", "web application development", "mobile app development", "software consulting", "enterprise software", "cloud software", "API development", "software architecture", "agile development"] f 2025-11-04 14:56:39.104761+00 2025-11-04 16:44:55.59184+00 1
+59 Gardening gardening Plants, flowers, vegetables, and garden maintenance ["organic gardening", "vegetable gardening", "flower garden design", "garden tools", "plant care tips", "composting guide", "garden pest control", "herb garden ideas", "garden irrigation systems", "seasonal planting guide"] t 2025-11-05 11:07:20.335388+00 2025-11-05 11:07:20.335405+00 21
+60 Home Improvement home-improvement DIY projects, renovations, and home repairs ["home renovation ideas", "diy home projects", "kitchen remodeling", "bathroom renovation", "flooring installation", "painting tips", "home repair guide", "power tools review", "home maintenance checklist", "interior design trends"] t 2025-11-05 11:07:20.337647+00 2025-11-05 11:07:20.337657+00 21
+61 Landscaping landscaping Outdoor design, lawn care, and hardscaping ["landscape design ideas", "lawn care tips", "outdoor patio design", "deck building guide", "garden pathways", "outdoor lighting ideas", "lawn mowing tips", "tree planting guide", "outdoor kitchen design", "garden edging ideas"] t 2025-11-05 11:07:20.339048+00 2025-11-05 11:07:20.339055+00 21
+62 Interior Design interior-design Home decoration, furniture, and interior styling ["interior design styles", "home decor ideas", "furniture arrangement", "color scheme ideas", "small space design", "home staging tips", "decoration trends", "room makeover ideas", "interior lighting design", "home organization tips"] t 2025-11-05 11:07:20.34049+00 2025-11-05 11:07:20.340496+00 21
+63 Home Decor home-decor Decorative items, accessories, and home styling ["home decor accessories", "wall art ideas", "curtain design tips", "pillow arrangement", "vase decoration ideas", "home fragrance tips", "decorative mirrors", "rug selection guide", "home accent pieces", "seasonal home decor"] t 2025-11-05 11:07:20.342147+00 2025-11-05 11:07:20.342152+00 21
+64 Menswear menswear \N [] t 2025-11-19 20:57:22.132987+00 2025-11-19 20:57:22.132996+00 22
+65 Womenswear womenswear \N [] t 2025-11-19 20:57:22.136169+00 2025-11-19 20:57:22.136175+00 22
+66 Kidswear kidswear \N [] t 2025-11-19 20:57:22.136646+00 2025-11-19 20:57:22.136655+00 22
+67 Sportswear & Activewear sportswear-activewear \N [] t 2025-11-19 20:57:22.137057+00 2025-11-19 20:57:22.137063+00 22
+68 Footwear footwear \N [] t 2025-11-19 20:57:22.137513+00 2025-11-19 20:57:22.137521+00 22
+69 Accessories accessories \N [] t 2025-11-19 20:57:22.13793+00 2025-11-19 20:57:22.137934+00 22
+70 Uniforms & Workwear uniforms-workwear \N [] t 2025-11-19 20:57:22.138322+00 2025-11-19 20:57:22.138327+00 22
+71 Luxury Fashion luxury-fashion \N [] t 2025-11-19 20:57:22.138696+00 2025-11-19 20:57:22.1387+00 22
+72 Ethnic & Cultural Wear ethnic-cultural-wear \N [] t 2025-11-19 20:57:22.139039+00 2025-11-19 20:57:22.139044+00 22
+73 Skincare skincare \N [] t 2025-11-19 20:57:22.142315+00 2025-11-19 20:57:22.142321+00 23
+74 Haircare haircare \N [] t 2025-11-19 20:57:22.142713+00 2025-11-19 20:57:22.142718+00 23
+75 Makeup & Cosmetics makeup-cosmetics \N [] t 2025-11-19 20:57:22.143064+00 2025-11-19 20:57:22.14307+00 23
+76 Fragrances fragrances \N [] t 2025-11-19 20:57:22.143494+00 2025-11-19 20:57:22.143499+00 23
+77 Personal Hygiene personal-hygiene \N [] t 2025-11-19 20:57:22.14387+00 2025-11-19 20:57:22.143877+00 23
+78 Spa & Salon Services spa-salon-services \N [] t 2025-11-19 20:57:22.144196+00 2025-11-19 20:57:22.144201+00 23
+79 Dermatology Clinics dermatology-clinics \N [] t 2025-11-19 20:57:22.144598+00 2025-11-19 20:57:22.144602+00 23
+80 Beauty Devices & Tools beauty-devices-tools \N [] t 2025-11-19 20:57:22.144939+00 2025-11-19 20:57:22.144943+00 23
+81 New Car Sales new-car-sales \N [] t 2025-11-19 20:57:22.14824+00 2025-11-19 20:57:22.148246+00 9
+82 Used Car Sales used-car-sales \N [] t 2025-11-19 20:57:22.148615+00 2025-11-19 20:57:22.148621+00 9
+83 Auto Parts & Accessories auto-parts-accessories \N [] t 2025-11-19 20:57:22.148936+00 2025-11-19 20:57:22.14894+00 9
+84 Auto Repair & Maintenance auto-repair-maintenance \N [] t 2025-11-19 20:57:22.149286+00 2025-11-19 20:57:22.149291+00 9
+85 Car Detailing car-detailing \N [] t 2025-11-19 20:57:22.149665+00 2025-11-19 20:57:22.149671+00 9
+86 Car Rental & Leasing car-rental-leasing \N [] t 2025-11-19 20:57:22.149969+00 2025-11-19 20:57:22.149973+00 9
+87 Electric Vehicles electric-vehicles \N [] t 2025-11-19 20:57:22.150345+00 2025-11-19 20:57:22.150351+00 9
+88 Tires & Wheels tires-wheels \N [] t 2025-11-19 20:57:22.150716+00 2025-11-19 20:57:22.15072+00 9
+89 Motorcycles & Bikes motorcycles-bikes \N [] t 2025-11-19 20:57:22.151001+00 2025-11-19 20:57:22.151005+00 9
+90 Furniture furniture \N [] t 2025-11-19 20:57:22.156673+00 2025-11-19 20:57:22.156679+00 24
+91 Home Decor home-decor \N [] t 2025-11-19 20:57:22.157053+00 2025-11-19 20:57:22.157059+00 24
+92 Bedding & Mattresses bedding-mattresses \N [] t 2025-11-19 20:57:22.157463+00 2025-11-19 20:57:22.157468+00 24
+93 Kitchen & Dining kitchen-dining \N [] t 2025-11-19 20:57:22.157783+00 2025-11-19 20:57:22.157787+00 24
+94 Home Improvement & Renovation home-improvement-renovation \N [] t 2025-11-19 20:57:22.15808+00 2025-11-19 20:57:22.158084+00 24
+95 Lighting lighting \N [] t 2025-11-19 20:57:22.158476+00 2025-11-19 20:57:22.158482+00 24
+96 Storage & Organization storage-organization \N [] t 2025-11-19 20:57:22.158903+00 2025-11-19 20:57:22.158909+00 24
+97 Outdoor Furniture outdoor-furniture \N [] t 2025-11-19 20:57:22.159286+00 2025-11-19 20:57:22.159291+00 24
+98 Interior Design Services interior-design-services \N [] t 2025-11-19 20:57:22.159637+00 2025-11-19 20:57:22.159641+00 24
+99 Clinics & General Practice clinics-general-practice \N [] t 2025-11-19 20:57:22.16309+00 2025-11-19 20:57:22.163098+00 25
+100 Dentistry dentistry \N [] t 2025-11-19 20:57:22.163678+00 2025-11-19 20:57:22.163685+00 25
+101 Physiotherapy & Rehabilitation physiotherapy-rehabilitation \N [] t 2025-11-19 20:57:22.164045+00 2025-11-19 20:57:22.164051+00 25
+102 Hospitals & Diagnostic Centers hospitals-diagnostic-centers \N [] t 2025-11-19 20:57:22.164891+00 2025-11-19 20:57:22.164896+00 25
+103 Mental Health & Therapy mental-health-therapy \N [] t 2025-11-19 20:57:22.165308+00 2025-11-19 20:57:22.165314+00 25
+104 Nutrition & Dietetics nutrition-dietetics \N [] t 2025-11-19 20:57:22.165719+00 2025-11-19 20:57:22.165725+00 25
+105 Medical Equipment & Supplies medical-equipment-supplies \N [] t 2025-11-19 20:57:22.166106+00 2025-11-19 20:57:22.166111+00 25
+106 Alternative Medicine alternative-medicine \N [] t 2025-11-19 20:57:22.166502+00 2025-11-19 20:57:22.166507+00 25
+107 Residential Real Estate residential-real-estate \N [] t 2025-11-19 20:57:22.170014+00 2025-11-19 20:57:22.170019+00 26
+108 Commercial Real Estate commercial-real-estate \N [] t 2025-11-19 20:57:22.170465+00 2025-11-19 20:57:22.17047+00 26
+109 Real Estate Agencies real-estate-agencies \N [] t 2025-11-19 20:57:22.170833+00 2025-11-19 20:57:22.170837+00 26
+110 Property Management property-management \N [] t 2025-11-19 20:57:22.17136+00 2025-11-19 20:57:22.171365+00 26
+111 Construction & Contracting construction-contracting \N [] t 2025-11-19 20:57:22.171788+00 2025-11-19 20:57:22.171794+00 26
+112 Architecture & Interior Design architecture-interior-design \N [] t 2025-11-19 20:57:22.172174+00 2025-11-19 20:57:22.172179+00 26
+113 Home Inspection home-inspection \N [] t 2025-11-19 20:57:22.172598+00 2025-11-19 20:57:22.172605+00 26
+114 Real Estate Investment real-estate-investment \N [] t 2025-11-19 20:57:22.172992+00 2025-11-19 20:57:22.172997+00 26
+115 Software Development software-development \N [] t 2025-11-19 20:57:22.176432+00 2025-11-19 20:57:22.176437+00 27
+116 IT Support & Managed Services it-support-managed-services \N [] t 2025-11-19 20:57:22.177092+00 2025-11-19 20:57:22.177098+00 27
+117 Cybersecurity cybersecurity \N [] t 2025-11-19 20:57:22.177582+00 2025-11-19 20:57:22.177589+00 27
+118 Web Development & Design web-development-design \N [] t 2025-11-19 20:57:22.177966+00 2025-11-19 20:57:22.17797+00 27
+119 SaaS Products saas-products \N [] t 2025-11-19 20:57:22.178409+00 2025-11-19 20:57:22.178415+00 27
+120 Cloud Services cloud-services \N [] t 2025-11-19 20:57:22.178848+00 2025-11-19 20:57:22.178854+00 27
+121 Data & AI Services data-ai-services \N [] t 2025-11-19 20:57:22.17928+00 2025-11-19 20:57:22.179286+00 27
+122 Digital Marketing Agencies digital-marketing-agencies \N [] t 2025-11-19 20:57:22.179694+00 2025-11-19 20:57:22.1797+00 27
+123 Banking banking \N [] t 2025-11-19 20:57:22.184486+00 2025-11-19 20:57:22.184497+00 28
+124 Loans & Lending loans-lending \N [] t 2025-11-19 20:57:22.18534+00 2025-11-19 20:57:22.185347+00 28
+125 Insurance insurance \N [] t 2025-11-19 20:57:22.185742+00 2025-11-19 20:57:22.185747+00 28
+126 Accounting & Tax Services accounting-tax-services \N [] t 2025-11-19 20:57:22.186268+00 2025-11-19 20:57:22.186274+00 28
+127 Investment & Wealth Management investment-wealth-management \N [] t 2025-11-19 20:57:22.1867+00 2025-11-19 20:57:22.186706+00 28
+128 Fintech Services fintech-services \N [] t 2025-11-19 20:57:22.187129+00 2025-11-19 20:57:22.187135+00 28
+129 Credit Repair credit-repair \N [] t 2025-11-19 20:57:22.187574+00 2025-11-19 20:57:22.187579+00 28
+130 Mortgage Brokers mortgage-brokers \N [] t 2025-11-19 20:57:22.18795+00 2025-11-19 20:57:22.187956+00 28
+131 Schools & Colleges schools-colleges \N [] t 2025-11-19 20:57:22.191549+00 2025-11-19 20:57:22.191556+00 29
+132 Test Preparation test-preparation \N [] t 2025-11-19 20:57:22.191927+00 2025-11-19 20:57:22.191933+00 29
+133 Skill Development Courses skill-development-courses \N [] t 2025-11-19 20:57:22.192308+00 2025-11-19 20:57:22.192314+00 29
+134 Coaching & Tutoring coaching-tutoring \N [] t 2025-11-19 20:57:22.192721+00 2025-11-19 20:57:22.192727+00 29
+135 Online Learning Platforms online-learning-platforms \N [] t 2025-11-19 20:57:22.193069+00 2025-11-19 20:57:22.193075+00 29
+136 Professional Certifications professional-certifications \N [] t 2025-11-19 20:57:22.193493+00 2025-11-19 20:57:22.193499+00 29
+137 University Programs university-programs \N [] t 2025-11-19 20:57:22.19386+00 2025-11-19 20:57:22.193866+00 29
+138 Corporate Training corporate-training \N [] t 2025-11-19 20:57:22.194297+00 2025-11-19 20:57:22.194303+00 29
+23 Restaurants restaurants Restaurants, cafes, and dining establishments ["restaurant", "fine dining", "casual dining", "cafe", "food delivery", "takeout", "restaurant reservations", "catering services", "brunch restaurant", "dinner restaurant"] t 2025-11-04 16:43:57.008684+00 2025-11-19 20:57:22.198296+00 7
+139 Cafes & Bakeries cafes-bakeries \N [] t 2025-11-19 20:57:22.199457+00 2025-11-19 20:57:22.199464+00 7
+24 Food Delivery food-delivery Food delivery services and meal kits ["food delivery", "meal delivery", "food delivery service", "online food ordering", "food delivery app", "meal kit delivery", "grocery delivery", "food delivery platform", "restaurant delivery", "fast food delivery"] t 2025-11-04 16:43:57.011893+00 2025-11-19 20:57:22.199878+00 7
+140 Packaged Foods packaged-foods \N [] t 2025-11-19 20:57:22.200562+00 2025-11-19 20:57:22.200569+00 7
+141 Organic & Health Foods organic-health-foods \N [] t 2025-11-19 20:57:22.201+00 2025-11-19 20:57:22.201006+00 7
+142 Grocery Stores grocery-stores \N [] t 2025-11-19 20:57:22.201497+00 2025-11-19 20:57:22.201503+00 7
+143 Catering Services catering-services \N [] t 2025-11-19 20:57:22.201863+00 2025-11-19 20:57:22.201869+00 7
+144 Beverage Companies beverage-companies \N [] t 2025-11-19 20:57:22.202229+00 2025-11-19 20:57:22.202235+00 7
+25 Catering catering Catering services for events and businesses ["catering services", "event catering", "wedding catering", "corporate catering", "party catering", "catering company", "catered events", "catering menu", "buffet catering", "full service catering"] f 2025-11-04 16:43:57.014812+00 2025-11-19 20:57:22.204414+00 7
+\.
+
+
+--
+-- Data for Name: igny8_integration_providers; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_integration_providers (provider_id, display_name, provider_type, api_key, api_secret, webhook_secret, api_endpoint, config, is_active, is_sandbox, created_at, updated_at, updated_by_id) FROM stdin;
+anthropic Anthropic (Claude) ai {"default_model": "claude-3-5-sonnet-20241022"} f f 2026-01-04 06:13:55.112341+00 2026-01-04 06:13:55.112386+00 \N
+google Google Cloud ai {} f f 2026-01-04 06:13:55.114457+00 2026-01-04 06:13:55.114467+00 \N
+cloudflare_r2 Cloudflare R2 storage {"bucket": "", "endpoint": ""} f f 2026-01-04 06:13:55.121457+00 2026-01-04 06:13:55.121463+00 \N
+openai OpenAI ai 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 {"models": ["gpt-4o-mini", "gpt-4o", "gpt-5.1", "dall-e-3"], "default_model": "gpt-5.1"} t f 2026-01-04 06:13:55.106688+00 2026-01-04 07:06:47.425654+00 \N
+runware Runware ai tuHmZhhyUcArJUQ3r0Jiw8ViPaiit0Z3 {"models": ["runware:97@1", "google:4@2"], "default_model": "runware:97@1"} t f 2026-01-04 06:13:55.109736+00 2026-01-04 07:06:47.428628+00 \N
+stripe Stripe (Credit/Debit Cards) payment pk_test_51SlRuFPdRe4dWeLwCUor4IyU8Y8q7JzgUpp74AbQe5IoX7pcLMn0HwoRVptbQtgLd6kYxuQx3MC4e9MMVzEDhXPr00ZIDRlpCy sk_test_51SlRuFPdRe4dWeLw3nAw7wWOatE88Yx8ZISkDkYeMP3KA5mdVqtT1czQ25tvWQgL8QB3paQlFwPn6hBtVwWUkBnB00DIFzCniy whsec_6tEBsvfPSlaGgWtTcvapI9HP1WxxjCFW https://api.igny8.com/api/v1/billing/webhooks/stripe/ {"currency": "usd", "payment_methods": ["card"], "billing_portal_enabled": true} t t 2026-01-04 06:13:55.116174+00 2026-01-07 03:17:20.088589+00 3
+paypal PayPal payment AZ7CAmfyyKXSBmifY-kWqUYc4xNSu4mt5GGO_yL1_e5TdbHMTljMbhDc9LpHyvkgxC_wgE_OTJ32E-sl EHNxohO1p0cJMECpg4FZWLWJd377bE5NJ9z1Lm28e6yiEfFcfTgQOez6HMKB0HKpLF239DB-RMa42vF4 1C216352890918202 https://api-m.sandbox.paypal.com {"currency": "USD", "cancel_url": "https://app.igny8.com/account/plans?paypal=cancel", "return_url": "https://app.igny8.com/account/plans?paypal=success", "webhook_id": "WH-xxxxxxxxxxxxx"} t t 2026-01-04 06:13:55.117939+00 2026-01-07 07:31:26.928664+00 3
+resend Resend email re_Z4WHNYUM_8wSGnAYtC2YroPSTg7Y3u2Zu {"reply_to": "support@igny8.com", "from_name": "IGNY8", "from_email": "noreply@igny8.com"} t f 2026-01-04 06:13:55.119568+00 2026-01-08 01:09:02.096293+00 3
+\.
+
+
+--
+-- Data for Name: igny8_integration_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_integration_settings (id, integration_type, config, is_active, updated_at, created_at, tenant_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_invoices; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_invoices (id, invoice_number, subtotal, tax, total, status, invoice_date, due_date, paid_at, line_items, stripe_invoice_id, payment_method, notes, metadata, created_at, updated_at, tenant_id, currency, subscription_id) FROM stdin;
+11 INV-90-202512-0001 139.00 0.00 139.00 paid 2025-12-09 2026-01-08 2025-12-09 02:19:03.535855+00 [{"amount": "139.00", "quantity": 1, "unit_price": "139.00", "description": "Growth Plan - Dec 2025"}] \N \N {"subscription_id": 9, "billing_snapshot": {"city": "", "email": "paid2@paid.com", "state": "", "tax_id": "", "country": "", "postal_code": "", "address_line1": "", "address_line2": "", "snapshot_date": "2025-12-09T02:03:03.127165+00:00"}, "billing_period_end": "2026-01-08T02:03:02.875465+00:00", "billing_period_start": "2025-12-09T02:03:02.875465+00:00"} 2025-12-09 02:03:03.131286+00 2025-12-09 02:03:03.132833+00 90 USD \N
+\.
+
+
+--
+-- Data for Name: igny8_keywords; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_keywords (id, volume_override, difficulty_override, attribute_values, status, created_at, updated_at, tenant_id, cluster_id, sector_id, seed_keyword_id, site_id, disabled, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+793 \N \N [] mapped 2025-12-28 00:49:25.123707+00 2025-12-28 00:49:25.123718+00 90 425 61 154 21 f \N \N \N f \N
+794 \N \N [] mapped 2025-12-28 00:49:25.12762+00 2025-12-28 00:49:25.127633+00 90 425 61 167 21 f \N \N \N f \N
+795 \N \N [] mapped 2025-12-28 00:49:25.130716+00 2025-12-28 00:49:25.130723+00 90 426 61 159 21 f \N \N \N f \N
+797 \N \N [] mapped 2025-12-28 02:21:45.131678+00 2025-12-28 02:21:45.131684+00 90 424 61 180 21 f \N \N \N f \N
+606 \N \N [] mapped 2025-12-15 13:33:13.511085+00 2025-12-15 13:33:13.511091+00 5 \N 19 6 5 f api_delete 2026-01-13 00:24:58.712804+00 119 t 2026-01-27 00:24:58.712804+00
+543 \N \N [] mapped 2025-12-10 08:44:40.262264+00 2025-12-10 08:44:40.262279+00 5 \N 15 47 5 f api_delete 2026-01-13 00:24:58.747564+00 119 t 2026-01-27 00:24:58.747564+00
+506 \N \N [] mapped 2025-12-05 12:00:58.288837+00 2025-12-05 12:00:58.288847+00 5 \N 17 25 5 f api_delete 2026-01-13 00:24:58.761895+00 119 t 2026-01-27 00:24:58.761895+00
+500 \N \N [] mapped 2025-12-05 12:00:58.266115+00 2025-12-05 12:00:58.266131+00 5 \N 17 21 5 f api_delete 2026-01-13 00:24:58.774125+00 119 t 2026-01-27 00:24:58.774125+00
+492 \N \N [] mapped 2025-12-04 15:42:08.922722+00 2025-12-04 15:42:08.922736+00 5 \N 16 40 5 f api_delete 2026-01-13 00:24:58.789859+00 119 t 2026-01-27 00:24:58.789859+00
+485 \N \N [] mapped 2025-12-04 10:51:33.928033+00 2025-12-04 10:51:33.928044+00 5 \N 18 11 5 f api_delete 2026-01-13 00:24:58.809701+00 119 t 2026-01-27 00:24:58.809701+00
+796 \N \N [] mapped 2025-12-28 02:21:45.126787+00 2025-12-28 02:21:45.126802+00 90 426 61 157 21 f \N \N \N f \N
+798 \N \N [] mapped 2025-12-28 02:21:45.134384+00 2025-12-28 02:21:45.13439+00 90 426 61 160 21 f \N \N \N f \N
+578 \N \N [] new 2025-12-12 21:30:38.553071+00 2025-12-12 21:30:38.553077+00 5 \N 15 49 5 f api_delete 2026-01-13 00:24:58.738177+00 119 t 2026-01-27 00:24:58.738177+00
+577 \N \N [] new 2025-12-12 21:30:38.549775+00 2025-12-12 21:30:38.549782+00 5 \N 15 41 5 f api_delete 2026-01-13 00:24:58.739996+00 119 t 2026-01-27 00:24:58.739996+00
+576 \N \N [] new 2025-12-12 21:30:38.546391+00 2025-12-12 21:30:38.546401+00 5 \N 15 46 5 f api_delete 2026-01-13 00:24:58.741743+00 119 t 2026-01-27 00:24:58.741743+00
+540 \N \N [] new 2025-12-10 08:44:28.33967+00 2025-12-10 08:44:28.339682+00 5 \N 15 48 5 f api_delete 2026-01-13 00:24:58.753759+00 119 t 2026-01-27 00:24:58.753759+00
+539 \N \N [] new 2025-12-10 08:44:28.3338+00 2025-12-10 08:44:28.33382+00 5 \N 15 45 5 f api_delete 2026-01-13 00:24:58.755659+00 119 t 2026-01-27 00:24:58.755659+00
+799 \N \N [] mapped 2025-12-29 02:32:59.410863+00 2025-12-29 02:32:59.410875+00 90 424 61 146 21 f \N \N \N f \N
+800 \N \N [] mapped 2025-12-29 02:32:59.423157+00 2025-12-29 02:32:59.42317+00 90 424 61 181 21 f \N \N \N f \N
+801 \N \N [] mapped 2025-12-29 02:32:59.426821+00 2025-12-29 02:32:59.42683+00 90 424 61 178 21 f \N \N \N f \N
+802 \N \N [] mapped 2025-12-29 02:32:59.429928+00 2025-12-29 02:32:59.429934+00 90 424 61 140 21 f \N \N \N f \N
+803 \N \N [] mapped 2025-12-29 02:32:59.433696+00 2025-12-29 02:32:59.433703+00 90 424 61 142 21 f \N \N \N f \N
+804 \N \N [] mapped 2025-12-29 07:23:54.524787+00 2025-12-29 07:23:54.524798+00 90 425 61 150 21 f \N \N \N f \N
+805 \N \N [] mapped 2026-01-05 01:20:25.9458+00 2026-01-05 01:20:25.945814+00 90 427 61 172 21 f \N \N \N f \N
+806 \N \N [] mapped 2026-01-05 01:20:25.968051+00 2026-01-05 01:20:25.968062+00 90 427 61 188 21 f \N \N \N f \N
+807 \N \N [] mapped 2026-01-05 01:20:25.972071+00 2026-01-05 01:20:25.97208+00 90 427 61 176 21 f \N \N \N f \N
+808 \N \N [] mapped 2026-01-05 01:20:25.976185+00 2026-01-05 01:20:25.976197+00 90 427 61 141 21 f \N \N \N f \N
+809 \N \N [] mapped 2026-01-05 01:20:25.980746+00 2026-01-05 01:20:25.980761+00 90 427 61 153 21 f \N \N \N f \N
+602 \N \N [] new 2025-12-15 13:32:51.022442+00 2025-12-15 13:32:51.02245+00 5 \N 16 33 5 f api_delete 2026-01-13 00:24:58.720825+00 119 t 2026-01-27 00:24:58.720825+00
+601 \N \N [] new 2025-12-15 13:32:51.019008+00 2025-12-15 13:32:51.019016+00 5 \N 16 35 5 f api_delete 2026-01-13 00:24:58.722865+00 119 t 2026-01-27 00:24:58.722865+00
+600 \N \N [] new 2025-12-15 13:32:51.015872+00 2025-12-15 13:32:51.015887+00 5 \N 16 39 5 f api_delete 2026-01-13 00:24:58.724842+00 119 t 2026-01-27 00:24:58.724842+00
+599 \N \N [] new 2025-12-15 13:32:51.009477+00 2025-12-15 13:32:51.009493+00 5 \N 16 37 5 f api_delete 2026-01-13 00:24:58.72672+00 119 t 2026-01-27 00:24:58.72672+00
+505 \N \N [] mapped 2025-12-05 12:00:58.284833+00 2025-12-05 12:00:58.284844+00 5 \N 17 22 5 f api_delete 2026-01-13 00:24:58.763881+00 119 t 2026-01-27 00:24:58.763881+00
+496 \N \N [] mapped 2025-12-04 15:49:58.23829+00 2025-12-04 15:49:58.2383+00 5 \N 16 38 5 f api_delete 2026-01-13 00:24:58.778604+00 119 t 2026-01-27 00:24:58.778604+00
+488 \N \N [] mapped 2025-12-04 10:57:25.509187+00 2025-12-04 10:57:25.509203+00 5 \N 18 12 5 f api_delete 2026-01-13 00:24:58.80126+00 119 t 2026-01-27 00:24:58.80126+00
+487 \N \N [] mapped 2025-12-04 10:57:25.503535+00 2025-12-04 10:57:25.503552+00 5 \N 18 20 5 f api_delete 2026-01-13 00:24:58.804566+00 119 t 2026-01-27 00:24:58.804566+00
+484 \N \N [] mapped 2025-12-04 10:50:51.902866+00 2025-12-04 10:50:51.902876+00 5 \N 18 19 5 f api_delete 2026-01-13 00:24:58.812649+00 119 t 2026-01-27 00:24:58.812649+00
+483 \N \N [] mapped 2025-12-04 10:50:51.900076+00 2025-12-04 10:50:51.90009+00 5 \N 18 18 5 f api_delete 2026-01-13 00:24:58.815126+00 119 t 2026-01-27 00:24:58.815126+00
+607 \N \N [] mapped 2025-12-15 13:33:13.51424+00 2025-12-15 13:33:13.514246+00 5 \N 19 9 5 f api_delete 2026-01-13 00:24:58.70471+00 119 t 2026-01-27 00:24:58.70471+00
+605 \N \N [] mapped 2025-12-15 13:33:13.508267+00 2025-12-15 13:33:13.508274+00 5 \N 19 1 5 f api_delete 2026-01-13 00:24:58.714887+00 119 t 2026-01-27 00:24:58.714887+00
+604 \N \N [] mapped 2025-12-15 13:33:13.505834+00 2025-12-15 13:33:13.505843+00 5 \N 19 3 5 f api_delete 2026-01-13 00:24:58.716952+00 119 t 2026-01-27 00:24:58.716952+00
+603 \N \N [] mapped 2025-12-15 13:33:13.502377+00 2025-12-15 13:33:13.502394+00 5 \N 19 7 5 f api_delete 2026-01-13 00:24:58.718762+00 119 t 2026-01-27 00:24:58.718762+00
+545 \N \N [] mapped 2025-12-10 08:44:40.27399+00 2025-12-10 08:44:40.274003+00 5 \N 15 50 5 f api_delete 2026-01-13 00:24:58.743556+00 119 t 2026-01-27 00:24:58.743556+00
+542 \N \N [] mapped 2025-12-10 08:44:28.346697+00 2025-12-10 08:44:28.346707+00 5 \N 15 44 5 f api_delete 2026-01-13 00:24:58.749625+00 119 t 2026-01-27 00:24:58.749625+00
+541 \N \N [] mapped 2025-12-10 08:44:28.343179+00 2025-12-10 08:44:28.343186+00 5 \N 15 42 5 f api_delete 2026-01-13 00:24:58.75183+00 119 t 2026-01-27 00:24:58.75183+00
+508 \N \N [] mapped 2025-12-05 12:00:58.299587+00 2025-12-05 12:00:58.299598+00 5 \N 17 23 5 f api_delete 2026-01-13 00:24:58.757613+00 119 t 2026-01-27 00:24:58.757613+00
+507 \N \N [] mapped 2025-12-05 12:00:58.293592+00 2025-12-05 12:00:58.293602+00 5 \N 17 28 5 f api_delete 2026-01-13 00:24:58.759855+00 119 t 2026-01-27 00:24:58.759855+00
+504 \N \N [] mapped 2025-12-05 12:00:58.281413+00 2025-12-05 12:00:58.281429+00 5 \N 17 24 5 f api_delete 2026-01-13 00:24:58.765806+00 119 t 2026-01-27 00:24:58.765806+00
+503 \N \N [] mapped 2025-12-05 12:00:58.276406+00 2025-12-05 12:00:58.276414+00 5 \N 17 29 5 f api_delete 2026-01-13 00:24:58.767729+00 119 t 2026-01-27 00:24:58.767729+00
+502 \N \N [] mapped 2025-12-05 12:00:58.273607+00 2025-12-05 12:00:58.273618+00 5 \N 17 30 5 f api_delete 2026-01-13 00:24:58.769727+00 119 t 2026-01-27 00:24:58.769727+00
+501 \N \N [] mapped 2025-12-05 12:00:58.270279+00 2025-12-05 12:00:58.270295+00 5 \N 17 26 5 f api_delete 2026-01-13 00:24:58.771797+00 119 t 2026-01-27 00:24:58.771797+00
+499 \N \N [] mapped 2025-12-05 12:00:58.252464+00 2025-12-05 12:00:58.25248+00 5 \N 17 27 5 f api_delete 2026-01-13 00:24:58.776187+00 119 t 2026-01-27 00:24:58.776187+00
+495 \N \N [] mapped 2025-12-04 15:49:58.235815+00 2025-12-04 15:49:58.235825+00 5 \N 16 31 5 f api_delete 2026-01-13 00:24:58.78132+00 119 t 2026-01-27 00:24:58.78132+00
+494 \N \N [] mapped 2025-12-04 15:49:58.231961+00 2025-12-04 15:49:58.231976+00 5 \N 16 36 5 f api_delete 2026-01-13 00:24:58.784631+00 119 t 2026-01-27 00:24:58.784631+00
+493 \N \N [] mapped 2025-12-04 15:42:08.926186+00 2025-12-04 15:42:08.926197+00 5 \N 16 34 5 f api_delete 2026-01-13 00:24:58.787393+00 119 t 2026-01-27 00:24:58.787393+00
+491 \N \N [] mapped 2025-12-04 15:42:08.914587+00 2025-12-04 15:42:08.914607+00 5 \N 16 32 5 f api_delete 2026-01-13 00:24:58.792483+00 119 t 2026-01-27 00:24:58.792483+00
+490 \N \N [] mapped 2025-12-04 11:06:17.402763+00 2025-12-04 11:06:17.402772+00 5 \N 18 16 5 f api_delete 2026-01-13 00:24:58.794715+00 119 t 2026-01-27 00:24:58.794715+00
+489 \N \N [] mapped 2025-12-04 11:06:17.399715+00 2025-12-04 11:06:17.399732+00 5 \N 18 13 5 f api_delete 2026-01-13 00:24:58.797219+00 119 t 2026-01-27 00:24:58.797219+00
+486 \N \N [] mapped 2025-12-04 10:51:33.931106+00 2025-12-04 10:51:33.931113+00 5 \N 18 15 5 f api_delete 2026-01-13 00:24:58.807036+00 119 t 2026-01-27 00:24:58.807036+00
+482 \N \N [] mapped 2025-12-04 10:49:56.901996+00 2025-12-04 10:49:56.902005+00 5 \N 18 14 5 f api_delete 2026-01-13 00:24:58.818031+00 119 t 2026-01-27 00:24:58.818031+00
+481 \N \N [] mapped 2025-12-04 10:49:56.898876+00 2025-12-04 10:49:56.89889+00 5 \N 18 17 5 f api_delete 2026-01-13 00:24:58.820081+00 119 t 2026-01-27 00:24:58.820081+00
+598 \N \N [] mapped 2025-12-14 19:36:53.745768+00 2025-12-14 19:36:53.745783+00 5 \N 19 5 5 f api_delete 2026-01-13 00:24:58.728726+00 119 t 2026-01-27 00:24:58.728726+00
+597 \N \N [] mapped 2025-12-14 19:36:53.74195+00 2025-12-14 19:36:53.741957+00 5 \N 19 10 5 f api_delete 2026-01-13 00:24:58.730723+00 119 t 2026-01-27 00:24:58.730723+00
+596 \N \N [] mapped 2025-12-14 19:36:53.738995+00 2025-12-14 19:36:53.739001+00 5 \N 19 2 5 f api_delete 2026-01-13 00:24:58.732478+00 119 t 2026-01-27 00:24:58.732478+00
+595 \N \N [] mapped 2025-12-14 19:36:53.7355+00 2025-12-14 19:36:53.735513+00 5 \N 19 4 5 f api_delete 2026-01-13 00:24:58.734358+00 119 t 2026-01-27 00:24:58.734358+00
+594 \N \N [] mapped 2025-12-14 19:36:53.722862+00 2025-12-14 19:36:53.722871+00 5 \N 19 8 5 f api_delete 2026-01-13 00:24:58.736162+00 119 t 2026-01-27 00:24:58.736162+00
+544 \N \N [] mapped 2025-12-10 08:44:40.26787+00 2025-12-10 08:44:40.267886+00 5 \N 15 43 5 f api_delete 2026-01-13 00:24:58.745492+00 119 t 2026-01-27 00:24:58.745492+00
+\.
+
+
+--
+-- Data for Name: igny8_module_enable_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_module_enable_settings (id, created_at, updated_at, planner_enabled, writer_enabled, thinker_enabled, automation_enabled, site_builder_enabled, linker_enabled, optimizer_enabled, publisher_enabled, tenant_id) FROM stdin;
+5 2025-12-10 07:54:17.117103+00 2025-12-10 07:54:17.117118+00 t t t t f f f t 90
+1 2025-11-16 21:14:36.378469+00 2025-12-13 21:14:56.002458+00 t t t t f f f f 5
+\.
+
+
+--
+-- Data for Name: igny8_module_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_module_settings (id, is_active, updated_at, created_at, module_name, key, tenant_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_optimization_tasks; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_optimization_tasks (id, scores_before, scores_after, html_before, html_after, status, credits_used, metadata, created_at, updated_at, tenant_id, content_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_page_blueprints; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_page_blueprints (id, slug, title, type, blocks_json, status, "order", created_at, updated_at, tenant_id, sector_id, site_id, site_blueprint_id) FROM stdin;
+68 services Services services [{"type": "services", "layout": "two-column", "content": ["Home design consultations to optimize your layout.", "Custom storage solutions designed for functionality and style.", "Online workshops to inspire your DIY projects."], "heading": "Our Expert Services", "subheading": "Tailored solutions for every space."}, {"type": "stats", "layout": "full-width", "content": ["Over 1,000 satisfied customers served.", "98% customer satisfaction rate.", "100+ successful projects completed."], "heading": "Our Impact", "subheading": "Results that speak for themselves."}, {"type": "faq", "layout": "two-column", "content": ["What is your consultation process?", "How do you ensure sustainability in your products?", "Can I see a portfolio of past projects?"], "heading": "Frequently Asked Questions", "subheading": "Your questions answered."}] draft 1 2025-11-20 22:44:37.818351+00 2025-11-20 22:44:37.818357+00 5 15 5 16
+69 about About Us about [{"type": "hero", "layout": "full-width", "content": ["An engaging image reflecting the journey of the brand."], "heading": "Our Story", "subheading": "Building beautiful homes, one space at a time."}, {"type": "features", "layout": "two-column", "content": ["Commitment to quality and craftsmanship.", "Passion for sustainable living.", "Dedication to customer satisfaction."], "heading": "Our Values", "subheading": "What drives us."}, {"type": "team", "layout": "cards", "content": ["Brief bios of key team members with images.", "Highlight their expertise and role in the company."], "heading": "Meet the Team", "subheading": "The faces behind Home & Garden."}] draft 2 2025-11-20 22:44:37.820437+00 2025-11-20 22:44:37.820443+00 5 15 5 16
+70 blog Blog blog [{"type": "hero", "layout": "full-width", "content": ["Featured image representing the essence of home decor."], "heading": "Latest Insights", "subheading": "Stay updated with the latest trends in home decor."}, {"type": "features", "layout": "cards", "content": ["Article summary with links to full posts.", "Include images to capture interest."], "heading": "Popular Articles", "subheading": "Our most read articles."}, {"type": "newsletter", "layout": "full-width", "content": ["Email subscription form to capture leads."], "heading": "Join Our Community", "subheading": "Get the latest tips directly to your inbox."}] draft 3 2025-11-20 22:44:37.822384+00 2025-11-20 22:44:37.82239+00 5 15 5 16
+71 contact Contact Us contact [{"type": "hero", "layout": "full-width", "content": ["An inviting image of customer service interaction."], "heading": "We're Here to Help", "subheading": "Reach out with any questions or requests."}, {"type": "contact", "layout": "two-column", "content": ["Contact form for inquiries.", "Display of phone number and email address."], "heading": "Get in Touch", "subheading": "We'd love to hear from you."}, {"type": "faq", "layout": "two-column", "content": ["How long does a project typically take?", "What is your pricing structure?", "What areas do you serve?"], "heading": "Common Questions", "subheading": "Find answers to common queries."}] draft 4 2025-11-20 22:44:37.824378+00 2025-11-20 22:44:37.824384+00 5 15 5 16
+72 faq FAQ custom [{"type": "hero", "layout": "full-width", "content": ["An engaging image that represents support and assistance."], "heading": "Frequently Asked Questions", "subheading": "Your queries answered."}, {"type": "faq", "layout": "two-column", "content": ["What are your operating hours?", "Do you offer online consultations?", "What payment methods do you accept?"], "heading": "General Questions", "subheading": "We’ve got you covered."}, {"type": "faq", "layout": "two-column", "content": ["Can I customize my order?", "What is your return policy?", "Do you provide installation services?"], "heading": "Service-Specific Questions", "subheading": "Learn more about our offerings."}] draft 5 2025-11-20 22:44:37.826491+00 2025-11-20 22:44:37.826497+00 5 15 5 16
+67 home Home home [{"data": {"content": "At Home & Garden Site, we offer a carefully curated selection of products that elevate your home and garden experience. Discover stylish decor, essential tools, and more.", "heading": "Transform Your Home & Garden with Our Quality Products", "buttonLink": "/shop", "buttonText": "Shop Now", "subheading": "Everything you need to create your perfect space"}, "type": "hero"}, {"data": {"content": " Your one-stop shop for everything home and garden. Discover a wide range of quality products designed to enhance your living space. ", "heading": "Welcome to Home & Garden Site"}, "type": "text"}, {"data": {"content": ["Quality products curated for your home and garden.", "Expert advice and tips for garden care.", "Exclusive offers and discounts for our loyal customers."], "heading": "Why Choose Us?"}, "type": "features"}, {"data": {"content": ["\\"The best place to find unique home decorations!\\" - Sarah K.", "\\"I love the quality of the garden tools I purchased!\\" - Tom R.", "\\"Fast shipping and great customer service!\\" - Linda M."], "heading": "What Our Customers Say", "subheading": "Real feedback from our happy clients"}, "type": "testimonials"}, {"data": {"content": "Sign up now to receive exclusive offers, updates, and tips to make the most of your home and garden.", "heading": "Join Us Today", "buttonLink": "/signup", "buttonText": "Sign Up", "subheading": "Become a part of our community"}, "type": "cta"}] ready 0 2025-11-20 22:44:37.815511+00 2025-11-26 17:20:34.512724+00 5 15 5 16
+\.
+
+
+--
+-- Data for Name: igny8_password_reset_tokens; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_password_reset_tokens (id, token, expires_at, used, created_at, user_id) FROM stdin;
+1 0gleUtFhwWXYRul06xP6Q6QjRB-M8cQYMBsStXlyTec 2026-01-08 05:36:55.660008+00 f 2026-01-08 04:36:55.661682+00 3
+2 3Cub9eic8YiPSZ2SfaH0LXxtSymWJ_V04Psf_1kdF_4 2026-01-08 05:37:01.910494+00 f 2026-01-08 04:37:01.910903+00 3
+3 zRTnqCq_q9vBn7OHxmaM7zwOJgpnJVzBgY05sfiJtDk 2026-01-08 05:42:29.762528+00 f 2026-01-08 04:42:29.763044+00 3
+\.
+
+
+--
+-- Data for Name: igny8_payment_method_config; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_payment_method_config (id, country_code, payment_method, is_enabled, display_name, instructions, bank_name, account_number, routing_number, swift_code, wallet_type, wallet_id, sort_order, created_at, updated_at, account_title, iban) FROM stdin;
+14 PK local_wallet f JazzCash / Easypaisa Make Payment to JazzCash: 03001234567\r\nUpload the receipt and trnasaction nnumber after you ahve paid. JazzCash 03001234567 7 2025-12-07 04:14:18.910053+00 2025-12-31 21:05:02.72675+00
+12 * stripe t Credit/Debit Card (Stripe) 1 2025-12-07 02:08:19.421573+00 2026-01-07 00:44:06.478565+00
+13 * paypal t PayPal 2 2025-12-07 02:08:19.423077+00 2026-01-07 00:44:06.498606+00
+10 PK bank_transfer t Bank Transfer Bank: ABC Bank\r\nAccount: 1234567890\r\nSWIFT: ABCPKKA ABC Bank International 1234567890 ABCPKKA 3 2025-12-07 02:08:19.415857+00 2026-01-07 02:43:13.918194+00
+\.
+
+
+--
+-- Data for Name: igny8_payments; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_payments (id, amount, currency, status, payment_method, stripe_payment_intent_id, stripe_charge_id, paypal_order_id, paypal_capture_id, manual_reference, manual_notes, approved_at, processed_at, failed_at, refunded_at, failure_reason, metadata, created_at, updated_at, tenant_id, approved_by_id, invoice_id, admin_notes) FROM stdin;
+9 139.00 USD succeeded bank_transfer \N \N \N \N 1111111 2025-12-09 02:14:53.044595+00 2025-12-09 02:14:53.044588+00 \N \N {"submitted_by": "paid2@paid.com"} 2025-12-09 02:03:27.086754+00 2025-12-09 02:19:03.530979+00 90 3 11
+\.
+
+
+--
+-- Data for Name: igny8_plan_limit_usage; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_plan_limit_usage (id, limit_type, amount_used, period_start, period_end, metadata, created_at, updated_at, tenant_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_plans; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_plans (id, name, slug, price, billing_cycle, features, is_active, created_at, max_users, max_sites, max_industries, max_author_profiles, included_credits, extra_credit_price, allow_credit_topup, auto_credit_topup_threshold, auto_credit_topup_amount, stripe_product_id, stripe_price_id, credits_per_month, is_internal, annual_discount_percent, is_featured, max_keywords, original_price, max_ahrefs_queries) FROM stdin;
+6 Internal (System/Superuser) internal 0.00 monthly ["ai_writer", "image_gen", "auto_publish", "custom_prompts", "unlimited"] t 2025-11-08 23:14:16.130137+00 10000 20 \N 5 10000 0.01 t \N \N \N \N 2000 t 15 f 100000 \N 500
+1 Free Plan free 0.00 monthly ["1 Site", "50 Keywords", "100 Credits", "10K Words", "10 Clusters", "20 Images"] f 2025-11-02 22:01:17.053412+00 1 1 1 2 100 0.00 f \N \N \N \N 0 f 15 f 100 \N 0
+2 Starter starter 99.00 monthly ["50 Pages/Articles", "2 Sites", "2 Team Users", "500 Keywords", "200 Images", "AI SEO"] t 2025-11-04 14:55:33.381314+00 2 2 \N 5 1000 0.10 t \N \N prod_TkGrgKWbrBo4sX price_1SmmJhPdRe4dWeLwSufhikqW 1000 f 10 f 500 \N 50
+4 Growth growth 199.00 monthly ["200 Pages/Articles", "5 Sites", "3 Team Users", "2000 Keywords", "800 Images", "AI SEO"] t 2025-11-07 11:46:29.144704+00 3 5 \N 5 2000 0.08 t \N \N prod_TkGsliLPq7Sl8w price_1SmmKMPdRe4dWeLw9nfQUVus 0 f 10 t 2000 \N 200
+5 Scale scale 299.00 monthly ["500 Pages/Articles", "99 Sites", "5 Team Users", "5000 Keywords", "2000 Images", "AI SEO"] t 2025-11-07 11:46:29.148062+00 5 99 \N 10 5000 0.06 t \N \N prod_TkGs64iCjpb9Ok price_1SmmL6PdRe4dWeLwisBUvC0N 0 f 10 f 5000 \N 500
+\.
+
+
+--
+-- Data for Name: igny8_publishing_records; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_publishing_records (id, destination, destination_id, destination_url, status, published_at, error_message, metadata, created_at, updated_at, tenant_id, content_id, sector_id, site_id, site_blueprint_id) FROM stdin;
+59 wordpress \N \N failed \N \N {"error": "site_url is required in destination_config"} 2026-01-12 21:57:49.234401+00 2026-01-12 21:57:49.253601+00 90 208 61 21 \N
+60 wordpress \N \N failed \N \N {"error": "site_url is required in destination_config"} 2026-01-12 21:58:11.676684+00 2026-01-12 21:58:11.686936+00 90 208 61 21 \N
+61 wordpress \N \N failed \N \N {"error": "site_url is required in destination_config"} 2026-01-12 21:58:24.892597+00 2026-01-12 21:58:24.901816+00 90 208 61 21 \N
+62 wordpress \N \N failed \N \N {"error": "site_url is required in destination_config"} 2026-01-12 21:58:37.399129+00 2026-01-12 21:58:37.403283+00 90 208 61 21 \N
+63 wordpress \N \N failed \N \N {"error": "HTTP 409: {\\"success\\":false,\\"data\\":{\\"post_id\\":12946},\\"message\\":\\"Content already exists as WordPress post\\",\\"request_id\\":\\"c955476a-6f11-4da4-adea-4ab74aba213c\\",\\"error\\":\\"content_exists\\"}"} 2026-01-12 22:08:59.990289+00 2026-01-12 22:09:00.439725+00 90 208 61 21 \N
+64 wordpress \N \N failed \N \N {"error": "HTTP 409: {\\"success\\":false,\\"data\\":{\\"post_id\\":12946},\\"message\\":\\"Content already exists as WordPress post\\",\\"request_id\\":\\"522daa78-b3c6-4c3c-9f45-31612ce00216\\",\\"error\\":\\"content_exists\\"}"} 2026-01-12 22:43:38.643+00 2026-01-12 22:43:39.166651+00 90 208 61 21 \N
+65 wordpress \N \N failed \N \N {"error": "HTTP 409: {\\"success\\":false,\\"data\\":{\\"post_id\\":13004},\\"message\\":\\"Content already exists as WordPress post\\",\\"request_id\\":\\"389e2974-dad6-482b-96b0-47f765684d05\\",\\"error\\":\\"content_exists\\"}"} 2026-01-12 22:44:55.464366+00 2026-01-12 22:44:55.847713+00 90 216 61 21 \N
+66 wordpress \N \N failed \N \N {"error": "HTTP 409: {\\"success\\":false,\\"data\\":{\\"post_id\\":13004},\\"message\\":\\"Content already exists as WordPress post\\",\\"request_id\\":\\"27d22e92-3946-4398-891e-caabcd24b8c8\\",\\"error\\":\\"content_exists\\"}"} 2026-01-12 22:53:17.679328+00 2026-01-12 22:53:18.210716+00 90 216 61 21 \N
+68 wordpress 13011 https://massagersmart.com/health/wellness/back-massagers-vs-traditional-massage-which-is-better/ published 2026-01-12 23:42:45.987461+00 \N {"status": "publish", "post_id": 13011, "term_ids": {"tags": [1659, 1709, 1710, 1711, 1661, 1728, 1707, 1727], "categories": [1724], "igny8_sectors": [1671], "igny8_clusters": [1713]}} 2026-01-12 23:42:40.139955+00 2026-01-12 23:42:45.988949+00 90 217 61 21 \N
+\.
+
+
+--
+-- Data for Name: igny8_publishing_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_publishing_settings (id, auto_approval_enabled, auto_publish_enabled, daily_publish_limit, weekly_publish_limit, monthly_publish_limit, publish_days, publish_time_slots, created_at, updated_at, tenant_id, site_id) FROM stdin;
+3 t t 3 15 50 ["mon", "tue", "wed", "thu", "fri"] ["09:00", "14:00", "18:00"] 2026-01-12 22:02:27.764594+00 2026-01-12 22:02:27.764606+00 90 21
+\.
+
+
+--
+-- Data for Name: igny8_scheduled_tasks; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_scheduled_tasks (id, scheduled_at, executed_at, status, result, error_message, metadata, created_at, updated_at, tenant_id, automation_rule_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_sectors; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_sectors (id, name, slug, description, is_active, status, created_at, updated_at, tenant_id, industry_sector_id, site_id, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+18 Interior Design interior-design Home decoration, furniture, and interior styling t active 2025-11-05 11:07:20.355948+00 2026-01-12 16:07:10.461692+00 90 62 5 \N 2026-01-12 17:00:19.34954+00 \N t 2026-01-26 17:00:19.34954+00
+50 Footwear footwear f active 2025-12-10 07:51:10.139198+00 2025-12-10 07:51:10.139211+00 90 68 21 \N \N \N f \N
+51 Kidswear kidswear f active 2025-12-10 07:51:10.144927+00 2025-12-10 07:51:10.144934+00 90 66 21 \N \N \N f \N
+61 Physiotherapy & Rehabilitation physiotherapy-rehabilitation t active 2025-12-17 05:40:13.377341+00 2026-01-01 04:22:28.190869+00 90 101 21 \N \N \N f \N
+62 Mental Health & Therapy mental-health-therapy t active 2026-01-01 04:22:28.197313+00 2026-01-01 04:22:28.197329+00 90 103 21 \N \N \N f \N
+19 Home Decor home-decor Decorative items, accessories, and home styling t active 2025-11-05 11:07:20.357928+00 2026-01-12 16:06:52.349523+00 90 63 5 \N 2026-01-12 17:00:19.344919+00 \N t 2026-01-26 17:00:19.344919+00
+17 Landscaping landscaping Outdoor design, lawn care, and hardscaping t active 2025-11-05 11:07:20.353955+00 2025-11-09 02:02:06.739306+00 5 61 5 \N 2026-01-12 17:00:19.352535+00 \N t 2026-01-26 17:00:19.352535+00
+16 Home Improvement home-improvement DIY projects, renovations, and home repairs t active 2025-11-05 11:07:20.351797+00 2025-11-09 02:02:06.72575+00 5 60 5 \N 2026-01-12 17:00:19.355585+00 \N t 2026-01-26 17:00:19.355585+00
+15 Gardening gardening Plants, flowers, vegetables, and garden maintenance t active 2025-11-05 11:07:20.349018+00 2025-11-09 02:02:06.707486+00 5 59 5 \N 2026-01-12 17:00:19.358356+00 \N t 2026-01-26 17:00:19.358356+00
+\.
+
+
+--
+-- Data for Name: igny8_seed_keywords; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_seed_keywords (id, keyword, volume, difficulty, is_active, created_at, updated_at, industry_id, sector_id, country) FROM stdin;
+1 seasonal home decor 950 92 t 2025-11-09 00:05:33.446812+00 2025-11-09 00:05:33.446834+00 21 63 US
+2 home accent pieces 900 84 t 2025-11-09 00:05:33.449666+00 2025-11-09 00:05:33.449676+00 21 63 US
+3 rug selection guide 850 76 t 2025-11-09 00:05:33.455481+00 2025-11-09 00:05:33.455489+00 21 63 US
+4 decorative mirrors 800 68 t 2025-11-09 00:05:33.456764+00 2025-11-09 00:05:33.456771+00 21 63 US
+5 home fragrance tips 750 60 t 2025-11-09 00:05:33.457945+00 2025-11-09 00:05:33.45795+00 21 63 US
+6 vase decoration ideas 700 52 t 2025-11-09 00:05:33.459167+00 2025-11-09 00:05:33.459174+00 21 63 US
+7 pillow arrangement 650 44 t 2025-11-09 00:05:33.460428+00 2025-11-09 00:05:33.460434+00 21 63 US
+8 curtain design tips 600 36 t 2025-11-09 00:05:33.461656+00 2025-11-09 00:05:33.461661+00 21 63 US
+9 wall art ideas 550 28 t 2025-11-09 00:05:33.462655+00 2025-11-09 00:05:33.46266+00 21 63 US
+10 home decor accessories 500 20 t 2025-11-09 00:05:33.463725+00 2025-11-09 00:05:33.463731+00 21 63 US
+11 home organization tips 950 92 t 2025-11-09 00:05:33.464871+00 2025-11-09 00:05:33.464878+00 21 62 US
+12 interior lighting design 900 84 t 2025-11-09 00:05:33.466083+00 2025-11-09 00:05:33.46609+00 21 62 US
+13 room makeover ideas 850 76 t 2025-11-09 00:05:33.467284+00 2025-11-09 00:05:33.467291+00 21 62 US
+14 decoration trends 800 68 t 2025-11-09 00:05:33.468523+00 2025-11-09 00:05:33.468529+00 21 62 US
+15 home staging tips 750 60 t 2025-11-09 00:05:33.469717+00 2025-11-09 00:05:33.469724+00 21 62 US
+16 small space design 700 52 t 2025-11-09 00:05:33.470963+00 2025-11-09 00:05:33.47097+00 21 62 US
+17 color scheme ideas 650 44 t 2025-11-09 00:05:33.472211+00 2025-11-09 00:05:33.472216+00 21 62 US
+18 furniture arrangement 600 36 t 2025-11-09 00:05:33.473188+00 2025-11-09 00:05:33.473193+00 21 62 US
+19 home decor ideas 550 28 t 2025-11-09 00:05:33.474323+00 2025-11-09 00:05:33.47433+00 21 62 US
+20 interior design styles 500 20 t 2025-11-09 00:05:33.475375+00 2025-11-09 00:05:33.47538+00 21 62 US
+21 garden edging ideas 950 92 t 2025-11-09 00:05:33.476472+00 2025-11-09 00:05:33.476478+00 21 61 US
+22 outdoor kitchen design 900 84 t 2025-11-09 00:05:33.477584+00 2025-11-09 00:05:33.477589+00 21 61 US
+23 tree planting guide 850 76 t 2025-11-09 00:05:33.478525+00 2025-11-09 00:05:33.47853+00 21 61 US
+24 lawn mowing tips 800 68 t 2025-11-09 00:05:33.479634+00 2025-11-09 00:05:33.479639+00 21 61 US
+25 outdoor lighting ideas 750 60 t 2025-11-09 00:05:33.481043+00 2025-11-09 00:05:33.481048+00 21 61 US
+26 garden pathways 700 52 t 2025-11-09 00:05:33.482182+00 2025-11-09 00:05:33.482187+00 21 61 US
+27 deck building guide 650 44 t 2025-11-09 00:05:33.483389+00 2025-11-09 00:05:33.483398+00 21 61 US
+28 outdoor patio design 600 36 t 2025-11-09 00:05:33.485396+00 2025-11-09 00:05:33.485409+00 21 61 US
+29 lawn care tips 550 28 t 2025-11-09 00:05:33.486627+00 2025-11-09 00:05:33.486636+00 21 61 US
+30 landscape design ideas 500 20 t 2025-11-09 00:05:33.487717+00 2025-11-09 00:05:33.487724+00 21 61 US
+31 interior design trends 950 92 t 2025-11-09 00:05:33.489181+00 2025-11-09 00:05:33.489191+00 21 60 US
+32 home maintenance checklist 900 84 t 2025-11-09 00:05:33.490397+00 2025-11-09 00:05:33.490403+00 21 60 US
+33 power tools review 850 76 t 2025-11-09 00:05:33.491567+00 2025-11-09 00:05:33.491574+00 21 60 US
+34 home repair guide 800 68 t 2025-11-09 00:05:33.492791+00 2025-11-09 00:05:33.492796+00 21 60 US
+35 painting tips 750 60 t 2025-11-09 00:05:33.494153+00 2025-11-09 00:05:33.49416+00 21 60 US
+36 flooring installation 700 52 t 2025-11-09 00:05:33.495334+00 2025-11-09 00:05:33.495342+00 21 60 US
+37 bathroom renovation 650 44 t 2025-11-09 00:05:33.496455+00 2025-11-09 00:05:33.496461+00 21 60 US
+38 kitchen remodeling 600 36 t 2025-11-09 00:05:33.497539+00 2025-11-09 00:05:33.497547+00 21 60 US
+39 diy home projects 550 28 t 2025-11-09 00:05:33.498731+00 2025-11-09 00:05:33.498738+00 21 60 US
+40 home renovation ideas 500 20 t 2025-11-09 00:05:33.499916+00 2025-11-09 00:05:33.499922+00 21 60 US
+41 seasonal planting guide 950 92 t 2025-11-09 00:05:33.50109+00 2025-11-09 00:05:33.501097+00 21 59 US
+42 garden irrigation systems 900 84 t 2025-11-09 00:05:33.502234+00 2025-11-09 00:05:33.502241+00 21 59 US
+43 herb garden ideas 850 76 t 2025-11-09 00:05:33.503349+00 2025-11-09 00:05:33.503356+00 21 59 US
+44 garden pest control 800 68 t 2025-11-09 00:05:33.504466+00 2025-11-09 00:05:33.504472+00 21 59 US
+45 composting guide 750 60 t 2025-11-09 00:05:33.505602+00 2025-11-09 00:05:33.505608+00 21 59 US
+46 plant care tips 700 52 t 2025-11-09 00:05:33.506572+00 2025-11-09 00:05:33.506577+00 21 59 US
+47 garden tools 650 44 t 2025-11-09 00:05:33.507583+00 2025-11-09 00:05:33.507588+00 21 59 US
+48 flower garden design 600 36 t 2025-11-09 00:05:33.508526+00 2025-11-09 00:05:33.508531+00 21 59 US
+49 vegetable gardening 550 28 t 2025-11-09 00:05:33.509454+00 2025-11-09 00:05:33.509459+00 21 59 US
+50 organic gardening 500 20 t 2025-11-09 00:05:33.510398+00 2025-11-09 00:05:33.510403+00 21 59 US
+136 keyword 1 10000 45 t 2025-11-30 05:01:02.843186+00 2025-11-30 05:01:02.843207+00 1 1 US
+137 keywrod 2 5000 60 t 2025-11-30 05:01:02.862922+00 2025-11-30 05:01:02.862948+00 25 106 US
+138 python programming 10000 45 t 2025-12-01 03:36:50.765495+00 2025-12-01 03:36:50.765515+00 25 101 US
+139 medical software 5000 60 t 2025-12-01 03:36:50.778079+00 2025-12-01 03:36:50.778095+00 25 101 US
+140 back massager 23000 1 t 2025-12-01 03:36:50.784062+00 2025-12-01 03:36:50.784077+00 25 101 US
+141 best back massager 2200 6 t 2025-12-01 03:36:50.78815+00 2025-12-01 03:36:50.78816+00 25 101 US
+142 back massager for chair 1700 3 t 2025-12-01 03:36:50.792154+00 2025-12-01 03:36:50.792165+00 25 101 US
+143 massager for back 1400 4 t 2025-12-01 03:36:50.795593+00 2025-12-01 03:36:50.795602+00 25 101 US
+144 lower back massager 1200 9 t 2025-12-01 03:36:50.799218+00 2025-12-01 03:36:50.799225+00 25 101 US
+145 neck and back massager 1000 10 t 2025-12-01 03:36:50.802441+00 2025-12-01 03:36:50.802449+00 25 101 US
+146 back and neck massager 900 6 t 2025-12-01 03:36:50.805861+00 2025-12-01 03:36:50.805869+00 25 101 US
+147 handheld back massager 900 7 t 2025-12-01 03:36:50.810004+00 2025-12-01 03:36:50.810013+00 25 101 US
+148 homedics back massager 800 0 t 2025-12-01 03:36:50.813823+00 2025-12-01 03:36:50.813832+00 25 101 US
+149 shiatsu back massager 700 9 t 2025-12-01 03:36:50.818115+00 2025-12-01 03:36:50.818125+00 25 101 US
+150 back massager with heat 600 5 t 2025-12-01 03:36:50.822009+00 2025-12-01 03:36:50.822018+00 25 101 US
+151 shiatsu neck and back massager 600 4 t 2025-12-01 03:36:50.826446+00 2025-12-01 03:36:50.826455+00 25 101 US
+152 heated back massager 600 7 t 2025-12-01 03:36:50.830343+00 2025-12-01 03:36:50.830352+00 25 101 US
+153 best back massager for chair 600 2 t 2025-12-01 03:36:50.833726+00 2025-12-01 03:36:50.833732+00 25 101 US
+154 back massager gun 450 22 t 2025-12-01 03:36:50.836922+00 2025-12-01 03:36:50.836929+00 25 101 US
+155 chair back massager 450 3 t 2025-12-01 03:36:50.840266+00 2025-12-01 03:36:50.840272+00 25 101 US
+156 electric back massager 400 9 t 2025-12-01 03:36:50.843569+00 2025-12-01 03:36:50.843576+00 25 101 US
+157 back massager nearby 400 1 t 2025-12-01 03:36:50.847073+00 2025-12-01 03:36:50.847083+00 25 101 US
+158 venom back massager 400 0 t 2025-12-01 03:36:50.850446+00 2025-12-01 03:36:50.850454+00 25 101 US
+159 back massager near me 400 0 t 2025-12-01 03:36:50.855664+00 2025-12-01 03:36:50.855678+00 25 101 US
+160 back massager walmart 300 0 t 2025-12-01 03:36:50.861055+00 2025-12-01 03:36:50.861068+00 25 101 US
+161 best lower back massager 300 10 t 2025-12-01 03:36:50.865683+00 2025-12-01 03:36:50.865701+00 25 101 US
+162 vibrating back massager 300 10 t 2025-12-01 03:36:50.870887+00 2025-12-01 03:36:50.870903+00 25 101 US
+163 hand held back massager 300 7 t 2025-12-01 03:36:50.876125+00 2025-12-01 03:36:50.876136+00 25 101 US
+164 portable back massager 300 1 t 2025-12-01 03:36:50.880858+00 2025-12-01 03:36:50.880869+00 25 101 US
+165 car back massager 300 0 t 2025-12-01 03:36:50.885373+00 2025-12-01 03:36:50.885391+00 25 101 US
+166 best neck and back massager 300 14 t 2025-12-01 03:36:50.890151+00 2025-12-01 03:36:50.890167+00 25 101 US
+167 back massager handheld 300 5 t 2025-12-01 03:36:50.893417+00 2025-12-01 03:36:50.893427+00 25 101 US
+168 best handheld back massager 250 5 t 2025-12-01 03:36:50.897411+00 2025-12-01 03:36:50.897419+00 25 101 US
+169 best massager for back 250 11 t 2025-12-01 03:36:50.900116+00 2025-12-01 03:36:50.900122+00 25 101 US
+170 deep tissue back massager 250 3 t 2025-12-01 03:36:50.903105+00 2025-12-01 03:36:50.90311+00 25 101 US
+171 hyperice back massager 250 22 t 2025-12-01 03:36:50.906502+00 2025-12-01 03:36:50.906508+00 25 101 US
+172 back roller massager 250 1 t 2025-12-01 03:36:50.909729+00 2025-12-01 03:36:50.909737+00 25 101 US
+173 best back massager for knots 250 16 t 2025-12-01 03:36:50.913366+00 2025-12-01 03:36:50.913372+00 25 101 US
+174 best back massager for lower back pain 200 0 t 2025-12-01 03:36:50.916627+00 2025-12-01 03:36:50.916633+00 25 101 US
+175 upper back massager 200 2 t 2025-12-01 03:36:50.919847+00 2025-12-01 03:36:50.919852+00 25 101 US
+176 best back and neck massager 200 22 t 2025-12-01 03:36:50.922724+00 2025-12-01 03:36:50.922731+00 25 101 US
+177 electric massager for back pain 200 13 t 2025-12-01 03:36:50.925795+00 2025-12-01 03:36:50.925805+00 25 101 US
+178 back hook massager 200 0 t 2025-12-01 03:36:50.929616+00 2025-12-01 03:36:50.929625+00 25 101 US
+179 self back massager 200 22 t 2025-12-01 03:36:50.932978+00 2025-12-01 03:36:50.932986+00 25 101 US
+180 back massager stick 200 3 t 2025-12-01 03:36:50.936188+00 2025-12-01 03:36:50.936194+00 25 101 US
+181 back and shoulder massager 200 31 t 2025-12-01 03:36:50.939539+00 2025-12-01 03:36:50.939546+00 25 101 US
+182 massager for back pain 200 15 t 2025-12-01 03:36:50.942824+00 2025-12-01 03:36:50.94283+00 25 101 US
+183 shiatsu back and neck massager 200 2 t 2025-12-01 03:36:50.94621+00 2025-12-01 03:36:50.946216+00 25 101 US
+184 massager back 150 11 t 2025-12-01 03:36:50.949263+00 2025-12-01 03:36:50.949269+00 25 101 US
+185 renpho back massager 150 1 t 2025-12-01 03:36:50.95277+00 2025-12-01 03:36:50.952779+00 25 101 US
+186 is it safe to use a vibrating back massager during pregnancy 150 7 t 2025-12-01 03:36:50.956125+00 2025-12-01 03:36:50.956132+00 25 101 US
+187 wahl back massager 150 0 t 2025-12-01 03:36:50.960033+00 2025-12-01 03:36:50.960041+00 25 101 US
+188 back vibrating massager 150 12 t 2025-12-01 03:36:50.963512+00 2025-12-01 03:36:50.96352+00 25 101 US
+189 shop back massager 250 33 t 2025-12-01 03:36:50.966759+00 2025-12-01 03:36:50.966767+00 25 101 US
+190 dasdasd 3234 23 t 2025-12-12 20:20:23.248239+00 2025-12-12 20:20:23.248334+00 25 101 US
+191 test 1 34422 59 t 2025-12-12 20:53:31.059172+00 2025-12-12 20:53:31.059186+00 25 101 US
+\.
+
+
+--
+-- Data for Name: igny8_site_blueprint_clusters; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_blueprint_clusters (id, role, coverage_status, metadata, created_at, updated_at, tenant_id, cluster_id, sector_id, site_id, site_blueprint_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_site_blueprint_taxonomies; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_blueprint_taxonomies (id, name, slug, taxonomy_type, description, metadata, external_reference, created_at, updated_at, tenant_id, sector_id, site_id, site_blueprint_id) FROM stdin;
+1 Bedding bedding blog_category {"parent": 0} 1336 2025-11-22 02:56:35.550004+00 2025-11-26 10:01:35.318772+00 5 15 5 16
+2 Car Cleaning car-cleaning blog_category {"parent": 0} 50 2025-11-22 02:56:35.554842+00 2025-11-26 10:01:35.325844+00 5 15 5 16
+3 Dining dining blog_category {"parent": 1338} 1339 2025-11-22 02:56:35.556871+00 2025-11-26 10:01:35.332023+00 5 15 5 16
+5 Furniture furniture blog_category {"parent": 0} 1338 2025-11-22 02:56:35.561759+00 2025-11-26 10:01:35.344336+00 5 15 5 16
+8 Affordable Duvet Cover Sets affordable-duvet-cover-sets blog_tag {} 1385 2025-11-22 02:56:36.075729+00 2025-11-26 10:01:35.829925+00 5 15 5 16
+9 Bedding Buying Guide bedding-buying-guide blog_tag {} 1365 2025-11-22 02:56:36.07758+00 2025-11-26 10:01:35.837665+00 5 15 5 16
+10 Bedding Care & Maintenance bedding-care-maintenance blog_tag {} 1366 2025-11-22 02:56:36.08029+00 2025-11-26 10:01:35.845807+00 5 15 5 16
+11 bedding care tips bedding-care-tips blog_tag {} 1346 2025-11-22 02:56:36.081852+00 2025-11-26 10:01:35.854272+00 5 15 5 16
+12 Bedding Essentials bedding-essentials blog_tag {} 1368 2025-11-22 02:56:36.083625+00 2025-11-26 10:01:35.863047+00 5 15 5 16
+13 Bedding Style Trends 2025 bedding-style-trends-2025 blog_tag {} 1372 2025-11-22 02:56:36.085363+00 2025-11-26 10:01:35.870067+00 5 15 5 16
+14 Bedroom Color Inspiration bedroom-color-inspiration blog_tag {} 1381 2025-11-22 02:56:36.087088+00 2025-11-26 10:01:35.876831+00 5 15 5 16
+4 Duvet Covers duvet-covers blog_category {"parent": 1336} 1337 2025-11-22 02:56:35.560083+00 2025-11-26 10:01:35.338754+00 5 15 5 16
+6 Kids Car Accessories kids-car-accessories blog_category {"parent": 0} 51 2025-11-22 02:56:35.563761+00 2025-11-26 10:01:35.349731+00 5 15 5 16
+7 Uncategorized uncategorized blog_category {"parent": 0} 1 2025-11-22 02:56:35.567089+00 2025-11-26 10:01:35.355322+00 5 15 5 16
+15 Bedroom Styling Tips bedroom-styling-tips blog_tag {} 1377 2025-11-22 02:56:36.089083+00 2025-11-26 10:01:35.883697+00 5 15 5 16
+16 Best Kids’ Duvet Covers 2025 best-kids-duvet-covers-2025 blog_tag {} 1383 2025-11-22 02:56:36.091011+00 2025-11-26 10:01:35.890361+00 5 15 5 16
+17 Christmas Duvet Covers christmas-duvet-covers blog_tag {} 1392 2025-11-22 02:56:36.093126+00 2025-11-26 10:01:35.895686+00 5 15 5 16
+18 Classic Duvet Covers classic-duvet-covers blog_tag {} 1390 2025-11-22 02:56:36.094863+00 2025-11-26 10:01:35.901066+00 5 15 5 16
+19 Durable Bedding for Families durable-bedding-for-families blog_tag {} 1386 2025-11-22 02:56:36.097999+00 2025-11-26 10:01:35.907622+00 5 15 5 16
+20 Duvet Cover Benefits duvet-cover-benefits blog_tag {} 1370 2025-11-22 02:56:36.100497+00 2025-11-26 10:01:35.916225+00 5 15 5 16
+21 duvet cover burrito method duvet-cover-burrito-method blog_tag {} 1349 2025-11-22 02:56:36.102185+00 2025-11-26 10:01:35.923622+00 5 15 5 16
+22 duvet cover flip method duvet-cover-flip-method blog_tag {} 1347 2025-11-22 02:56:36.10431+00 2025-11-26 10:01:35.931294+00 5 15 5 16
+23 Duvet Cover Guide duvet-cover-guide blog_tag {} 1367 2025-11-22 02:56:36.1061+00 2025-11-26 10:01:35.937442+00 5 15 5 16
+24 Duvet Cover Sets duvet-cover-sets blog_tag {} 1378 2025-11-22 02:56:36.107858+00 2025-11-26 10:01:35.94293+00 5 15 5 16
+25 Duvet Cover Style Trends duvet-cover-style-trends blog_tag {} 1382 2025-11-22 02:56:36.109676+00 2025-11-26 10:01:35.949163+00 5 15 5 16
+26 Duvet Covers Explained duvet-covers-explained blog_tag {} 1371 2025-11-22 02:56:36.111568+00 2025-11-26 10:01:35.955585+00 5 15 5 16
+27 Duvet Covers Near Me duvet-covers-near-me blog_tag {} 1388 2025-11-22 02:56:36.112991+00 2025-11-26 10:01:35.962885+00 5 15 5 16
+28 Duvet Covers vs Comforters duvet-covers-vs-comforters blog_tag {} 1364 2025-11-22 02:56:36.115034+00 2025-11-26 10:01:35.970916+00 5 15 5 16
+35 how to put on a duvet cover how-to-put-on-a-duvet-cover blog_tag {} 1342 2025-11-22 02:56:36.127678+00 2025-11-26 10:01:36.018411+00 5 15 5 16
+36 how to put on duvet cover how-to-put-on-duvet-cover blog_tag {} 1340 2025-11-22 02:56:36.129667+00 2025-11-26 10:01:36.024052+00 5 15 5 16
+37 Local vs Online Shopping local-vs-online-shopping blog_tag {} 1389 2025-11-22 02:56:36.131407+00 2025-11-26 10:01:36.028675+00 5 15 5 16
+38 Luxury Duvet Covers luxury-duvet-covers blog_tag {} 1373 2025-11-22 02:56:36.133358+00 2025-11-26 10:01:36.033771+00 5 15 5 16
+39 Modern Bedroom Styles modern-bedroom-styles blog_tag {} 1374 2025-11-22 02:56:36.137262+00 2025-11-26 10:01:36.039695+00 5 15 5 16
+40 Modern Duvet Covers modern-duvet-covers blog_tag {} 1391 2025-11-22 02:56:36.13967+00 2025-11-26 10:01:36.044982+00 5 15 5 16
+41 Neutral Bedding Trends neutral-bedding-trends blog_tag {} 1380 2025-11-22 02:56:36.141966+00 2025-11-26 10:01:36.049761+00 5 15 5 16
+42 Pink Duvet Covers 2025 pink-duvet-covers-2025 blog_tag {} 1379 2025-11-22 02:56:36.144118+00 2025-11-26 10:01:36.05457+00 5 15 5 16
+43 Purpose of Duvet Covers purpose-of-duvet-covers blog_tag {} 1369 2025-11-22 02:56:36.146082+00 2025-11-26 10:01:36.05934+00 5 15 5 16
+44 put on duvet cover alone put-on-duvet-cover-alone blog_tag {} 1348 2025-11-22 02:56:36.14776+00 2025-11-26 10:01:36.064263+00 5 15 5 16
+45 put on duvet cover fast put-on-duvet-cover-fast blog_tag {} 1341 2025-11-22 02:56:36.149459+00 2025-11-26 10:01:36.070793+00 5 15 5 16
+46 Seasonal Bedding seasonal-bedding blog_tag {} 1393 2025-11-22 02:56:36.150913+00 2025-11-26 10:01:36.078004+00 5 15 5 16
+47 Textured Duvet Covers textured-duvet-covers blog_tag {} 1375 2025-11-22 02:56:36.152504+00 2025-11-26 10:01:36.083502+00 5 15 5 16
+48 Twin Duvet Covers for Kids twin-duvet-covers-for-kids blog_tag {} 1384 2025-11-22 02:56:36.153946+00 2025-11-26 10:01:36.089758+00 5 15 5 16
+49 Where to Buy Duvet Covers where-to-buy-duvet-covers blog_tag {} 1387 2025-11-22 02:56:36.155519+00 2025-11-26 10:01:36.097292+00 5 15 5 16
+29 duvet insert alignment duvet-insert-alignment blog_tag {} 1343 2025-11-22 02:56:36.116893+00 2025-11-26 10:01:35.979605+00 5 15 5 16
+30 Fabric Softener fabric-softener blog_tag {} 49 2025-11-22 02:56:36.118688+00 2025-11-26 10:01:35.98538+00 5 15 5 16
+31 Floral Duvet Covers floral-duvet-covers blog_tag {} 1376 2025-11-22 02:56:36.120489+00 2025-11-26 10:01:35.991363+00 5 15 5 16
+32 how to change duvet cover how-to-change-duvet-cover blog_tag {} 1350 2025-11-22 02:56:36.122253+00 2025-11-26 10:01:35.996632+00 5 15 5 16
+33 how to put a duvet cover on how-to-put-a-duvet-cover-on blog_tag {} 1344 2025-11-22 02:56:36.124195+00 2025-11-26 10:01:36.003982+00 5 15 5 16
+34 how to put duvet cover on how-to-put-duvet-cover-on blog_tag {} 1345 2025-11-22 02:56:36.126052+00 2025-11-26 10:01:36.010474+00 5 15 5 16
+\.
+
+
+--
+-- Data for Name: igny8_site_blueprint_taxonomies_clusters; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_blueprint_taxonomies_clusters (id, siteblueprinttaxonomy_id, clusters_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_site_blueprints; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_blueprints (id, name, description, config_json, structure_json, status, hosting_type, version, deployed_version, created_at, updated_at, tenant_id, sector_id, site_id) FROM stdin;
+16 Home & Garden Site eCommerce Brand • Consumers / Prospects {"style": {"palette": "Vibrant modern palette with rich accent color", "typography": "Sans-serif display for headings, humanist body font", "heroImagery": "Lifestyle scenes featuring customers", "personality": "Trusted Advisor"}, "industry": "Home & Garden", "metadata": {"sectorId": 15, "targetAudience": ["Consumers / Prospects"], "brandPersonality": ["Trusted Advisor"]}, "sector_id": 15, "objectives": ["Launch a conversion-focused marketing site"], "business_type": "eCommerce Brand", "business_brief": "home decro and storage", "target_audience": ["Consumers / Prospects"], "business_type_id": 3, "brand_personality": ["Trusted Advisor"], "last_requested_at": "2025-11-20T22:43:56.204392+00:00", "target_audience_ids": [10], "custom_business_type": "", "brand_personality_ids": [2], "custom_target_audience": "", "hero_imagery_direction": "Lifestyle scenes featuring customers", "custom_brand_personality": "", "hero_imagery_direction_id": 3, "custom_hero_imagery_direction": ""} {"site": {"name": "Home & Garden Site", "tone": "Friendly and approachable, offering expert advice and solutions.", "hero_message": "Transform your home into a stylish sanctuary with our expert storage solutions.", "primary_navigation": ["home", "services", "about", "contact"], "secondary_navigation": ["blog", "faq"]}, "pages": [{"seo": {"meta_title": "Home - Transform Your Space | Home & Garden Site", "meta_description": "Discover innovative home decor and storage solutions designed to enhance your living space."}, "slug": "home", "type": "home", "title": "Home", "blocks": [{"type": "hero", "layout": "full-width", "content": ["A vibrant lifestyle image showcasing stylish living spaces with our products."], "heading": "Welcome to Home & Garden", "subheading": "Your trusted partner in home decor and storage solutions."}, {"type": "features", "layout": "two-column", "content": ["Expert design consultations personalized for your unique space.", "High-quality materials that stand the test of time.", "Sustainable options that respect the environment."], "heading": "Why Choose Us?", "subheading": "Exceptional Quality and Service"}, {"type": "testimonials", "layout": "carousel", "content": ["Customer testimonial highlighting a successful home transformation.", "Another testimonial focusing on outstanding customer service."], "heading": "What Our Customers Say", "subheading": "Real stories from satisfied clients."}], "status": "draft", "objective": "Explain the core brand promise and primary CTA", "primary_cta": "Book a strategy call"}, {"seo": {"meta_title": "Our Services - Home & Garden Site", "meta_description": "Explore our range of home decor and storage solutions tailored to your needs."}, "slug": "services", "type": "services", "title": "Services", "blocks": [{"type": "services", "layout": "two-column", "content": ["Home design consultations to optimize your layout.", "Custom storage solutions designed for functionality and style.", "Online workshops to inspire your DIY projects."], "heading": "Our Expert Services", "subheading": "Tailored solutions for every space."}, {"type": "stats", "layout": "full-width", "content": ["Over 1,000 satisfied customers served.", "98% customer satisfaction rate.", "100+ successful projects completed."], "heading": "Our Impact", "subheading": "Results that speak for themselves."}, {"type": "faq", "layout": "two-column", "content": ["What is your consultation process?", "How do you ensure sustainability in your products?", "Can I see a portfolio of past projects?"], "heading": "Frequently Asked Questions", "subheading": "Your questions answered."}], "status": "draft", "objective": "Detail the services offered to build trust and drive conversions.", "primary_cta": "Schedule a consultation"}, {"seo": {"meta_title": "About Us - Home & Garden Site", "meta_description": "Discover our story, mission, and values at Home & Garden Site."}, "slug": "about", "type": "about", "title": "About Us", "blocks": [{"type": "hero", "layout": "full-width", "content": ["An engaging image reflecting the journey of the brand."], "heading": "Our Story", "subheading": "Building beautiful homes, one space at a time."}, {"type": "features", "layout": "two-column", "content": ["Commitment to quality and craftsmanship.", "Passion for sustainable living.", "Dedication to customer satisfaction."], "heading": "Our Values", "subheading": "What drives us."}, {"type": "team", "layout": "cards", "content": ["Brief bios of key team members with images.", "Highlight their expertise and role in the company."], "heading": "Meet the Team", "subheading": "The faces behind Home & Garden."}], "status": "draft", "objective": "Introduce the brand and establish credibility.", "primary_cta": "Learn more about our mission"}, {"seo": {"meta_title": "Blog - Home & Garden Site", "meta_description": "Explore tips, trends, and inspiration for your home."}, "slug": "blog", "type": "blog", "title": "Blog", "blocks": [{"type": "hero", "layout": "full-width", "content": ["Featured image representing the essence of home decor."], "heading": "Latest Insights", "subheading": "Stay updated with the latest trends in home decor."}, {"type": "features", "layout": "cards", "content": ["Article summary with links to full posts.", "Include images to capture interest."], "heading": "Popular Articles", "subheading": "Our most read articles."}, {"type": "newsletter", "layout": "full-width", "content": ["Email subscription form to capture leads."], "heading": "Join Our Community", "subheading": "Get the latest tips directly to your inbox."}], "status": "draft", "objective": "Provide valuable content to engage users and enhance SEO.", "primary_cta": "Subscribe for updates"}, {"seo": {"meta_title": "Contact Us - Home & Garden Site", "meta_description": "Get in touch with our team for expert assistance."}, "slug": "contact", "type": "contact", "title": "Contact Us", "blocks": [{"type": "hero", "layout": "full-width", "content": ["An inviting image of customer service interaction."], "heading": "We're Here to Help", "subheading": "Reach out with any questions or requests."}, {"type": "contact", "layout": "two-column", "content": ["Contact form for inquiries.", "Display of phone number and email address."], "heading": "Get in Touch", "subheading": "We'd love to hear from you."}, {"type": "faq", "layout": "two-column", "content": ["How long does a project typically take?", "What is your pricing structure?", "What areas do you serve?"], "heading": "Common Questions", "subheading": "Find answers to common queries."}], "status": "draft", "objective": "Encourage potential customers to reach out for inquiries.", "primary_cta": "Send us a message"}, {"seo": {"meta_title": "FAQ - Home & Garden Site", "meta_description": "Find answers to your questions about our services and products."}, "slug": "faq", "type": "faq", "title": "FAQ", "blocks": [{"type": "hero", "layout": "full-width", "content": ["An engaging image that represents support and assistance."], "heading": "Frequently Asked Questions", "subheading": "Your queries answered."}, {"type": "faq", "layout": "two-column", "content": ["What are your operating hours?", "Do you offer online consultations?", "What payment methods do you accept?"], "heading": "General Questions", "subheading": "We’ve got you covered."}, {"type": "faq", "layout": "two-column", "content": ["Can I customize my order?", "What is your return policy?", "Do you provide installation services?"], "heading": "Service-Specific Questions", "subheading": "Learn more about our offerings."}], "status": "draft", "objective": "Address common questions to reduce barriers to conversion.", "primary_cta": "Contact us for more details"}]} ready wordpress 1 \N 2025-11-20 22:43:55.760473+00 2025-11-20 22:44:37.8113+00 5 15 5
+\.
+
+
+--
+-- Data for Name: igny8_site_builder_audience_profiles; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_builder_audience_profiles (id, name, description, is_active, "order", created_at, updated_at) FROM stdin;
+1 Enterprise Operations Leaders COO / Ops executives at scale-ups. t 0 2025-11-18 12:50:27.360741+00 2025-11-18 12:50:27.36076+00
+2 Marketing Directors & CMOs Growth and brand owners across industries. t 1 2025-11-18 12:50:27.362302+00 2025-11-18 12:50:27.362308+00
+3 Founders & Executive Teams Visionaries leading fast-moving companies. t 2 2025-11-18 12:50:27.363553+00 2025-11-18 12:50:27.363559+00
+4 Revenue & Sales Leaders CROs, VPs of Sales, and GTM owners. t 3 2025-11-18 12:50:27.364713+00 2025-11-18 12:50:27.364719+00
+5 Product & Innovation Teams Product managers and innovation leaders. t 4 2025-11-18 12:50:27.365938+00 2025-11-18 12:50:27.365943+00
+6 IT & Engineering Teams Technical buyers evaluating new platforms. t 5 2025-11-18 12:50:27.367002+00 2025-11-18 12:50:27.367007+00
+7 HR & People Leaders People ops and talent professionals. t 6 2025-11-18 12:50:27.368219+00 2025-11-18 12:50:27.368225+00
+8 Healthcare Administrators Clinical and operational healthcare leads. t 7 2025-11-18 12:50:27.369424+00 2025-11-18 12:50:27.36943+00
+9 Financial Services Professionals Banking, fintech, and investment teams. t 8 2025-11-18 12:50:27.370425+00 2025-11-18 12:50:27.370431+00
+10 Consumers / Prospects End-user or prospect-focused experience. t 9 2025-11-18 12:50:27.371459+00 2025-11-18 12:50:27.371465+00
+\.
+
+
+--
+-- Data for Name: igny8_site_builder_brand_personalities; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_builder_brand_personalities (id, name, description, is_active, "order", created_at, updated_at) FROM stdin;
+1 Bold Visionary Decisive, future-forward, and thought-leading. t 0 2025-11-18 12:50:27.372823+00 2025-11-18 12:50:27.372829+00
+2 Trusted Advisor Calm, credible, and risk-aware guidance. t 1 2025-11-18 12:50:27.374265+00 2025-11-18 12:50:27.37427+00
+3 Analytical Expert Data-backed, precise, and rigorous. t 2 2025-11-18 12:50:27.375468+00 2025-11-18 12:50:27.375473+00
+4 Friendly Guide Welcoming, warm, and supportive tone. t 3 2025-11-18 12:50:27.376613+00 2025-11-18 12:50:27.376618+00
+5 Luxe & Premium High-touch, elevated, and detail-obsessed. t 4 2025-11-18 12:50:27.377854+00 2025-11-18 12:50:27.37786+00
+6 Playful Creative Vibrant, unexpected, and energetic. t 5 2025-11-18 12:50:27.379261+00 2025-11-18 12:50:27.379267+00
+7 Minimalist Modern Clean, refined, and confident. t 6 2025-11-18 12:50:27.380467+00 2025-11-18 12:50:27.380473+00
+8 Fearless Innovator Experimental, edgy, and fast-moving. t 7 2025-11-18 12:50:27.3816+00 2025-11-18 12:50:27.381605+00
+\.
+
+
+--
+-- Data for Name: igny8_site_builder_business_types; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_builder_business_types (id, name, description, is_active, "order", created_at, updated_at) FROM stdin;
+1 Productized Services Standardized service offering with clear deliverables. t 0 2025-11-18 12:50:27.349581+00 2025-11-18 12:50:27.349595+00
+2 B2B SaaS Platform Subscription software platform targeting business teams. t 1 2025-11-18 12:50:27.351296+00 2025-11-18 12:50:27.351303+00
+3 eCommerce Brand Direct-to-consumer catalog with premium merchandising. t 2 2025-11-18 12:50:27.352649+00 2025-11-18 12:50:27.352656+00
+4 Marketplace / Platform Two-sided marketplace connecting buyers and sellers. t 3 2025-11-18 12:50:27.353887+00 2025-11-18 12:50:27.353895+00
+5 Advisory / Consulting Expert advisory firm or boutique consultancy. t 4 2025-11-18 12:50:27.355253+00 2025-11-18 12:50:27.35526+00
+6 Education / Training Learning platform, cohort, or academy. t 5 2025-11-18 12:50:27.356518+00 2025-11-18 12:50:27.356524+00
+7 Community / Membership Member-driven experience with gated content. t 6 2025-11-18 12:50:27.357771+00 2025-11-18 12:50:27.357781+00
+8 Mission-Driven / Nonprofit Impact-focused organization or foundation. t 7 2025-11-18 12:50:27.359171+00 2025-11-18 12:50:27.359177+00
+\.
+
+
+--
+-- Data for Name: igny8_site_builder_hero_imagery; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_builder_hero_imagery (id, name, description, is_active, "order", created_at, updated_at) FROM stdin;
+1 Real team collaboration photography Documentary-style shots of real teams. t 0 2025-11-18 12:50:27.383016+00 2025-11-18 12:50:27.383022+00
+2 Product close-ups with UI overlays Focus on interfaces and feature highlights. t 1 2025-11-18 12:50:27.384351+00 2025-11-18 12:50:27.384357+00
+3 Lifestyle scenes featuring customers Story-driven photography of real scenarios. t 2 2025-11-18 12:50:27.385608+00 2025-11-18 12:50:27.385614+00
+4 Abstract gradients & motion graphics Modern, colorful abstract compositions. t 3 2025-11-18 12:50:27.386951+00 2025-11-18 12:50:27.386958+00
+5 Illustration + iconography blend Custom illustrations paired with icon systems. t 4 2025-11-18 12:50:27.388209+00 2025-11-18 12:50:27.388214+00
+\.
+
+
+--
+-- Data for Name: igny8_site_integrations; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_integrations (id, platform, platform_type, config_json, credentials_json, is_active, sync_enabled, last_sync_at, sync_status, sync_error, created_at, updated_at, tenant_id, site_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_site_user_access; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_site_user_access (id, granted_at, granted_by_id, site_id, user_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_sites; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_sites (id, name, slug, domain, description, is_active, status, created_at, updated_at, wp_url, wp_username, wp_app_password, site_type, hosting_type, seo_metadata, tenant_id, industry_id, wp_api_key, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+21 Massagers Mart paid-2-site2 https://massagersmart.com t active 2025-12-10 07:51:09.523705+00 2026-01-13 02:49:41.870031+00 \N \N \N marketing wordpress {} 90 25 igny8_site_21_1768260201399_1p7nwsvgu5 \N \N \N f \N
+5 Home & Garden Site home-garden-site https://homeg8.com t active 2025-11-05 11:07:20.346629+00 2026-01-13 00:20:37.276718+00 \N \N \N ecommerce wordpress {"og_type": "website", "og_image": "", "og_title": "Home & Garden Site", "meta_title": "Home & Garden Site", "schema_url": "https://homeg8.com", "schema_logo": "", "schema_name": "Home & Garden Site", "schema_type": "Organization", "og_site_name": "Home & Garden Site", "meta_keywords": "", "og_description": "", "schema_same_as": [], "meta_description": "", "schema_description": ""} 90 21 igny8_site_5_1764576864602_1jgd05kgzly api_delete 2026-01-13 00:24:58.844115+00 119 t 2026-01-27 00:24:58.844115+00
+\.
+
+
+--
+-- Data for Name: igny8_strategies; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_strategies (id, name, description, prompt_types, section_logic, is_active, updated_at, created_at, tenant_id, sector_id, is_custom, cloned_from_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_subscriptions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_subscriptions (id, stripe_subscription_id, status, current_period_start, current_period_end, cancel_at_period_end, created_at, updated_at, tenant_id, external_payment_id, plan_id) FROM stdin;
+9 \N active 2026-01-09 02:03:02.875465+00 2026-02-08 02:03:02.875465+00 f 2025-12-09 02:03:03.124715+00 2025-12-09 02:03:03.12472+00 90 1111111 4
+\.
+
+
+--
+-- Data for Name: igny8_sync_events; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_sync_events (id, updated_at, event_type, action, description, success, content_id, external_id, details, error_message, duration_ms, created_at, tenant_id, integration_id, site_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_system_ai_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_system_ai_settings (id, temperature, max_tokens, image_style, image_quality, max_images_per_article, image_size, updated_at, updated_by_id, default_quality_tier, max_allowed_images) FROM stdin;
+1 0.7 8192 photorealistic standard 3 1024x1024 2026-01-12 18:20:48.188494+00 3 basic 8
+\.
+
+
+--
+-- Data for Name: igny8_system_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_system_settings (id, key, value, description, updated_at, created_at) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_tasks; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_tasks (id, title, description, keywords, status, content_type, content_structure, created_at, updated_at, tenant_id, cluster_id, idea_id, sector_id, site_id, taxonomy_id, word_count, delete_reason, deleted_at, deleted_by_id, is_deleted, restore_until) FROM stdin;
+285 7 Best Back Massager Sticks and Hooks for Shoulder Relief {"overview": "This top listicle curates the best back massager sticks and hook-style tools for targeting stubborn shoulder and upper-back knots. It ranks options by use case, highlights key features, and helps readers choose the right manual tool for self-massage.", "outline": {"intro_focus": "Emphasize how simple, low-tech tools like back massager sticks and hooks can deliver deep, precise relief without electricity or batteries.", "main_sections": [{"h2_topic": "How Back Massager Sticks and Hooks Relieve Muscle Knots", "coverage": "Explain the mechanics of leverage and pressure that make sticks and back hook massagers effective for trigger points."}, {"h2_topic": "Selection Criteria: What Makes a Great Back and Shoulder Massager Tool", "coverage": "Outline evaluation criteria such as material, grip, shape, portability, and suitability for back, neck, and shoulder areas."}, {"h2_topic": "Best Overall Back Massager Stick for Everyday Use", "coverage": "Profile a top all-around stick-style massager and why it stands out for most users."}, {"h2_topic": "Best Back Hook Massager for Deep Shoulder and Neck Knots", "coverage": "Highlight a leading hook massager ideal for reaching tight spots around the shoulder blades and neck."}, {"h2_topic": "Best Compact Back and Neck Massager Stick for Travel", "coverage": "Recommend a portable option that fits in bags and works well for quick relief on the go."}, {"h2_topic": "Best Budget-Friendly Manual Back Massager Tool", "coverage": "Feature a low-cost, high-value back massager stick or hook suitable for beginners."}, {"h2_topic": "Best Back and Shoulder Massager Set for Full-Body Coverage", "coverage": "Introduce a bundle or set that combines different tools to cover back, neck, and shoulders comprehensively."}, {"h2_topic": "How to Choose Between a Stick, Hook, or Chair Back Massager", "coverage": "Help readers decide which format fits their lifestyle, pain pattern, and budget, and when to own more than one type."}]}} back massager stick, back hook massager, back and shoulder massager, back and neck massager, back massager, back massager for chair completed post top_listicle 2025-12-29 02:39:39.984332+00 2025-12-29 02:41:44.65545+00 90 424 354 61 21 \N 1500 \N \N \N f \N
+297 10 Best Back Massagers for Pain Relief in 2023 {"overview": "This listicle ranks the top ten back massagers available in 2023, providing insights into their features and benefits.", "outline": {"intro_focus": "Set the stage for the importance of selecting a high-quality back massager for effective pain relief.", "main_sections": [{"h2_topic": "Criteria for Selection", "coverage": "Explain the criteria used to evaluate and rank the best back massagers."}, {"h2_topic": "Top 10 Back Massagers", "coverage": "List and describe each of the top ten back massagers."}, {"h2_topic": "In-Depth Reviews of Each Product", "coverage": "Provide a brief review of each product highlighting its features."}, {"h2_topic": "Pros and Cons of Each Massager", "coverage": "Outline the benefits and drawbacks of each back massager."}, {"h2_topic": "User Feedback and Ratings", "coverage": "Summarize user reviews and ratings for each massager."}, {"h2_topic": "Conclusion and Buying Recommendations", "coverage": "Wrap up with final recommendations based on the rankings."}]}} best back massager, best back and neck massager, back roller massager, back vibrating massager completed post top_listicle 2026-01-12 11:44:34.469242+00 2026-01-12 11:46:47.881197+00 90 427 366 61 21 \N 1500 \N \N \N f \N
+299 How to Choose the Best Back Massager for Your Needs {"overview": "This article provides a step-by-step guide to selecting the most suitable back massager based on individual preferences and requirements.", "outline": {"intro_focus": "Introduce the importance of finding the right back massager tailored to personal needs.", "main_sections": [{"h2_topic": "Identify Your Pain Points", "coverage": "Discuss how to assess specific areas of back pain."}, {"h2_topic": "Consider Your Lifestyle", "coverage": "Analyze how lifestyle factors influence the choice of back massager."}, {"h2_topic": "Compare Different Types", "coverage": "Compare features of vibrating, rolling, and other types of back massagers."}, {"h2_topic": "Budget Considerations", "coverage": "Outline budget ranges and how they affect choices."}, {"h2_topic": "User Reviews and Recommendations", "coverage": "Highlight the value of user feedback in the decision-making process."}, {"h2_topic": "Final Tips for Selection", "coverage": "Provide practical tips for making the final choice."}]}} best back massager, best back massager for chair, back roller massager completed post guide_tutorial 2026-01-12 11:44:34.491728+00 2026-01-12 11:45:52.267272+00 90 427 364 61 21 \N 1200 \N \N \N f \N
+287 How to Use a Back Hook Massager for Neck and Shoulder Knots {"overview": "This how-to guide walks readers through using a back hook massager to safely and effectively release tight knots in the upper back, neck, and shoulders. It focuses on body positioning, pressure control, and practical routines for home and office use.", "outline": {"intro_focus": "Highlight the frustration of unreachable knots and explain how a back hook massager offers a simple self-massage solution.", "main_sections": [{"h2_topic": "What Is a Back Hook Massager and How Does It Work?", "coverage": "Define back hook massagers, their design, and why they\\u2019re effective for trigger points in the back, neck, and shoulders."}, {"h2_topic": "Safety Basics Before You Start Self-Massage", "coverage": "Cover key precautions, contraindications, and how to recognize when pressure is too intense or unsafe."}, {"h2_topic": "Body Positioning for Targeting Back and Shoulder Knots", "coverage": "Explain optimal standing, seated, and reclining positions to reach different areas of the back and shoulders."}, {"h2_topic": "Step-by-Step: Using a Back Hook Massager on the Neck", "coverage": "Provide a clear sequence for safely working on neck tension and common neck trigger points."}, {"h2_topic": "Step-by-Step: Using a Back Hook Massager on the Upper and Mid Back", "coverage": "Detail how to locate knots along the spine and shoulder blades and apply controlled pressure with the hook."}, {"h2_topic": "Integrating a Back Hook Massager Into Your Daily Routine", "coverage": "Offer sample routines for desk workers, drivers, and athletes, including recommended frequency and duration."}, {"h2_topic": "When to Combine a Back Hook Massager With Other Tools", "coverage": "Suggest pairing the hook with a back and neck massager, stretching, or heat for enhanced relief."}]}} back hook massager, back and shoulder massager, back and neck massager, back massager, back massager stick completed post how_to 2025-12-29 02:39:40.017704+00 2025-12-29 02:40:39.131014+00 90 424 352 61 21 \N 1500 \N \N \N f \N
+300 Complete Guide to the Best Back Massagers for Pain Relief {"overview": "This comprehensive guide explores various types of back massagers designed to provide pain relief and relaxation, helping users choose the right device for their needs.", "outline": {"intro_focus": "Establish the importance of back massagers in managing pain and promoting relaxation.", "main_sections": [{"h2_topic": "Understanding Back Pain", "coverage": "Discuss common causes and types of back pain."}, {"h2_topic": "Benefits of Back Massagers", "coverage": "Outline how back massagers can alleviate discomfort and enhance relaxation."}, {"h2_topic": "Types of Back Massagers", "coverage": "Introduce different kinds of back massagers including vibrating and rolling types."}, {"h2_topic": "Features to Consider", "coverage": "Highlight key features to look for when choosing a back massager."}, {"h2_topic": "Best Back Massagers for Chair Use", "coverage": "List and describe back massagers specifically designed for use on chairs."}, {"h2_topic": "Top Back and Neck Massagers", "coverage": "Review popular back and neck massagers available on the market."}, {"h2_topic": "How to Use a Back Massager Effectively", "coverage": "Provide tips for maximizing the benefits of back massagers."}, {"h2_topic": "Customer Reviews and Experiences", "coverage": "Share insights and testimonials from users of various back massagers."}, {"h2_topic": "Conclusion", "coverage": "Summarize key points and encourage readers to find the right massager."}]}} best back massager, best back massager for chair, best back and neck massager, back vibrating massager, back roller massager completed page cluster_hub 2026-01-12 11:44:34.501577+00 2026-01-12 11:45:20.340704+00 90 427 363 61 21 \N 1500 \N \N \N f \N
+298 Back Massagers vs. Traditional Massage: Which Is Better? {"overview": "This article compares the effectiveness of back massagers with traditional massage techniques, helping readers understand the advantages of each.", "outline": {"intro_focus": "Introduce the debate between using back massagers and opting for traditional massage services.", "main_sections": [{"h2_topic": "Understanding Traditional Massage", "coverage": "Explain what traditional massage involves and its benefits."}, {"h2_topic": "How Back Massagers Work", "coverage": "Describe the mechanisms and technology behind back massagers."}, {"h2_topic": "Benefits of Back Massagers", "coverage": "List the advantages of using back massagers at home."}, {"h2_topic": "Pros and Cons of Each Method", "coverage": "Analyze the pros and cons of both back massagers and traditional massage."}, {"h2_topic": "Cost Comparison", "coverage": "Discuss the financial implications of both options."}, {"h2_topic": "User Preferences and Experiences", "coverage": "Share insights from users of both back massagers and traditional massages."}, {"h2_topic": "Conclusion: Which Is Right for You?", "coverage": "Summarize findings and guide readers in making their choice."}]}} best back massager, back vibrating massager, best back and neck massager completed post comparison 2026-01-12 11:44:34.482377+00 2026-01-12 23:40:40.409702+00 90 427 365 61 21 \N 1300 \N \N \N f \N
+286 Back Massager for Chair Guide: Turn Any Seat Into a Relaxation Zone {"overview": "This guide explains how back massagers for chairs work, who they benefit most, and how to choose and set one up at home, in the car, or at the office. It emphasizes ergonomic support, pain relief, and practical buying considerations.", "outline": {"intro_focus": "Frame chair back massagers as an effortless way to get ongoing relief while working, driving, or relaxing without using your hands.", "main_sections": [{"h2_topic": "What Is a Back Massager for Chair?", "coverage": "Define chair-mounted back massagers, including cushion, pad, and full-seat designs, and how they differ from handheld tools."}, {"h2_topic": "Key Features to Look For in a Chair Back Massager", "coverage": "Explain important features such as massage modes, heat, adjustable intensity, and targeted back and neck massager functions."}, {"h2_topic": "Using a Back Massager for Chair at Work", "coverage": "Describe how to set up a chair massager at a desk, posture tips, and how to use it without disrupting productivity."}, {"h2_topic": "Using a Back Massager for Chair in the Car or at Home", "coverage": "Cover car-compatible models, safety considerations while driving, and ideal setups for couches and recliners."}, {"h2_topic": "Back and Shoulder Massager Benefits for Sedentary Lifestyles", "coverage": "Discuss how chair massagers help relieve upper-back and shoulder tension for people who sit for long periods."}, {"h2_topic": "Comparing Chair Massagers to Manual Tools Like Hooks and Sticks", "coverage": "Contrast hands-free chair massagers with manual back hook massager and back massager stick options, including pros and cons."}, {"h2_topic": "Care, Maintenance, and Safety Tips for Chair Back Massagers", "coverage": "Provide advice on cleaning, storage, safe session length, and when not to use a chair massager."}, {"h2_topic": "Who Should Avoid or Limit Use of Chair Back Massagers?", "coverage": "Outline health conditions and situations where medical guidance is recommended before use."}]}} back massager for chair, back massager, back and shoulder massager, back and neck massager, back hook massager, back massager stick completed post guide_tutorial 2025-12-29 02:39:40.007216+00 2025-12-29 02:41:08.565466+00 90 424 353 61 21 \N 1500 \N \N \N f \N
+290 Back Massager Walmart Shopping Guide: In-Store and Pickup {"overview": "This guide focuses specifically on buying a back massager at Walmart, covering how to browse options, check local availability, and choose between in-store, pickup, and delivery. It\\u2019s aimed at shoppers who prefer Walmart for price and convenience and want to optimize their purchase.", "outline": {"intro_focus": "Position Walmart as a convenient, budget-friendly place to buy a back massager and preview how to get the most from shopping there.", "main_sections": [{"h2_topic": "Why Choose Walmart for a Back Massager Purchase?", "coverage": "Outline Walmart\\u2019s advantages such as pricing, selection, store coverage, and flexible pickup options."}, {"h2_topic": "Types of Back Massagers You\\u2019ll Find at Walmart", "coverage": "Describe the main categories of back massagers commonly available at Walmart and typical price ranges."}, {"h2_topic": "How to Check Back Massager Availability at Your Local Walmart", "coverage": "Walk through using the Walmart website and app to see what\\u2019s in stock at specific nearby stores."}, {"h2_topic": "Comparing In-Store Back Massager Options vs Online-Only at Walmart", "coverage": "Explain the differences between items sold in physical stores and online-only listings, and how that affects your choice."}, {"h2_topic": "Using Walmart Pickup and Same-Day Options for Back Massagers", "coverage": "Detail how to order online with free pickup, curbside pickup, or same-day delivery for faster access."}, {"h2_topic": "Understanding Walmart\\u2019s Pricing, Returns, and Protection Plans", "coverage": "Cover price matching basics, return windows, and optional protection plans for back massagers."}, {"h2_topic": "Tips for Testing and Using Your New Back Massager Safely", "coverage": "Provide basic safety, setup, and first-use tips specific to devices commonly bought at Walmart."}, {"h2_topic": "When a Different Local Retailer Might Be Better Than Walmart", "coverage": "Briefly discuss scenarios where specialty or pharmacy stores nearby might offer better fits or unique models."}]}} back massager walmart, back massager near me, walmart back massager in store, buy back massager at walmart, walmart pickup back massager, walmart back massager nearby completed post guide_tutorial 2026-01-01 00:05:51.780035+00 2026-01-01 00:09:48.755386+00 90 426 361 61 21 \N 1500 \N \N \N f \N
+288 Complete Guide to Back Massagers for Back, Neck, and Shoulders {"overview": "This hub page explores the full landscape of back massagers and targeted tools for back, neck, and shoulder relief, from chair-mounted devices to manual hooks and sticks. It helps readers understand their pain points, compare formats, and choose the right solution for everyday use or chronic tension.", "outline": {"intro_focus": "Introduce the problem of upper back, neck, and shoulder tension and position back massagers and targeted tools as a practical, at-home relief ecosystem.", "main_sections": [{"h2_topic": "Understanding Back, Neck, and Shoulder Muscle Tension", "coverage": "Explain common causes of upper body muscle pain and knots, and when massagers can help versus when to seek medical advice."}, {"h2_topic": "Types of Back Massagers: From Chairs to Handheld Tools", "coverage": "Provide an overview of main back massager categories, including chair-mounted, handheld, hooks, and sticks."}, {"h2_topic": "Back Massager for Chair: Hands-Free Relief While You Sit", "coverage": "Describe what chair back massagers are, key features, use cases, and who they\\u2019re best suited for."}, {"h2_topic": "Back and Neck Massager Tools for Targeted Upper Body Relief", "coverage": "Cover devices designed specifically for the back and neck area and how they differ from general massagers."}, {"h2_topic": "Back and Shoulder Massager Options for Desk Workers and Drivers", "coverage": "Focus on tools that effectively target shoulder and upper-back tension caused by posture and repetitive strain."}, {"h2_topic": "Back Hook Massager: Self-Massage for Hard-to-Reach Knots", "coverage": "Explain what a back hook massager is, how it works, and typical scenarios where it excels."}, {"h2_topic": "Back Massager Sticks and Bars: Simple Tools, Deep Pressure", "coverage": "Introduce back massager stick tools, their benefits, and basic techniques for using them safely."}, {"h2_topic": "How to Choose the Right Back Massager for Your Needs", "coverage": "Offer decision criteria like pain location, intensity preferences, budget, and lifestyle to guide product selection."}, {"h2_topic": "Safe Use, Frequency, and Best Practices", "coverage": "Outline safety tips, recommended session lengths, and how to integrate massager use into a wellness routine."}, {"h2_topic": "Maintaining Your Back Massager and When to Upgrade", "coverage": "Discuss cleaning, storage, lifespan of different tools, and signs it\\u2019s time to replace or upgrade your device."}]}} back massager, back massager for chair, back hook massager, back and shoulder massager, back and neck massager, back massager stick completed page cluster_hub 2025-12-29 02:39:40.02808+00 2025-12-29 02:40:10.298571+00 90 424 351 61 21 \N 1500 \N \N \N f \N
+289 Top Places to Buy a Back Massager Nearby (Including Walmart) {"overview": "This listicle ranks the best types of local stores for buying a back massager, from Walmart and big-box chains to pharmacies and specialty shops. It helps readers quickly see their top nearby options and choose the right retailer based on selection, price, and convenience.", "outline": {"intro_focus": "Highlight how many local options exist for buying a back massager and promise a ranked overview of the best nearby places to shop.", "main_sections": [{"h2_topic": "How We Chose the Best Local Places to Buy a Back Massager", "coverage": "Explain criteria like availability, price, store coverage, and customer experience used to rank retailer types."}, {"h2_topic": "Walmart: Widest Coverage and Budget-Friendly Back Massagers", "coverage": "Describe why Walmart is often the first stop, what shoppers can expect, and typical pros and cons."}, {"h2_topic": "Big-Box Retailers and Warehouse Clubs Near You", "coverage": "Cover other large chains that often carry back massagers and how they compare to Walmart for deals and selection."}, {"h2_topic": "Drugstores and Pharmacies with Back Massagers in Aisle", "coverage": "Discuss local pharmacies and drugstores as convenient options for simple, grab-and-go back massagers."}, {"h2_topic": "Specialty Health and Massage Stores in Your Area", "coverage": "Explain the benefits of visiting dedicated wellness or massage shops for higher-end or niche back massagers."}, {"h2_topic": "Department Stores and Mall Kiosks Offering Back Massagers", "coverage": "Outline what shoppers can expect from department stores and mall kiosks in terms of demos and impulse buys."}, {"h2_topic": "Choosing the Best Nearby Store for Your Budget and Needs", "coverage": "Summarize how to match store type to your budget, urgency, and desired back massager features."}, {"h2_topic": "Quick Checklist Before You Head to Any Local Store", "coverage": "Provide a concise list of what to bring and questions to ask wherever you decide to shop nearby."}]}} back massager nearby, back massager near me, back massager walmart, best place to buy back massager near me, local back massager stores, where to buy back massager nearby completed post top_listicle 2026-01-01 00:05:51.760181+00 2026-01-01 00:10:19.180919+00 90 426 362 61 21 \N 1500 \N \N \N f \N
+291 How to Find the Best Back Massager Near Me in Minutes {"overview": "This how-to article walks readers step-by-step through using their phone or computer to quickly locate and evaluate nearby stores that sell back massagers. It focuses on practical search tactics, store tools, and on-the-spot decision tips for time-pressed shoppers.", "outline": {"intro_focus": "Frame the article around needing fast relief and using smart local search tactics to quickly find a quality back massager nearby.", "main_sections": [{"h2_topic": "Define Your Needs Before You Search", "coverage": "Guide readers to clarify pain points, budget, and preferred type of back massager so their local search is more targeted."}, {"h2_topic": "Use \\u201cBack Massager Near Me\\u201d Searches the Smart Way", "coverage": "Explain how to refine local search queries, read map results, and use filters to find relevant nearby retailers."}, {"h2_topic": "Check Live Inventory at Major Retailers", "coverage": "Show how to use tools from Walmart and other big-box stores to confirm if specific back massagers are in stock locally."}, {"h2_topic": "Compare Nearby Stores by Distance, Price, and Reviews", "coverage": "Teach readers how to weigh travel time, pricing, and store ratings to decide which local shop to visit first."}, {"h2_topic": "Call Ahead to Confirm Back Massager Availability", "coverage": "Encourage quick phone calls to verify models and prices, and suggest what questions to ask store associates."}, {"h2_topic": "Decide Between In-Store Shopping, Pickup, or Local Delivery", "coverage": "Help readers choose the best fulfillment option based on urgency, mobility, and store offerings."}, {"h2_topic": "What to Do If No Back Massager Is Available Nearby", "coverage": "Offer backup strategies such as expanding the search radius, checking neighboring towns, or using ship-to-store options."}]}} back massager near me, back massager nearby, find back massager near me, local back massager store, back massager in stock near me completed post how_to 2026-01-01 00:05:51.793234+00 2026-01-01 00:09:15.27433+00 90 426 360 61 21 \N 1500 \N \N \N f \N
+293 7 Best Back Massagers with Heat and Massage Gun Designs {"overview": "This top listicle ranks leading back massagers that offer heat, handheld convenience, or gun-style deep tissue relief. It includes quick pros and cons, ideal user profiles, and a mini buying guide to help readers pick the right model.", "outline": {"intro_focus": "Emphasize that the market is crowded and this curated list highlights the most reliable heated handheld and gun-style back massagers for different budgets.", "main_sections": [{"h2_topic": "How We Chose the Best Back Massagers with Heat", "coverage": "Explain evaluation criteria such as heat performance, power, ergonomics, noise, and user reviews."}, {"h2_topic": "Top Pick: Best Overall Heated Back Massager", "coverage": "Profile a well-rounded device that balances heat, performance, and value for most users."}, {"h2_topic": "Best Back Massager Handheld for Everyday Use", "coverage": "Highlight a user-friendly handheld model ideal for regular home or office use."}, {"h2_topic": "Best Back Massager Gun for Deep Tissue Relief", "coverage": "Feature a massage gun that excels at powerful back muscle and trigger point work."}, {"h2_topic": "Best Budget Heated Back Massager", "coverage": "Recommend an affordable option that still offers reliable heat and basic massage functions."}, {"h2_topic": "Best Premium Back Massager with Advanced Features", "coverage": "Showcase a higher-end device with extra modes, smart features, or superior build quality."}, {"h2_topic": "Best Portable Back Massager for Travel", "coverage": "Present a compact, lightweight option suitable for travel or office use on the go."}, {"h2_topic": "How to Choose the Right Back Massager from This List", "coverage": "Provide a short decision guide mapping common needs and preferences to the featured products."}]}} best back massager with heat, back massager with heat, back massager handheld, back massager gun, massage gun for back, top heated back massagers, portable back massager completed post top_listicle 2026-01-01 00:05:51.812666+00 2026-01-01 00:07:59.687172+00 90 425 358 61 21 \N 2200 \N \N \N f \N
+294 Back Massager Handheld vs Gun: Which Is Better for You? {"overview": "This comparison article helps readers decide between a traditional handheld back massager and a massage gun based on their pain type, lifestyle, and budget. It breaks down design, intensity, usability, and ideal use cases to support confident purchase decisions.", "outline": {"intro_focus": "Frame the choice between handheld and gun-style back massagers as a common point of confusion for buyers seeking targeted back relief.", "main_sections": [{"h2_topic": "Overview of Back Massager Handheld Designs", "coverage": "Describe typical handheld back massager features, ergonomics, and how they are generally used."}, {"h2_topic": "Overview of Back Massager Gun Designs", "coverage": "Explain what a massage gun is, its percussive mechanism, and its common applications for back muscles."}, {"h2_topic": "Intensity, Depth, and Type of Massage", "coverage": "Compare how deeply each design works into muscle tissue, and which is better for light vs deep-tissue relief."}, {"h2_topic": "Heat Options: Where Handheld and Gun Designs Differ", "coverage": "Analyze how heat is implemented (or not) in handheld back massagers versus massage guns and what that means for users."}, {"h2_topic": "Ease of Use, Reach, and Portability", "coverage": "Contrast ergonomics, weight, noise, reach for solo use, and travel-friendliness between the two categories."}, {"h2_topic": "Price, Durability, and Maintenance", "coverage": "Break down typical price ranges, build quality, battery life, and upkeep requirements for each type."}, {"h2_topic": "Which Back Massager Is Best for Your Situation?", "coverage": "Offer scenario-based recommendations for different users such as office workers, seniors, and athletes."}, {"h2_topic": "Alternatives and Hybrid Back Massager Options", "coverage": "Mention hybrid or multi-function devices and when they might be a better fit than pure handheld or gun designs."}]}} back massager handheld, back massager gun, handheld vs massage gun, massage gun for back, best back massager, back massager with heat, handheld back massager comparison completed post comparison 2026-01-01 00:05:51.821448+00 2026-01-01 00:07:24.658772+00 90 425 357 61 21 \N 2000 \N \N \N f \N
+295 How to Use a Back Massager with Heat Safely and Effectively {"overview": "This how-to guide walks users through setting up and using a back massager with heat for optimal relief while avoiding common mistakes. It focuses on positioning, session timing, intensity settings, and integrating heat therapy into a broader pain management routine.", "outline": {"intro_focus": "Highlight that correct technique and safety are crucial to getting real relief from a heated back massager without causing irritation or injury.", "main_sections": [{"h2_topic": "Understand Your Back Massager with Heat Settings", "coverage": "Explain typical heat and intensity controls, modes, and attachments so readers know what each option does."}, {"h2_topic": "Preparing Your Back and Environment for a Massage Session", "coverage": "Cover pre-session steps such as clothing choice, hydration, posture, and setting up a comfortable space."}, {"h2_topic": "Proper Positioning for Upper, Mid, and Lower Back", "coverage": "Detail how to position a handheld or gun-style massager safely on different back regions, including hard-to-reach spots."}, {"h2_topic": "Recommended Session Length and Frequency", "coverage": "Provide guidelines on how long and how often to use a heated back massager to avoid overuse while maintaining benefits."}, {"h2_topic": "Adjusting Heat and Intensity for Different Needs", "coverage": "Explain how to tailor settings for muscle relaxation, chronic pain, post-workout recovery, or stress relief."}, {"h2_topic": "Safety Precautions and When to Avoid Heat", "coverage": "List conditions and situations where heated back massagers should be used with caution or avoided entirely."}, {"h2_topic": "Incorporating a Back Massager into Your Wellness Routine", "coverage": "Describe how to combine massager use with stretching, strengthening, and ergonomic habits for long-term back health."}]}} back massager with heat, heated back massager, how to use back massager, back massager handheld, massage gun for back, safe use of back massager, heat therapy for back completed post how_to 2026-01-01 00:05:51.831605+00 2026-01-01 00:06:52.442969+00 90 425 356 61 21 \N 1800 \N \N \N f \N
+292 Complete Guide to Buying a Back Massager Near You {"overview": "This hub page explains all the ways to find and buy a back massager locally, from big-box retailers like Walmart to pharmacies and specialty wellness shops. It helps readers compare in-store and nearby options, understand what to look for, and decide where to shop based on price, convenience, and product selection.", "outline": {"intro_focus": "Introduce the challenge of choosing where to buy a back massager locally and set up the guide as a roadmap to finding the best nearby options.", "main_sections": [{"h2_topic": "Why Buy a Back Massager Locally Instead of Online?", "coverage": "Explain benefits of in-store shopping such as trying products, immediate pickup, easier returns, and local deals."}, {"h2_topic": "Types of Back Massagers You\\u2019ll Find in Local Stores", "coverage": "Cover common product types (handheld, chair pads, percussion, shiatsu, heated) and where they\\u2019re most likely stocked nearby."}, {"h2_topic": "Using \\u201cBack Massager Near Me\\u201d Searches Effectively", "coverage": "Show how to use maps, store locators, and search filters to find nearby retailers that carry back massagers."}, {"h2_topic": "Finding a Back Massager at Walmart Stores", "coverage": "Detail how to check Walmart inventory, compare in-store vs online options, and locate specific back massager models at your closest Walmart."}, {"h2_topic": "Other Major Retailers That Sell Back Massagers Nearby", "coverage": "Highlight pharmacies, warehouse clubs, department stores, and specialty wellness shops that typically stock back massagers."}, {"h2_topic": "How to Compare Back Massagers In-Store", "coverage": "Explain what to look for when testing devices locally, including intensity, comfort, noise level, and controls."}, {"h2_topic": "Price, Warranty, and Return Policies at Local Retailers", "coverage": "Outline how pricing, sales, warranties, and return windows differ between Walmart and other nearby stores."}, {"h2_topic": "When to Choose Curbside Pickup or Same-Day Delivery", "coverage": "Describe hybrid options like order-online-pickup-in-store and local delivery from big retailers and why they might be preferable."}, {"h2_topic": "Safety and Hygiene Tips for Testing Back Massagers In-Store", "coverage": "Provide basic hygiene, safety, and usage guidelines for trying or immediately using a new back massager purchased locally."}, {"h2_topic": "Checklist Before You Head to a Store Near You", "coverage": "Offer a simple pre-shopping checklist to help readers choose the right store and product type before visiting."}]}} back massager near me, back massager nearby, back massager walmart, buy back massager locally, back massager in store, where to buy back massager near me completed page cluster_hub 2026-01-01 00:05:51.803301+00 2026-01-01 00:08:32.538933+00 90 426 359 61 21 \N 1500 \N \N \N f \N
+296 Complete Guide to Back Massagers with Heat and Handheld Designs {"overview": "This hub page explains the different types of back massagers with heat, including handheld wands and massage guns, and how to choose between them. It covers benefits, key features, safety, and buying considerations, and links out to more detailed guides and comparisons.", "outline": {"intro_focus": "Establish why people are turning to heated handheld and gun-style back massagers for at-home pain relief and muscle recovery.", "main_sections": [{"h2_topic": "What Is a Back Massager with Heat?", "coverage": "Define heated back massagers, how heat therapy works, and common technologies used (vibration, percussion, infrared, etc.)."}, {"h2_topic": "Handheld vs Massage Gun: Key Design Differences", "coverage": "Explain the structural and functional differences between traditional handheld back massagers and massage gun designs."}, {"h2_topic": "Core Benefits of Heat for Back Pain and Tension", "coverage": "Cover therapeutic benefits of heat for muscle relaxation, circulation, and pain relief specifically for the back."}, {"h2_topic": "Types of Back Massagers with Heat on the Market", "coverage": "Provide an overview of main categories: handheld wands, massage guns, cushion-style, straps, and chair attachments with heat."}, {"h2_topic": "Key Features to Look For in a Heated Back Massager", "coverage": "Discuss intensity settings, heat levels, attachments, battery life, ergonomics, noise, and portability."}, {"h2_topic": "When to Choose a Back Massager Handheld Design", "coverage": "Explain use cases, body areas, and user profiles best suited to classic handheld back massagers."}, {"h2_topic": "When a Back Massager Gun Is the Better Option", "coverage": "Describe scenarios where a massage gun design excels, such as deep tissue work, athletes, and trigger point targeting."}, {"h2_topic": "Safety Tips for Using Heated and Gun-Style Massagers", "coverage": "Outline safe usage guidelines, contraindications, recommended session length, and when to consult a professional."}, {"h2_topic": "How to Match a Back Massager to Your Specific Needs", "coverage": "Guide readers through assessing pain type, sensitivity, budget, and lifestyle to narrow down choices."}, {"h2_topic": "Care, Maintenance, and Longevity of Your Back Massager", "coverage": "Explain cleaning, storage, battery care, and how to keep a heated handheld or gun massager working effectively."}]}} back massager with heat, back massager handheld, back massager gun, heated back massager, handheld back massager, massage gun for back, back massager with heat therapy, portable back massager completed page cluster_hub 2026-01-01 00:05:51.842856+00 2026-01-03 17:52:05.358459+00 90 425 355 61 21 \N 2500 \N \N \N f \N
+\.
+
+
+--
+-- Data for Name: igny8_tasks_keyword_objects; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_tasks_keyword_objects (id, tasks_id, keywords_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_tenants; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_tenants (id, name, slug, stripe_customer_id, credits, status, created_at, updated_at, owner_id, plan_id, billing_address_line1, billing_address_line2, billing_city, billing_country, billing_email, billing_postal_code, billing_state, tax_id, delete_reason, deleted_at, deleted_by_id, deletion_retention_days, is_deleted, restore_until, payment_method, usage_period_end, usage_period_start, usage_ahrefs_queries) FROM stdin;
+139 Tester 500 tester-500-lv8n3t \N 5000 active 2026-01-07 21:41:07.958604+00 2026-01-08 09:00:00.295194+00 \N 5 US tester500@test.com \N 2026-01-12 11:25:46.258875+00 \N 14 t 2026-01-26 11:25:46.258875+00 paypal 2026-02-06 21:47:32.328924+00 2026-01-07 21:47:32.328924+00 0
+135 Tester 160 tester-160-n2gx70 cus_TkXrynAI7a3Twm 5000 active 2026-01-07 19:51:36.598818+00 2026-01-08 09:00:00.11771+00 \N 5 PK tester160@test.com \N 2026-01-12 11:25:46.309251+00 \N 14 t 2026-01-26 11:25:46.309251+00 stripe 2026-02-07 19:51:54+00 2026-01-07 19:51:54+00 0
+141 Tester 1000 tester-1000-mjtugx \N 1000 active 2026-01-07 23:32:07.351+00 2026-01-08 09:00:00.274429+00 \N 2 CA tester1000@test.com \N 2026-01-12 11:33:34.746175+00 \N 14 t 2026-01-26 11:33:34.746175+00 paypal 2026-02-06 23:33:04.871028+00 2026-01-07 23:33:04.871028+00 0
+143 Salman Sadiq salman-sadiq-dkh6g3 cus_Tkey1Zm84HqAV2 1000 active 2026-01-08 02:42:38.501956+00 2026-01-08 09:00:00.311337+00 \N 2 PK bluesalman@hotmail.com \N 2026-01-12 11:37:54.598885+00 \N 14 t 2026-01-26 11:37:54.598885+00 stripe 2026-02-08 03:13:17+00 2026-01-08 03:13:17+00 0
+104 Alorig alorig cus_TkH28nOLKNTLNE 0 pending_payment 2026-01-07 02:26:55.485252+00 2026-01-07 02:29:06.754214+00 \N 2 PK bluesalman@hotmail.con \N 2026-01-07 03:32:55.451426+00 \N 14 t 2026-01-21 03:32:55.451426+00 stripe \N \N 0
+133 Tester 140 tester-140-twb705 cus_TkXIN2exB7SY4U 1000 active 2026-01-07 19:17:05.219572+00 2026-01-08 09:00:00.243959+00 \N 2 PK tester140@test.com \N 2026-01-12 11:37:54.644594+00 \N 14 t 2026-01-26 11:37:54.644594+00 stripe 2026-02-07 19:17:19+00 2026-01-07 19:17:19+00 0
+5 AWS Admin aws-admin \N 10323 active 2025-11-07 14:23:39.426535+00 2025-12-28 20:05:52.662798+00 3 6 \N \N \N \N 14 f \N stripe 2025-12-31 23:59:59.253008+00 2025-12-01 00:00:00+00 0
+90 Paid 2 paid-2 \N 1841 active 2025-12-09 02:03:03.119805+00 2026-01-08 00:30:00.050419+00 119 4 line 1 line 2 lahore PK paid2@paid.com 12345 punjab \N \N \N 14 f \N bank_transfer 2026-01-31 23:59:59.05016+00 2026-01-01 00:00:00+00 0
+146 Alorig Systems alorig-systems-q2htbv \N 0 pending_payment 2026-01-08 12:10:08.298636+00 2026-01-08 12:10:08.298649+00 \N 2 PK systems@alorig.com \N 2026-01-12 09:48:00.784516+00 \N 14 t 2026-01-26 09:48:00.784516+00 bank_transfer \N \N 0
+136 Tester 200 tester-200-fnvdza cus_TkYBQP1GWzDvgd 1000 active 2026-01-07 20:11:27.727821+00 2026-01-07 20:24:48.155134+00 \N 2 PK tester200@test.com \N 2026-01-12 11:24:44.360931+00 \N 14 t 2026-01-26 11:24:44.360931+00 stripe 2026-02-07 20:11:53+00 2026-01-07 20:11:53+00 0
+145 tacbit tacbit-5hnbn2 \N 2000 active 2026-01-08 04:07:29.766724+00 2026-01-08 09:00:00.319211+00 \N 4 PK tacbit.com@gmail.com \N 2026-01-12 11:33:48.511698+00 \N 14 t 2026-01-26 11:33:48.511698+00 bank_transfer 2026-02-07 04:07:29.59793+00 2026-01-08 04:07:29.59793+00 0
+132 tester 130 tester-130-lc5o3p cus_TkWrBA0ZGXW183 1000 active 2026-01-07 18:49:25.293292+00 2026-01-08 09:00:00.33411+00 \N 2 PK tester130@test.com \N 2026-01-12 11:37:54.693782+00 \N 14 t 2026-01-26 11:37:54.693782+00 bank_transfer 2026-02-07 19:14:51+00 2026-01-07 19:14:51+00 0
+109 tester3 tester3-0359lv cus_TkJ1jvnrqmenMN 2000 active 2026-01-07 04:31:36.074074+00 2026-01-07 04:46:50.150944+00 \N 4 PK test3@tester.com Test cascade delete 2026-01-07 05:10:05.854524+00 \N 14 t 2026-01-21 05:10:05.854524+00 stripe \N \N 0
+107 Salman Alorig salman-alorig-54qfhi cus_TkIkWm6xHNzD2g 0 pending_payment 2026-01-07 04:14:33.966595+00 2026-01-07 04:14:34.40072+00 \N 2 PK salman@alorig.com \N 2026-01-07 04:17:12.153708+00 \N 14 t 2026-01-21 04:17:12.153708+00 stripe \N \N 0
+105 Slaman Sadiq slaman-sadiq cus_TkI8Oz1cHKsolm 0 pending_payment 2026-01-07 03:36:43.236836+00 2026-01-07 03:36:43.565419+00 \N 2 GB bluesalman@hotmail.con \N 2026-01-07 04:17:12.165826+00 \N 14 t 2026-01-21 04:17:12.165826+00 stripe \N \N 0
+\.
+
+
+--
+-- Data for Name: igny8_user_settings; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_user_settings (id, key, value, updated_at, created_at, tenant_id, user_id) FROM stdin;
+1 workflow_guide_dismissed {"dismissed": true, "dismissed_at": "2025-11-20T18:38:48.936Z"} 2025-11-20 18:38:49.192063+00 2025-11-20 18:38:49.192081+00 5 3
+15 workflow_guide_dismissed {"dismissed": true, "dismissed_at": "2025-12-10T07:51:11.545Z"} 2025-12-10 07:51:11.963348+00 2025-12-10 07:51:11.963363+00 90 119
+\.
+
+
+--
+-- Data for Name: igny8_users; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_users (id, password, last_login, is_superuser, username, first_name, last_name, is_staff, is_active, date_joined, role, email, created_at, updated_at, tenant_id) FROM stdin;
+119 pbkdf2_sha256$1000000$KuWwRfnQDar4aaK0MKbInb$+whKDbBSDKpJPwRn8X5etucXyuOwH2rrD4vUOvyYqJM= 2026-01-12 11:40:42.35322+00 f paid2 paid 2 f t 2025-12-09 02:03:02.875614+00 owner paid2@paid.com 2025-12-09 02:03:03.11355+00 2025-12-09 02:03:03.122586+00 90
+3 pbkdf2_sha256$1000000$MTwBilglH4rVMkXcSgfl5Q$tm9CZ9Q07u1pdXaJ1ZOscMbaY0XQ0dsY7Kamnk2CjUc= 2026-01-12 12:21:22.656439+00 t developer Developer Admin t t 2025-11-02 22:26:56+00 developer dev@igny8.com 2025-11-02 22:26:56.324806+00 2025-11-07 14:23:39.432468+00 5
+\.
+
+
+--
+-- Data for Name: igny8_users_groups; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_users_groups (id, user_id, group_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_users_user_permissions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_users_user_permissions (id, user_id, permission_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: igny8_webhook_events; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.igny8_webhook_events (id, event_id, provider, event_type, payload, processed, processed_at, error_message, retry_count, created_at) FROM stdin;
+1 evt_1Sn0fPPdRe4dWeLwP2wftDti stripe checkout.session.completed {"id": "evt_1Sn0fPPdRe4dWeLwP2wftDti", "data": {"object": {"id": "cs_test_b1Ktob96sa42naw89kM1ePaJPUN7vwbKNszw1AyhnNSRbRM5VY53i2fYkF", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767807352, "invoice": "in_1Sn0fLPdRe4dWeLwLlqxca2e", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkVfTvyh3JXxUW", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "128"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767893752, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn0fNPdRe4dWeLwkxY6eZ4L", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "tester 101", "email": "tester101@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767807427, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} f \N duplicate key value violates unique constraint "billing_account_payment_method_single_default"\nDETAIL: Key (tenant_id)=(128) already exists.\n 1 2026-01-07 17:37:08.109183+00
+2 evt_1Sn0fWPdRe4dWeLwTVcOwdox stripe invoice.paid {"id": "evt_1Sn0fWPdRe4dWeLwTVcOwdox", "data": {"object": {"id": "in_1Sn0fLPdRe4dWeLwLlqxca2e", "lines": {"url": "/v1/invoices/in_1Sn0fLPdRe4dWeLwLlqxca2e/lines", "data": [{"id": "il_1Sn0fLPdRe4dWeLwAJTDpC6Y", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn0fNPdRe4dWeLwkxY6eZ4L", "proration_details": {"credited_items": null}, "subscription_item": "si_TkVgO0ubbzkDPA"}}, "period": {"end": 1770485823, "start": 1767807423}, "invoice": "in_1Sn0fLPdRe4dWeLwLlqxca2e", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "128"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0015", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "128"}, "subscription": "sub_1Sn0fNPdRe4dWeLwkxY6eZ4L"}}, "status": "paid", "created": 1767807423, "currency": "usd", "customer": "cus_TkVfTvyh3JXxUW", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767807423, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1ZnMXdXeGliQlRYTTN1ZEhUalNIZFNXcFB1UXBxLDE1ODM0ODIzNA0200Zhgi8d0h/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767807423, "from_invoice": null, "on_behalf_of": null, "period_start": 1767807423, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "tester 101", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester101@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1ZnMXdXeGliQlRYTTN1ZEhUalNIZFNXcFB1UXBxLDE1ODM0ODIzNA0200Zhgi8d0h?s=ap", "status_transitions": {"paid_at": 1767807424, "voided_at": null, "finalized_at": 1767807423, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767807423, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767807426, "request": {"id": null, "idempotency_key": "4afc7f43-c6b0-41a5-9f2f-1620c583cced"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 17:37:14.473366+00 0 2026-01-07 17:37:14.470296+00
+3 evt_1Sn1TSPdRe4dWeLwMGjUrrik stripe invoice.paid {"id": "evt_1Sn1TSPdRe4dWeLwMGjUrrik", "data": {"object": {"id": "in_1Sn1TOPdRe4dWeLw1bwruyfM", "lines": {"url": "/v1/invoices/in_1Sn1TOPdRe4dWeLw1bwruyfM/lines", "data": [{"id": "il_1Sn1TOPdRe4dWeLw4htf3ESq", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn1TQPdRe4dWeLwcIcmiE4W", "proration_details": {"credited_items": null}, "subscription_item": "si_TkWWoRYYE6xvxN"}}, "period": {"end": 1770488926, "start": 1767810526}, "invoice": "in_1Sn1TOPdRe4dWeLw1bwruyfM", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "129"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0016", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "129"}, "subscription": "sub_1Sn1TQPdRe4dWeLwcIcmiE4W"}}, "status": "paid", "created": 1767810526, "currency": "usd", "customer": "cus_TkWWkZOTv0jJm4", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767810526, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dXWjk4R1g5UzJkZWMxUmFXa3VxYjNndllaTVZyLDE1ODM1MTMzMA0200JNVnTycu/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767810526, "from_invoice": null, "on_behalf_of": null, "period_start": 1767810526, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Test 10 Stripe", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester10@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dXWjk4R1g5UzJkZWMxUmFXa3VxYjNndllaTVZyLDE1ODM1MTMzMA0200JNVnTycu?s=ap", "status_transitions": {"paid_at": 1767810527, "voided_at": null, "finalized_at": 1767810526, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767810526, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767810529, "request": {"id": null, "idempotency_key": "a795cfbc-c0bd-467e-8e7a-3d58ab1af3f6"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 18:28:50.834917+00 0 2026-01-07 18:28:50.831362+00
+4 evt_1Sn1TSPdRe4dWeLw0VSTQpRh stripe checkout.session.completed {"id": "evt_1Sn1TSPdRe4dWeLw0VSTQpRh", "data": {"object": {"id": "cs_test_b194rmqWD3YOhUv6Y1tIWCZGnhBuqP5uQnhuih0Hsfxpgns5tFxAoNxcKv", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767810512, "invoice": "in_1Sn1TOPdRe4dWeLw1bwruyfM", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkWWkZOTv0jJm4", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "129"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767896911, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn1TQPdRe4dWeLwcIcmiE4W", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Test 10 Stripe", "email": "tester10@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767810530, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} f \N duplicate key value violates unique constraint "billing_account_payment_method_single_default"\nDETAIL: Key (tenant_id)=(129) already exists.\n 1 2026-01-07 18:28:50.945155+00
+5 evt_1Sn1faPdRe4dWeLwhzWTAjQZ stripe checkout.session.completed {"id": "evt_1Sn1faPdRe4dWeLwhzWTAjQZ", "data": {"object": {"id": "cs_test_b1r3AKmvdfJki4uuS4irK1Kafix6Uw3ROmFlKFhUThdqecaOrASYov9vZa", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767811232, "invoice": "in_1Sn1fWPdRe4dWeLwvND4WFUU", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkWif9A5vyPuJl", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "131"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767897632, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn1fYPdRe4dWeLwZp0TJh1G", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "tester 30", "email": "tester30@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "US", "postal_code": "96000"}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767811282, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} f \N duplicate key value violates unique constraint "billing_account_payment_method_single_default"\nDETAIL: Key (tenant_id)=(131) already exists.\n 1 2026-01-07 18:41:22.512671+00
+6 evt_1Sn1fhPdRe4dWeLwEjkEgm4G stripe invoice.paid {"id": "evt_1Sn1fhPdRe4dWeLwEjkEgm4G", "data": {"object": {"id": "in_1Sn1fWPdRe4dWeLwvND4WFUU", "lines": {"url": "/v1/invoices/in_1Sn1fWPdRe4dWeLwvND4WFUU/lines", "data": [{"id": "il_1Sn1fWPdRe4dWeLwf5v46DQG", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn1fYPdRe4dWeLwZp0TJh1G", "proration_details": {"credited_items": null}, "subscription_item": "si_TkWj8vG9LTUCol"}}, "period": {"end": 1770489678, "start": 1767811278}, "invoice": "in_1Sn1fWPdRe4dWeLwvND4WFUU", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "131"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0017", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "131"}, "subscription": "sub_1Sn1fYPdRe4dWeLwZp0TJh1G"}}, "status": "paid", "created": 1767811278, "currency": "usd", "customer": "cus_TkWif9A5vyPuJl", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767811278, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dqcDFNb2ZmWmtTcWg1Zk1mYlZrS0pUR2xycjZXLDE1ODM1MjA4OQ0200GFMQrjUT/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767811278, "from_invoice": null, "on_behalf_of": null, "period_start": 1767811278, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "tester 30", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester30@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dqcDFNb2ZmWmtTcWg1Zk1mYlZrS0pUR2xycjZXLDE1ODM1MjA4OQ0200GFMQrjUT?s=ap", "status_transitions": {"paid_at": 1767811279, "voided_at": null, "finalized_at": 1767811278, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767811278, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767811280, "request": {"id": null, "idempotency_key": "65ad48fd-03c3-4391-8905-b50be5c20fa8"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 18:41:29.481004+00 0 2026-01-07 18:41:29.478542+00
+7 evt_1Sn1ngPdRe4dWeLwaWoBDtyj stripe checkout.session.completed {"id": "evt_1Sn1ngPdRe4dWeLwaWoBDtyj", "data": {"object": {"id": "cs_test_b1lVbN2WJ706yoCug1Yd3t8b1wQsRmGUYFYCYX3CQcrLGrWrfnDmbgm7Vt", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767811771, "invoice": "in_1Sn1ncPdRe4dWeLw8jEGUhmZ", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkWrBA0ZGXW183", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "132"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767898171, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn1nePdRe4dWeLwkme5491K", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "tester 130", "email": "tester130@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767811784, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} f \N duplicate key value violates unique constraint "billing_account_payment_method_single_default"\nDETAIL: Key (tenant_id)=(132) already exists.\n 1 2026-01-07 18:49:44.91452+00
+8 evt_1Sn1ngPdRe4dWeLwHcdCKFC3 stripe invoice.paid {"id": "evt_1Sn1ngPdRe4dWeLwHcdCKFC3", "data": {"object": {"id": "in_1Sn1ncPdRe4dWeLw8jEGUhmZ", "lines": {"url": "/v1/invoices/in_1Sn1ncPdRe4dWeLw8jEGUhmZ/lines", "data": [{"id": "il_1Sn1ncPdRe4dWeLwsGrG3uDM", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn1nePdRe4dWeLwkme5491K", "proration_details": {"credited_items": null}, "subscription_item": "si_TkWrPU4TzsPeWt"}}, "period": {"end": 1770490180, "start": 1767811780}, "invoice": "in_1Sn1ncPdRe4dWeLw8jEGUhmZ", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "132"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0018", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "132"}, "subscription": "sub_1Sn1nePdRe4dWeLwkme5491K"}}, "status": "paid", "created": 1767811780, "currency": "usd", "customer": "cus_TkWrBA0ZGXW183", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767811780, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dyUTU0Yk1nZ3pIOGlpUXNFWWNQbjdTeVp3SzdkLDE1ODM1MjU4NA02002CsBXuXI/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767811780, "from_invoice": null, "on_behalf_of": null, "period_start": 1767811780, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "tester 130", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester130@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1dyUTU0Yk1nZ3pIOGlpUXNFWWNQbjdTeVp3SzdkLDE1ODM1MjU4NA02002CsBXuXI?s=ap", "status_transitions": {"paid_at": 1767811781, "voided_at": null, "finalized_at": 1767811780, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767811780, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767811783, "request": {"id": null, "idempotency_key": "3650b7ec-9a6e-40ae-a863-974aa3c77f05"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 18:49:45.229965+00 0 2026-01-07 18:49:45.22716+00
+9 evt_1Sn2C3PdRe4dWeLw0HEIdqpk stripe invoice.paid {"id": "evt_1Sn2C3PdRe4dWeLw0HEIdqpk", "data": {"object": {"id": "in_1Sn2BzPdRe4dWeLw2n4myUJa", "lines": {"url": "/v1/invoices/in_1Sn2BzPdRe4dWeLw2n4myUJa/lines", "data": [{"id": "il_1Sn2BzPdRe4dWeLw6gV6OWif", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn2C1PdRe4dWeLwmo4UCqDt", "proration_details": {"credited_items": null}, "subscription_item": "si_TkXGKYLb6he2cW"}}, "period": {"end": 1770491691, "start": 1767813291}, "invoice": "in_1Sn2BzPdRe4dWeLw2n4myUJa", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "132"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0019", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "132"}, "subscription": "sub_1Sn2C1PdRe4dWeLwmo4UCqDt"}}, "status": "paid", "created": 1767813291, "currency": "usd", "customer": "cus_TkWrBA0ZGXW183", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767813291, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hHMXVlRW5xTnkyNEpiOEQyRElqOTFndXhpQ2F1LDE1ODM1NDA5NQ020090qEdIp0/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767813291, "from_invoice": null, "on_behalf_of": null, "period_start": 1767813291, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "tester 130", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester130@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hHMXVlRW5xTnkyNEpiOEQyRElqOTFndXhpQ2F1LDE1ODM1NDA5NQ020090qEdIp0?s=ap", "status_transitions": {"paid_at": 1767813292, "voided_at": null, "finalized_at": 1767813291, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767813291, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767813293, "request": {"id": null, "idempotency_key": "0f5587c4-12f8-4912-9293-a072813db79e"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:14:55.454071+00 0 2026-01-07 19:14:55.451015+00
+10 evt_1Sn2C3PdRe4dWeLwRBuiDq7v stripe checkout.session.completed {"id": "evt_1Sn2C3PdRe4dWeLwRBuiDq7v", "data": {"object": {"id": "cs_test_b1Z2OzYHhp7YMGoPX8kerqoBwCxSDV3pIgZOm82TrDFQgp89aGIGkuwd2u", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767813281, "invoice": "in_1Sn2BzPdRe4dWeLw2n4myUJa", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkWrBA0ZGXW183", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "132"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767899681, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn2C1PdRe4dWeLwmo4UCqDt", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "tester 130", "email": "tester130@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767813295, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:14:56.213643+00 0 2026-01-07 19:14:55.928775+00
+11 evt_1Sn2EQPdRe4dWeLwaDKdfJaj stripe checkout.session.completed {"id": "evt_1Sn2EQPdRe4dWeLwaDKdfJaj", "data": {"object": {"id": "cs_test_b19w1GIMeLwaEPzVHAdyFo43GgifnVZczwJZ10kDwcRz7RK8P7QTorInHy", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767813431, "invoice": "in_1Sn2ENPdRe4dWeLwLD0L2Ks8", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkXIN2exB7SY4U", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "133"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767899831, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn2EPPdRe4dWeLwQLpkU90x", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 140", "email": "tester140@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767813442, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:17:23.380059+00 0 2026-01-07 19:17:23.146375+00
+12 evt_1Sn2ERPdRe4dWeLwoeAbjMuf stripe invoice.paid {"id": "evt_1Sn2ERPdRe4dWeLwoeAbjMuf", "data": {"object": {"id": "in_1Sn2ENPdRe4dWeLwLD0L2Ks8", "lines": {"url": "/v1/invoices/in_1Sn2ENPdRe4dWeLwLD0L2Ks8/lines", "data": [{"id": "il_1Sn2ENPdRe4dWeLwsepJBL2c", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn2EPPdRe4dWeLwQLpkU90x", "proration_details": {"credited_items": null}, "subscription_item": "si_TkXJ3pDydseZYg"}}, "period": {"end": 1770491839, "start": 1767813439}, "invoice": "in_1Sn2ENPdRe4dWeLwLD0L2Ks8", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "133"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0020", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "133"}, "subscription": "sub_1Sn2EPPdRe4dWeLwQLpkU90x"}}, "status": "paid", "created": 1767813439, "currency": "usd", "customer": "cus_TkXIN2exB7SY4U", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767813439, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hKcG83SmpjTTNwWW54dlBYQ3JzNlJqUUdrNE9NLDE1ODM1NDI0Mw0200zIiUIdRI/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767813439, "from_invoice": null, "on_behalf_of": null, "period_start": 1767813439, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Tester 140", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester140@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hKcG83SmpjTTNwWW54dlBYQ3JzNlJqUUdrNE9NLDE1ODM1NDI0Mw0200zIiUIdRI?s=ap", "status_transitions": {"paid_at": 1767813440, "voided_at": null, "finalized_at": 1767813439, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767813439, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767813441, "request": {"id": null, "idempotency_key": "716c2428-97cb-4310-8dbb-a495f225896b"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:17:23.637786+00 0 2026-01-07 19:17:23.635411+00
+13 evt_1Sn2UuPdRe4dWeLw2vBioc9T stripe checkout.session.completed {"id": "evt_1Sn2UuPdRe4dWeLw2vBioc9T", "data": {"object": {"id": "cs_test_b1iPR6W3HeV58JsmbDv3W53atRuEiEA1wrSCNwKQ3sLFhZFnuuZBUHLAQ4", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767814452, "invoice": "in_1Sn2UqPdRe4dWeLwE1iRUjaK", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkXZLOOuGtjXrJ", "livemode": false, "metadata": {"type": "subscription", "plan_id": "4", "account_id": "134"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767900851, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 19900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn2UsPdRe4dWeLwmhE8rh69", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 19900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 150", "email": "tester150@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767814464, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:34:31.613955+00 0 2026-01-07 19:34:31.406904+00
+14 evt_1Sn2UvPdRe4dWeLwygjRwqn6 stripe invoice.paid {"id": "evt_1Sn2UvPdRe4dWeLwygjRwqn6", "data": {"object": {"id": "in_1Sn2UqPdRe4dWeLwE1iRUjaK", "lines": {"url": "/v1/invoices/in_1Sn2UqPdRe4dWeLwE1iRUjaK/lines", "data": [{"id": "il_1Sn2UqPdRe4dWeLw8qmqEg2F", "taxes": [], "amount": 19900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn2UsPdRe4dWeLwmhE8rh69", "proration_details": {"credited_items": null}, "subscription_item": "si_TkXa8hQa6qyGfh"}}, "period": {"end": 1770492860, "start": 1767814460}, "invoice": "in_1Sn2UqPdRe4dWeLwE1iRUjaK", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmKMPdRe4dWeLw9nfQUVus", "product": "prod_TkGsliLPq7Sl8w"}, "unit_amount_decimal": "19900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "4", "account_id": "134"}, "quantity": 1, "subtotal": 19900, "discounts": [], "description": "1 × Growth Plan (at $199.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 19900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0021", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "4", "account_id": "134"}, "subscription": "sub_1Sn2UsPdRe4dWeLwmhE8rh69"}}, "status": "paid", "created": 1767814460, "currency": "usd", "customer": "cus_TkXZLOOuGtjXrJ", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 19900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 19900, "period_end": 1767814460, "test_clock": null, "amount_paid": 19900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hhcHRYdU1wVUZ6ZklvakF5ODlzV2NtS3llOUROLDE1ODM1NTI2NQ0200fWSLKyzq/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767814460, "from_invoice": null, "on_behalf_of": null, "period_start": 1767814460, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Tester 150", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester150@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hhcHRYdU1wVUZ6ZklvakF5ODlzV2NtS3llOUROLDE1ODM1NTI2NQ0200fWSLKyzq?s=ap", "status_transitions": {"paid_at": 1767814461, "voided_at": null, "finalized_at": 1767814460, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 19900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767814460, "default_payment_method": null, "subtotal_excluding_tax": 19900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767814463, "request": {"id": null, "idempotency_key": "f12c07c2-6979-4521-9f16-cf340347fb5d"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:34:33.450508+00 0 2026-01-07 19:34:33.448206+00
+15 evt_1Sn2luPdRe4dWeLwZVzgZKAv stripe checkout.session.completed {"id": "evt_1Sn2luPdRe4dWeLwZVzgZKAv", "data": {"object": {"id": "cs_test_b1YwMtMnl402owL9Twoqz7btZyrvvwQu6qNMImENUwkHMDPvxayxBvlJ5j", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767815503, "invoice": "in_1Sn2lqPdRe4dWeLwTS6FGDdU", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkXrynAI7a3Twm", "livemode": false, "metadata": {"type": "subscription", "plan_id": "5", "account_id": "135"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767901903, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 29900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn2lsPdRe4dWeLwXPc6wB0w", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 29900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 160", "email": "tester160@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767815518, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:51:59.02805+00 0 2026-01-07 19:51:58.769471+00
+16 evt_1Sn2luPdRe4dWeLwDwcVJuTB stripe invoice.paid {"id": "evt_1Sn2luPdRe4dWeLwDwcVJuTB", "data": {"object": {"id": "in_1Sn2lqPdRe4dWeLwTS6FGDdU", "lines": {"url": "/v1/invoices/in_1Sn2lqPdRe4dWeLwTS6FGDdU/lines", "data": [{"id": "il_1Sn2lqPdRe4dWeLwOQGCv5vd", "taxes": [], "amount": 29900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn2lsPdRe4dWeLwXPc6wB0w", "proration_details": {"credited_items": null}, "subscription_item": "si_TkXrVFYUPTV2a7"}}, "period": {"end": 1770493914, "start": 1767815514}, "invoice": "in_1Sn2lqPdRe4dWeLwTS6FGDdU", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmL6PdRe4dWeLwisBUvC0N", "product": "prod_TkGs64iCjpb9Ok"}, "unit_amount_decimal": "29900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "5", "account_id": "135"}, "quantity": 1, "subtotal": 29900, "discounts": [], "description": "1 × Scale Plan (at $299.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 29900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0022", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "5", "account_id": "135"}, "subscription": "sub_1Sn2lsPdRe4dWeLwXPc6wB0w"}}, "status": "paid", "created": 1767815514, "currency": "usd", "customer": "cus_TkXrynAI7a3Twm", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 29900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 29900, "period_end": 1767815514, "test_clock": null, "amount_paid": 29900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hyVUg1S3dKTEFIRG4yUnRXM3JFdkRZYXc4WjlaLDE1ODM1NjMxOA0200JKghYnnq/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767815514, "from_invoice": null, "on_behalf_of": null, "period_start": 1767815514, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Tester 160", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester160@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1hyVUg1S3dKTEFIRG4yUnRXM3JFdkRZYXc4WjlaLDE1ODM1NjMxOA0200JKghYnnq?s=ap", "status_transitions": {"paid_at": 1767815515, "voided_at": null, "finalized_at": 1767815514, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 29900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767815514, "default_payment_method": null, "subtotal_excluding_tax": 29900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767815517, "request": {"id": null, "idempotency_key": "5514c049-acb9-47f8-9d55-dd2fa3276121"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 19:51:59.295149+00 0 2026-01-07 19:51:59.292279+00
+17 evt_1Sn35FPdRe4dWeLwhW4IfZTS stripe checkout.session.completed {"id": "evt_1Sn35FPdRe4dWeLwhW4IfZTS", "data": {"object": {"id": "cs_test_b1H8x9j1Oh5EZVlHRWyA9Pg8KriMpAKd70ZhPtakX8Req2IqOVdwQCcf7u", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767816696, "invoice": "in_1Sn35BPdRe4dWeLwHrth3Zic", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkYBQP1GWzDvgd", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "136"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767903096, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn35DPdRe4dWeLw1QTj5I7z", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 200", "email": "tester200@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767816717, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 20:11:57.97604+00 0 2026-01-07 20:11:57.760641+00
+18 evt_1Sn35MPdRe4dWeLw1AcVeZuj stripe invoice.paid {"id": "evt_1Sn35MPdRe4dWeLw1AcVeZuj", "data": {"object": {"id": "in_1Sn35BPdRe4dWeLwHrth3Zic", "lines": {"url": "/v1/invoices/in_1Sn35BPdRe4dWeLwHrth3Zic/lines", "data": [{"id": "il_1Sn35BPdRe4dWeLwKjj5UdwG", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn35DPdRe4dWeLw1QTj5I7z", "proration_details": {"credited_items": null}, "subscription_item": "si_TkYBl6Yy6p0Woc"}}, "period": {"end": 1770495113, "start": 1767816713}, "invoice": "in_1Sn35BPdRe4dWeLwHrth3Zic", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "136"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0023", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "136"}, "subscription": "sub_1Sn35DPdRe4dWeLw1QTj5I7z"}}, "status": "paid", "created": 1767816713, "currency": "usd", "customer": "cus_TkYBQP1GWzDvgd", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767816713, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1lCaGFkZXJhZlBySUUycXI1WE83elh2aExTemlFLDE1ODM1NzUyNA02009zF97p2P/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767816713, "from_invoice": null, "on_behalf_of": null, "period_start": 1767816713, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Tester 200", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester200@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1lCaGFkZXJhZlBySUUycXI1WE83elh2aExTemlFLDE1ODM1NzUyNA02009zF97p2P?s=ap", "status_transitions": {"paid_at": 1767816714, "voided_at": null, "finalized_at": 1767816713, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767816713, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767816716, "request": {"id": null, "idempotency_key": "1fd99a62-78fe-4b46-b076-479ad7d6b0f1"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 20:12:04.526523+00 0 2026-01-07 20:12:04.523452+00
+19 evt_1Sn3HZPdRe4dWeLwPcdjuBH3 stripe checkout.session.completed {"id": "evt_1Sn3HZPdRe4dWeLwPcdjuBH3", "data": {"object": {"id": "cs_test_a1pHu8qUfhl7IYRoWNaBO2zFkJUSa6JAqiA65vkPUAiXIfjMt4quC0FYsI", "url": null, "mode": "payment", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767817472, "invoice": null, "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkYBQP1GWzDvgd", "livemode": false, "metadata": {"type": "credit_purchase", "account_id": "136", "credit_amount": "1000", "credit_package_id": "1"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/usage?purchase=canceled", "expires_at": 1767903871, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/usage?purchase=success&session_id={CHECKOUT_SESSION_ID}", "amount_total": 999, "payment_link": null, "setup_intent": null, "subscription": null, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": "pi_3Sn3HYPdRe4dWeLw0qAVe6Zj", "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 999, "adaptive_pricing": {"enabled": true}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 200", "email": "tester200@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": {"enabled": false, "invoice_data": {"footer": null, "issuer": null, "metadata": {}, "description": null, "custom_fields": null, "account_tax_ids": null, "rendering_options": null}}, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": null, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "if_required", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767817481, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} f \N property 'billing_email' of 'Invoice' object has no setter 1 2026-01-07 20:24:42.325863+00
+20 evt_1Sn3prPdRe4dWeLwpp4OKoe4 stripe checkout.session.completed {"id": "evt_1Sn3prPdRe4dWeLwpp4OKoe4", "data": {"object": {"id": "cs_test_b1Eok3UbgXFslugWFBDgPqbWzvNpwrSqbCj8vrTmJxN5ivFIC3rprt0Kyt", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767819532, "invoice": "in_1Sn3pnPdRe4dWeLwKUdQA6oB", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkYvABxJE8dumo", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "137"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767905932, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn3ppPdRe4dWeLwJ9oluGsL", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Tester 300", "email": "tester300us@test.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "US", "postal_code": "60602"}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767819607, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 21:00:08.047745+00 0 2026-01-07 21:00:07.763561+00
+21 evt_1Sn3prPdRe4dWeLwsvDr3yWm stripe invoice.paid {"id": "evt_1Sn3prPdRe4dWeLwsvDr3yWm", "data": {"object": {"id": "in_1Sn3pnPdRe4dWeLwKUdQA6oB", "lines": {"url": "/v1/invoices/in_1Sn3pnPdRe4dWeLwKUdQA6oB/lines", "data": [{"id": "il_1Sn3pnPdRe4dWeLwAkImeq80", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn3ppPdRe4dWeLwJ9oluGsL", "proration_details": {"credited_items": null}, "subscription_item": "si_TkYxhCMw4stbJz"}}, "period": {"end": 1770498003, "start": 1767819603}, "invoice": "in_1Sn3pnPdRe4dWeLwKUdQA6oB", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "137"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0024", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "137"}, "subscription": "sub_1Sn3ppPdRe4dWeLwJ9oluGsL"}}, "status": "paid", "created": 1767819603, "currency": "usd", "customer": "cus_TkYvABxJE8dumo", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767819603, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1l4TUM0ZmFnTkdGb3RUZGhaZ0N5WjVPb1E4NzFVLDE1ODM2MDQwNw02002dtxVWd8/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767819603, "from_invoice": null, "on_behalf_of": null, "period_start": 1767819603, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Tester 300", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "tester300us@test.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua1l4TUM0ZmFnTkdGb3RUZGhaZ0N5WjVPb1E4NzFVLDE1ODM2MDQwNw02002dtxVWd8?s=ap", "status_transitions": {"paid_at": 1767819604, "voided_at": null, "finalized_at": 1767819603, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767819603, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767819606, "request": {"id": null, "idempotency_key": "3caea3d2-3606-4289-8d4a-66a6c666a707"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-07 21:00:08.291078+00 0 2026-01-07 21:00:08.288379+00
+22 evt_1Sn9f2PdRe4dWeLwOQTgiCZ9 stripe checkout.session.completed {"id": "evt_1Sn9f2PdRe4dWeLwOQTgiCZ9", "data": {"object": {"id": "cs_test_b1IJRo36GNNtLxtGo84MNPT1EEr5ITcRdXgF5MJCNRdtDEBnAQYmGYda5y", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767841976, "invoice": "in_1Sn9ezPdRe4dWeLw0lOi4pIx", "ui_mode": "hosted", "currency": "usd", "customer": "cus_Tkey1Zm84HqAV2", "livemode": false, "metadata": {"type": "subscription", "plan_id": "2", "account_id": "143"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767928375, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 9900, "payment_link": null, "setup_intent": null, "subscription": "sub_1Sn9f1PdRe4dWeLwdb4UZg4U", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 9900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Salman Sadiq", "email": "bluesalman@hotmail.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767842000, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-08 03:13:21.407218+00 0 2026-01-08 03:13:20.904124+00
+23 evt_1Sn9f2PdRe4dWeLwRuWlA5Sv stripe invoice.paid {"id": "evt_1Sn9f2PdRe4dWeLwRuWlA5Sv", "data": {"object": {"id": "in_1Sn9ezPdRe4dWeLw0lOi4pIx", "lines": {"url": "/v1/invoices/in_1Sn9ezPdRe4dWeLw0lOi4pIx/lines", "data": [{"id": "il_1Sn9ezPdRe4dWeLwUeTaJtFl", "taxes": [], "amount": 9900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1Sn9f1PdRe4dWeLwdb4UZg4U", "proration_details": {"credited_items": null}, "subscription_item": "si_Tkeyfjdin5n0Y3"}}, "period": {"end": 1770520397, "start": 1767841997}, "invoice": "in_1Sn9ezPdRe4dWeLw0lOi4pIx", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmJhPdRe4dWeLwSufhikqW", "product": "prod_TkGrgKWbrBo4sX"}, "unit_amount_decimal": "9900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "2", "account_id": "143"}, "quantity": 1, "subtotal": 9900, "discounts": [], "description": "1 × Starter Plan (at $99.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 9900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0025", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "2", "account_id": "143"}, "subscription": "sub_1Sn9f1PdRe4dWeLwdb4UZg4U"}}, "status": "paid", "created": 1767841997, "currency": "usd", "customer": "cus_Tkey1Zm84HqAV2", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 9900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 9900, "period_end": 1767841997, "test_clock": null, "amount_paid": 9900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua2V5Tk53MGZadUppemVWYjdrY0EwRXR2aVJ5ZkdOLDE1ODM4MjgwMA0200AVJfjSam/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767841997, "from_invoice": null, "on_behalf_of": null, "period_start": 1767841997, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Salman Sadiq", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "bluesalman@hotmail.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua2V5Tk53MGZadUppemVWYjdrY0EwRXR2aVJ5ZkdOLDE1ODM4MjgwMA0200AVJfjSam?s=ap", "status_transitions": {"paid_at": 1767841997, "voided_at": null, "finalized_at": 1767841997, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 9900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767841997, "default_payment_method": null, "subtotal_excluding_tax": 9900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767841999, "request": {"id": null, "idempotency_key": "ebe20e8b-b536-47a8-abd0-5ee482c8553a"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-08 03:13:21.655904+00 0 2026-01-08 03:13:21.651945+00
+25 evt_1SnA6CPdRe4dWeLwEtDZP5Xg stripe invoice.paid {"id": "evt_1SnA6CPdRe4dWeLwEtDZP5Xg", "data": {"object": {"id": "in_1SnA68PdRe4dWeLw88by4JbI", "lines": {"url": "/v1/invoices/in_1SnA68PdRe4dWeLw88by4JbI/lines", "data": [{"id": "il_1SnA68PdRe4dWeLwwYhSGrcj", "taxes": [], "amount": 29900, "object": "line_item", "parent": {"type": "subscription_item_details", "invoice_item_details": null, "subscription_item_details": {"proration": false, "invoice_item": null, "subscription": "sub_1SnA6APdRe4dWeLw4c5oqar3", "proration_details": {"credited_items": null}, "subscription_item": "si_TkfRBmZQwf0qyW"}}, "period": {"end": 1770522080, "start": 1767843680}, "invoice": "in_1SnA68PdRe4dWeLw88by4JbI", "pricing": {"type": "price_details", "price_details": {"price": "price_1SmmL6PdRe4dWeLwisBUvC0N", "product": "prod_TkGs64iCjpb9Ok"}, "unit_amount_decimal": "29900"}, "currency": "usd", "livemode": false, "metadata": {"plan_id": "5", "account_id": "144"}, "quantity": 1, "subtotal": 29900, "discounts": [], "description": "1 × Scale Plan (at $299.00 / month)", "discountable": true, "discount_amounts": [], "pretax_credit_amounts": []}], "object": "list", "has_more": false, "total_count": 1}, "total": 29900, "footer": null, "issuer": {"type": "self"}, "number": "VH2PUK7G-0026", "object": "invoice", "parent": {"type": "subscription_details", "quote_details": null, "subscription_details": {"metadata": {"plan_id": "5", "account_id": "144"}, "subscription": "sub_1SnA6APdRe4dWeLw4c5oqar3"}}, "status": "paid", "created": 1767843680, "currency": "usd", "customer": "cus_TkfQmjM3TBE47f", "due_date": null, "livemode": false, "metadata": {}, "subtotal": 29900, "attempted": true, "discounts": [], "rendering": null, "amount_due": 29900, "period_end": 1767843680, "test_clock": null, "amount_paid": 29900, "application": null, "description": null, "invoice_pdf": "https://pay.stripe.com/invoice/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua2ZSUTRPWHVWeEhna1Y5Ulo0WGZSVDhQaHF3cklqLDE1ODM4NDQ4NA0200xPZA3oHx/pdf?s=ap", "total_taxes": [], "account_name": "IGNY8 Sandbox", "auto_advance": false, "effective_at": 1767843680, "from_invoice": null, "on_behalf_of": null, "period_start": 1767843680, "attempt_count": 0, "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null, "disabled_reason": null}, "custom_fields": null, "customer_name": "Alorig", "shipping_cost": null, "billing_reason": "subscription_create", "customer_email": "salman@alorig.com", "customer_phone": null, "default_source": null, "ending_balance": 0, "receipt_number": null, "account_country": "GB", "account_tax_ids": null, "amount_overpaid": 0, "amount_shipping": 0, "latest_revision": null, "amount_remaining": 0, "customer_account": null, "customer_address": null, "customer_tax_ids": [], "payment_settings": {"default_mandate": null, "payment_method_types": ["card"], "payment_method_options": {"card": {"request_three_d_secure": "automatic"}, "payto": null, "konbini": null, "acss_debit": null, "bancontact": null, "sepa_debit": null, "us_bank_account": null, "customer_balance": null}}, "shipping_details": null, "starting_balance": 0, "collection_method": "charge_automatically", "customer_shipping": null, "default_tax_rates": [], "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1SlRuFPdRe4dWeLw/test_YWNjdF8xU2xSdUZQZFJlNGRXZUx3LF9Ua2ZSUTRPWHVWeEhna1Y5Ulo0WGZSVDhQaHF3cklqLDE1ODM4NDQ4NA0200xPZA3oHx?s=ap", "status_transitions": {"paid_at": 1767843681, "voided_at": null, "finalized_at": 1767843680, "marked_uncollectible_at": null}, "customer_tax_exempt": "none", "total_excluding_tax": 29900, "next_payment_attempt": null, "statement_descriptor": null, "webhooks_delivered_at": 1767843680, "default_payment_method": null, "subtotal_excluding_tax": 29900, "total_discount_amounts": [], "last_finalization_error": null, "automatically_finalizes_at": null, "total_pretax_credit_amounts": [], "pre_payment_credit_notes_amount": 0, "post_payment_credit_notes_amount": 0}}, "type": "invoice.paid", "object": "event", "created": 1767843683, "request": {"id": null, "idempotency_key": "a5b7afee-db0c-4dfc-802f-5fc94168f8ad"}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-08 03:41:25.164848+00 0 2026-01-08 03:41:25.162301+00
+24 evt_1SnA6CPdRe4dWeLwPccGAqbB stripe checkout.session.completed {"id": "evt_1SnA6CPdRe4dWeLwPccGAqbB", "data": {"object": {"id": "cs_test_b1Bg42PLwcxtspBAeP80Py5ZoJrYkehFb8mdj7LxoD2YVuN4K4tLkJKdGv", "url": null, "mode": "subscription", "locale": null, "object": "checkout.session", "status": "complete", "consent": null, "created": 1767843671, "invoice": "in_1SnA68PdRe4dWeLw88by4JbI", "ui_mode": "hosted", "currency": "usd", "customer": "cus_TkfQmjM3TBE47f", "livemode": false, "metadata": {"type": "subscription", "plan_id": "5", "account_id": "144"}, "discounts": [], "cancel_url": "https://app.igny8.com/account/plans?canceled=true", "expires_at": 1767930071, "custom_text": {"submit": null, "after_submit": null, "shipping_address": null, "terms_of_service_acceptance": null}, "permissions": null, "submit_type": null, "success_url": "https://app.igny8.com/account/plans?success=true&session_id={CHECKOUT_SESSION_ID}", "amount_total": 29900, "payment_link": null, "setup_intent": null, "subscription": "sub_1SnA6APdRe4dWeLw4c5oqar3", "automatic_tax": {"status": null, "enabled": false, "provider": null, "liability": null}, "client_secret": null, "custom_fields": [], "shipping_cost": null, "total_details": {"amount_tax": 0, "amount_discount": 0, "amount_shipping": 0}, "customer_email": null, "origin_context": null, "payment_intent": null, "payment_status": "paid", "recovered_from": null, "wallet_options": null, "amount_subtotal": 29900, "adaptive_pricing": {"enabled": false}, "after_expiration": null, "customer_account": null, "customer_details": {"name": "Alorig", "email": "salman@alorig.com", "phone": null, "address": {"city": null, "line1": null, "line2": null, "state": null, "country": "PK", "postal_code": null}, "tax_ids": [], "tax_exempt": "none", "business_name": null, "individual_name": null}, "invoice_creation": null, "shipping_options": [], "branding_settings": {"icon": null, "logo": null, "font_family": "default", "border_style": "rounded", "button_color": "#0074d4", "display_name": "IGNY8 Sandbox", "background_color": "#ffffff"}, "customer_creation": null, "consent_collection": null, "client_reference_id": null, "currency_conversion": null, "payment_method_types": ["card"], "allow_promotion_codes": true, "collected_information": {"business_name": null, "individual_name": null, "shipping_details": null}, "payment_method_options": {"card": {"request_three_d_secure": "automatic"}}, "phone_number_collection": {"enabled": false}, "payment_method_collection": "always", "billing_address_collection": null, "shipping_address_collection": null, "saved_payment_method_options": {"payment_method_save": null, "payment_method_remove": "disabled", "allow_redisplay_filters": ["always"]}, "payment_method_configuration_details": null}}, "type": "checkout.session.completed", "object": "event", "created": 1767843684, "request": {"id": null, "idempotency_key": null}, "livemode": false, "api_version": "2025-12-15.clover", "pending_webhooks": 1} t 2026-01-08 03:41:25.354395+00 0 2026-01-08 03:41:24.732241+00
+\.
+
+
+--
+-- Data for Name: job; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.job (jobid, job, name, type, level, clientid, jobstatus, schedtime, starttime, endtime, realendtime, jobtdate, volsessionid, volsessiontime, jobfiles, jobbytes, readbytes, joberrors, jobmissingfiles, poolid, filesetid, priorjobid, purgedfiles, hasbase, hascache, reviewed, comment, filetable) FROM stdin;
+\.
+
+
+--
+-- Data for Name: jobhisto; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.jobhisto (jobid, job, name, type, level, clientid, jobstatus, schedtime, starttime, endtime, realendtime, jobtdate, volsessionid, volsessiontime, jobfiles, jobbytes, readbytes, joberrors, jobmissingfiles, poolid, filesetid, priorjobid, purgedfiles, hasbase, hascache, reviewed, comment, filetable) FROM stdin;
+\.
+
+
+--
+-- Data for Name: jobmedia; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.jobmedia (jobmediaid, jobid, mediaid, firstindex, lastindex, startfile, endfile, startblock, endblock, volindex) FROM stdin;
+\.
+
+
+--
+-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.location (locationid, location, cost, enabled) FROM stdin;
+\.
+
+
+--
+-- Data for Name: locationlog; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.locationlog (loclogid, date, comment, mediaid, locationid, newvolstatus, newenabled) FROM stdin;
+\.
+
+
+--
+-- Data for Name: log; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.log (logid, jobid, "time", logtext) FROM stdin;
+\.
+
+
+--
+-- Data for Name: media; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.media (mediaid, volumename, slot, poolid, mediatype, mediatypeid, labeltype, firstwritten, lastwritten, labeldate, voljobs, volfiles, volblocks, volmounts, volbytes, volabytes, volapadding, volholebytes, volholes, volparts, volerrors, volwrites, volcapacitybytes, volstatus, enabled, recycle, actiononpurge, volretention, voluseduration, maxvoljobs, maxvolfiles, maxvolbytes, inchanger, storageid, deviceid, mediaaddressing, volreadtime, volwritetime, endfile, endblock, locationid, recyclecount, initialwrite, scratchpoolid, recyclepoolid, comment) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mediatype; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.mediatype (mediatypeid, mediatype, readonly) FROM stdin;
+\.
+
+
+--
+-- Data for Name: notifications_notification; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.notifications_notification (id, created_at, updated_at, notification_type, title, message, severity, object_id, action_url, action_label, is_read, read_at, metadata, tenant_id, content_type_id, site_id, user_id) FROM stdin;
+100 2026-01-12 11:43:56.037803+00 2026-01-12 11:43:56.037819+00 ai_cluster_complete Clustering Complete Created 1 clusters from 5 keywords success \N /planner/clusters View Clusters f \N {"cluster_count": 1, "keyword_count": 5} 90 \N \N \N
+101 2026-01-12 11:44:29.443337+00 2026-01-12 11:44:29.443342+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas f \N {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+102 2026-01-12 11:45:20.351297+00 2026-01-12 11:45:20.351304+00 ai_content_complete Content Generated Generated 1 article (775 words) success \N /writer/content View Content f \N {"word_count": 775, "article_count": 1} 90 \N \N \N
+103 2026-01-12 11:45:52.277427+00 2026-01-12 11:45:52.277434+00 ai_content_complete Content Generated Generated 1 article (633 words) success \N /writer/content View Content f \N {"word_count": 633, "article_count": 1} 90 \N \N \N
+104 2026-01-12 11:46:24.239812+00 2026-01-12 11:46:24.239818+00 ai_content_complete Content Generated Generated 1 article (867 words) success \N /writer/content View Content f \N {"word_count": 867, "article_count": 1} 90 \N \N \N
+105 2026-01-12 11:46:47.890372+00 2026-01-12 11:46:47.890379+00 ai_content_complete Content Generated Generated 1 article (622 words) success \N /writer/content View Content f \N {"word_count": 622, "article_count": 1} 90 \N \N \N
+106 2026-01-12 11:47:03.695146+00 2026-01-12 11:47:03.695156+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+107 2026-01-12 11:47:16.6464+00 2026-01-12 11:47:16.646406+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+108 2026-01-12 11:47:35.048401+00 2026-01-12 11:47:35.048407+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+109 2026-01-12 11:47:47.485654+00 2026-01-12 11:47:47.485661+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+112 2026-01-12 11:48:32.938483+00 2026-01-12 11:48:32.938497+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+114 2026-01-12 11:48:58.708932+00 2026-01-12 11:48:58.70894+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+116 2026-01-12 11:49:27.796669+00 2026-01-12 11:49:27.796683+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+118 2026-01-12 11:49:56.791359+00 2026-01-12 11:49:56.791367+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+120 2026-01-12 11:50:27.245177+00 2026-01-12 11:50:27.245185+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+122 2026-01-12 11:50:55.361868+00 2026-01-12 11:50:55.361876+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+124 2026-01-12 11:51:20.930698+00 2026-01-12 11:51:20.930704+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+126 2026-01-12 11:51:50.20225+00 2026-01-12 11:51:50.202259+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+128 2026-01-12 11:52:18.591924+00 2026-01-12 11:52:18.591933+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+133 2026-01-12 23:41:13.535848+00 2026-01-12 23:41:13.53586+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+135 2026-01-12 23:41:43.878877+00 2026-01-12 23:41:43.878886+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+1 2025-12-27 22:30:13.8404+00 2026-01-01 04:00:48.028562+00 ai_content_complete Content Generated Successfully generated 5 articles with 7,500 total words success \N /writer/content View Articles t 2026-01-01 04:00:48.028224+00 {"count": 5, "credits": 150, "function_name": "generate_content"} 5 \N \N 3
+68 2025-12-29 02:41:57.556956+00 2025-12-29 02:41:57.556962+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+69 2025-12-29 02:42:06.165502+00 2025-12-29 02:42:06.16551+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+70 2025-12-29 02:42:14.317207+00 2025-12-29 02:42:14.317213+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+71 2025-12-29 02:42:22.305852+00 2025-12-29 02:42:22.305857+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+73 2026-01-01 00:04:58.578236+00 2026-01-01 00:04:58.578272+00 ai_cluster_complete Clustering Complete Created 2 clusters from 6 keywords success \N /planner/clusters View Clusters t 2026-01-01 22:26:17.241478+00 {"cluster_count": 2, "keyword_count": 6} 90 \N \N \N
+74 2026-01-01 00:05:24.296302+00 2026-01-01 00:05:24.296307+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2026-01-01 22:26:17.241478+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+75 2026-01-01 00:05:46.729737+00 2026-01-01 00:05:46.729743+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2026-01-01 22:26:17.241478+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+76 2026-01-01 00:06:25.713545+00 2026-01-01 00:06:25.713552+00 ai_content_complete Content Generated Generated 1 article (1,683 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1683, "article_count": 1} 90 \N \N \N
+77 2026-01-01 00:06:52.457676+00 2026-01-01 00:06:52.457683+00 ai_content_complete Content Generated Generated 1 article (1,728 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1728, "article_count": 1} 90 \N \N \N
+78 2026-01-01 00:07:24.673322+00 2026-01-01 00:07:24.673328+00 ai_content_complete Content Generated Generated 1 article (2,114 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 2114, "article_count": 1} 90 \N \N \N
+79 2026-01-01 00:07:59.705477+00 2026-01-01 00:07:59.705492+00 ai_content_complete Content Generated Generated 1 article (2,222 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 2222, "article_count": 1} 90 \N \N \N
+80 2026-01-01 00:08:32.55258+00 2026-01-01 00:08:32.552587+00 ai_content_complete Content Generated Generated 1 article (1,643 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1643, "article_count": 1} 90 \N \N \N
+81 2026-01-01 00:09:15.291386+00 2026-01-01 00:09:15.291393+00 ai_content_complete Content Generated Generated 1 article (2,119 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 2119, "article_count": 1} 90 \N \N \N
+82 2026-01-01 00:09:48.771432+00 2026-01-01 00:09:48.771466+00 ai_content_complete Content Generated Generated 1 article (1,878 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1878, "article_count": 1} 90 \N \N \N
+83 2026-01-01 00:10:19.196792+00 2026-01-01 00:10:19.196798+00 ai_content_complete Content Generated Generated 1 article (1,670 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1670, "article_count": 1} 90 \N \N \N
+84 2026-01-01 00:10:32.330802+00 2026-01-01 00:10:32.330808+00 ai_prompts_complete Image Prompts Created 3 image prompts ready (1 featured + 2 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 3, "in_article_count": 2} 90 \N \N \N
+85 2026-01-01 00:10:39.73659+00 2026-01-01 00:10:39.736596+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+86 2026-01-01 00:10:47.062149+00 2026-01-01 00:10:47.062155+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+87 2026-01-01 00:10:56.617142+00 2026-01-01 00:10:56.617149+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+88 2026-01-01 00:11:05.943679+00 2026-01-01 00:11:05.943688+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+89 2026-01-01 00:11:13.472007+00 2026-01-01 00:11:13.472013+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+90 2026-01-01 00:11:21.346009+00 2026-01-01 00:11:21.346014+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+91 2026-01-01 00:11:29.149308+00 2026-01-01 00:11:29.149314+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2026-01-01 22:26:17.241478+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+92 2026-01-03 17:52:05.395809+00 2026-01-03 17:52:05.395825+00 ai_content_complete Content Generated Generated 1 article (1,837 words) success \N /writer/content View Content f \N {"word_count": 1837, "article_count": 1} 90 \N \N \N
+93 2026-01-03 17:52:34.687854+00 2026-01-03 17:52:34.687862+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+60 2025-12-28 20:56:30.277436+00 2025-12-28 20:56:30.277441+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+59 2025-12-28 20:56:19.450399+00 2025-12-28 20:56:19.450405+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+58 2025-12-28 20:56:07.260343+00 2025-12-28 20:56:07.260348+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+57 2025-12-28 20:55:54.609014+00 2025-12-28 20:55:54.609023+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+56 2025-12-28 20:55:41.840134+00 2025-12-28 20:55:41.840141+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+55 2025-12-28 20:55:29.36066+00 2025-12-28 20:55:29.360668+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+54 2025-12-28 20:55:18.535872+00 2025-12-28 20:55:18.535877+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+53 2025-12-28 20:55:06.792784+00 2025-12-28 20:55:06.792791+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+52 2025-12-28 20:54:54.469174+00 2025-12-28 20:54:54.469182+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+51 2025-12-28 20:54:42.747125+00 2025-12-28 20:54:42.74713+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+50 2025-12-28 20:54:31.556398+00 2025-12-28 20:54:31.556403+00 ai_prompts_complete Image Prompts Created 4 image prompts ready (1 featured + 3 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 4, "in_article_count": 3} 90 \N \N \N
+49 2025-12-28 20:54:14.783553+00 2025-12-28 20:54:14.78356+00 ai_content_complete Content Generated Generated 1 article (649 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 649, "article_count": 1} 90 \N \N \N
+48 2025-12-28 20:53:43.96875+00 2025-12-28 20:53:43.968764+00 ai_content_complete Content Generated Generated 1 article (813 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 813, "article_count": 1} 90 \N \N \N
+47 2025-12-28 20:46:16.312919+00 2025-12-28 20:46:16.312928+00 ai_content_complete Content Generated Generated 1 article (594 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 594, "article_count": 1} 90 \N \N \N
+46 2025-12-28 20:40:54.12267+00 2025-12-28 20:40:54.122679+00 ai_content_complete Content Generated Generated 1 article (684 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 684, "article_count": 1} 90 \N \N \N
+45 2025-12-28 20:36:33.215538+00 2025-12-28 20:36:33.215544+00 ai_content_complete Content Generated Generated 1 article (679 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 679, "article_count": 1} 90 \N \N \N
+44 2025-12-28 20:35:43.281416+00 2025-12-28 20:35:43.281424+00 ai_content_complete Content Generated Generated 1 article (563 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 563, "article_count": 1} 90 \N \N \N
+43 2025-12-28 20:35:10.588179+00 2025-12-28 20:35:10.588186+00 ai_content_complete Content Generated Generated 1 article (608 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 608, "article_count": 1} 90 \N \N \N
+42 2025-12-28 20:27:53.446471+00 2025-12-28 20:27:53.44648+00 ai_content_complete Content Generated Generated 1 article (695 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 695, "article_count": 1} 90 \N \N \N
+41 2025-12-28 20:22:25.204588+00 2025-12-28 20:22:25.204597+00 ai_content_complete Content Generated Generated 1 article (669 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 669, "article_count": 1} 90 \N \N \N
+40 2025-12-28 20:16:59.810986+00 2025-12-28 20:16:59.810993+00 ai_content_complete Content Generated Generated 1 article (653 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 653, "article_count": 1} 90 \N \N \N
+39 2025-12-28 20:11:33.387533+00 2025-12-28 20:11:33.38754+00 ai_content_complete Content Generated Generated 1 article (945 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 945, "article_count": 1} 90 \N \N \N
+38 2025-12-28 19:37:35.125178+00 2025-12-28 19:37:35.125184+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+37 2025-12-28 19:37:22.174558+00 2025-12-28 19:37:22.174564+00 ai_prompts_complete Image Prompts Created 4 image prompts ready (1 featured + 3 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 4, "in_article_count": 3} 90 \N \N \N
+36 2025-12-28 19:37:10.36634+00 2025-12-28 19:37:10.366348+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+35 2025-12-28 19:36:55.044599+00 2025-12-28 19:36:55.04461+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+34 2025-12-28 19:36:41.447983+00 2025-12-28 19:36:41.447989+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+33 2025-12-28 19:36:27.139436+00 2025-12-28 19:36:27.139443+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+32 2025-12-28 19:36:14.861272+00 2025-12-28 19:36:14.861288+00 ai_prompts_complete Image Prompts Created 4 image prompts ready (1 featured + 3 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 4, "in_article_count": 3} 90 \N \N \N
+31 2025-12-28 19:36:03.621896+00 2025-12-28 19:36:03.621902+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+30 2025-12-28 19:35:51.141461+00 2025-12-28 19:35:51.141468+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+29 2025-12-28 19:35:36.358563+00 2025-12-28 19:35:36.358572+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+28 2025-12-28 19:35:22.65812+00 2025-12-28 19:35:22.658129+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+27 2025-12-28 19:35:06.045026+00 2025-12-28 19:35:06.045034+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+26 2025-12-28 19:34:50.837628+00 2025-12-28 19:34:50.837636+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images t 2025-12-29 01:07:46.595684+00 {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+25 2025-12-28 19:29:34.415165+00 2025-12-28 19:29:34.415172+00 ai_content_complete Content Generated Generated 1 article (561 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 561, "article_count": 1} 90 \N \N \N
+24 2025-12-28 19:24:09.636564+00 2025-12-28 19:24:09.636575+00 ai_content_complete Content Generated Generated 1 article (676 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 676, "article_count": 1} 90 \N \N \N
+23 2025-12-28 03:37:17.689023+00 2025-12-28 03:37:17.68904+00 ai_content_complete Content Generated Generated 1 article (805 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 805, "article_count": 1} 90 \N \N \N
+22 2025-12-28 03:34:15.875458+00 2025-12-28 03:34:15.875464+00 ai_content_complete Content Generated Generated 1 article (705 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 705, "article_count": 1} 90 \N \N \N
+21 2025-12-28 03:28:48.663332+00 2025-12-28 03:28:48.663338+00 ai_content_complete Content Generated Generated 1 article (865 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 865, "article_count": 1} 90 \N \N \N
+20 2025-12-28 03:23:12.892628+00 2025-12-28 03:23:12.892633+00 ai_content_complete Content Generated Generated 1 article (647 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 647, "article_count": 1} 90 \N \N \N
+19 2025-12-28 03:17:43.24451+00 2025-12-28 03:17:43.244516+00 ai_content_complete Content Generated Generated 1 article (878 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 878, "article_count": 1} 90 \N \N \N
+18 2025-12-28 03:12:08.415197+00 2025-12-28 03:12:08.415208+00 ai_content_complete Content Generated Generated 1 article (582 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 582, "article_count": 1} 90 \N \N \N
+17 2025-12-28 02:47:42.704737+00 2025-12-28 02:47:42.70475+00 ai_content_complete Content Generated Generated 1 article (583 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 583, "article_count": 1} 90 \N \N \N
+16 2025-12-28 02:47:18.295233+00 2025-12-28 02:47:18.295265+00 ai_content_failed Content Generation Failed Failed to generate content: Unexpected error: SoftTimeLimitExceeded() error \N /writer/tasks View Tasks t 2025-12-29 01:07:46.595684+00 {"error": "Unexpected error: SoftTimeLimitExceeded()"} 90 \N \N \N
+15 2025-12-28 02:42:05.409305+00 2025-12-28 02:42:05.409312+00 ai_content_complete Content Generated Generated 1 article (484 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 484, "article_count": 1} 90 \N \N \N
+14 2025-12-28 02:36:38.055043+00 2025-12-28 02:36:38.05506+00 ai_content_complete Content Generated Generated 1 article (840 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 840, "article_count": 1} 90 \N \N \N
+13 2025-12-28 02:30:52.716785+00 2025-12-28 02:30:52.716794+00 ai_content_complete Content Generated Generated 1 article (471 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 471, "article_count": 1} 90 \N \N \N
+12 2025-12-28 02:25:24.605038+00 2025-12-28 02:25:24.605046+00 ai_content_complete Content Generated Generated 1 article (758 words) success \N /writer/content View Content t 2025-12-29 01:07:46.595684+00 {"word_count": 758, "article_count": 1} 90 \N \N \N
+11 2025-12-28 02:24:32.0405+00 2025-12-28 02:24:32.040507+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2025-12-29 01:07:46.595684+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+10 2025-12-28 02:23:49.69737+00 2025-12-28 02:23:49.697378+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2025-12-29 01:07:46.595684+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+9 2025-12-28 02:23:08.933831+00 2025-12-28 02:23:08.933839+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2025-12-29 01:07:46.595684+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+8 2025-12-28 02:22:22.531341+00 2025-12-28 02:22:22.531358+00 ai_cluster_complete Clustering Complete Created 0 clusters from 5 keywords success \N /planner/clusters View Clusters t 2025-12-29 01:07:46.595684+00 {"cluster_count": 0, "keyword_count": 5} 90 \N \N \N
+6 2025-12-28 00:51:07.079081+00 2025-12-28 00:51:07.079095+00 ai_cluster_complete Clustering Complete Created 3 clusters from 5 keywords success \N /planner/clusters View Clusters t 2025-12-29 01:07:46.595684+00 {"cluster_count": 3, "keyword_count": 5} 90 \N \N \N
+110 2026-01-12 11:48:06.383244+00 2026-01-12 11:48:06.383257+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+62 2025-12-29 02:39:14.162032+00 2025-12-29 02:39:14.16205+00 ai_cluster_complete Clustering Complete Created 1 clusters from 6 keywords success \N /planner/clusters View Clusters t 2026-01-01 22:26:17.241478+00 {"cluster_count": 1, "keyword_count": 6} 90 \N \N \N
+63 2025-12-29 02:39:34.956535+00 2025-12-29 02:39:34.95654+00 ai_ideas_complete Ideas Generated Generated 4 content ideas from 1 clusters success \N /planner/ideas View Ideas t 2026-01-01 22:26:17.241478+00 {"idea_count": 4, "cluster_count": 1} 90 \N \N \N
+64 2025-12-29 02:40:10.319122+00 2025-12-29 02:40:10.31913+00 ai_content_complete Content Generated Generated 1 article (1,772 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1772, "article_count": 1} 90 \N \N \N
+65 2025-12-29 02:40:39.144056+00 2025-12-29 02:40:39.144066+00 ai_content_complete Content Generated Generated 1 article (1,910 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1910, "article_count": 1} 90 \N \N \N
+66 2025-12-29 02:41:08.581486+00 2025-12-29 02:41:08.581496+00 ai_content_complete Content Generated Generated 1 article (1,778 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1778, "article_count": 1} 90 \N \N \N
+67 2025-12-29 02:41:44.667454+00 2025-12-29 02:41:44.66746+00 ai_content_complete Content Generated Generated 1 article (1,732 words) success \N /writer/content View Content t 2026-01-01 22:26:17.241478+00 {"word_count": 1732, "article_count": 1} 90 \N \N \N
+94 2026-01-03 18:10:26.11563+00 2026-01-03 18:10:26.115638+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+95 2026-01-03 18:14:28.863557+00 2026-01-03 18:14:28.863565+00 ai_prompts_complete Image Prompts Created 5 image prompts ready (1 featured + 4 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 5, "in_article_count": 4} 90 \N \N \N
+111 2026-01-12 11:48:20.277173+00 2026-01-12 11:48:20.27718+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+113 2026-01-12 11:48:45.979112+00 2026-01-12 11:48:45.979122+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+115 2026-01-12 11:49:14.456122+00 2026-01-12 11:49:14.456144+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+117 2026-01-12 11:49:41.911725+00 2026-01-12 11:49:41.911735+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+119 2026-01-12 11:50:12.796304+00 2026-01-12 11:50:12.796316+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+121 2026-01-12 11:50:42.194902+00 2026-01-12 11:50:42.194914+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+123 2026-01-12 11:51:07.241243+00 2026-01-12 11:51:07.241251+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+125 2026-01-12 11:51:36.24601+00 2026-01-12 11:51:36.246017+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+127 2026-01-12 11:52:03.032485+00 2026-01-12 11:52:03.032496+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+129 2026-01-12 11:52:32.687824+00 2026-01-12 11:52:32.687835+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+131 2026-01-12 23:40:40.437854+00 2026-01-12 23:40:40.43787+00 ai_content_complete Content Generated Generated 1 article (959 words) success \N /writer/content View Content f \N {"word_count": 959, "article_count": 1} 90 \N \N \N
+132 2026-01-12 23:40:57.552617+00 2026-01-12 23:40:57.552625+00 ai_prompts_complete Image Prompts Created 4 image prompts ready (1 featured + 3 in-article) success \N /writer/images Generate Images f \N {"prompt_count": 4, "in_article_count": 3} 90 \N \N \N
+134 2026-01-12 23:41:28.657026+00 2026-01-12 23:41:28.657033+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+136 2026-01-12 23:41:58.173021+00 2026-01-12 23:41:58.17303+00 ai_images_complete Images Generated Generated 1 image success \N /writer/images View Images f \N {"image_count": 1} 90 \N \N \N
+\.
+
+
+--
+-- Data for Name: path; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.path (pathid, path) FROM stdin;
+\.
+
+
+--
+-- Data for Name: pathhierarchy; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.pathhierarchy (pathid, ppathid) FROM stdin;
+\.
+
+
+--
+-- Data for Name: pathvisibility; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.pathvisibility (pathid, jobid, size, files) FROM stdin;
+\.
+
+
+--
+-- Data for Name: plugin_downloads; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.plugin_downloads (id, ip_address, user_agent, download_type, created_at, account_id, plugin_id, site_id, version_id) FROM stdin;
+1 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 21:55:56.931609+00 \N 1 \N 2
+2 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 21:56:53.0522+00 \N 1 \N 2
+3 39.45.32.60 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 manual 2026-01-12 22:07:06.62248+00 \N 1 \N 2
+4 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 22:39:24.77005+00 \N 1 \N 3
+5 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 23:03:54.028759+00 \N 1 \N 4
+6 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 23:04:05.575576+00 \N 1 \N 4
+7 157.173.214.173 WordPress/6.9; https://massagersmart.com manual 2026-01-12 23:18:42.290336+00 \N 1 \N 5
+\.
+
+
+--
+-- Data for Name: plugin_installations; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.plugin_installations (id, is_active, last_health_check, health_status, update_notified_at, created_at, updated_at, plugin_id, site_id, current_version_id, pending_update_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: plugin_versions; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.plugin_versions (id, version, version_code, status, file_path, file_size, checksum, changelog, min_api_version, min_platform_version, min_php_version, created_at, released_at, force_update, plugin_id) FROM stdin;
+1 1.3.4 10304 released plugins/wordpress/dist/igny8-wp-bridge-1.3.4.zip 0 ## Version 1.3.4 (January 12, 2026)\n\n### Major Changes\n- **API Key Authentication Only**: Removed username/password authentication\n- **Simplified Integration**: Single API key for all communication\n- **Bearer Token Auth**: Uses `Authorization: Bearer {api_key}` header\n- **Webhooks Deprecated**: Removed webhook signature validation\n\n### Authentication\n- API key stored in WordPress options table: `igny8_api_key`\n- Accepts both `X-IGNY8-API-KEY` header and `Authorization: Bearer` header\n- Single source of truth: Site.wp_api_key in IGNY8 backend\n\n### Technical Improvements\n- Streamlined connection test endpoint\n- Improved error handling and validation\n- Better health check reporting\n- Enhanced auto-update mechanism\n\n### Backward Compatibility\n- Legacy username/password fields removed\n- No migration needed for existing installations\n- API key authentication works with all IGNY8 API versions 1.0+\n 1.0 5.6 7.4 2026-01-12 19:55:09.91845+00 \N f 1
+2 1.3.5 10305 released igny8-wp-bridge-v1.3.5.zip 590899 2d3650f699b45f506d10a835e260e9e18d1431bf520cae3d794d45a1d43e1022 1.0 7.4 2026-01-12 19:58:49.971654+00 2026-01-12 19:58:49.971323+00 f 1
+3 1.3.6 10306 released igny8-wp-bridge-v1.3.6.zip 590899 1ad9f595489dd9959983f91e3ca872e956d1ae6ac38c888adb008fb27cb07f35 1.0 7.4 2026-01-12 22:39:02.79108+00 2026-01-12 22:39:02.790547+00 f 1
+4 1.3.7 10307 released igny8-wp-bridge-v1.3.7.zip 590899 fca892a329d44cf55c54935feaca04f2118e0cbf6b9c567914654ad76442d9be 1.0 7.4 2026-01-12 23:03:20.357297+00 2026-01-12 23:03:20.356974+00 f 1
+5 1.3.8 10308 released igny8-wp-bridge-v1.3.8.zip 591129 b1385790fe332a185b02a79a9da433a1e8285f7b6bc1910fa4a1066864e0378f 1.0 7.4 2026-01-12 23:18:14.467946+00 2026-01-12 23:18:14.467524+00 f 1
+\.
+
+
+--
+-- Data for Name: plugins; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.plugins (id, name, slug, platform, description, homepage_url, is_active, created_at, updated_at) FROM stdin;
+1 IGNY8 WordPress Bridge igny8-wp-bridge wordpress Connect your WordPress site to IGNY8 for AI-powered content publishing, SEO optimization, and seamless automation. Features API key authentication, automated updates, advanced template rendering, and webhook sync. https://igny8.com/docs/wordpress-integration t 2026-01-12 19:55:09.912557+00 2026-01-12 19:55:09.912573+00
+\.
+
+
+--
+-- Data for Name: pool; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.pool (poolid, name, numvols, maxvols, useonce, usecatalog, acceptanyvolume, volretention, voluseduration, maxvoljobs, maxvolfiles, maxvolbytes, autoprune, recycle, actiononpurge, pooltype, labeltype, labelformat, enabled, scratchpoolid, recyclepoolid, nextpoolid, migrationhighbytes, migrationlowbytes, migrationtime) FROM stdin;
+\.
+
+
+--
+-- Data for Name: restoreobject; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.restoreobject (restoreobjectid, objectname, restoreobject, pluginname, objectlength, objectfulllength, objectindex, objecttype, fileindex, jobid, objectcompression) FROM stdin;
+\.
+
+
+--
+-- Data for Name: snapshot; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.snapshot (snapshotid, name, jobid, filesetid, createtdate, createdate, clientid, volume, device, type, retention, comment) FROM stdin;
+\.
+
+
+--
+-- Data for Name: status; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.status (jobstatus, jobstatuslong, severity) FROM stdin;
+C Created, not yet running 15
+R Running 15
+B Blocked 15
+T Completed successfully 10
+E Terminated with errors 25
+e Non-fatal error 20
+f Fatal error 100
+D Verify found differences 15
+A Canceled by user 90
+F Waiting for Client 15
+S Waiting for Storage daemon 15
+m Waiting for new media \N
+M Waiting for media mount 15
+s Waiting for storage resource 15
+j Waiting for job resource 15
+c Waiting for client resource 15
+d Waiting on maximum jobs 15
+t Waiting on start time 15
+p Waiting on higher priority jobs 15
+a SD despooling attributes 15
+i Doing batch insert file records 15
+I Incomplete Job 25
+\.
+
+
+--
+-- Data for Name: storage; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.storage (storageid, name, autochanger) FROM stdin;
+\.
+
+
+--
+-- Data for Name: unsavedfiles; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.unsavedfiles (unsavedid, jobid, pathid, filenameid) FROM stdin;
+\.
+
+
+--
+-- Data for Name: version; Type: TABLE DATA; Schema: public; Owner: igny8
+--
+
+COPY public.version (versionid) FROM stdin;
+15
+15
+15
+\.
+
+
+--
+-- Name: admin_interface_theme_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.admin_interface_theme_id_seq', 33, true);
+
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_group_id_seq', 3, true);
+
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 84, true);
+
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_permission_id_seq', 428, true);
+
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false);
+
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_user_id_seq', 2, true);
+
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false);
+
+
+--
+-- Name: basefiles_baseid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.basefiles_baseid_seq', 1, false);
+
+
+--
+-- Name: billing_historicalaimodelconfig_history_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.billing_historicalaimodelconfig_history_id_seq', 32, true);
+
+
+--
+-- Name: billing_historicalcreditcostconfig_history_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.billing_historicalcreditcostconfig_history_id_seq', 28, true);
+
+
+--
+-- Name: billing_historicalpayment_history_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.billing_historicalpayment_history_id_seq', 63, true);
+
+
+--
+-- Name: client_clientid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.client_clientid_seq', 1, false);
+
+
+--
+-- Name: device_deviceid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.device_deviceid_seq', 1, false);
+
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_admin_log_id_seq', 3629, true);
+
+
+--
+-- Name: django_celery_results_chordcounter_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_celery_results_chordcounter_id_seq', 1, false);
+
+
+--
+-- Name: django_celery_results_groupresult_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_celery_results_groupresult_id_seq', 1, false);
+
+
+--
+-- Name: django_celery_results_taskresult_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_celery_results_taskresult_id_seq', 4195, true);
+
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_content_type_id_seq', 107, true);
+
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.django_migrations_id_seq', 324, true);
+
+
+--
+-- Name: file_fileid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.file_fileid_seq', 1, false);
+
+
+--
+-- Name: filename_filenameid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.filename_filenameid_seq', 1, false);
+
+
+--
+-- Name: fileset_filesetid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.fileset_filesetid_seq', 1, false);
+
+
+--
+-- Name: igny8_account_payment_methods_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_account_payment_methods_id_seq', 93, true);
+
+
+--
+-- Name: igny8_account_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_account_settings_id_seq', 5, true);
+
+
+--
+-- Name: igny8_ai_model_config_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_ai_model_config_id_seq', 12, true);
+
+
+--
+-- Name: igny8_ai_prompts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_ai_prompts_id_seq', 17, true);
+
+
+--
+-- Name: igny8_ai_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_ai_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_ai_task_logs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_ai_task_logs_id_seq', 723, true);
+
+
+--
+-- Name: igny8_author_profiles_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_author_profiles_id_seq', 1, false);
+
+
+--
+-- Name: igny8_automation_configs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_automation_configs_id_seq', 18, true);
+
+
+--
+-- Name: igny8_automation_rules_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_automation_rules_id_seq', 1, false);
+
+
+--
+-- Name: igny8_automation_runs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_automation_runs_id_seq', 78, true);
+
+
+--
+-- Name: igny8_billing_configuration_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_billing_configuration_id_seq', 1, true);
+
+
+--
+-- Name: igny8_clusters_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_clusters_id_seq', 427, true);
+
+
+--
+-- Name: igny8_content_attributes_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_attributes_id_seq', 1, false);
+
+
+--
+-- Name: igny8_content_cluster_map_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_cluster_map_id_seq', 10, true);
+
+
+--
+-- Name: igny8_content_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_id_seq', 217, true);
+
+
+--
+-- Name: igny8_content_ideas_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_ideas_id_seq', 366, true);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_ideas_keyword_objects_id_seq', 1, false);
+
+
+--
+-- Name: igny8_content_taxonomy_map_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_taxonomy_map_id_seq', 1, false);
+
+
+--
+-- Name: igny8_content_taxonomy_relations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_taxonomy_relations_id_seq', 1198, true);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_taxonomy_terms_clusters_id_seq', 1, false);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_content_taxonomy_terms_id_seq', 731, true);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_history_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_core_auth_historicalaccount_history_id_seq', 1175, true);
+
+
+--
+-- Name: igny8_credit_packages_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_credit_packages_id_seq', 4, true);
+
+
+--
+-- Name: igny8_credit_transactions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_credit_transactions_id_seq', 609, true);
+
+
+--
+-- Name: igny8_credit_usage_logs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_credit_usage_logs_id_seq', 705, true);
+
+
+--
+-- Name: igny8_deployment_records_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_deployment_records_id_seq', 6, true);
+
+
+--
+-- Name: igny8_email_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_email_log_id_seq', 6, true);
+
+
+--
+-- Name: igny8_email_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_email_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_email_templates_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_email_templates_id_seq', 11, true);
+
+
+--
+-- Name: igny8_global_ai_prompts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_global_ai_prompts_id_seq', 10, true);
+
+
+--
+-- Name: igny8_global_author_profiles_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_global_author_profiles_id_seq', 1, false);
+
+
+--
+-- Name: igny8_global_integration_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_global_integration_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_global_module_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_global_module_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_global_strategies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_global_strategies_id_seq', 1, false);
+
+
+--
+-- Name: igny8_images_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_images_id_seq', 552, true);
+
+
+--
+-- Name: igny8_industries_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_industries_id_seq', 29, true);
+
+
+--
+-- Name: igny8_industry_sectors_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_industry_sectors_id_seq', 144, true);
+
+
+--
+-- Name: igny8_integration_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_integration_settings_id_seq', 19, true);
+
+
+--
+-- Name: igny8_invoices_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_invoices_id_seq', 60, true);
+
+
+--
+-- Name: igny8_keywords_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_keywords_id_seq', 859, true);
+
+
+--
+-- Name: igny8_module_enable_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_module_enable_settings_id_seq', 5, true);
+
+
+--
+-- Name: igny8_module_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_module_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_optimization_tasks_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_optimization_tasks_id_seq', 2, true);
+
+
+--
+-- Name: igny8_page_blueprints_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_page_blueprints_id_seq', 72, true);
+
+
+--
+-- Name: igny8_password_reset_tokens_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_password_reset_tokens_id_seq', 7, true);
+
+
+--
+-- Name: igny8_payment_method_config_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_payment_method_config_id_seq', 29, true);
+
+
+--
+-- Name: igny8_payments_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_payments_id_seq', 42, true);
+
+
+--
+-- Name: igny8_plan_limit_usage_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_plan_limit_usage_id_seq', 1, false);
+
+
+--
+-- Name: igny8_plans_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_plans_id_seq', 12, true);
+
+
+--
+-- Name: igny8_publishing_records_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_publishing_records_id_seq', 68, true);
+
+
+--
+-- Name: igny8_publishing_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_publishing_settings_id_seq', 3, true);
+
+
+--
+-- Name: igny8_scheduled_tasks_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_scheduled_tasks_id_seq', 1, false);
+
+
+--
+-- Name: igny8_sectors_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_sectors_id_seq', 86, true);
+
+
+--
+-- Name: igny8_seed_keywords_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_seed_keywords_id_seq', 191, true);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_blueprint_clusters_id_seq', 1, false);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_blueprint_taxonomies_clusters_id_seq', 1, false);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_blueprint_taxonomies_id_seq', 49, true);
+
+
+--
+-- Name: igny8_site_blueprints_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_blueprints_id_seq', 16, true);
+
+
+--
+-- Name: igny8_site_builder_audience_profiles_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_builder_audience_profiles_id_seq', 10, true);
+
+
+--
+-- Name: igny8_site_builder_brand_personalities_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_builder_brand_personalities_id_seq', 8, true);
+
+
+--
+-- Name: igny8_site_builder_business_types_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_builder_business_types_id_seq', 8, true);
+
+
+--
+-- Name: igny8_site_builder_hero_imagery_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_builder_hero_imagery_id_seq', 5, true);
+
+
+--
+-- Name: igny8_site_integrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_integrations_id_seq', 5, true);
+
+
+--
+-- Name: igny8_site_user_access_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_site_user_access_id_seq', 15, true);
+
+
+--
+-- Name: igny8_sites_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_sites_id_seq', 44, true);
+
+
+--
+-- Name: igny8_strategies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_strategies_id_seq', 1, false);
+
+
+--
+-- Name: igny8_subscriptions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_subscriptions_id_seq', 56, true);
+
+
+--
+-- Name: igny8_sync_events_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_sync_events_id_seq', 4, true);
+
+
+--
+-- Name: igny8_system_ai_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_system_ai_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_system_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_system_settings_id_seq', 1, false);
+
+
+--
+-- Name: igny8_tasks_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_tasks_id_seq', 300, true);
+
+
+--
+-- Name: igny8_tasks_keyword_objects_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_tasks_keyword_objects_id_seq', 1, false);
+
+
+--
+-- Name: igny8_tenants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_tenants_id_seq', 146, true);
+
+
+--
+-- Name: igny8_user_settings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_user_settings_id_seq', 40, true);
+
+
+--
+-- Name: igny8_users_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_users_groups_id_seq', 1, false);
+
+
+--
+-- Name: igny8_users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_users_id_seq', 184, true);
+
+
+--
+-- Name: igny8_users_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_users_user_permissions_id_seq', 1, false);
+
+
+--
+-- Name: igny8_webhook_events_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.igny8_webhook_events_id_seq', 25, true);
+
+
+--
+-- Name: job_jobid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.job_jobid_seq', 1, false);
+
+
+--
+-- Name: jobmedia_jobmediaid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.jobmedia_jobmediaid_seq', 1, false);
+
+
+--
+-- Name: location_locationid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.location_locationid_seq', 1, false);
+
+
+--
+-- Name: locationlog_loclogid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.locationlog_loclogid_seq', 1, false);
+
+
+--
+-- Name: log_logid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.log_logid_seq', 1, false);
+
+
+--
+-- Name: media_mediaid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.media_mediaid_seq', 1, false);
+
+
+--
+-- Name: mediatype_mediatypeid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.mediatype_mediatypeid_seq', 1, false);
+
+
+--
+-- Name: notifications_notification_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.notifications_notification_id_seq', 136, true);
+
+
+--
+-- Name: path_pathid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.path_pathid_seq', 1, false);
+
+
+--
+-- Name: plugin_downloads_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.plugin_downloads_id_seq', 7, true);
+
+
+--
+-- Name: plugin_installations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.plugin_installations_id_seq', 1, false);
+
+
+--
+-- Name: plugin_versions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.plugin_versions_id_seq', 5, true);
+
+
+--
+-- Name: plugins_id_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.plugins_id_seq', 1, true);
+
+
+--
+-- Name: pool_poolid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.pool_poolid_seq', 1, false);
+
+
+--
+-- Name: restoreobject_restoreobjectid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.restoreobject_restoreobjectid_seq', 1, false);
+
+
+--
+-- Name: snapshot_snapshotid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.snapshot_snapshotid_seq', 1, false);
+
+
+--
+-- Name: storage_storageid_seq; Type: SEQUENCE SET; Schema: public; Owner: igny8
+--
+
+SELECT pg_catalog.setval('public.storage_storageid_seq', 1, false);
+
+
+--
+-- Name: admin_interface_theme admin_interface_theme_name_30bda70f_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.admin_interface_theme
+ ADD CONSTRAINT admin_interface_theme_name_30bda70f_uniq UNIQUE (name);
+
+
+--
+-- Name: admin_interface_theme admin_interface_theme_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.admin_interface_theme
+ ADD CONSTRAINT admin_interface_theme_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group
+ ADD CONSTRAINT auth_group_name_key UNIQUE (name);
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_group_id_permission_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_group_id_permission_id_0cd325b0_uniq UNIQUE (group_id, permission_id);
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group
+ ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_permission auth_permission_content_type_id_codename_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_content_type_id_codename_01ab375a_uniq UNIQUE (content_type_id, codename);
+
+
+--
+-- Name: auth_permission auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups auth_user_groups_user_id_group_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_user_id_group_id_94350c0c_uniq UNIQUE (user_id, group_id);
+
+
+--
+-- Name: auth_user auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user
+ ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_permission_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_user_id_permission_id_14a6b632_uniq UNIQUE (user_id, permission_id);
+
+
+--
+-- Name: auth_user auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user
+ ADD CONSTRAINT auth_user_username_key UNIQUE (username);
+
+
+--
+-- Name: basefiles basefiles_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.basefiles
+ ADD CONSTRAINT basefiles_pkey PRIMARY KEY (baseid);
+
+
+--
+-- Name: billing_historicalaimodelconfig billing_historicalaimodelconfig_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalaimodelconfig
+ ADD CONSTRAINT billing_historicalaimodelconfig_pkey PRIMARY KEY (history_id);
+
+
+--
+-- Name: billing_historicalcreditcostconfig billing_historicalcreditcostconfig_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalcreditcostconfig
+ ADD CONSTRAINT billing_historicalcreditcostconfig_pkey PRIMARY KEY (history_id);
+
+
+--
+-- Name: billing_historicalpayment billing_historicalpayment_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalpayment
+ ADD CONSTRAINT billing_historicalpayment_pkey PRIMARY KEY (history_id);
+
+
+--
+-- Name: cdimages cdimages_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.cdimages
+ ADD CONSTRAINT cdimages_pkey PRIMARY KEY (mediaid);
+
+
+--
+-- Name: client client_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.client
+ ADD CONSTRAINT client_pkey PRIMARY KEY (clientid);
+
+
+--
+-- Name: counters counters_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.counters
+ ADD CONSTRAINT counters_pkey PRIMARY KEY (counter);
+
+
+--
+-- Name: device device_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.device
+ ADD CONSTRAINT device_pkey PRIMARY KEY (deviceid);
+
+
+--
+-- Name: django_admin_log django_admin_log_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_celery_results_chordcounter django_celery_results_chordcounter_group_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_chordcounter
+ ADD CONSTRAINT django_celery_results_chordcounter_group_id_key UNIQUE (group_id);
+
+
+--
+-- Name: django_celery_results_chordcounter django_celery_results_chordcounter_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_chordcounter
+ ADD CONSTRAINT django_celery_results_chordcounter_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_celery_results_groupresult django_celery_results_groupresult_group_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_groupresult
+ ADD CONSTRAINT django_celery_results_groupresult_group_id_key UNIQUE (group_id);
+
+
+--
+-- Name: django_celery_results_groupresult django_celery_results_groupresult_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_groupresult
+ ADD CONSTRAINT django_celery_results_groupresult_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_celery_results_taskresult django_celery_results_taskresult_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_taskresult
+ ADD CONSTRAINT django_celery_results_taskresult_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_celery_results_taskresult django_celery_results_taskresult_task_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_celery_results_taskresult
+ ADD CONSTRAINT django_celery_results_taskresult_task_id_key UNIQUE (task_id);
+
+
+--
+-- Name: django_content_type django_content_type_app_label_model_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_content_type
+ ADD CONSTRAINT django_content_type_app_label_model_76bd3d3b_uniq UNIQUE (app_label, model);
+
+
+--
+-- Name: django_content_type django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_content_type
+ ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_migrations django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_migrations
+ ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_session django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_session
+ ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key);
+
+
+--
+-- Name: file file_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.file
+ ADD CONSTRAINT file_pkey PRIMARY KEY (fileid);
+
+
+--
+-- Name: filename filename_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.filename
+ ADD CONSTRAINT filename_pkey PRIMARY KEY (filenameid);
+
+
+--
+-- Name: fileset fileset_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.fileset
+ ADD CONSTRAINT fileset_pkey PRIMARY KEY (filesetid);
+
+
+--
+-- Name: igny8_account_payment_methods igny8_account_payment_me_tenant_id_display_name_43a0cbdd_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_payment_methods
+ ADD CONSTRAINT igny8_account_payment_me_tenant_id_display_name_43a0cbdd_uniq UNIQUE (tenant_id, display_name);
+
+
+--
+-- Name: igny8_account_payment_methods igny8_account_payment_methods_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_payment_methods
+ ADD CONSTRAINT igny8_account_payment_methods_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_account_settings igny8_account_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_settings
+ ADD CONSTRAINT igny8_account_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_account_settings igny8_account_settings_tenant_id_key_21b650fe_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_settings
+ ADD CONSTRAINT igny8_account_settings_tenant_id_key_21b650fe_uniq UNIQUE (tenant_id, key);
+
+
+--
+-- Name: igny8_ai_model_config igny8_ai_model_config_model_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_model_config
+ ADD CONSTRAINT igny8_ai_model_config_model_name_key UNIQUE (model_name);
+
+
+--
+-- Name: igny8_ai_model_config igny8_ai_model_config_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_model_config
+ ADD CONSTRAINT igny8_ai_model_config_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_ai_prompts igny8_ai_prompts_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_prompts
+ ADD CONSTRAINT igny8_ai_prompts_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_ai_prompts igny8_ai_prompts_tenant_id_prompt_type_c8a12adf_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_prompts
+ ADD CONSTRAINT igny8_ai_prompts_tenant_id_prompt_type_c8a12adf_uniq UNIQUE (tenant_id, prompt_type);
+
+
+--
+-- Name: igny8_ai_settings igny8_ai_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_settings
+ ADD CONSTRAINT igny8_ai_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_ai_settings igny8_ai_settings_tenant_id_integration_type_dbbb3fe1_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_settings
+ ADD CONSTRAINT igny8_ai_settings_tenant_id_integration_type_dbbb3fe1_uniq UNIQUE (tenant_id, integration_type);
+
+
+--
+-- Name: igny8_ai_task_logs igny8_ai_task_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_task_logs
+ ADD CONSTRAINT igny8_ai_task_logs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_author_profiles igny8_author_profiles_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_author_profiles
+ ADD CONSTRAINT igny8_author_profiles_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_automation_configs igny8_automation_configs_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_configs
+ ADD CONSTRAINT igny8_automation_configs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_automation_configs igny8_automation_configs_site_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_configs
+ ADD CONSTRAINT igny8_automation_configs_site_id_key UNIQUE (site_id);
+
+
+--
+-- Name: igny8_automation_rules igny8_automation_rules_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_rules
+ ADD CONSTRAINT igny8_automation_rules_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_automation_runs igny8_automation_runs_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_runs
+ ADD CONSTRAINT igny8_automation_runs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_automation_runs igny8_automation_runs_run_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_runs
+ ADD CONSTRAINT igny8_automation_runs_run_id_key UNIQUE (run_id);
+
+
+--
+-- Name: igny8_billing_configuration igny8_billing_configuration_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_billing_configuration
+ ADD CONSTRAINT igny8_billing_configuration_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_clusters igny8_clusters_name_site_id_sector_id_7e78cf2c_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_name_site_id_sector_id_7e78cf2c_uniq UNIQUE (name, site_id, sector_id);
+
+
+--
+-- Name: igny8_clusters igny8_clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attributes_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attributes_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluster_ma_content_id_cluster_id_ro_70300b3e_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluster_ma_content_id_cluster_id_ro_70300b3e_uniq UNIQUE (content_id, cluster_id, role);
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluster_map_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluster_map_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas_keyw_contentideas_id_keywords_53586c95_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas_keyw_contentideas_id_keywords_53586c95_uniq UNIQUE (contentideas_id, keywords_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas_keyword_obj_contentideas_id_keywords_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas_keyword_obj_contentideas_id_keywords_id_key UNIQUE (contentideas_id, keywords_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas_keyword_objects_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas_keyword_objects_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content igny8_content_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content igny8_content_task_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_task_id_key UNIQUE (task_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxonomy_map_content_id_taxonomy_id_37ced60e_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxonomy_map_content_id_taxonomy_id_37ced60e_uniq UNIQUE (content_id, taxonomy_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxonomy_map_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxonomy_map_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_taxonomy_relations igny8_content_taxonomy_r_content_id_taxonomy_id_dbf1f23a_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_relations
+ ADD CONSTRAINT igny8_content_taxonomy_r_content_id_taxonomy_id_dbf1f23a_uniq UNIQUE (content_id, taxonomy_id);
+
+
+--
+-- Name: igny8_content_taxonomy_relations igny8_content_taxonomy_relations_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_relations
+ ADD CONSTRAINT igny8_content_taxonomy_relations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters igny8_content_taxonomy_t_contenttaxonomy_id_clust_f03a484e_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms_clusters
+ ADD CONSTRAINT igny8_content_taxonomy_t_contenttaxonomy_id_clust_f03a484e_uniq UNIQUE (contenttaxonomy_id, clusters_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxonomy_t_site_id_external_id_exte_84bd2184_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxonomy_t_site_id_external_id_exte_84bd2184_uniq UNIQUE (site_id, external_id, external_taxonomy);
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxonomy_t_site_id_slug_taxonomy_ty_446ecf9b_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxonomy_t_site_id_slug_taxonomy_ty_446ecf9b_uniq UNIQUE (site_id, slug, taxonomy_type);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters igny8_content_taxonomy_terms_clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms_clusters
+ ADD CONSTRAINT igny8_content_taxonomy_terms_clusters_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxonomy_terms_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxonomy_terms_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount igny8_core_auth_historicalaccount_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_core_auth_historicalaccount
+ ADD CONSTRAINT igny8_core_auth_historicalaccount_pkey PRIMARY KEY (history_id);
+
+
+--
+-- Name: igny8_credit_cost_config igny8_credit_cost_config_operation_type_7b4a12fc_pk; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_cost_config
+ ADD CONSTRAINT igny8_credit_cost_config_operation_type_7b4a12fc_pk PRIMARY KEY (operation_type);
+
+
+--
+-- Name: igny8_credit_packages igny8_credit_packages_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_packages
+ ADD CONSTRAINT igny8_credit_packages_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_credit_packages igny8_credit_packages_slug_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_packages
+ ADD CONSTRAINT igny8_credit_packages_slug_key UNIQUE (slug);
+
+
+--
+-- Name: igny8_credit_transactions igny8_credit_transactions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_transactions
+ ADD CONSTRAINT igny8_credit_transactions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_credit_usage_logs igny8_credit_usage_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_usage_logs
+ ADD CONSTRAINT igny8_credit_usage_logs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_deployment_records igny8_deployment_records_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_deployment_records
+ ADD CONSTRAINT igny8_deployment_records_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_email_log igny8_email_log_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_email_log
+ ADD CONSTRAINT igny8_email_log_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_email_settings igny8_email_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_email_settings
+ ADD CONSTRAINT igny8_email_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_email_templates igny8_email_templates_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_email_templates
+ ADD CONSTRAINT igny8_email_templates_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_email_templates igny8_email_templates_template_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_email_templates
+ ADD CONSTRAINT igny8_email_templates_template_name_key UNIQUE (template_name);
+
+
+--
+-- Name: igny8_global_ai_prompts igny8_global_ai_prompts_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_ai_prompts
+ ADD CONSTRAINT igny8_global_ai_prompts_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_global_ai_prompts igny8_global_ai_prompts_prompt_type_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_ai_prompts
+ ADD CONSTRAINT igny8_global_ai_prompts_prompt_type_key UNIQUE (prompt_type);
+
+
+--
+-- Name: igny8_global_author_profiles igny8_global_author_profiles_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_author_profiles
+ ADD CONSTRAINT igny8_global_author_profiles_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_global_author_profiles igny8_global_author_profiles_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_author_profiles
+ ADD CONSTRAINT igny8_global_author_profiles_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_global_integration_settings igny8_global_integration_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_integration_settings
+ ADD CONSTRAINT igny8_global_integration_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_global_module_settings igny8_global_module_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_module_settings
+ ADD CONSTRAINT igny8_global_module_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_global_strategies igny8_global_strategies_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_strategies
+ ADD CONSTRAINT igny8_global_strategies_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_global_strategies igny8_global_strategies_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_strategies
+ ADD CONSTRAINT igny8_global_strategies_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_images igny8_images_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_industries igny8_industries_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industries
+ ADD CONSTRAINT igny8_industries_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_industries igny8_industries_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industries
+ ADD CONSTRAINT igny8_industries_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_industries igny8_industries_slug_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industries
+ ADD CONSTRAINT igny8_industries_slug_key UNIQUE (slug);
+
+
+--
+-- Name: igny8_industry_sectors igny8_industry_sectors_industry_id_slug_3889e46d_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industry_sectors
+ ADD CONSTRAINT igny8_industry_sectors_industry_id_slug_3889e46d_uniq UNIQUE (industry_id, slug);
+
+
+--
+-- Name: igny8_industry_sectors igny8_industry_sectors_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industry_sectors
+ ADD CONSTRAINT igny8_industry_sectors_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_integration_providers igny8_integration_providers_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_integration_providers
+ ADD CONSTRAINT igny8_integration_providers_pkey PRIMARY KEY (provider_id);
+
+
+--
+-- Name: igny8_integration_settings igny8_integration_settin_tenant_id_integration_ty_847196f0_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_integration_settings
+ ADD CONSTRAINT igny8_integration_settin_tenant_id_integration_ty_847196f0_uniq UNIQUE (tenant_id, integration_type);
+
+
+--
+-- Name: igny8_integration_settings igny8_integration_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_integration_settings
+ ADD CONSTRAINT igny8_integration_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_invoices igny8_invoices_invoice_number_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_invoices
+ ADD CONSTRAINT igny8_invoices_invoice_number_key UNIQUE (invoice_number);
+
+
+--
+-- Name: igny8_invoices igny8_invoices_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_invoices
+ ADD CONSTRAINT igny8_invoices_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_keywords igny8_keywords_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_keywords igny8_keywords_seed_keyword_id_site_id_sector_id_b201a7fb_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_seed_keyword_id_site_id_sector_id_b201a7fb_uniq UNIQUE (seed_keyword_id, site_id, sector_id);
+
+
+--
+-- Name: igny8_module_enable_settings igny8_module_enable_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_enable_settings
+ ADD CONSTRAINT igny8_module_enable_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_module_enable_settings igny8_module_enable_settings_tenant_id_0d4046ca_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_enable_settings
+ ADD CONSTRAINT igny8_module_enable_settings_tenant_id_0d4046ca_uniq UNIQUE (tenant_id);
+
+
+--
+-- Name: igny8_module_settings igny8_module_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_settings
+ ADD CONSTRAINT igny8_module_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_module_settings igny8_module_settings_tenant_id_module_name_key_60d8d422_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_settings
+ ADD CONSTRAINT igny8_module_settings_tenant_id_module_name_key_60d8d422_uniq UNIQUE (tenant_id, module_name, key);
+
+
+--
+-- Name: igny8_optimization_tasks igny8_optimization_tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_optimization_tasks
+ ADD CONSTRAINT igny8_optimization_tasks_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprints_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprints_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprints_site_blueprint_id_slug_2ea426bf_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprints_site_blueprint_id_slug_2ea426bf_uniq UNIQUE (site_blueprint_id, slug);
+
+
+--
+-- Name: igny8_password_reset_tokens igny8_password_reset_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_password_reset_tokens
+ ADD CONSTRAINT igny8_password_reset_tokens_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_password_reset_tokens igny8_password_reset_tokens_token_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_password_reset_tokens
+ ADD CONSTRAINT igny8_password_reset_tokens_token_key UNIQUE (token);
+
+
+--
+-- Name: igny8_payment_method_config igny8_payment_method_con_country_code_payment_met_92dd869a_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payment_method_config
+ ADD CONSTRAINT igny8_payment_method_con_country_code_payment_met_92dd869a_uniq UNIQUE (country_code, payment_method);
+
+
+--
+-- Name: igny8_payment_method_config igny8_payment_method_config_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payment_method_config
+ ADD CONSTRAINT igny8_payment_method_config_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_payments igny8_payments_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payments
+ ADD CONSTRAINT igny8_payments_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_plan_limit_usage igny8_plan_limit_usage_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_plan_limit_usage
+ ADD CONSTRAINT igny8_plan_limit_usage_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_plan_limit_usage igny8_plan_limit_usage_tenant_id_limit_type_per_87cd6823_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_plan_limit_usage
+ ADD CONSTRAINT igny8_plan_limit_usage_tenant_id_limit_type_per_87cd6823_uniq UNIQUE (tenant_id, limit_type, period_start);
+
+
+--
+-- Name: igny8_plans igny8_plans_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_plans
+ ADD CONSTRAINT igny8_plans_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_plans igny8_plans_slug_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_plans
+ ADD CONSTRAINT igny8_plans_slug_key UNIQUE (slug);
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_records_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_records_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_publishing_settings igny8_publishing_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_settings
+ ADD CONSTRAINT igny8_publishing_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_publishing_settings igny8_publishing_settings_site_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_settings
+ ADD CONSTRAINT igny8_publishing_settings_site_id_key UNIQUE (site_id);
+
+
+--
+-- Name: igny8_scheduled_tasks igny8_scheduled_tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_scheduled_tasks
+ ADD CONSTRAINT igny8_scheduled_tasks_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_sectors igny8_sectors_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_sectors igny8_sectors_site_id_slug_74c56528_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_site_id_slug_74c56528_uniq UNIQUE (site_id, slug);
+
+
+--
+-- Name: igny8_seed_keywords igny8_seed_keywords_keyword_industry_id_sector_id_6e97a797_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_seed_keywords
+ ADD CONSTRAINT igny8_seed_keywords_keyword_industry_id_sector_id_6e97a797_uniq UNIQUE (keyword, industry_id, sector_id);
+
+
+--
+-- Name: igny8_seed_keywords igny8_seed_keywords_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_seed_keywords
+ ADD CONSTRAINT igny8_seed_keywords_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_clu_site_blueprint_id_cluste_b40a750a_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_clu_site_blueprint_id_cluste_b40a750a_uniq UNIQUE (site_blueprint_id, cluster_id, role);
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_clusters_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_tax_site_blueprint_id_slug_2f408291_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_tax_site_blueprint_id_slug_2f408291_uniq UNIQUE (site_blueprint_id, slug);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters igny8_site_blueprint_tax_siteblueprinttaxonomy_id_075ca323_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies_clusters
+ ADD CONSTRAINT igny8_site_blueprint_tax_siteblueprinttaxonomy_id_075ca323_uniq UNIQUE (siteblueprinttaxonomy_id, clusters_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters igny8_site_blueprint_taxonomies_clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies_clusters
+ ADD CONSTRAINT igny8_site_blueprint_taxonomies_clusters_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_taxonomies_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_taxonomies_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_blueprints igny8_site_blueprints_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprints
+ ADD CONSTRAINT igny8_site_blueprints_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_builder_audience_profiles igny8_site_builder_audience_profiles_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_audience_profiles
+ ADD CONSTRAINT igny8_site_builder_audience_profiles_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_site_builder_audience_profiles igny8_site_builder_audience_profiles_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_audience_profiles
+ ADD CONSTRAINT igny8_site_builder_audience_profiles_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_builder_brand_personalities igny8_site_builder_brand_personalities_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_brand_personalities
+ ADD CONSTRAINT igny8_site_builder_brand_personalities_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_site_builder_brand_personalities igny8_site_builder_brand_personalities_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_brand_personalities
+ ADD CONSTRAINT igny8_site_builder_brand_personalities_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_builder_business_types igny8_site_builder_business_types_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_business_types
+ ADD CONSTRAINT igny8_site_builder_business_types_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_site_builder_business_types igny8_site_builder_business_types_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_business_types
+ ADD CONSTRAINT igny8_site_builder_business_types_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_builder_hero_imagery igny8_site_builder_hero_imagery_name_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_hero_imagery
+ ADD CONSTRAINT igny8_site_builder_hero_imagery_name_key UNIQUE (name);
+
+
+--
+-- Name: igny8_site_builder_hero_imagery igny8_site_builder_hero_imagery_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_builder_hero_imagery
+ ADD CONSTRAINT igny8_site_builder_hero_imagery_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_integrations igny8_site_integrations_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_integrations
+ ADD CONSTRAINT igny8_site_integrations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_integrations igny8_site_integrations_site_id_platform_aad77bf0_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_integrations
+ ADD CONSTRAINT igny8_site_integrations_site_id_platform_aad77bf0_uniq UNIQUE (site_id, platform);
+
+
+--
+-- Name: igny8_site_user_access igny8_site_user_access_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_user_access
+ ADD CONSTRAINT igny8_site_user_access_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_site_user_access igny8_site_user_access_user_id_site_id_d0de02a0_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_user_access
+ ADD CONSTRAINT igny8_site_user_access_user_id_site_id_d0de02a0_uniq UNIQUE (user_id, site_id);
+
+
+--
+-- Name: igny8_sites igny8_sites_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sites
+ ADD CONSTRAINT igny8_sites_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_sites igny8_sites_tenant_id_slug_c07bc6d7_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sites
+ ADD CONSTRAINT igny8_sites_tenant_id_slug_c07bc6d7_uniq UNIQUE (tenant_id, slug);
+
+
+--
+-- Name: igny8_strategies igny8_strategies_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_strategies
+ ADD CONSTRAINT igny8_strategies_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_subscriptions igny8_subscriptions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_subscriptions
+ ADD CONSTRAINT igny8_subscriptions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_subscriptions igny8_subscriptions_tenant_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_subscriptions
+ ADD CONSTRAINT igny8_subscriptions_tenant_id_key UNIQUE (tenant_id);
+
+
+--
+-- Name: igny8_sync_events igny8_sync_events_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sync_events
+ ADD CONSTRAINT igny8_sync_events_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_system_ai_settings igny8_system_ai_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_system_ai_settings
+ ADD CONSTRAINT igny8_system_ai_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_system_settings igny8_system_settings_key_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_system_settings
+ ADD CONSTRAINT igny8_system_settings_key_key UNIQUE (key);
+
+
+--
+-- Name: igny8_system_settings igny8_system_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_system_settings
+ ADD CONSTRAINT igny8_system_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_tasks_keyword_objects igny8_tasks_keyword_objects_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks_keyword_objects
+ ADD CONSTRAINT igny8_tasks_keyword_objects_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_tasks_keyword_objects igny8_tasks_keyword_objects_tasks_id_keywords_id_f49453e9_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks_keyword_objects
+ ADD CONSTRAINT igny8_tasks_keyword_objects_tasks_id_keywords_id_f49453e9_uniq UNIQUE (tasks_id, keywords_id);
+
+
+--
+-- Name: igny8_tasks igny8_tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_tenants igny8_tenants_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tenants
+ ADD CONSTRAINT igny8_tenants_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_tenants igny8_tenants_slug_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tenants
+ ADD CONSTRAINT igny8_tenants_slug_key UNIQUE (slug);
+
+
+--
+-- Name: igny8_user_settings igny8_user_settings_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_user_settings
+ ADD CONSTRAINT igny8_user_settings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_user_settings igny8_user_settings_user_id_tenant_id_key_d8b7b6f6_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_user_settings
+ ADD CONSTRAINT igny8_user_settings_user_id_tenant_id_key_d8b7b6f6_uniq UNIQUE (user_id, tenant_id, key);
+
+
+--
+-- Name: igny8_users igny8_users_email_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users
+ ADD CONSTRAINT igny8_users_email_key UNIQUE (email);
+
+
+--
+-- Name: igny8_users_groups igny8_users_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_groups
+ ADD CONSTRAINT igny8_users_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_users_groups igny8_users_groups_user_id_group_id_66caa2b9_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_groups
+ ADD CONSTRAINT igny8_users_groups_user_id_group_id_66caa2b9_uniq UNIQUE (user_id, group_id);
+
+
+--
+-- Name: igny8_users igny8_users_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users
+ ADD CONSTRAINT igny8_users_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_users_user_permissions igny8_users_user_permiss_user_id_permission_id_1c1e02d6_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_user_permissions
+ ADD CONSTRAINT igny8_users_user_permiss_user_id_permission_id_1c1e02d6_uniq UNIQUE (user_id, permission_id);
+
+
+--
+-- Name: igny8_users_user_permissions igny8_users_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_user_permissions
+ ADD CONSTRAINT igny8_users_user_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: igny8_users igny8_users_username_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users
+ ADD CONSTRAINT igny8_users_username_key UNIQUE (username);
+
+
+--
+-- Name: igny8_webhook_events igny8_webhook_events_event_id_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_webhook_events
+ ADD CONSTRAINT igny8_webhook_events_event_id_key UNIQUE (event_id);
+
+
+--
+-- Name: igny8_webhook_events igny8_webhook_events_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_webhook_events
+ ADD CONSTRAINT igny8_webhook_events_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: job job_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.job
+ ADD CONSTRAINT job_pkey PRIMARY KEY (jobid);
+
+
+--
+-- Name: jobmedia jobmedia_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.jobmedia
+ ADD CONSTRAINT jobmedia_pkey PRIMARY KEY (jobmediaid);
+
+
+--
+-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.location
+ ADD CONSTRAINT location_pkey PRIMARY KEY (locationid);
+
+
+--
+-- Name: locationlog locationlog_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.locationlog
+ ADD CONSTRAINT locationlog_pkey PRIMARY KEY (loclogid);
+
+
+--
+-- Name: log log_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.log
+ ADD CONSTRAINT log_pkey PRIMARY KEY (logid);
+
+
+--
+-- Name: media media_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.media
+ ADD CONSTRAINT media_pkey PRIMARY KEY (mediaid);
+
+
+--
+-- Name: mediatype mediatype_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.mediatype
+ ADD CONSTRAINT mediatype_pkey PRIMARY KEY (mediatypeid);
+
+
+--
+-- Name: notifications_notification notifications_notification_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.notifications_notification
+ ADD CONSTRAINT notifications_notification_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: path path_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.path
+ ADD CONSTRAINT path_pkey PRIMARY KEY (pathid);
+
+
+--
+-- Name: pathhierarchy pathhierarchy_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.pathhierarchy
+ ADD CONSTRAINT pathhierarchy_pkey PRIMARY KEY (pathid);
+
+
+--
+-- Name: pathvisibility pathvisibility_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.pathvisibility
+ ADD CONSTRAINT pathvisibility_pkey PRIMARY KEY (jobid, pathid);
+
+
+--
+-- Name: plugin_downloads plugin_downloads_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_downloads
+ ADD CONSTRAINT plugin_downloads_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: plugin_installations plugin_installations_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: plugin_installations plugin_installations_site_id_plugin_id_371adab5_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_site_id_plugin_id_371adab5_uniq UNIQUE (site_id, plugin_id);
+
+
+--
+-- Name: plugin_versions plugin_versions_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_versions
+ ADD CONSTRAINT plugin_versions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: plugin_versions plugin_versions_plugin_id_version_dac61f3b_uniq; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_versions
+ ADD CONSTRAINT plugin_versions_plugin_id_version_dac61f3b_uniq UNIQUE (plugin_id, version);
+
+
+--
+-- Name: plugins plugins_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugins
+ ADD CONSTRAINT plugins_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: plugins plugins_slug_key; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugins
+ ADD CONSTRAINT plugins_slug_key UNIQUE (slug);
+
+
+--
+-- Name: pool pool_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.pool
+ ADD CONSTRAINT pool_pkey PRIMARY KEY (poolid);
+
+
+--
+-- Name: restoreobject restoreobject_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.restoreobject
+ ADD CONSTRAINT restoreobject_pkey PRIMARY KEY (restoreobjectid);
+
+
+--
+-- Name: snapshot snapshot_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.snapshot
+ ADD CONSTRAINT snapshot_pkey PRIMARY KEY (snapshotid);
+
+
+--
+-- Name: status status_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.status
+ ADD CONSTRAINT status_pkey PRIMARY KEY (jobstatus);
+
+
+--
+-- Name: storage storage_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.storage
+ ADD CONSTRAINT storage_pkey PRIMARY KEY (storageid);
+
+
+--
+-- Name: unsavedfiles unsavedfiles_pkey; Type: CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.unsavedfiles
+ ADD CONSTRAINT unsavedfiles_pkey PRIMARY KEY (unsavedid);
+
+
+--
+-- Name: admin_interface_theme_name_30bda70f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX admin_interface_theme_name_30bda70f_like ON public.admin_interface_theme USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_group_name_a6ea08ec_like ON public.auth_group USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: auth_group_permissions_group_id_b120cbf9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON public.auth_group_permissions USING btree (group_id);
+
+
+--
+-- Name: auth_group_permissions_permission_id_84c5c92e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON public.auth_group_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_permission_content_type_id_2f476e4b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_permission_content_type_id_2f476e4b ON public.auth_permission USING btree (content_type_id);
+
+
+--
+-- Name: auth_user_groups_group_id_97559544; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_user_groups_group_id_97559544 ON public.auth_user_groups USING btree (group_id);
+
+
+--
+-- Name: auth_user_groups_user_id_6a12ed8b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_user_groups_user_id_6a12ed8b ON public.auth_user_groups USING btree (user_id);
+
+
+--
+-- Name: auth_user_user_permissions_permission_id_1fbb5f2c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_user_user_permissions_permission_id_1fbb5f2c ON public.auth_user_user_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_user_user_permissions_user_id_a95ead1b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_user_user_permissions_user_id_a95ead1b ON public.auth_user_user_permissions USING btree (user_id);
+
+
+--
+-- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX auth_user_username_6821ab7c_like ON public.auth_user USING btree (username varchar_pattern_ops);
+
+
+--
+-- Name: basefiles_jobid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX basefiles_jobid_idx ON public.basefiles USING btree (jobid);
+
+
+--
+-- Name: billing_account_payment_method_single_default; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX billing_account_payment_method_single_default ON public.igny8_account_payment_methods USING btree (tenant_id) WHERE ((is_default = true) AND (is_enabled = true));
+
+
+--
+-- Name: billing_historicalaimodelconfig_history_date_37538e02; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_history_date_37538e02 ON public.billing_historicalaimodelconfig USING btree (history_date);
+
+
+--
+-- Name: billing_historicalaimodelconfig_history_user_id_5d6f91e4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_history_user_id_5d6f91e4 ON public.billing_historicalaimodelconfig USING btree (history_user_id);
+
+
+--
+-- Name: billing_historicalaimodelconfig_id_798584ac; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_id_798584ac ON public.billing_historicalaimodelconfig USING btree (id);
+
+
+--
+-- Name: billing_historicalaimodelconfig_is_active_79421f19; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_is_active_79421f19 ON public.billing_historicalaimodelconfig USING btree (is_active);
+
+
+--
+-- Name: billing_historicalaimodelconfig_is_default_9263c543; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_is_default_9263c543 ON public.billing_historicalaimodelconfig USING btree (is_default);
+
+
+--
+-- Name: billing_historicalaimodelconfig_model_name_07ede0ab; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_model_name_07ede0ab ON public.billing_historicalaimodelconfig USING btree (model_name);
+
+
+--
+-- Name: billing_historicalaimodelconfig_model_name_07ede0ab_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_model_name_07ede0ab_like ON public.billing_historicalaimodelconfig USING btree (model_name varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalaimodelconfig_model_type_9552297e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_model_type_9552297e ON public.billing_historicalaimodelconfig USING btree (model_type);
+
+
+--
+-- Name: billing_historicalaimodelconfig_model_type_9552297e_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_model_type_9552297e_like ON public.billing_historicalaimodelconfig USING btree (model_type varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalaimodelconfig_provider_450c0318; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_provider_450c0318 ON public.billing_historicalaimodelconfig USING btree (provider);
+
+
+--
+-- Name: billing_historicalaimodelconfig_provider_450c0318_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalaimodelconfig_provider_450c0318_like ON public.billing_historicalaimodelconfig USING btree (provider varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalcreditcostconfig_history_date_2af2ae3b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalcreditcostconfig_history_date_2af2ae3b ON public.billing_historicalcreditcostconfig USING btree (history_date);
+
+
+--
+-- Name: billing_historicalcreditcostconfig_history_user_id_f53ca5b8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalcreditcostconfig_history_user_id_f53ca5b8 ON public.billing_historicalcreditcostconfig USING btree (history_user_id);
+
+
+--
+-- Name: billing_historicalcreditcostconfig_operation_type_832afc88; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalcreditcostconfig_operation_type_832afc88 ON public.billing_historicalcreditcostconfig USING btree (operation_type);
+
+
+--
+-- Name: billing_historicalcreditcostconfig_operation_type_832afc88_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalcreditcostconfig_operation_type_832afc88_like ON public.billing_historicalcreditcostconfig USING btree (operation_type varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalpayment_approved_by_id_d9b4835d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_approved_by_id_d9b4835d ON public.billing_historicalpayment USING btree (approved_by_id);
+
+
+--
+-- Name: billing_historicalpayment_history_date_459708c0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_history_date_459708c0 ON public.billing_historicalpayment USING btree (history_date);
+
+
+--
+-- Name: billing_historicalpayment_history_user_id_912081c7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_history_user_id_912081c7 ON public.billing_historicalpayment USING btree (history_user_id);
+
+
+--
+-- Name: billing_historicalpayment_id_2982f20e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_id_2982f20e ON public.billing_historicalpayment USING btree (id);
+
+
+--
+-- Name: billing_historicalpayment_invoice_id_b77fefbe; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_invoice_id_b77fefbe ON public.billing_historicalpayment USING btree (invoice_id);
+
+
+--
+-- Name: billing_historicalpayment_payment_method_59439440; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_payment_method_59439440 ON public.billing_historicalpayment USING btree (payment_method);
+
+
+--
+-- Name: billing_historicalpayment_payment_method_59439440_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_payment_method_59439440_like ON public.billing_historicalpayment USING btree (payment_method varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalpayment_status_2c4a9cc5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_status_2c4a9cc5 ON public.billing_historicalpayment USING btree (status);
+
+
+--
+-- Name: billing_historicalpayment_status_2c4a9cc5_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_status_2c4a9cc5_like ON public.billing_historicalpayment USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: billing_historicalpayment_tenant_id_57f62c75; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX billing_historicalpayment_tenant_id_57f62c75 ON public.billing_historicalpayment USING btree (tenant_id);
+
+
+--
+-- Name: billing_payment_manual_ref_account_unique; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX billing_payment_manual_ref_account_unique ON public.igny8_payments USING btree (tenant_id, manual_reference) WHERE (((manual_reference)::text <> ''::text) AND (manual_reference IS NOT NULL));
+
+
+--
+-- Name: client_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX client_name_idx ON public.client USING btree (name text_pattern_ops);
+
+
+--
+-- Name: django_admin_log_content_type_id_c4bce8eb; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_admin_log_content_type_id_c4bce8eb ON public.django_admin_log USING btree (content_type_id);
+
+
+--
+-- Name: django_admin_log_user_id_c564eba6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_admin_log_user_id_c564eba6 ON public.django_admin_log USING btree (user_id);
+
+
+--
+-- Name: django_cele_date_cr_bd6c1d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_date_cr_bd6c1d_idx ON public.django_celery_results_groupresult USING btree (date_created);
+
+
+--
+-- Name: django_cele_date_cr_f04a50_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_date_cr_f04a50_idx ON public.django_celery_results_taskresult USING btree (date_created);
+
+
+--
+-- Name: django_cele_date_do_caae0e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_date_do_caae0e_idx ON public.django_celery_results_groupresult USING btree (date_done);
+
+
+--
+-- Name: django_cele_date_do_f59aad_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_date_do_f59aad_idx ON public.django_celery_results_taskresult USING btree (date_done);
+
+
+--
+-- Name: django_cele_status_9b6201_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_status_9b6201_idx ON public.django_celery_results_taskresult USING btree (status);
+
+
+--
+-- Name: django_cele_task_na_08aec9_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_task_na_08aec9_idx ON public.django_celery_results_taskresult USING btree (task_name);
+
+
+--
+-- Name: django_cele_worker_d54dd8_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_cele_worker_d54dd8_idx ON public.django_celery_results_taskresult USING btree (worker);
+
+
+--
+-- Name: django_celery_results_chordcounter_group_id_1f70858c_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_celery_results_chordcounter_group_id_1f70858c_like ON public.django_celery_results_chordcounter USING btree (group_id varchar_pattern_ops);
+
+
+--
+-- Name: django_celery_results_groupresult_group_id_a085f1a9_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_celery_results_groupresult_group_id_a085f1a9_like ON public.django_celery_results_groupresult USING btree (group_id varchar_pattern_ops);
+
+
+--
+-- Name: django_celery_results_taskresult_task_id_de0d95bf_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_celery_results_taskresult_task_id_de0d95bf_like ON public.django_celery_results_taskresult USING btree (task_id varchar_pattern_ops);
+
+
+--
+-- Name: django_session_expire_date_a5c62663; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_session_expire_date_a5c62663 ON public.django_session USING btree (expire_date);
+
+
+--
+-- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX django_session_session_key_c0390e0f_like ON public.django_session USING btree (session_key varchar_pattern_ops);
+
+
+--
+-- Name: file_jobid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX file_jobid_idx ON public.file USING btree (jobid);
+
+
+--
+-- Name: file_jpfid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX file_jpfid_idx ON public.file USING btree (jobid, pathid, filenameid);
+
+
+--
+-- Name: filename_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX filename_name_idx ON public.filename USING btree (name text_pattern_ops);
+
+
+--
+-- Name: fileset_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX fileset_name_idx ON public.fileset USING btree (fileset text_pattern_ops);
+
+
+--
+-- Name: idx_content_events; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX idx_content_events ON public.igny8_sync_events USING btree (content_id);
+
+
+--
+-- Name: idx_event_type_time; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX idx_event_type_time ON public.igny8_sync_events USING btree (event_type, created_at DESC);
+
+
+--
+-- Name: idx_integration_events; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX idx_integration_events ON public.igny8_sync_events USING btree (integration_id, created_at DESC);
+
+
+--
+-- Name: idx_site_events; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX idx_site_events ON public.igny8_sync_events USING btree (site_id, created_at DESC);
+
+
+--
+-- Name: igny8_accou_tenant__308b8f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_accou_tenant__308b8f_idx ON public.igny8_account_settings USING btree (tenant_id, key);
+
+
+--
+-- Name: igny8_accou_tenant__30d459_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_accou_tenant__30d459_idx ON public.igny8_account_payment_methods USING btree (tenant_id, is_default);
+
+
+--
+-- Name: igny8_accou_tenant__4cc9c7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_accou_tenant__4cc9c7_idx ON public.igny8_account_payment_methods USING btree (tenant_id, type);
+
+
+--
+-- Name: igny8_account_payment_methods_is_default_1edf873d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_is_default_1edf873d ON public.igny8_account_payment_methods USING btree (is_default);
+
+
+--
+-- Name: igny8_account_payment_methods_is_enabled_3df813f3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_is_enabled_3df813f3 ON public.igny8_account_payment_methods USING btree (is_enabled);
+
+
+--
+-- Name: igny8_account_payment_methods_is_verified_25fbc124; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_is_verified_25fbc124 ON public.igny8_account_payment_methods USING btree (is_verified);
+
+
+--
+-- Name: igny8_account_payment_methods_tenant_id_47b1fd6d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_tenant_id_47b1fd6d ON public.igny8_account_payment_methods USING btree (tenant_id);
+
+
+--
+-- Name: igny8_account_payment_methods_type_2a37f368; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_type_2a37f368 ON public.igny8_account_payment_methods USING btree (type);
+
+
+--
+-- Name: igny8_account_payment_methods_type_2a37f368_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_payment_methods_type_2a37f368_like ON public.igny8_account_payment_methods USING btree (type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_account_settings_key_b9a5adba; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_settings_key_b9a5adba ON public.igny8_account_settings USING btree (key);
+
+
+--
+-- Name: igny8_account_settings_key_b9a5adba_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_settings_key_b9a5adba_like ON public.igny8_account_settings USING btree (key varchar_pattern_ops);
+
+
+--
+-- Name: igny8_account_settings_tenant_id_e9bb23de; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_account_settings_tenant_id_e9bb23de ON public.igny8_account_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_ai_mo_is_defa_95bfb9_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_mo_is_defa_95bfb9_idx ON public.igny8_ai_model_config USING btree (is_default, model_type);
+
+
+--
+-- Name: igny8_ai_mo_model_t_1eef71_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_mo_model_t_1eef71_idx ON public.igny8_ai_model_config USING btree (model_type, is_active);
+
+
+--
+-- Name: igny8_ai_mo_provide_fbda6c_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_mo_provide_fbda6c_idx ON public.igny8_ai_model_config USING btree (provider, is_active);
+
+
+--
+-- Name: igny8_ai_model_config_is_active_06940a89; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_is_active_06940a89 ON public.igny8_ai_model_config USING btree (is_active);
+
+
+--
+-- Name: igny8_ai_model_config_is_default_ef0f0538; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_is_default_ef0f0538 ON public.igny8_ai_model_config USING btree (is_default);
+
+
+--
+-- Name: igny8_ai_model_config_model_name_75645c19_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_model_name_75645c19_like ON public.igny8_ai_model_config USING btree (model_name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_model_config_model_type_ae5d05b7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_model_type_ae5d05b7 ON public.igny8_ai_model_config USING btree (model_type);
+
+
+--
+-- Name: igny8_ai_model_config_model_type_ae5d05b7_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_model_type_ae5d05b7_like ON public.igny8_ai_model_config USING btree (model_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_model_config_provider_fe954ad8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_provider_fe954ad8 ON public.igny8_ai_model_config USING btree (provider);
+
+
+--
+-- Name: igny8_ai_model_config_provider_fe954ad8_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_model_config_provider_fe954ad8_like ON public.igny8_ai_model_config USING btree (provider varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_pr_is_cust_5d7a72_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_pr_is_cust_5d7a72_idx ON public.igny8_ai_prompts USING btree (is_customized);
+
+
+--
+-- Name: igny8_ai_pr_prompt__4b2dbe_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_pr_prompt__4b2dbe_idx ON public.igny8_ai_prompts USING btree (prompt_type);
+
+
+--
+-- Name: igny8_ai_pr_tenant__9e7b95_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_pr_tenant__9e7b95_idx ON public.igny8_ai_prompts USING btree (tenant_id, prompt_type);
+
+
+--
+-- Name: igny8_ai_prompts_prompt_type_4609c900; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_prompts_prompt_type_4609c900 ON public.igny8_ai_prompts USING btree (prompt_type);
+
+
+--
+-- Name: igny8_ai_prompts_prompt_type_4609c900_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_prompts_prompt_type_4609c900_like ON public.igny8_ai_prompts USING btree (prompt_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_prompts_tenant_id_b491bbbf; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_prompts_tenant_id_b491bbbf ON public.igny8_ai_prompts USING btree (tenant_id);
+
+
+--
+-- Name: igny8_ai_se_integra_4f0b21_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_se_integra_4f0b21_idx ON public.igny8_ai_settings USING btree (integration_type);
+
+
+--
+-- Name: igny8_ai_se_tenant__05ae98_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_se_tenant__05ae98_idx ON public.igny8_ai_settings USING btree (tenant_id, integration_type);
+
+
+--
+-- Name: igny8_ai_settings_integration_type_b92f33bc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_settings_integration_type_b92f33bc ON public.igny8_ai_settings USING btree (integration_type);
+
+
+--
+-- Name: igny8_ai_settings_integration_type_b92f33bc_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_settings_integration_type_b92f33bc_like ON public.igny8_ai_settings USING btree (integration_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_settings_tenant_id_56ab092b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_settings_tenant_id_56ab092b ON public.igny8_ai_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_ai_ta_functio_0e5a30_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_ta_functio_0e5a30_idx ON public.igny8_ai_task_logs USING btree (function_name, tenant_id);
+
+
+--
+-- Name: igny8_ai_ta_status_ed93b5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_ta_status_ed93b5_idx ON public.igny8_ai_task_logs USING btree (status, created_at);
+
+
+--
+-- Name: igny8_ai_ta_task_id_310356_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_ta_task_id_310356_idx ON public.igny8_ai_task_logs USING btree (task_id);
+
+
+--
+-- Name: igny8_ai_task_logs_created_at_0f6c6f9e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_created_at_0f6c6f9e ON public.igny8_ai_task_logs USING btree (created_at);
+
+
+--
+-- Name: igny8_ai_task_logs_function_name_290e01e2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_function_name_290e01e2 ON public.igny8_ai_task_logs USING btree (function_name);
+
+
+--
+-- Name: igny8_ai_task_logs_function_name_290e01e2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_function_name_290e01e2_like ON public.igny8_ai_task_logs USING btree (function_name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_task_logs_task_id_91263167; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_task_id_91263167 ON public.igny8_ai_task_logs USING btree (task_id);
+
+
+--
+-- Name: igny8_ai_task_logs_task_id_91263167_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_task_id_91263167_like ON public.igny8_ai_task_logs USING btree (task_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_ai_task_logs_tenant_id_f1cd521f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_ai_task_logs_tenant_id_f1cd521f ON public.igny8_ai_task_logs USING btree (tenant_id);
+
+
+--
+-- Name: igny8_autho_is_cust_d163e6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autho_is_cust_d163e6_idx ON public.igny8_author_profiles USING btree (is_custom);
+
+
+--
+-- Name: igny8_autho_name_8295f3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autho_name_8295f3_idx ON public.igny8_author_profiles USING btree (name);
+
+
+--
+-- Name: igny8_autho_tenant__97d2c2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autho_tenant__97d2c2_idx ON public.igny8_author_profiles USING btree (tenant_id, is_active);
+
+
+--
+-- Name: igny8_author_profiles_cloned_from_id_bac3246c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_author_profiles_cloned_from_id_bac3246c ON public.igny8_author_profiles USING btree (cloned_from_id);
+
+
+--
+-- Name: igny8_author_profiles_is_active_79305664; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_author_profiles_is_active_79305664 ON public.igny8_author_profiles USING btree (is_active);
+
+
+--
+-- Name: igny8_author_profiles_tenant_id_a8a72f9c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_author_profiles_tenant_id_a8a72f9c ON public.igny8_author_profiles USING btree (tenant_id);
+
+
+--
+-- Name: igny8_autom_account_27cb3c_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_account_27cb3c_idx ON public.igny8_automation_runs USING btree (account_id, started_at DESC);
+
+
+--
+-- Name: igny8_autom_account_c6092f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_account_c6092f_idx ON public.igny8_automation_configs USING btree (account_id, site_id);
+
+
+--
+-- Name: igny8_autom_is_enab_038ce6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_is_enab_038ce6_idx ON public.igny8_automation_configs USING btree (is_enabled, next_run_at);
+
+
+--
+-- Name: igny8_autom_site_id_789ghi_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_site_id_789ghi_idx ON public.igny8_automation_rules USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_autom_site_id_b5bf36_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_site_id_b5bf36_idx ON public.igny8_automation_runs USING btree (site_id, started_at DESC);
+
+
+--
+-- Name: igny8_autom_site_id_d0a51d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_site_id_d0a51d_idx ON public.igny8_automation_rules USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_autom_status_1457b0_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_status_1457b0_idx ON public.igny8_automation_runs USING btree (status, started_at DESC);
+
+
+--
+-- Name: igny8_autom_status_456def_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_status_456def_idx ON public.igny8_automation_rules USING btree (status);
+
+
+--
+-- Name: igny8_autom_status_827c0d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_status_827c0d_idx ON public.igny8_automation_rules USING btree (status);
+
+
+--
+-- Name: igny8_autom_trigger_0abjkl_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_trigger_0abjkl_idx ON public.igny8_automation_rules USING btree (trigger, is_active, status);
+
+
+--
+-- Name: igny8_autom_trigger_123abc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_trigger_123abc_idx ON public.igny8_automation_rules USING btree (trigger, is_active);
+
+
+--
+-- Name: igny8_autom_trigger_32979f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_trigger_32979f_idx ON public.igny8_automation_rules USING btree (trigger, is_active);
+
+
+--
+-- Name: igny8_autom_trigger_f3f3e2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_autom_trigger_f3f3e2_idx ON public.igny8_automation_rules USING btree (trigger, is_active, status);
+
+
+--
+-- Name: igny8_automation_configs_account_id_ef6bc3ad; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_configs_account_id_ef6bc3ad ON public.igny8_automation_configs USING btree (account_id);
+
+
+--
+-- Name: igny8_automation_rules_created_at_68c6dba2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_rules_created_at_68c6dba2 ON public.igny8_automation_rules USING btree (created_at);
+
+
+--
+-- Name: igny8_automation_rules_sector_id_570f6fd7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_rules_sector_id_570f6fd7 ON public.igny8_automation_rules USING btree (sector_id);
+
+
+--
+-- Name: igny8_automation_rules_site_id_faedae95; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_rules_site_id_faedae95 ON public.igny8_automation_rules USING btree (site_id);
+
+
+--
+-- Name: igny8_automation_rules_tenant_id_3c948028; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_rules_tenant_id_3c948028 ON public.igny8_automation_rules USING btree (tenant_id);
+
+
+--
+-- Name: igny8_automation_runs_account_id_81c40bfd; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_account_id_81c40bfd ON public.igny8_automation_runs USING btree (account_id);
+
+
+--
+-- Name: igny8_automation_runs_run_id_2e827b71_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_run_id_2e827b71_like ON public.igny8_automation_runs USING btree (run_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_automation_runs_site_id_89c0bb67; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_site_id_89c0bb67 ON public.igny8_automation_runs USING btree (site_id);
+
+
+--
+-- Name: igny8_automation_runs_started_at_5d645015; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_started_at_5d645015 ON public.igny8_automation_runs USING btree (started_at);
+
+
+--
+-- Name: igny8_automation_runs_status_dd2c410b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_status_dd2c410b ON public.igny8_automation_runs USING btree (status);
+
+
+--
+-- Name: igny8_automation_runs_status_dd2c410b_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_automation_runs_status_dd2c410b_like ON public.igny8_automation_runs USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_billing_configuration_updated_by_id_fa067fba; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_billing_configuration_updated_by_id_fa067fba ON public.igny8_billing_configuration USING btree (updated_by_id);
+
+
+--
+-- Name: igny8_clust_name_0f98bb_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clust_name_0f98bb_idx ON public.igny8_clusters USING btree (name);
+
+
+--
+-- Name: igny8_clust_site_id_a9aee3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clust_site_id_a9aee3_idx ON public.igny8_clusters USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_clust_status_c50486_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clust_status_c50486_idx ON public.igny8_clusters USING btree (status);
+
+
+--
+-- Name: igny8_clusters_deleted_at_74df6c31; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_deleted_at_74df6c31 ON public.igny8_clusters USING btree (deleted_at);
+
+
+--
+-- Name: igny8_clusters_deleted_by_id_3eb9b1b5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_deleted_by_id_3eb9b1b5 ON public.igny8_clusters USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_clusters_is_deleted_c1971d00; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_is_deleted_c1971d00 ON public.igny8_clusters USING btree (is_deleted);
+
+
+--
+-- Name: igny8_clusters_name_15abee3e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_name_15abee3e ON public.igny8_clusters USING btree (name);
+
+
+--
+-- Name: igny8_clusters_name_15abee3e_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_name_15abee3e_like ON public.igny8_clusters USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_clusters_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_name_idx ON public.igny8_clusters USING btree (name);
+
+
+--
+-- Name: igny8_clusters_restore_until_2f23282c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_restore_until_2f23282c ON public.igny8_clusters USING btree (restore_until);
+
+
+--
+-- Name: igny8_clusters_sector_id_98f035f1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_sector_id_98f035f1 ON public.igny8_clusters USING btree (sector_id);
+
+
+--
+-- Name: igny8_clusters_site_id_40ac5b26; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_site_id_40ac5b26 ON public.igny8_clusters USING btree (site_id);
+
+
+--
+-- Name: igny8_clusters_status_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_status_idx ON public.igny8_clusters USING btree (status);
+
+
+--
+-- Name: igny8_clusters_tenant_id_63e3efa2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_clusters_tenant_id_63e3efa2 ON public.igny8_clusters USING btree (tenant_id);
+
+
+--
+-- Name: igny8_conte_attribu_5d6f12_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_attribu_5d6f12_idx ON public.igny8_content_attributes USING btree (attribute_type);
+
+
+--
+-- Name: igny8_conte_cluster_1f91b7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_cluster_1f91b7_idx ON public.igny8_content_attributes USING btree (cluster_id, attribute_type);
+
+
+--
+-- Name: igny8_conte_cluster_c12778_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_cluster_c12778_idx ON public.igny8_content_cluster_map USING btree (cluster_id, role);
+
+
+--
+-- Name: igny8_conte_cluster_e545d1_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_cluster_e545d1_idx ON public.igny8_content USING btree (cluster_id);
+
+
+--
+-- Name: igny8_conte_content_3eede7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_3eede7_idx ON public.igny8_content_ideas USING btree (content_structure);
+
+
+--
+-- Name: igny8_conte_content_6c7c68_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_6c7c68_idx ON public.igny8_content_attributes USING btree (content_id, name);
+
+
+--
+-- Name: igny8_conte_content_91df40_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_91df40_idx ON public.igny8_content_attributes USING btree (content_id, attribute_type);
+
+
+--
+-- Name: igny8_conte_content_9dc417_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_9dc417_idx ON public.igny8_content_taxonomy_map USING btree (content_id, taxonomy_id);
+
+
+--
+-- Name: igny8_conte_content_9fa5cc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_9fa5cc_idx ON public.igny8_content_cluster_map USING btree (content_id, role);
+
+
+--
+-- Name: igny8_conte_content_a897e5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_a897e5_idx ON public.igny8_content_taxonomy_relations USING btree (content_id);
+
+
+--
+-- Name: igny8_conte_content_b538ee_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_b538ee_idx ON public.igny8_content USING btree (content_format);
+
+
+--
+-- Name: igny8_conte_content_e74415_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_content_e74415_idx ON public.igny8_content_ideas USING btree (content_type);
+
+
+--
+-- Name: igny8_conte_entity__idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_entity__idx ON public.igny8_content USING btree (content_type);
+
+
+--
+-- Name: igny8_conte_externa_0bf0e8_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_externa_0bf0e8_idx ON public.igny8_content_attributes USING btree (external_id);
+
+
+--
+-- Name: igny8_conte_externa_15861e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_externa_15861e_idx ON public.igny8_content_taxonomy_terms USING btree (external_id, external_taxonomy);
+
+
+--
+-- Name: igny8_conte_externa_a26125_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_externa_a26125_idx ON public.igny8_content USING btree (external_type);
+
+
+--
+-- Name: igny8_conte_generat_7128df_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_generat_7128df_idx ON public.igny8_content USING btree (generated_at);
+
+
+--
+-- Name: igny8_conte_idea_ti_1e15a5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_idea_ti_1e15a5_idx ON public.igny8_content_ideas USING btree (idea_title);
+
+
+--
+-- Name: igny8_conte_keyword_4d2151_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_keyword_4d2151_idx ON public.igny8_content_ideas USING btree (keyword_cluster_id);
+
+
+--
+-- Name: igny8_conte_name_bacaae_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_name_bacaae_idx ON public.igny8_content_attributes USING btree (name);
+
+
+--
+-- Name: igny8_conte_name_f35eea_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_name_f35eea_idx ON public.igny8_content_taxonomy_terms USING btree (name);
+
+
+--
+-- Name: igny8_conte_site_id_03b520_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_site_id_03b520_idx ON public.igny8_content_ideas USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_conte_site_id_6f84b7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_site_id_6f84b7_idx ON public.igny8_content_taxonomy_terms USING btree (site_id, taxonomy_type);
+
+
+--
+-- Name: igny8_conte_site_id_9dddc7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_site_id_9dddc7_idx ON public.igny8_content_taxonomy_terms USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_conte_site_id_e559d5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_site_id_e559d5_idx ON public.igny8_content USING btree (site_id, content_type);
+
+
+--
+-- Name: igny8_conte_slug_65c0a2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_slug_65c0a2_idx ON public.igny8_content_taxonomy_terms USING btree (slug);
+
+
+--
+-- Name: igny8_conte_source_5ef8a1_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_source_5ef8a1_idx ON public.igny8_content USING btree (source);
+
+
+--
+-- Name: igny8_conte_source_df78d0_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_source_df78d0_idx ON public.igny8_content USING btree (source, sync_status);
+
+
+--
+-- Name: igny8_conte_source_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_source_idx ON public.igny8_content USING btree (source);
+
+
+--
+-- Name: igny8_conte_source_sync_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_source_sync_idx ON public.igny8_content USING btree (source, sync_status);
+
+
+--
+-- Name: igny8_conte_status_6be5bc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_status_6be5bc_idx ON public.igny8_content_ideas USING btree (status);
+
+
+--
+-- Name: igny8_conte_sync_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_sync_idx ON public.igny8_content USING btree (sync_status);
+
+
+--
+-- Name: igny8_conte_sync_st_02d5bd_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_sync_st_02d5bd_idx ON public.igny8_content USING btree (sync_status);
+
+
+--
+-- Name: igny8_conte_sync_st_307b43_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_sync_st_307b43_idx ON public.igny8_content_taxonomy_terms USING btree (sync_status);
+
+
+--
+-- Name: igny8_conte_task_id_712988_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_task_id_712988_idx ON public.igny8_content USING btree (task_id);
+
+
+--
+-- Name: igny8_conte_task_id_821851_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_task_id_821851_idx ON public.igny8_content_cluster_map USING btree (task_id, role);
+
+
+--
+-- Name: igny8_conte_task_id_e94754_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_task_id_e94754_idx ON public.igny8_content_taxonomy_map USING btree (task_id, taxonomy_id);
+
+
+--
+-- Name: igny8_conte_taxonom_04e1c2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_taxonom_04e1c2_idx ON public.igny8_content_taxonomy_terms USING btree (taxonomy_type);
+
+
+--
+-- Name: igny8_conte_taxonom_7091e0_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_taxonom_7091e0_idx ON public.igny8_content_taxonomy_relations USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_conte_taxonom_c3da58_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_conte_taxonom_c3da58_idx ON public.igny8_content_taxonomy_map USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_content_attributes_attribute_type_9365ff20; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_attribute_type_9365ff20 ON public.igny8_content_attributes USING btree (attribute_type);
+
+
+--
+-- Name: igny8_content_attributes_attribute_type_9365ff20_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_attribute_type_9365ff20_like ON public.igny8_content_attributes USING btree (attribute_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_attributes_cluster_id_705a8c4d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_cluster_id_705a8c4d ON public.igny8_content_attributes USING btree (cluster_id);
+
+
+--
+-- Name: igny8_content_attributes_content_id_1eb1e4ef; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_content_id_1eb1e4ef ON public.igny8_content_attributes USING btree (content_id);
+
+
+--
+-- Name: igny8_content_attributes_sector_id_40c43871; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_sector_id_40c43871 ON public.igny8_content_attributes USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_attributes_site_id_d8657a19; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_site_id_d8657a19 ON public.igny8_content_attributes USING btree (site_id);
+
+
+--
+-- Name: igny8_content_attributes_task_id_3824caa6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_task_id_3824caa6 ON public.igny8_content_attributes USING btree (task_id);
+
+
+--
+-- Name: igny8_content_attributes_tenant_id_0716c076; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_attributes_tenant_id_0716c076 ON public.igny8_content_attributes USING btree (tenant_id);
+
+
+--
+-- Name: igny8_content_cluster_id_37b89a0d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_id_37b89a0d ON public.igny8_content USING btree (cluster_id);
+
+
+--
+-- Name: igny8_content_cluster_map_cluster_id_d1e699af; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_cluster_id_d1e699af ON public.igny8_content_cluster_map USING btree (cluster_id);
+
+
+--
+-- Name: igny8_content_cluster_map_content_id_88fda5e5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_content_id_88fda5e5 ON public.igny8_content_cluster_map USING btree (content_id);
+
+
+--
+-- Name: igny8_content_cluster_map_created_at_53137b3c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_created_at_53137b3c ON public.igny8_content_cluster_map USING btree (created_at);
+
+
+--
+-- Name: igny8_content_cluster_map_sector_id_fbacc1e4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_sector_id_fbacc1e4 ON public.igny8_content_cluster_map USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_cluster_map_site_id_1165716b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_site_id_1165716b ON public.igny8_content_cluster_map USING btree (site_id);
+
+
+--
+-- Name: igny8_content_cluster_map_task_id_d3eeb407; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_task_id_d3eeb407 ON public.igny8_content_cluster_map USING btree (task_id);
+
+
+--
+-- Name: igny8_content_cluster_map_tenant_id_3a7a4086; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_map_tenant_id_3a7a4086 ON public.igny8_content_cluster_map USING btree (tenant_id);
+
+
+--
+-- Name: igny8_content_cluster_role_566d3a96; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_role_566d3a96 ON public.igny8_content USING btree (content_structure);
+
+
+--
+-- Name: igny8_content_cluster_role_566d3a96_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_cluster_role_566d3a96_like ON public.igny8_content USING btree (content_structure varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_content_format_16b39a4f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_content_format_16b39a4f ON public.igny8_content USING btree (content_format);
+
+
+--
+-- Name: igny8_content_content_format_16b39a4f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_content_format_16b39a4f_like ON public.igny8_content USING btree (content_format varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_content_structure_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_content_structure_idx ON public.igny8_content USING btree (content_structure);
+
+
+--
+-- Name: igny8_content_content_type_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_content_type_idx ON public.igny8_content USING btree (content_type);
+
+
+--
+-- Name: igny8_content_created_at_ea8700c6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_created_at_ea8700c6 ON public.igny8_content USING btree (created_at);
+
+
+--
+-- Name: igny8_content_deleted_at_ac44375f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_deleted_at_ac44375f ON public.igny8_content USING btree (deleted_at);
+
+
+--
+-- Name: igny8_content_deleted_by_id_8ff38ab9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_deleted_by_id_8ff38ab9 ON public.igny8_content USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_content_entity_type_16f48257; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_entity_type_16f48257 ON public.igny8_content USING btree (content_type);
+
+
+--
+-- Name: igny8_content_entity_type_16f48257_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_entity_type_16f48257_like ON public.igny8_content USING btree (content_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_ideas_deleted_at_4a69dccb; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_deleted_at_4a69dccb ON public.igny8_content_ideas USING btree (deleted_at);
+
+
+--
+-- Name: igny8_content_ideas_deleted_by_id_d56759d2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_deleted_by_id_d56759d2 ON public.igny8_content_ideas USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_content_ideas_idea_title_14830ebb; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_idea_title_14830ebb ON public.igny8_content_ideas USING btree (idea_title);
+
+
+--
+-- Name: igny8_content_ideas_idea_title_14830ebb_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_idea_title_14830ebb_like ON public.igny8_content_ideas USING btree (idea_title varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_ideas_is_deleted_d6e8b2aa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_is_deleted_d6e8b2aa ON public.igny8_content_ideas USING btree (is_deleted);
+
+
+--
+-- Name: igny8_content_ideas_keyword_cluster_id_05df9bcf; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_keyword_cluster_id_05df9bcf ON public.igny8_content_ideas USING btree (keyword_cluster_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects_contentideas_id_dc9f61fa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_keyword_objects_contentideas_id_dc9f61fa ON public.igny8_content_ideas_keyword_objects USING btree (contentideas_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects_contentideas_id_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_keyword_objects_contentideas_id_idx ON public.igny8_content_ideas_keyword_objects USING btree (contentideas_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects_keywords_id_412c7f1d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_keyword_objects_keywords_id_412c7f1d ON public.igny8_content_ideas_keyword_objects USING btree (keywords_id);
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects_keywords_id_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_keyword_objects_keywords_id_idx ON public.igny8_content_ideas_keyword_objects USING btree (keywords_id);
+
+
+--
+-- Name: igny8_content_ideas_restore_until_39da88a4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_restore_until_39da88a4 ON public.igny8_content_ideas USING btree (restore_until);
+
+
+--
+-- Name: igny8_content_ideas_sector_id_b8096029; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_sector_id_b8096029 ON public.igny8_content_ideas USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_ideas_site_id_3230e85c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_site_id_3230e85c ON public.igny8_content_ideas USING btree (site_id);
+
+
+--
+-- Name: igny8_content_ideas_taxonomy_id_0d3f023a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_taxonomy_id_0d3f023a ON public.igny8_content_ideas USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_content_ideas_tenant_id_32ee9708; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_ideas_tenant_id_32ee9708 ON public.igny8_content_ideas USING btree (tenant_id);
+
+
+--
+-- Name: igny8_content_is_deleted_072a4c83; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_is_deleted_072a4c83 ON public.igny8_content USING btree (is_deleted);
+
+
+--
+-- Name: igny8_content_restore_until_2094d0d3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_restore_until_2094d0d3 ON public.igny8_content USING btree (restore_until);
+
+
+--
+-- Name: igny8_content_scheduled_publish_at_29b04934; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_scheduled_publish_at_29b04934 ON public.igny8_content USING btree (scheduled_publish_at);
+
+
+--
+-- Name: igny8_content_sector_id_2b5c2cae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_sector_id_2b5c2cae ON public.igny8_content USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_site_id_fc3c9b6c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_site_id_fc3c9b6c ON public.igny8_content USING btree (site_id);
+
+
+--
+-- Name: igny8_content_site_status_8e897ce2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_site_status_8e897ce2 ON public.igny8_content USING btree (site_status);
+
+
+--
+-- Name: igny8_content_site_status_8e897ce2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_site_status_8e897ce2_like ON public.igny8_content USING btree (site_status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_source_85dd522e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_source_85dd522e ON public.igny8_content USING btree (source);
+
+
+--
+-- Name: igny8_content_source_85dd522e_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_source_85dd522e_like ON public.igny8_content USING btree (source varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_sync_status_1f551f38; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_sync_status_1f551f38 ON public.igny8_content USING btree (sync_status);
+
+
+--
+-- Name: igny8_content_sync_status_1f551f38_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_sync_status_1f551f38_like ON public.igny8_content USING btree (sync_status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_taxonomy_map_content_id_2ea2cbb8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_content_id_2ea2cbb8 ON public.igny8_content_taxonomy_map USING btree (content_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map_created_at_30c648d5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_created_at_30c648d5 ON public.igny8_content_taxonomy_map USING btree (created_at);
+
+
+--
+-- Name: igny8_content_taxonomy_map_sector_id_1b2a91de; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_sector_id_1b2a91de ON public.igny8_content_taxonomy_map USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map_site_id_314dff20; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_site_id_314dff20 ON public.igny8_content_taxonomy_map USING btree (site_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map_task_id_971a4870; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_task_id_971a4870 ON public.igny8_content_taxonomy_map USING btree (task_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map_taxonomy_id_31c70865; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_taxonomy_id_31c70865 ON public.igny8_content_taxonomy_map USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_content_taxonomy_map_tenant_id_76e9eba3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_map_tenant_id_76e9eba3 ON public.igny8_content_taxonomy_map USING btree (tenant_id);
+
+
+--
+-- Name: igny8_content_taxonomy_relations_content_id_541ab7bc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_relations_content_id_541ab7bc ON public.igny8_content_taxonomy_relations USING btree (content_id);
+
+
+--
+-- Name: igny8_content_taxonomy_relations_taxonomy_id_8aeceae2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_relations_taxonomy_id_8aeceae2 ON public.igny8_content_taxonomy_relations USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_content_taxonomy_ter_contenttaxonomy_id_9319f812; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_ter_contenttaxonomy_id_9319f812 ON public.igny8_content_taxonomy_terms_clusters USING btree (contenttaxonomy_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters_clusters_id_86fbd283; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_clusters_clusters_id_86fbd283 ON public.igny8_content_taxonomy_terms_clusters USING btree (clusters_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_deleted_at_3974c56d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_deleted_at_3974c56d ON public.igny8_content_taxonomy_terms USING btree (deleted_at);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_deleted_by_id_572e1b5a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_deleted_by_id_572e1b5a ON public.igny8_content_taxonomy_terms USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_external_id_33c25de1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_external_id_33c25de1 ON public.igny8_content_taxonomy_terms USING btree (external_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_is_deleted_5da6d1e8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_is_deleted_5da6d1e8 ON public.igny8_content_taxonomy_terms USING btree (is_deleted);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_name_5257ccfa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_name_5257ccfa ON public.igny8_content_taxonomy_terms USING btree (name);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_name_5257ccfa_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_name_5257ccfa_like ON public.igny8_content_taxonomy_terms USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_parent_id_55eca0e5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_parent_id_55eca0e5 ON public.igny8_content_taxonomy_terms USING btree (parent_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_restore_until_f3a01e02; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_restore_until_f3a01e02 ON public.igny8_content_taxonomy_terms USING btree (restore_until);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_sector_id_7a49e6a4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_sector_id_7a49e6a4 ON public.igny8_content_taxonomy_terms USING btree (sector_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_site_id_3bd3e90b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_site_id_3bd3e90b ON public.igny8_content_taxonomy_terms USING btree (site_id);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_slug_bdecbed2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_slug_bdecbed2 ON public.igny8_content_taxonomy_terms USING btree (slug);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_slug_bdecbed2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_slug_bdecbed2_like ON public.igny8_content_taxonomy_terms USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_sync_status_0e7da2b9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_sync_status_0e7da2b9 ON public.igny8_content_taxonomy_terms USING btree (sync_status);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_sync_status_0e7da2b9_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_sync_status_0e7da2b9_like ON public.igny8_content_taxonomy_terms USING btree (sync_status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_taxonomy_type_2f7c25a0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_taxonomy_type_2f7c25a0 ON public.igny8_content_taxonomy_terms USING btree (taxonomy_type);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_taxonomy_type_2f7c25a0_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_taxonomy_type_2f7c25a0_like ON public.igny8_content_taxonomy_terms USING btree (taxonomy_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_content_taxonomy_terms_tenant_id_a5bdc208; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_taxonomy_terms_tenant_id_a5bdc208 ON public.igny8_content_taxonomy_terms USING btree (tenant_id);
+
+
+--
+-- Name: igny8_content_tenant_id_8cdb3050; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_content_tenant_id_8cdb3050 ON public.igny8_content USING btree (tenant_id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_deleted_at_b3e3bfb6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_deleted_at_b3e3bfb6 ON public.igny8_core_auth_historicalaccount USING btree (deleted_at);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_deleted_by_id_ea6e4038; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_deleted_by_id_ea6e4038 ON public.igny8_core_auth_historicalaccount USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_history_date_ecb810b8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_history_date_ecb810b8 ON public.igny8_core_auth_historicalaccount USING btree (history_date);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_history_user_id_f59a3bfe; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_history_user_id_f59a3bfe ON public.igny8_core_auth_historicalaccount USING btree (history_user_id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_id_f0196cd8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_id_f0196cd8 ON public.igny8_core_auth_historicalaccount USING btree (id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_is_deleted_b20551e6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_is_deleted_b20551e6 ON public.igny8_core_auth_historicalaccount USING btree (is_deleted);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_owner_id_b192719a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_owner_id_b192719a ON public.igny8_core_auth_historicalaccount USING btree (owner_id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_plan_id_c12af688; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_plan_id_c12af688 ON public.igny8_core_auth_historicalaccount USING btree (plan_id);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_restore_until_8efbeb2c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_restore_until_8efbeb2c ON public.igny8_core_auth_historicalaccount USING btree (restore_until);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_slug_6c9081ae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_slug_6c9081ae ON public.igny8_core_auth_historicalaccount USING btree (slug);
+
+
+--
+-- Name: igny8_core_auth_historicalaccount_slug_6c9081ae_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_core_auth_historicalaccount_slug_6c9081ae_like ON public.igny8_core_auth_historicalaccount USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_credi_site_id_b628ed_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_site_id_b628ed_idx ON public.igny8_credit_usage_logs USING btree (site_id, created_at);
+
+
+--
+-- Name: igny8_credi_tenant__3545ed_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__3545ed_idx ON public.igny8_credit_usage_logs USING btree (tenant_id, operation_type);
+
+
+--
+-- Name: igny8_credi_tenant__4aee99_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__4aee99_idx ON public.igny8_credit_usage_logs USING btree (tenant_id, created_at);
+
+
+--
+-- Name: igny8_credi_tenant__69abd3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__69abd3_idx ON public.igny8_credit_transactions USING btree (tenant_id, created_at);
+
+
+--
+-- Name: igny8_credi_tenant__a00d57_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__a00d57_idx ON public.igny8_credit_usage_logs USING btree (tenant_id, operation_type, created_at);
+
+
+--
+-- Name: igny8_credi_tenant__c4281c_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__c4281c_idx ON public.igny8_credit_transactions USING btree (tenant_id, transaction_type);
+
+
+--
+-- Name: igny8_credi_tenant__ca31e1_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credi_tenant__ca31e1_idx ON public.igny8_credit_usage_logs USING btree (tenant_id, site_id, created_at);
+
+
+--
+-- Name: igny8_credit_cost_config_operation_type_7b4a12fc_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_cost_config_operation_type_7b4a12fc_like ON public.igny8_credit_cost_config USING btree (operation_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_credit_packages_is_active_f34377aa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_packages_is_active_f34377aa ON public.igny8_credit_packages USING btree (is_active);
+
+
+--
+-- Name: igny8_credit_packages_slug_12f300e8_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_packages_slug_12f300e8_like ON public.igny8_credit_packages USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_credit_transactions_payment_id_20e3edd6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_transactions_payment_id_20e3edd6 ON public.igny8_credit_transactions USING btree (payment_id);
+
+
+--
+-- Name: igny8_credit_transactions_tenant_id_7a2db06a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_transactions_tenant_id_7a2db06a ON public.igny8_credit_transactions USING btree (tenant_id);
+
+
+--
+-- Name: igny8_credit_transactions_transaction_type_dd51bddf; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_transactions_transaction_type_dd51bddf ON public.igny8_credit_transactions USING btree (transaction_type);
+
+
+--
+-- Name: igny8_credit_transactions_transaction_type_dd51bddf_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_transactions_transaction_type_dd51bddf_like ON public.igny8_credit_transactions USING btree (transaction_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_credit_usage_logs_operation_type_3523aa61; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_usage_logs_operation_type_3523aa61 ON public.igny8_credit_usage_logs USING btree (operation_type);
+
+
+--
+-- Name: igny8_credit_usage_logs_operation_type_3523aa61_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_usage_logs_operation_type_3523aa61_like ON public.igny8_credit_usage_logs USING btree (operation_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_credit_usage_logs_site_id_8a608e0b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_usage_logs_site_id_8a608e0b ON public.igny8_credit_usage_logs USING btree (site_id);
+
+
+--
+-- Name: igny8_credit_usage_logs_tenant_id_0a80666f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_credit_usage_logs_tenant_id_0a80666f ON public.igny8_credit_usage_logs USING btree (tenant_id);
+
+
+--
+-- Name: igny8_deplo_account_234vwx_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_account_234vwx_idx ON public.igny8_deployment_records USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_deplo_site_bl_14c185_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_site_bl_14c185_idx ON public.igny8_deployment_records USING btree (site_blueprint_id, status);
+
+
+--
+-- Name: igny8_deplo_site_bl_345mno_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_site_bl_345mno_idx ON public.igny8_deployment_records USING btree (site_blueprint_id, status);
+
+
+--
+-- Name: igny8_deplo_site_bl_34f669_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_site_bl_34f669_idx ON public.igny8_deployment_records USING btree (site_blueprint_id, version);
+
+
+--
+-- Name: igny8_deplo_site_bl_678pqr_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_site_bl_678pqr_idx ON public.igny8_deployment_records USING btree (site_blueprint_id, version);
+
+
+--
+-- Name: igny8_deplo_status_5cb014_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_status_5cb014_idx ON public.igny8_deployment_records USING btree (status);
+
+
+--
+-- Name: igny8_deplo_status_901stu_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_status_901stu_idx ON public.igny8_deployment_records USING btree (status);
+
+
+--
+-- Name: igny8_deplo_tenant__4de41d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deplo_tenant__4de41d_idx ON public.igny8_deployment_records USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_deployment_records_created_at_150521f3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_created_at_150521f3 ON public.igny8_deployment_records USING btree (created_at);
+
+
+--
+-- Name: igny8_deployment_records_sector_id_67edf220; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_sector_id_67edf220 ON public.igny8_deployment_records USING btree (sector_id);
+
+
+--
+-- Name: igny8_deployment_records_site_blueprint_id_d5d922a6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_site_blueprint_id_d5d922a6 ON public.igny8_deployment_records USING btree (site_blueprint_id);
+
+
+--
+-- Name: igny8_deployment_records_site_id_7200c3bd; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_site_id_7200c3bd ON public.igny8_deployment_records USING btree (site_id);
+
+
+--
+-- Name: igny8_deployment_records_status_c617e01f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_status_c617e01f ON public.igny8_deployment_records USING btree (status);
+
+
+--
+-- Name: igny8_deployment_records_status_c617e01f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_status_c617e01f_like ON public.igny8_deployment_records USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_deployment_records_tenant_id_0faff7f6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_deployment_records_tenant_id_0faff7f6 ON public.igny8_deployment_records USING btree (tenant_id);
+
+
+--
+-- Name: igny8_email_settings_updated_by_id_26aa6445; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_email_settings_updated_by_id_26aa6445 ON public.igny8_email_settings USING btree (updated_by_id);
+
+
+--
+-- Name: igny8_email_status_7107f0_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_email_status_7107f0_idx ON public.igny8_email_log USING btree (status, sent_at);
+
+
+--
+-- Name: igny8_email_templat_e979b9_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_email_templat_e979b9_idx ON public.igny8_email_log USING btree (template_name, sent_at);
+
+
+--
+-- Name: igny8_email_templates_template_name_ec85b4c4_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_email_templates_template_name_ec85b4c4_like ON public.igny8_email_templates USING btree (template_name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_email_to_emai_f0efbd_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_email_to_emai_f0efbd_idx ON public.igny8_email_log USING btree (to_email, sent_at);
+
+
+--
+-- Name: igny8_global_ai_prompts_is_active_2d4dac15; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_ai_prompts_is_active_2d4dac15 ON public.igny8_global_ai_prompts USING btree (is_active);
+
+
+--
+-- Name: igny8_global_ai_prompts_prompt_type_3efbfa06_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_ai_prompts_prompt_type_3efbfa06_like ON public.igny8_global_ai_prompts USING btree (prompt_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_global_author_profiles_is_active_ce014098; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_author_profiles_is_active_ce014098 ON public.igny8_global_author_profiles USING btree (is_active);
+
+
+--
+-- Name: igny8_global_author_profiles_name_7008161d_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_author_profiles_name_7008161d_like ON public.igny8_global_author_profiles USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_global_integration_settings_updated_by_id_88f8904c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_integration_settings_updated_by_id_88f8904c ON public.igny8_global_integration_settings USING btree (updated_by_id);
+
+
+--
+-- Name: igny8_global_strategies_is_active_4875d23c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_strategies_is_active_4875d23c ON public.igny8_global_strategies USING btree (is_active);
+
+
+--
+-- Name: igny8_global_strategies_name_01d6f03d_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_global_strategies_name_01d6f03d_like ON public.igny8_global_strategies USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_image_content_4ab256_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_content_4ab256_idx ON public.igny8_images USING btree (content_id, "position");
+
+
+--
+-- Name: igny8_image_content_830ae4_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_content_830ae4_idx ON public.igny8_images USING btree (content_id, image_type);
+
+
+--
+-- Name: igny8_image_content_image_type_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_content_image_type_idx ON public.igny8_images USING btree (content_id, image_type);
+
+
+--
+-- Name: igny8_image_content_position_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_content_position_idx ON public.igny8_images USING btree (content_id, "position");
+
+
+--
+-- Name: igny8_image_status_4a4de2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_status_4a4de2_idx ON public.igny8_images USING btree (status);
+
+
+--
+-- Name: igny8_image_task_id_6340e6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_task_id_6340e6_idx ON public.igny8_images USING btree (task_id, "position");
+
+
+--
+-- Name: igny8_image_task_id_c80e87_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_image_task_id_c80e87_idx ON public.igny8_images USING btree (task_id, image_type);
+
+
+--
+-- Name: igny8_images_content_id_1ea50453; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_content_id_1ea50453 ON public.igny8_images USING btree (content_id);
+
+
+--
+-- Name: igny8_images_deleted_at_6fbb12a7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_deleted_at_6fbb12a7 ON public.igny8_images USING btree (deleted_at);
+
+
+--
+-- Name: igny8_images_deleted_by_id_24490395; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_deleted_by_id_24490395 ON public.igny8_images USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_images_is_deleted_94562b38; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_is_deleted_94562b38 ON public.igny8_images USING btree (is_deleted);
+
+
+--
+-- Name: igny8_images_restore_until_ab3b2e20; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_restore_until_ab3b2e20 ON public.igny8_images USING btree (restore_until);
+
+
+--
+-- Name: igny8_images_sector_id_15f9f189; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_sector_id_15f9f189 ON public.igny8_images USING btree (sector_id);
+
+
+--
+-- Name: igny8_images_site_id_f9b5d77b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_site_id_f9b5d77b ON public.igny8_images USING btree (site_id);
+
+
+--
+-- Name: igny8_images_task_id_7ae5d1c4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_task_id_7ae5d1c4 ON public.igny8_images USING btree (task_id);
+
+
+--
+-- Name: igny8_images_tenant_id_872f05a0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_images_tenant_id_872f05a0 ON public.igny8_images USING btree (tenant_id);
+
+
+--
+-- Name: igny8_indus_industr_00b524_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_indus_industr_00b524_idx ON public.igny8_industry_sectors USING btree (industry_id, is_active);
+
+
+--
+-- Name: igny8_indus_is_acti_146d41_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_indus_is_acti_146d41_idx ON public.igny8_industries USING btree (is_active);
+
+
+--
+-- Name: igny8_indus_slug_101d63_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_indus_slug_101d63_idx ON public.igny8_industry_sectors USING btree (slug);
+
+
+--
+-- Name: igny8_indus_slug_2f8769_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_indus_slug_2f8769_idx ON public.igny8_industries USING btree (slug);
+
+
+--
+-- Name: igny8_industries_is_active_e5fb8aa5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industries_is_active_e5fb8aa5 ON public.igny8_industries USING btree (is_active);
+
+
+--
+-- Name: igny8_industries_name_12d869f8_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industries_name_12d869f8_like ON public.igny8_industries USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_industries_slug_786892be_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industries_slug_786892be_like ON public.igny8_industries USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_industry_sectors_industry_id_8df3b709; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industry_sectors_industry_id_8df3b709 ON public.igny8_industry_sectors USING btree (industry_id);
+
+
+--
+-- Name: igny8_industry_sectors_is_active_24065af0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industry_sectors_is_active_24065af0 ON public.igny8_industry_sectors USING btree (is_active);
+
+
+--
+-- Name: igny8_industry_sectors_slug_35cfa139; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industry_sectors_slug_35cfa139 ON public.igny8_industry_sectors USING btree (slug);
+
+
+--
+-- Name: igny8_industry_sectors_slug_35cfa139_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_industry_sectors_slug_35cfa139_like ON public.igny8_industry_sectors USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_integ_account_789ghi_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_account_789ghi_idx ON public.igny8_site_integrations USING btree (tenant_id, platform);
+
+
+--
+-- Name: igny8_integ_integra_5e382e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_integra_5e382e_idx ON public.igny8_integration_settings USING btree (integration_type);
+
+
+--
+-- Name: igny8_integ_site_is_456def_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_site_is_456def_idx ON public.igny8_site_integrations USING btree (site_id, is_active);
+
+
+--
+-- Name: igny8_integ_site_pl_123abc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_site_pl_123abc_idx ON public.igny8_site_integrations USING btree (site_id, platform);
+
+
+--
+-- Name: igny8_integ_sync_st_012jkl_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_sync_st_012jkl_idx ON public.igny8_site_integrations USING btree (sync_status);
+
+
+--
+-- Name: igny8_integ_tenant__5da472_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integ_tenant__5da472_idx ON public.igny8_integration_settings USING btree (tenant_id, integration_type);
+
+
+--
+-- Name: igny8_integration_providers_is_active_fa15c1d9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_providers_is_active_fa15c1d9 ON public.igny8_integration_providers USING btree (is_active);
+
+
+--
+-- Name: igny8_integration_providers_provider_id_2db8d3de_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_providers_provider_id_2db8d3de_like ON public.igny8_integration_providers USING btree (provider_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_integration_providers_provider_type_dd8af828; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_providers_provider_type_dd8af828 ON public.igny8_integration_providers USING btree (provider_type);
+
+
+--
+-- Name: igny8_integration_providers_provider_type_dd8af828_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_providers_provider_type_dd8af828_like ON public.igny8_integration_providers USING btree (provider_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_integration_providers_updated_by_id_6ee0fefd; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_providers_updated_by_id_6ee0fefd ON public.igny8_integration_providers USING btree (updated_by_id);
+
+
+--
+-- Name: igny8_integration_settings_integration_type_b35f0271; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_settings_integration_type_b35f0271 ON public.igny8_integration_settings USING btree (integration_type);
+
+
+--
+-- Name: igny8_integration_settings_integration_type_b35f0271_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_settings_integration_type_b35f0271_like ON public.igny8_integration_settings USING btree (integration_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_integration_settings_tenant_id_83fc9116; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_integration_settings_tenant_id_83fc9116 ON public.igny8_integration_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_invoi_invoice_6f16b5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoi_invoice_6f16b5_idx ON public.igny8_invoices USING btree (invoice_number);
+
+
+--
+-- Name: igny8_invoi_tenant__4c2de3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoi_tenant__4c2de3_idx ON public.igny8_invoices USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_invoi_tenant__5107b7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoi_tenant__5107b7_idx ON public.igny8_invoices USING btree (tenant_id, invoice_date);
+
+
+--
+-- Name: igny8_invoices_invoice_date_92a31615; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_invoice_date_92a31615 ON public.igny8_invoices USING btree (invoice_date);
+
+
+--
+-- Name: igny8_invoices_invoice_number_d4601383_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_invoice_number_d4601383_like ON public.igny8_invoices USING btree (invoice_number varchar_pattern_ops);
+
+
+--
+-- Name: igny8_invoices_status_6296a7df; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_status_6296a7df ON public.igny8_invoices USING btree (status);
+
+
+--
+-- Name: igny8_invoices_status_6296a7df_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_status_6296a7df_like ON public.igny8_invoices USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_invoices_subscription_id_5d18ae64; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_subscription_id_5d18ae64 ON public.igny8_invoices USING btree (subscription_id);
+
+
+--
+-- Name: igny8_invoices_tenant_id_9a11632e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_invoices_tenant_id_9a11632e ON public.igny8_invoices USING btree (tenant_id);
+
+
+--
+-- Name: igny8_keyw_seed_k_12345_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keyw_seed_k_12345_idx ON public.igny8_keywords USING btree (seed_keyword_id);
+
+
+--
+-- Name: igny8_keyw_seed_si_67890_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keyw_seed_si_67890_idx ON public.igny8_keywords USING btree (seed_keyword_id, site_id, sector_id);
+
+
+--
+-- Name: igny8_keywo_cluster_d1ea95_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywo_cluster_d1ea95_idx ON public.igny8_keywords USING btree (cluster_id);
+
+
+--
+-- Name: igny8_keywo_seed_ke_69146b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywo_seed_ke_69146b_idx ON public.igny8_keywords USING btree (seed_keyword_id, site_id, sector_id);
+
+
+--
+-- Name: igny8_keywo_seed_ke_919a9d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywo_seed_ke_919a9d_idx ON public.igny8_keywords USING btree (seed_keyword_id);
+
+
+--
+-- Name: igny8_keywo_site_id_7bcb63_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywo_site_id_7bcb63_idx ON public.igny8_keywords USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_keywo_status_9a0dd6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywo_status_9a0dd6_idx ON public.igny8_keywords USING btree (status);
+
+
+--
+-- Name: igny8_keywords_cluster_id_ae5295d9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_cluster_id_ae5295d9 ON public.igny8_keywords USING btree (cluster_id);
+
+
+--
+-- Name: igny8_keywords_deleted_at_8eaabd91; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_deleted_at_8eaabd91 ON public.igny8_keywords USING btree (deleted_at);
+
+
+--
+-- Name: igny8_keywords_deleted_by_id_65534e4f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_deleted_by_id_65534e4f ON public.igny8_keywords USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_keywords_is_deleted_bb7ec287; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_is_deleted_bb7ec287 ON public.igny8_keywords USING btree (is_deleted);
+
+
+--
+-- Name: igny8_keywords_restore_until_cfe6ec8f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_restore_until_cfe6ec8f ON public.igny8_keywords USING btree (restore_until);
+
+
+--
+-- Name: igny8_keywords_sector_id_73b8b7dc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_sector_id_73b8b7dc ON public.igny8_keywords USING btree (sector_id);
+
+
+--
+-- Name: igny8_keywords_seed_keyword_id_14a6b9e6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_seed_keyword_id_14a6b9e6 ON public.igny8_keywords USING btree (seed_keyword_id);
+
+
+--
+-- Name: igny8_keywords_site_id_8e81a236; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_site_id_8e81a236 ON public.igny8_keywords USING btree (site_id);
+
+
+--
+-- Name: igny8_keywords_tenant_id_311904b7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_keywords_tenant_id_311904b7 ON public.igny8_keywords USING btree (tenant_id);
+
+
+--
+-- Name: igny8_modul_module__95373a_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_modul_module__95373a_idx ON public.igny8_module_settings USING btree (module_name, key);
+
+
+--
+-- Name: igny8_modul_tenant__21ee25_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_modul_tenant__21ee25_idx ON public.igny8_module_settings USING btree (tenant_id, module_name, key);
+
+
+--
+-- Name: igny8_module_enable_settings_account_created_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_enable_settings_account_created_idx ON public.igny8_module_enable_settings USING btree (tenant_id, created_at);
+
+
+--
+-- Name: igny8_module_enable_settings_created_at_56e73fe6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_enable_settings_created_at_56e73fe6 ON public.igny8_module_enable_settings USING btree (created_at);
+
+
+--
+-- Name: igny8_module_enable_settings_tenant_id_0d4046ca; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_enable_settings_tenant_id_0d4046ca ON public.igny8_module_enable_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_module_enable_settings_tenant_id_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_enable_settings_tenant_id_idx ON public.igny8_module_enable_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_module_settings_key_9e9c4797; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_settings_key_9e9c4797 ON public.igny8_module_settings USING btree (key);
+
+
+--
+-- Name: igny8_module_settings_key_9e9c4797_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_settings_key_9e9c4797_like ON public.igny8_module_settings USING btree (key varchar_pattern_ops);
+
+
+--
+-- Name: igny8_module_settings_module_name_caff06d1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_settings_module_name_caff06d1 ON public.igny8_module_settings USING btree (module_name);
+
+
+--
+-- Name: igny8_module_settings_module_name_caff06d1_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_settings_module_name_caff06d1_like ON public.igny8_module_settings USING btree (module_name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_module_settings_tenant_id_f7241169; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_module_settings_tenant_id_f7241169 ON public.igny8_module_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_optim_account_status_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_account_status_idx ON public.igny8_optimization_tasks USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_optim_content_25603a_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_content_25603a_idx ON public.igny8_optimization_tasks USING btree (content_id, status);
+
+
+--
+-- Name: igny8_optim_content_status_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_content_status_idx ON public.igny8_optimization_tasks USING btree (content_id, status);
+
+
+--
+-- Name: igny8_optim_status_164ee5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_status_164ee5_idx ON public.igny8_optimization_tasks USING btree (status, created_at);
+
+
+--
+-- Name: igny8_optim_status_created_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_status_created_idx ON public.igny8_optimization_tasks USING btree (status, created_at);
+
+
+--
+-- Name: igny8_optim_tenant__2ee3c3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optim_tenant__2ee3c3_idx ON public.igny8_optimization_tasks USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_optimization_tasks_content_id_86ac22d5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optimization_tasks_content_id_86ac22d5 ON public.igny8_optimization_tasks USING btree (content_id);
+
+
+--
+-- Name: igny8_optimization_tasks_created_at_476cc6d1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optimization_tasks_created_at_476cc6d1 ON public.igny8_optimization_tasks USING btree (created_at);
+
+
+--
+-- Name: igny8_optimization_tasks_status_d650ac60; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optimization_tasks_status_d650ac60 ON public.igny8_optimization_tasks USING btree (status);
+
+
+--
+-- Name: igny8_optimization_tasks_status_d650ac60_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optimization_tasks_status_d650ac60_like ON public.igny8_optimization_tasks USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_optimization_tasks_tenant_id_5a5d23d7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_optimization_tasks_tenant_id_5a5d23d7 ON public.igny8_optimization_tasks USING btree (tenant_id);
+
+
+--
+-- Name: igny8_page__site_bl_1b5d8b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__site_bl_1b5d8b_idx ON public.igny8_page_blueprints USING btree (site_blueprint_id, status);
+
+
+--
+-- Name: igny8_page__site_bl_2dede2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__site_bl_2dede2_idx ON public.igny8_page_blueprints USING btree (site_blueprint_id, status);
+
+
+--
+-- Name: igny8_page__site_bl_7a77d7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__site_bl_7a77d7_idx ON public.igny8_page_blueprints USING btree (site_blueprint_id, "order");
+
+
+--
+-- Name: igny8_page__site_bl_c56196_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__site_bl_c56196_idx ON public.igny8_page_blueprints USING btree (site_blueprint_id, "order");
+
+
+--
+-- Name: igny8_page__type_4af2bd_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__type_4af2bd_idx ON public.igny8_page_blueprints USING btree (type);
+
+
+--
+-- Name: igny8_page__type_b11552_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page__type_b11552_idx ON public.igny8_page_blueprints USING btree (type);
+
+
+--
+-- Name: igny8_page_blueprints_created_at_079bbe21; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_created_at_079bbe21 ON public.igny8_page_blueprints USING btree (created_at);
+
+
+--
+-- Name: igny8_page_blueprints_sector_id_c7e67972; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_sector_id_c7e67972 ON public.igny8_page_blueprints USING btree (sector_id);
+
+
+--
+-- Name: igny8_page_blueprints_site_blueprint_id_0c7c81ae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_site_blueprint_id_0c7c81ae ON public.igny8_page_blueprints USING btree (site_blueprint_id);
+
+
+--
+-- Name: igny8_page_blueprints_site_id_639d8b5f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_site_id_639d8b5f ON public.igny8_page_blueprints USING btree (site_id);
+
+
+--
+-- Name: igny8_page_blueprints_slug_6fde7203; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_slug_6fde7203 ON public.igny8_page_blueprints USING btree (slug);
+
+
+--
+-- Name: igny8_page_blueprints_slug_6fde7203_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_slug_6fde7203_like ON public.igny8_page_blueprints USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_page_blueprints_status_bb859172; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_status_bb859172 ON public.igny8_page_blueprints USING btree (status);
+
+
+--
+-- Name: igny8_page_blueprints_status_bb859172_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_status_bb859172_like ON public.igny8_page_blueprints USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_page_blueprints_tenant_id_974b29c4; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_page_blueprints_tenant_id_974b29c4 ON public.igny8_page_blueprints USING btree (tenant_id);
+
+
+--
+-- Name: igny8_passw_expires_c9aa03_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_passw_expires_c9aa03_idx ON public.igny8_password_reset_tokens USING btree (expires_at);
+
+
+--
+-- Name: igny8_passw_token_0eaf0c_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_passw_token_0eaf0c_idx ON public.igny8_password_reset_tokens USING btree (token);
+
+
+--
+-- Name: igny8_passw_user_id_320c02_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_passw_user_id_320c02_idx ON public.igny8_password_reset_tokens USING btree (user_id, used);
+
+
+--
+-- Name: igny8_password_reset_tokens_token_e5afe850_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_password_reset_tokens_token_e5afe850_like ON public.igny8_password_reset_tokens USING btree (token varchar_pattern_ops);
+
+
+--
+-- Name: igny8_password_reset_tokens_user_id_626dface; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_password_reset_tokens_user_id_626dface ON public.igny8_password_reset_tokens USING btree (user_id);
+
+
+--
+-- Name: igny8_payme_invoice_316f1c_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payme_invoice_316f1c_idx ON public.igny8_payments USING btree (invoice_id, status);
+
+
+--
+-- Name: igny8_payme_tenant__62289b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payme_tenant__62289b_idx ON public.igny8_payments USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_payme_tenant__7d34bb_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payme_tenant__7d34bb_idx ON public.igny8_payments USING btree (tenant_id, payment_method);
+
+
+--
+-- Name: igny8_payment_method_config_country_code_3e5f1958; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payment_method_config_country_code_3e5f1958 ON public.igny8_payment_method_config USING btree (country_code);
+
+
+--
+-- Name: igny8_payment_method_config_country_code_3e5f1958_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payment_method_config_country_code_3e5f1958_like ON public.igny8_payment_method_config USING btree (country_code varchar_pattern_ops);
+
+
+--
+-- Name: igny8_payments_approved_by_id_f27e58c9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_approved_by_id_f27e58c9 ON public.igny8_payments USING btree (approved_by_id);
+
+
+--
+-- Name: igny8_payments_invoice_id_b54c85cb; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_invoice_id_b54c85cb ON public.igny8_payments USING btree (invoice_id);
+
+
+--
+-- Name: igny8_payments_payment_method_ebd29fe5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_payment_method_ebd29fe5 ON public.igny8_payments USING btree (payment_method);
+
+
+--
+-- Name: igny8_payments_payment_method_ebd29fe5_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_payment_method_ebd29fe5_like ON public.igny8_payments USING btree (payment_method varchar_pattern_ops);
+
+
+--
+-- Name: igny8_payments_status_ece68c50; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_status_ece68c50 ON public.igny8_payments USING btree (status);
+
+
+--
+-- Name: igny8_payments_status_ece68c50_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_status_ece68c50_like ON public.igny8_payments USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_payments_tenant_id_36c10015; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_payments_tenant_id_36c10015 ON public.igny8_payments USING btree (tenant_id);
+
+
+--
+-- Name: igny8_plan__limit_t_d0f5ef_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan__limit_t_d0f5ef_idx ON public.igny8_plan_limit_usage USING btree (limit_type, period_start);
+
+
+--
+-- Name: igny8_plan__tenant__993f7b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan__tenant__993f7b_idx ON public.igny8_plan_limit_usage USING btree (tenant_id, limit_type);
+
+
+--
+-- Name: igny8_plan__tenant__aba01f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan__tenant__aba01f_idx ON public.igny8_plan_limit_usage USING btree (tenant_id, period_start, period_end);
+
+
+--
+-- Name: igny8_plan_limit_usage_limit_type_89baaf1f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan_limit_usage_limit_type_89baaf1f ON public.igny8_plan_limit_usage USING btree (limit_type);
+
+
+--
+-- Name: igny8_plan_limit_usage_limit_type_89baaf1f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan_limit_usage_limit_type_89baaf1f_like ON public.igny8_plan_limit_usage USING btree (limit_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_plan_limit_usage_tenant_id_6d268a68; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plan_limit_usage_tenant_id_6d268a68 ON public.igny8_plan_limit_usage USING btree (tenant_id);
+
+
+--
+-- Name: igny8_plans_slug_8701ae0a_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_plans_slug_8701ae0a_like ON public.igny8_plans USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_publi_account_012jkl_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_account_012jkl_idx ON public.igny8_publishing_records USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_publi_content_3688ba_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_content_3688ba_idx ON public.igny8_publishing_records USING btree (content_id, destination);
+
+
+--
+-- Name: igny8_publi_content_456def_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_content_456def_idx ON public.igny8_publishing_records USING btree (content_id, destination);
+
+
+--
+-- Name: igny8_publi_destina_123abc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_destina_123abc_idx ON public.igny8_publishing_records USING btree (destination, status);
+
+
+--
+-- Name: igny8_publi_destina_5706a3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_destina_5706a3_idx ON public.igny8_publishing_records USING btree (destination, status);
+
+
+--
+-- Name: igny8_publi_site_bl_789ghi_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_site_bl_789ghi_idx ON public.igny8_publishing_records USING btree (site_blueprint_id, destination);
+
+
+--
+-- Name: igny8_publi_site_bl_963f5d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_site_bl_963f5d_idx ON public.igny8_publishing_records USING btree (site_blueprint_id, destination);
+
+
+--
+-- Name: igny8_publi_tenant__2e0749_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publi_tenant__2e0749_idx ON public.igny8_publishing_records USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_publishing_records_content_id_36300c06; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_content_id_36300c06 ON public.igny8_publishing_records USING btree (content_id);
+
+
+--
+-- Name: igny8_publishing_records_created_at_4bd0d16a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_created_at_4bd0d16a ON public.igny8_publishing_records USING btree (created_at);
+
+
+--
+-- Name: igny8_publishing_records_destination_76ed5839; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_destination_76ed5839 ON public.igny8_publishing_records USING btree (destination);
+
+
+--
+-- Name: igny8_publishing_records_destination_76ed5839_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_destination_76ed5839_like ON public.igny8_publishing_records USING btree (destination varchar_pattern_ops);
+
+
+--
+-- Name: igny8_publishing_records_sector_id_08011e81; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_sector_id_08011e81 ON public.igny8_publishing_records USING btree (sector_id);
+
+
+--
+-- Name: igny8_publishing_records_site_blueprint_id_48b25b80; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_site_blueprint_id_48b25b80 ON public.igny8_publishing_records USING btree (site_blueprint_id);
+
+
+--
+-- Name: igny8_publishing_records_site_id_60d88f84; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_site_id_60d88f84 ON public.igny8_publishing_records USING btree (site_id);
+
+
+--
+-- Name: igny8_publishing_records_status_401112a9; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_status_401112a9 ON public.igny8_publishing_records USING btree (status);
+
+
+--
+-- Name: igny8_publishing_records_status_401112a9_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_status_401112a9_like ON public.igny8_publishing_records USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_publishing_records_tenant_id_2c597c29; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_records_tenant_id_2c597c29 ON public.igny8_publishing_records USING btree (tenant_id);
+
+
+--
+-- Name: igny8_publishing_settings_tenant_id_92528ac1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_publishing_settings_tenant_id_92528ac1 ON public.igny8_publishing_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_sched_account_789ghi_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_account_789ghi_idx ON public.igny8_scheduled_tasks USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_sched_automat_da6c85_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_automat_da6c85_idx ON public.igny8_scheduled_tasks USING btree (automation_rule_id, status);
+
+
+--
+-- Name: igny8_sched_automation_123abc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_automation_123abc_idx ON public.igny8_scheduled_tasks USING btree (automation_rule_id, status);
+
+
+--
+-- Name: igny8_sched_schedul_1e3342_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_schedul_1e3342_idx ON public.igny8_scheduled_tasks USING btree (scheduled_at, status);
+
+
+--
+-- Name: igny8_sched_scheduled_456def_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_scheduled_456def_idx ON public.igny8_scheduled_tasks USING btree (scheduled_at, status);
+
+
+--
+-- Name: igny8_sched_status_0abjkl_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_status_0abjkl_idx ON public.igny8_scheduled_tasks USING btree (status, scheduled_at);
+
+
+--
+-- Name: igny8_sched_status_21f32f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_status_21f32f_idx ON public.igny8_scheduled_tasks USING btree (status, scheduled_at);
+
+
+--
+-- Name: igny8_sched_tenant__7244a8_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sched_tenant__7244a8_idx ON public.igny8_scheduled_tasks USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_scheduled_tasks_automation_rule_id_cd11cdfb; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_scheduled_tasks_automation_rule_id_cd11cdfb ON public.igny8_scheduled_tasks USING btree (automation_rule_id);
+
+
+--
+-- Name: igny8_scheduled_tasks_created_at_acb6be77; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_scheduled_tasks_created_at_acb6be77 ON public.igny8_scheduled_tasks USING btree (created_at);
+
+
+--
+-- Name: igny8_scheduled_tasks_tenant_id_bbd4c65d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_scheduled_tasks_tenant_id_bbd4c65d ON public.igny8_scheduled_tasks USING btree (tenant_id);
+
+
+--
+-- Name: igny8_secto_industr_1cf990_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_secto_industr_1cf990_idx ON public.igny8_sectors USING btree (industry_sector_id);
+
+
+--
+-- Name: igny8_secto_site_id_76b3c7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_secto_site_id_76b3c7_idx ON public.igny8_sectors USING btree (site_id, is_active);
+
+
+--
+-- Name: igny8_secto_tenant__af54ae_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_secto_tenant__af54ae_idx ON public.igny8_sectors USING btree (tenant_id, site_id);
+
+
+--
+-- Name: igny8_sectors_deleted_at_0e51254c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_deleted_at_0e51254c ON public.igny8_sectors USING btree (deleted_at);
+
+
+--
+-- Name: igny8_sectors_deleted_by_id_4690d4e3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_deleted_by_id_4690d4e3 ON public.igny8_sectors USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_sectors_industry_sector_id_75f65d16; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_industry_sector_id_75f65d16 ON public.igny8_sectors USING btree (industry_sector_id);
+
+
+--
+-- Name: igny8_sectors_is_active_48250bb8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_is_active_48250bb8 ON public.igny8_sectors USING btree (is_active);
+
+
+--
+-- Name: igny8_sectors_is_deleted_133f8e53; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_is_deleted_133f8e53 ON public.igny8_sectors USING btree (is_deleted);
+
+
+--
+-- Name: igny8_sectors_restore_until_5a46d9f0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_restore_until_5a46d9f0 ON public.igny8_sectors USING btree (restore_until);
+
+
+--
+-- Name: igny8_sectors_site_id_7a8b5aae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_site_id_7a8b5aae ON public.igny8_sectors USING btree (site_id);
+
+
+--
+-- Name: igny8_sectors_slug_2c879d71; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_slug_2c879d71 ON public.igny8_sectors USING btree (slug);
+
+
+--
+-- Name: igny8_sectors_slug_2c879d71_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_slug_2c879d71_like ON public.igny8_sectors USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sectors_tenant_id_e752f511; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sectors_tenant_id_e752f511 ON public.igny8_sectors USING btree (tenant_id);
+
+
+--
+-- Name: igny8_seed__country_4127a5_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed__country_4127a5_idx ON public.igny8_seed_keywords USING btree (country);
+
+
+--
+-- Name: igny8_seed__industr_c41841_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed__industr_c41841_idx ON public.igny8_seed_keywords USING btree (industry_id, sector_id);
+
+
+--
+-- Name: igny8_seed__industr_da0030_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed__industr_da0030_idx ON public.igny8_seed_keywords USING btree (industry_id, sector_id, is_active);
+
+
+--
+-- Name: igny8_seed__keyword_efa089_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed__keyword_efa089_idx ON public.igny8_seed_keywords USING btree (keyword);
+
+
+--
+-- Name: igny8_seed_keywords_industry_id_4d56b762; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed_keywords_industry_id_4d56b762 ON public.igny8_seed_keywords USING btree (industry_id);
+
+
+--
+-- Name: igny8_seed_keywords_is_active_f1088c9e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed_keywords_is_active_f1088c9e ON public.igny8_seed_keywords USING btree (is_active);
+
+
+--
+-- Name: igny8_seed_keywords_keyword_c23fa7fc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed_keywords_keyword_c23fa7fc ON public.igny8_seed_keywords USING btree (keyword);
+
+
+--
+-- Name: igny8_seed_keywords_keyword_c23fa7fc_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed_keywords_keyword_c23fa7fc_like ON public.igny8_seed_keywords USING btree (keyword varchar_pattern_ops);
+
+
+--
+-- Name: igny8_seed_keywords_sector_id_37329a1b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_seed_keywords_sector_id_37329a1b ON public.igny8_seed_keywords USING btree (sector_id);
+
+
+--
+-- Name: igny8_site__account__38f18a_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__account__38f18a_idx ON public.igny8_site_blueprints USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_site__cluster_d75a2f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__cluster_d75a2f_idx ON public.igny8_site_blueprint_clusters USING btree (cluster_id, role);
+
+
+--
+-- Name: igny8_site__hosting_7a9a3e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__hosting_7a9a3e_idx ON public.igny8_site_blueprints USING btree (hosting_type);
+
+
+--
+-- Name: igny8_site__hosting_c4bb41_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__hosting_c4bb41_idx ON public.igny8_site_blueprints USING btree (hosting_type);
+
+
+--
+-- Name: igny8_site__site_bl_904406_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_bl_904406_idx ON public.igny8_site_blueprint_clusters USING btree (site_blueprint_id, cluster_id);
+
+
+--
+-- Name: igny8_site__site_bl_cff5ab_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_bl_cff5ab_idx ON public.igny8_site_blueprint_clusters USING btree (site_blueprint_id, coverage_status);
+
+
+--
+-- Name: igny8_site__site_bl_f952f7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_bl_f952f7_idx ON public.igny8_site_blueprint_taxonomies USING btree (site_blueprint_id, taxonomy_type);
+
+
+--
+-- Name: igny8_site__site_id_3901ba_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_id_3901ba_idx ON public.igny8_site_integrations USING btree (site_id, platform);
+
+
+--
+-- Name: igny8_site__site_id_71bc1a_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_id_71bc1a_idx ON public.igny8_site_integrations USING btree (site_id, is_active);
+
+
+--
+-- Name: igny8_site__site_id__5f0a4e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_id__5f0a4e_idx ON public.igny8_site_blueprints USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_site__site_id_cb1aca_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__site_id_cb1aca_idx ON public.igny8_site_blueprints USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_site__status_247ddc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__status_247ddc_idx ON public.igny8_site_blueprints USING btree (status);
+
+
+--
+-- Name: igny8_site__status_e7ca10_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__status_e7ca10_idx ON public.igny8_site_blueprints USING btree (status);
+
+
+--
+-- Name: igny8_site__sync_st_e79021_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__sync_st_e79021_idx ON public.igny8_site_integrations USING btree (sync_status);
+
+
+--
+-- Name: igny8_site__taxonom_178987_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__taxonom_178987_idx ON public.igny8_site_blueprint_taxonomies USING btree (taxonomy_type);
+
+
+--
+-- Name: igny8_site__tenant__1bb483_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__tenant__1bb483_idx ON public.igny8_site_blueprints USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_site__tenant__920542_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__tenant__920542_idx ON public.igny8_site_integrations USING btree (tenant_id, platform);
+
+
+--
+-- Name: igny8_site__user_id_61951e_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site__user_id_61951e_idx ON public.igny8_site_user_access USING btree (user_id, site_id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_cluster_id_e724c458; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_cluster_id_e724c458 ON public.igny8_site_blueprint_clusters USING btree (cluster_id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_created_at_ffc06554; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_created_at_ffc06554 ON public.igny8_site_blueprint_clusters USING btree (created_at);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_sector_id_34c615f1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_sector_id_34c615f1 ON public.igny8_site_blueprint_clusters USING btree (sector_id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_site_blueprint_id_6895e46f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_site_blueprint_id_6895e46f ON public.igny8_site_blueprint_clusters USING btree (site_blueprint_id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_site_id_f29f48af; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_site_id_f29f48af ON public.igny8_site_blueprint_clusters USING btree (site_id);
+
+
+--
+-- Name: igny8_site_blueprint_clusters_tenant_id_3cbd9f72; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_clusters_tenant_id_3cbd9f72 ON public.igny8_site_blueprint_clusters USING btree (tenant_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxon_siteblueprinttaxonomy_id_d523339b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxon_siteblueprinttaxonomy_id_d523339b ON public.igny8_site_blueprint_taxonomies_clusters USING btree (siteblueprinttaxonomy_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters_clusters_id_8d93d420; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_clusters_clusters_id_8d93d420 ON public.igny8_site_blueprint_taxonomies_clusters USING btree (clusters_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_created_at_a2f59137; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_created_at_a2f59137 ON public.igny8_site_blueprint_taxonomies USING btree (created_at);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_sector_id_d80376a0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_sector_id_d80376a0 ON public.igny8_site_blueprint_taxonomies USING btree (sector_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_site_blueprint_id_ca0ec20d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_site_blueprint_id_ca0ec20d ON public.igny8_site_blueprint_taxonomies USING btree (site_blueprint_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_site_id_d1987566; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_site_id_d1987566 ON public.igny8_site_blueprint_taxonomies USING btree (site_id);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_slug_389622da; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_slug_389622da ON public.igny8_site_blueprint_taxonomies USING btree (slug);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_slug_389622da_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_slug_389622da_like ON public.igny8_site_blueprint_taxonomies USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_tenant_id_4921a604; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprint_taxonomies_tenant_id_4921a604 ON public.igny8_site_blueprint_taxonomies USING btree (tenant_id);
+
+
+--
+-- Name: igny8_site_blueprints_created_at_620e0f77; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_created_at_620e0f77 ON public.igny8_site_blueprints USING btree (created_at);
+
+
+--
+-- Name: igny8_site_blueprints_sector_id_b90c0c7c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_sector_id_b90c0c7c ON public.igny8_site_blueprints USING btree (sector_id);
+
+
+--
+-- Name: igny8_site_blueprints_site_id_6b5a9bc5; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_site_id_6b5a9bc5 ON public.igny8_site_blueprints USING btree (site_id);
+
+
+--
+-- Name: igny8_site_blueprints_status_f4941bd7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_status_f4941bd7 ON public.igny8_site_blueprints USING btree (status);
+
+
+--
+-- Name: igny8_site_blueprints_status_f4941bd7_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_status_f4941bd7_like ON public.igny8_site_blueprints USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_blueprints_tenant_id_44178c19; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_blueprints_tenant_id_44178c19 ON public.igny8_site_blueprints USING btree (tenant_id);
+
+
+--
+-- Name: igny8_site_builder_audience_profiles_name_4e6e5785_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_builder_audience_profiles_name_4e6e5785_like ON public.igny8_site_builder_audience_profiles USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_builder_brand_personalities_name_1f53a1db_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_builder_brand_personalities_name_1f53a1db_like ON public.igny8_site_builder_brand_personalities USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_builder_business_types_name_5cd9e7e4_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_builder_business_types_name_5cd9e7e4_like ON public.igny8_site_builder_business_types USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_builder_hero_imagery_name_49070d42_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_builder_hero_imagery_name_49070d42_like ON public.igny8_site_builder_hero_imagery USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_integrations_created_at_d77a7fb3; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_created_at_d77a7fb3 ON public.igny8_site_integrations USING btree (created_at);
+
+
+--
+-- Name: igny8_site_integrations_is_active_97b91982; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_is_active_97b91982 ON public.igny8_site_integrations USING btree (is_active);
+
+
+--
+-- Name: igny8_site_integrations_platform_f9ffe4ae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_platform_f9ffe4ae ON public.igny8_site_integrations USING btree (platform);
+
+
+--
+-- Name: igny8_site_integrations_platform_f9ffe4ae_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_platform_f9ffe4ae_like ON public.igny8_site_integrations USING btree (platform varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_integrations_site_id_35ea4196; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_site_id_35ea4196 ON public.igny8_site_integrations USING btree (site_id);
+
+
+--
+-- Name: igny8_site_integrations_sync_status_6effeb6e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_sync_status_6effeb6e ON public.igny8_site_integrations USING btree (sync_status);
+
+
+--
+-- Name: igny8_site_integrations_sync_status_6effeb6e_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_sync_status_6effeb6e_like ON public.igny8_site_integrations USING btree (sync_status varchar_pattern_ops);
+
+
+--
+-- Name: igny8_site_integrations_tenant_id_202a66a2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_integrations_tenant_id_202a66a2 ON public.igny8_site_integrations USING btree (tenant_id);
+
+
+--
+-- Name: igny8_site_user_access_granted_by_id_4e0447c0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_user_access_granted_by_id_4e0447c0 ON public.igny8_site_user_access USING btree (granted_by_id);
+
+
+--
+-- Name: igny8_site_user_access_site_id_4076367d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_user_access_site_id_4076367d ON public.igny8_site_user_access USING btree (site_id);
+
+
+--
+-- Name: igny8_site_user_access_user_id_9950be70; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_site_user_access_user_id_9950be70 ON public.igny8_site_user_access USING btree (user_id);
+
+
+--
+-- Name: igny8_sites_deleted_at_5c4c8ae2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_deleted_at_5c4c8ae2 ON public.igny8_sites USING btree (deleted_at);
+
+
+--
+-- Name: igny8_sites_deleted_by_id_3cb42f45; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_deleted_by_id_3cb42f45 ON public.igny8_sites USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_sites_hostin_456def_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_hostin_456def_idx ON public.igny8_sites USING btree (hosting_type);
+
+
+--
+-- Name: igny8_sites_hosting_c484c2_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_hosting_c484c2_idx ON public.igny8_sites USING btree (hosting_type);
+
+
+--
+-- Name: igny8_sites_hosting_type_e8af5a2f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_hosting_type_e8af5a2f ON public.igny8_sites USING btree (hosting_type);
+
+
+--
+-- Name: igny8_sites_hosting_type_e8af5a2f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_hosting_type_e8af5a2f_like ON public.igny8_sites USING btree (hosting_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sites_industr_66e004_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_industr_66e004_idx ON public.igny8_sites USING btree (industry_id);
+
+
+--
+-- Name: igny8_sites_industry_id_2d95f01c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_industry_id_2d95f01c ON public.igny8_sites USING btree (industry_id);
+
+
+--
+-- Name: igny8_sites_is_active_93752f2a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_is_active_93752f2a ON public.igny8_sites USING btree (is_active);
+
+
+--
+-- Name: igny8_sites_is_deleted_7418b21b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_is_deleted_7418b21b ON public.igny8_sites USING btree (is_deleted);
+
+
+--
+-- Name: igny8_sites_restore_until_6ff2a837; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_restore_until_6ff2a837 ON public.igny8_sites USING btree (restore_until);
+
+
+--
+-- Name: igny8_sites_site_ty_0dfbc3_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_site_ty_0dfbc3_idx ON public.igny8_sites USING btree (site_type);
+
+
+--
+-- Name: igny8_sites_site_ty_123abc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_site_ty_123abc_idx ON public.igny8_sites USING btree (site_type);
+
+
+--
+-- Name: igny8_sites_site_type_c1327cfd; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_site_type_c1327cfd ON public.igny8_sites USING btree (site_type);
+
+
+--
+-- Name: igny8_sites_site_type_c1327cfd_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_site_type_c1327cfd_like ON public.igny8_sites USING btree (site_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sites_slug_e890003f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_slug_e890003f ON public.igny8_sites USING btree (slug);
+
+
+--
+-- Name: igny8_sites_slug_e890003f_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_slug_e890003f_like ON public.igny8_sites USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sites_tenant__a20275_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_tenant__a20275_idx ON public.igny8_sites USING btree (tenant_id, status);
+
+
+--
+-- Name: igny8_sites_tenant__e0f31d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_tenant__e0f31d_idx ON public.igny8_sites USING btree (tenant_id, is_active);
+
+
+--
+-- Name: igny8_sites_tenant_id_42d927b0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sites_tenant_id_42d927b0 ON public.igny8_sites USING btree (tenant_id);
+
+
+--
+-- Name: igny8_strat_is_cust_4b3c4b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strat_is_cust_4b3c4b_idx ON public.igny8_strategies USING btree (is_custom);
+
+
+--
+-- Name: igny8_strat_name_8fe823_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strat_name_8fe823_idx ON public.igny8_strategies USING btree (name);
+
+
+--
+-- Name: igny8_strat_tenant__279cfa_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strat_tenant__279cfa_idx ON public.igny8_strategies USING btree (tenant_id, sector_id);
+
+
+--
+-- Name: igny8_strat_tenant__344de9_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strat_tenant__344de9_idx ON public.igny8_strategies USING btree (tenant_id, is_active);
+
+
+--
+-- Name: igny8_strategies_cloned_from_id_00d2dc5b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strategies_cloned_from_id_00d2dc5b ON public.igny8_strategies USING btree (cloned_from_id);
+
+
+--
+-- Name: igny8_strategies_is_active_8abfee2c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strategies_is_active_8abfee2c ON public.igny8_strategies USING btree (is_active);
+
+
+--
+-- Name: igny8_strategies_sector_id_135e28a0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strategies_sector_id_135e28a0 ON public.igny8_strategies USING btree (sector_id);
+
+
+--
+-- Name: igny8_strategies_tenant_id_696f6cbc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_strategies_tenant_id_696f6cbc ON public.igny8_strategies USING btree (tenant_id);
+
+
+--
+-- Name: igny8_subsc_status_2fa897_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_subsc_status_2fa897_idx ON public.igny8_subscriptions USING btree (status);
+
+
+--
+-- Name: igny8_subscriptions_plan_id_db72c395; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_subscriptions_plan_id_db72c395 ON public.igny8_subscriptions USING btree (plan_id);
+
+
+--
+-- Name: igny8_subscriptions_stripe_subscription_id_a372ad78; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_subscriptions_stripe_subscription_id_a372ad78 ON public.igny8_subscriptions USING btree (stripe_subscription_id);
+
+
+--
+-- Name: igny8_subscriptions_stripe_subscription_id_a372ad78_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_subscriptions_stripe_subscription_id_a372ad78_like ON public.igny8_subscriptions USING btree (stripe_subscription_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_subscriptions_tenant_id_unique; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX igny8_subscriptions_tenant_id_unique ON public.igny8_subscriptions USING btree (tenant_id);
+
+
+--
+-- Name: igny8_sync_events_action_81984cf2; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_action_81984cf2 ON public.igny8_sync_events USING btree (action);
+
+
+--
+-- Name: igny8_sync_events_action_81984cf2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_action_81984cf2_like ON public.igny8_sync_events USING btree (action varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sync_events_content_id_26dcde4a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_content_id_26dcde4a ON public.igny8_sync_events USING btree (content_id);
+
+
+--
+-- Name: igny8_sync_events_created_at_65af3881; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_created_at_65af3881 ON public.igny8_sync_events USING btree (created_at);
+
+
+--
+-- Name: igny8_sync_events_event_type_7510f89c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_event_type_7510f89c ON public.igny8_sync_events USING btree (event_type);
+
+
+--
+-- Name: igny8_sync_events_event_type_7510f89c_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_event_type_7510f89c_like ON public.igny8_sync_events USING btree (event_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sync_events_external_id_e7d1867b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_external_id_e7d1867b ON public.igny8_sync_events USING btree (external_id);
+
+
+--
+-- Name: igny8_sync_events_external_id_e7d1867b_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_external_id_e7d1867b_like ON public.igny8_sync_events USING btree (external_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_sync_events_integration_id_34e7fb2d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_integration_id_34e7fb2d ON public.igny8_sync_events USING btree (integration_id);
+
+
+--
+-- Name: igny8_sync_events_site_id_3fd61740; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_site_id_3fd61740 ON public.igny8_sync_events USING btree (site_id);
+
+
+--
+-- Name: igny8_sync_events_success_8c1df878; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_success_8c1df878 ON public.igny8_sync_events USING btree (success);
+
+
+--
+-- Name: igny8_sync_events_tenant_id_f7680236; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_sync_events_tenant_id_f7680236 ON public.igny8_sync_events USING btree (tenant_id);
+
+
+--
+-- Name: igny8_syste_key_20500b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_syste_key_20500b_idx ON public.igny8_system_settings USING btree (key);
+
+
+--
+-- Name: igny8_system_settings_key_abeaafd2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_system_settings_key_abeaafd2_like ON public.igny8_system_settings USING btree (key varchar_pattern_ops);
+
+
+--
+-- Name: igny8_task_images_sector_id_8260471a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_task_images_sector_id_8260471a ON public.igny8_images USING btree (sector_id);
+
+
+--
+-- Name: igny8_task_images_site_id_07174efc; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_task_images_site_id_07174efc ON public.igny8_images USING btree (site_id);
+
+
+--
+-- Name: igny8_task_images_task_id_729ebb7f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_task_images_task_id_729ebb7f ON public.igny8_images USING btree (task_id);
+
+
+--
+-- Name: igny8_task_images_tenant_id_abfc1895; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_task_images_tenant_id_abfc1895 ON public.igny8_images USING btree (tenant_id);
+
+
+--
+-- Name: igny8_tasks_cluster_ac6cd4_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_cluster_ac6cd4_idx ON public.igny8_tasks USING btree (cluster_id);
+
+
+--
+-- Name: igny8_tasks_cluster_id_23944daa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_cluster_id_23944daa ON public.igny8_tasks USING btree (cluster_id);
+
+
+--
+-- Name: igny8_tasks_content_structure_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_content_structure_idx ON public.igny8_tasks USING btree (content_structure);
+
+
+--
+-- Name: igny8_tasks_content_type_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_content_type_idx ON public.igny8_tasks USING btree (content_type);
+
+
+--
+-- Name: igny8_tasks_deleted_at_cb69a8f0; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_deleted_at_cb69a8f0 ON public.igny8_tasks USING btree (deleted_at);
+
+
+--
+-- Name: igny8_tasks_deleted_by_id_51673724; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_deleted_by_id_51673724 ON public.igny8_tasks USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_tasks_entity_type_4821947c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_entity_type_4821947c ON public.igny8_tasks USING btree (content_type);
+
+
+--
+-- Name: igny8_tasks_entity_type_4821947c_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_entity_type_4821947c_like ON public.igny8_tasks USING btree (content_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_tasks_idea_id_ed17e490; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_idea_id_ed17e490 ON public.igny8_tasks USING btree (idea_id);
+
+
+--
+-- Name: igny8_tasks_is_deleted_b6994a0a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_is_deleted_b6994a0a ON public.igny8_tasks USING btree (is_deleted);
+
+
+--
+-- Name: igny8_tasks_keyword_objects_keywords_id_569d1241; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_keyword_objects_keywords_id_569d1241 ON public.igny8_tasks_keyword_objects USING btree (keywords_id);
+
+
+--
+-- Name: igny8_tasks_keyword_objects_tasks_id_9995ae7c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_keyword_objects_tasks_id_9995ae7c ON public.igny8_tasks_keyword_objects USING btree (tasks_id);
+
+
+--
+-- Name: igny8_tasks_restore_until_4d734b0b; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_restore_until_4d734b0b ON public.igny8_tasks USING btree (restore_until);
+
+
+--
+-- Name: igny8_tasks_sector_id_bd837f4e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_sector_id_bd837f4e ON public.igny8_tasks USING btree (sector_id);
+
+
+--
+-- Name: igny8_tasks_site_id_5e333376; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_site_id_5e333376 ON public.igny8_tasks USING btree (site_id);
+
+
+--
+-- Name: igny8_tasks_site_id_9880f4_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_site_id_9880f4_idx ON public.igny8_tasks USING btree (site_id, sector_id);
+
+
+--
+-- Name: igny8_tasks_status_706869_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_status_706869_idx ON public.igny8_tasks USING btree (status);
+
+
+--
+-- Name: igny8_tasks_taxonomy_id_a6ff9f2a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_taxonomy_id_a6ff9f2a ON public.igny8_tasks USING btree (taxonomy_id);
+
+
+--
+-- Name: igny8_tasks_tenant_id_b425532e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_tenant_id_b425532e ON public.igny8_tasks USING btree (tenant_id);
+
+
+--
+-- Name: igny8_tasks_title_5c24cd58; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_title_5c24cd58 ON public.igny8_tasks USING btree (title);
+
+
+--
+-- Name: igny8_tasks_title_5c24cd58_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_title_5c24cd58_like ON public.igny8_tasks USING btree (title varchar_pattern_ops);
+
+
+--
+-- Name: igny8_tasks_title_adc50b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tasks_title_adc50b_idx ON public.igny8_tasks USING btree (title);
+
+
+--
+-- Name: igny8_tenan_slug_f25e97_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenan_slug_f25e97_idx ON public.igny8_tenants USING btree (slug);
+
+
+--
+-- Name: igny8_tenan_status_5dc02a_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenan_status_5dc02a_idx ON public.igny8_tenants USING btree (status);
+
+
+--
+-- Name: igny8_tenant_settings_key_dc0d2573; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenant_settings_key_dc0d2573 ON public.igny8_account_settings USING btree (key);
+
+
+--
+-- Name: igny8_tenant_settings_key_dc0d2573_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenant_settings_key_dc0d2573_like ON public.igny8_account_settings USING btree (key varchar_pattern_ops);
+
+
+--
+-- Name: igny8_tenants_deleted_at_767e9865; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_deleted_at_767e9865 ON public.igny8_tenants USING btree (deleted_at);
+
+
+--
+-- Name: igny8_tenants_deleted_by_id_6d14d9d8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_deleted_by_id_6d14d9d8 ON public.igny8_tenants USING btree (deleted_by_id);
+
+
+--
+-- Name: igny8_tenants_is_deleted_64377e83; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_is_deleted_64377e83 ON public.igny8_tenants USING btree (is_deleted);
+
+
+--
+-- Name: igny8_tenants_owner_id_c822e77f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_owner_id_c822e77f ON public.igny8_tenants USING btree (owner_id);
+
+
+--
+-- Name: igny8_tenants_plan_id_b3b756a8; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_plan_id_b3b756a8 ON public.igny8_tenants USING btree (plan_id);
+
+
+--
+-- Name: igny8_tenants_restore_until_7e0a0dc6; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_restore_until_7e0a0dc6 ON public.igny8_tenants USING btree (restore_until);
+
+
+--
+-- Name: igny8_tenants_slug_457761a4_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_tenants_slug_457761a4_like ON public.igny8_tenants USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: igny8_user__tenant__01033d_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user__tenant__01033d_idx ON public.igny8_user_settings USING btree (tenant_id, key);
+
+
+--
+-- Name: igny8_user__user_id_ac09d9_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user__user_id_ac09d9_idx ON public.igny8_user_settings USING btree (user_id, tenant_id, key);
+
+
+--
+-- Name: igny8_user_settings_key_b8952e08; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user_settings_key_b8952e08 ON public.igny8_user_settings USING btree (key);
+
+
+--
+-- Name: igny8_user_settings_key_b8952e08_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user_settings_key_b8952e08_like ON public.igny8_user_settings USING btree (key varchar_pattern_ops);
+
+
+--
+-- Name: igny8_user_settings_tenant_id_1ce81a47; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user_settings_tenant_id_1ce81a47 ON public.igny8_user_settings USING btree (tenant_id);
+
+
+--
+-- Name: igny8_user_settings_user_id_2f9a220d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_user_settings_user_id_2f9a220d ON public.igny8_user_settings USING btree (user_id);
+
+
+--
+-- Name: igny8_users_email_47deb48c_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_email_47deb48c_like ON public.igny8_users USING btree (email varchar_pattern_ops);
+
+
+--
+-- Name: igny8_users_email_fd61ff_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_email_fd61ff_idx ON public.igny8_users USING btree (email);
+
+
+--
+-- Name: igny8_users_groups_group_id_e316e5df; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_groups_group_id_e316e5df ON public.igny8_users_groups USING btree (group_id);
+
+
+--
+-- Name: igny8_users_groups_user_id_6584a667; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_groups_user_id_6584a667 ON public.igny8_users_groups USING btree (user_id);
+
+
+--
+-- Name: igny8_users_tenant__0ab02b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_tenant__0ab02b_idx ON public.igny8_users USING btree (tenant_id, role);
+
+
+--
+-- Name: igny8_users_tenant_id_01c0c5b1; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_tenant_id_01c0c5b1 ON public.igny8_users USING btree (tenant_id);
+
+
+--
+-- Name: igny8_users_user_permissions_permission_id_3681cd29; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_user_permissions_permission_id_3681cd29 ON public.igny8_users_user_permissions USING btree (permission_id);
+
+
+--
+-- Name: igny8_users_user_permissions_user_id_3b46d75a; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_user_permissions_user_id_3b46d75a ON public.igny8_users_user_permissions USING btree (user_id);
+
+
+--
+-- Name: igny8_users_username_4147674e_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_users_username_4147674e_like ON public.igny8_users USING btree (username varchar_pattern_ops);
+
+
+--
+-- Name: igny8_webho_process_88c670_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webho_process_88c670_idx ON public.igny8_webhook_events USING btree (processed, created_at);
+
+
+--
+-- Name: igny8_webho_provide_df293b_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webho_provide_df293b_idx ON public.igny8_webhook_events USING btree (provider, processed);
+
+
+--
+-- Name: igny8_webho_provide_ee8a78_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webho_provide_ee8a78_idx ON public.igny8_webhook_events USING btree (provider, event_type);
+
+
+--
+-- Name: igny8_webhook_events_event_id_ce8993cd_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_event_id_ce8993cd_like ON public.igny8_webhook_events USING btree (event_id varchar_pattern_ops);
+
+
+--
+-- Name: igny8_webhook_events_event_type_458738aa; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_event_type_458738aa ON public.igny8_webhook_events USING btree (event_type);
+
+
+--
+-- Name: igny8_webhook_events_event_type_458738aa_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_event_type_458738aa_like ON public.igny8_webhook_events USING btree (event_type varchar_pattern_ops);
+
+
+--
+-- Name: igny8_webhook_events_processed_a8cb2964; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_processed_a8cb2964 ON public.igny8_webhook_events USING btree (processed);
+
+
+--
+-- Name: igny8_webhook_events_provider_9db6b512; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_provider_9db6b512 ON public.igny8_webhook_events USING btree (provider);
+
+
+--
+-- Name: igny8_webhook_events_provider_9db6b512_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX igny8_webhook_events_provider_9db6b512_like ON public.igny8_webhook_events USING btree (provider varchar_pattern_ops);
+
+
+--
+-- Name: job_media_job_id_media_id_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX job_media_job_id_media_id_idx ON public.jobmedia USING btree (jobid, mediaid);
+
+
+--
+-- Name: job_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX job_name_idx ON public.job USING btree (name text_pattern_ops);
+
+
+--
+-- Name: jobhisto_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX jobhisto_idx ON public.jobhisto USING btree (starttime);
+
+
+--
+-- Name: log_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX log_name_idx ON public.log USING btree (jobid);
+
+
+--
+-- Name: media_poolid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX media_poolid_idx ON public.media USING btree (poolid);
+
+
+--
+-- Name: media_storageid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX media_storageid_idx ON public.media USING btree (storageid);
+
+
+--
+-- Name: media_volumename_id; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX media_volumename_id ON public.media USING btree (volumename text_pattern_ops);
+
+
+--
+-- Name: notificatio_tenant__3b20a7_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notificatio_tenant__3b20a7_idx ON public.notifications_notification USING btree (tenant_id, created_at DESC);
+
+
+--
+-- Name: notificatio_tenant__9a5521_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notificatio_tenant__9a5521_idx ON public.notifications_notification USING btree (tenant_id, is_read, created_at DESC);
+
+
+--
+-- Name: notificatio_user_id_05b4bc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notificatio_user_id_05b4bc_idx ON public.notifications_notification USING btree (user_id, created_at DESC);
+
+
+--
+-- Name: notifications_notification_content_type_id_74ab3a2c; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notifications_notification_content_type_id_74ab3a2c ON public.notifications_notification USING btree (content_type_id);
+
+
+--
+-- Name: notifications_notification_created_at_10160fdd; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notifications_notification_created_at_10160fdd ON public.notifications_notification USING btree (created_at);
+
+
+--
+-- Name: notifications_notification_site_id_ddf4ca85; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notifications_notification_site_id_ddf4ca85 ON public.notifications_notification USING btree (site_id);
+
+
+--
+-- Name: notifications_notification_tenant_id_156c9e0d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notifications_notification_tenant_id_156c9e0d ON public.notifications_notification USING btree (tenant_id);
+
+
+--
+-- Name: notifications_notification_user_id_b5e8c0ff; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX notifications_notification_user_id_b5e8c0ff ON public.notifications_notification USING btree (user_id);
+
+
+--
+-- Name: path_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX path_name_idx ON public.path USING btree (path text_pattern_ops);
+
+
+--
+-- Name: pathhierarchy_ppathid; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX pathhierarchy_ppathid ON public.pathhierarchy USING btree (ppathid);
+
+
+--
+-- Name: pathvisibility_jobid; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX pathvisibility_jobid ON public.pathvisibility USING btree (jobid);
+
+
+--
+-- Name: payment_account_status_created_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX payment_account_status_created_idx ON public.igny8_payments USING btree (tenant_id, status, created_at DESC);
+
+
+--
+-- Name: plugin_down_plugin__5771ff_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_down_plugin__5771ff_idx ON public.plugin_downloads USING btree (plugin_id, created_at);
+
+
+--
+-- Name: plugin_down_version_2bcf49_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_down_version_2bcf49_idx ON public.plugin_downloads USING btree (version_id, created_at);
+
+
+--
+-- Name: plugin_downloads_account_id_49603a25; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_downloads_account_id_49603a25 ON public.plugin_downloads USING btree (account_id);
+
+
+--
+-- Name: plugin_downloads_plugin_id_60e1680f; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_downloads_plugin_id_60e1680f ON public.plugin_downloads USING btree (plugin_id);
+
+
+--
+-- Name: plugin_downloads_site_id_b0665852; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_downloads_site_id_b0665852 ON public.plugin_downloads USING btree (site_id);
+
+
+--
+-- Name: plugin_downloads_version_id_e296a8d7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_downloads_version_id_e296a8d7 ON public.plugin_downloads USING btree (version_id);
+
+
+--
+-- Name: plugin_installations_current_version_id_ed335097; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_installations_current_version_id_ed335097 ON public.plugin_installations USING btree (current_version_id);
+
+
+--
+-- Name: plugin_installations_is_active_d225c1cf; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_installations_is_active_d225c1cf ON public.plugin_installations USING btree (is_active);
+
+
+--
+-- Name: plugin_installations_pending_update_id_63c50022; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_installations_pending_update_id_63c50022 ON public.plugin_installations USING btree (pending_update_id);
+
+
+--
+-- Name: plugin_installations_plugin_id_23ef6cd7; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_installations_plugin_id_23ef6cd7 ON public.plugin_installations USING btree (plugin_id);
+
+
+--
+-- Name: plugin_installations_site_id_fc76129e; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_installations_site_id_fc76129e ON public.plugin_installations USING btree (site_id);
+
+
+--
+-- Name: plugin_versions_plugin_id_baf841ae; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_versions_plugin_id_baf841ae ON public.plugin_versions USING btree (plugin_id);
+
+
+--
+-- Name: plugin_versions_status_8d81eadf; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_versions_status_8d81eadf ON public.plugin_versions USING btree (status);
+
+
+--
+-- Name: plugin_versions_status_8d81eadf_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugin_versions_status_8d81eadf_like ON public.plugin_versions USING btree (status varchar_pattern_ops);
+
+
+--
+-- Name: plugins_is_active_f1b44e2d; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugins_is_active_f1b44e2d ON public.plugins USING btree (is_active);
+
+
+--
+-- Name: plugins_slug_747726c2_like; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX plugins_slug_747726c2_like ON public.plugins USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: pool_name_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX pool_name_idx ON public.pool USING btree (name text_pattern_ops);
+
+
+--
+-- Name: restore_jobid_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX restore_jobid_idx ON public.restoreobject USING btree (jobid);
+
+
+--
+-- Name: site_buildi_cluster__9a078f_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX site_buildi_cluster__9a078f_idx ON public.igny8_site_blueprint_clusters USING btree (cluster_id, role);
+
+
+--
+-- Name: site_buildi_site_bl_33fadc_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX site_buildi_site_bl_33fadc_idx ON public.igny8_site_blueprint_taxonomies USING btree (site_blueprint_id, taxonomy_type);
+
+
+--
+-- Name: site_buildi_site_bl_4234c0_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX site_buildi_site_bl_4234c0_idx ON public.igny8_site_blueprint_clusters USING btree (site_blueprint_id, cluster_id);
+
+
+--
+-- Name: site_buildi_site_bl_459d80_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX site_buildi_site_bl_459d80_idx ON public.igny8_site_blueprint_clusters USING btree (site_blueprint_id, coverage_status);
+
+
+--
+-- Name: site_buildi_taxonom_4a7dde_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX site_buildi_taxonom_4a7dde_idx ON public.igny8_site_blueprint_taxonomies USING btree (taxonomy_type);
+
+
+--
+-- Name: snapshot_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX snapshot_idx ON public.snapshot USING btree (device text_pattern_ops, volume text_pattern_ops, name text_pattern_ops);
+
+
+--
+-- Name: unique_account_module_enable_settings; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX unique_account_module_enable_settings ON public.igny8_module_enable_settings USING btree (tenant_id);
+
+
+--
+-- Name: unique_content_image_type_position; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX unique_content_image_type_position ON public.igny8_images USING btree (content_id, image_type, "position") WHERE (NOT is_deleted);
+
+
+--
+-- Name: unique_manual_reference_when_not_null; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE UNIQUE INDEX unique_manual_reference_when_not_null ON public.igny8_payments USING btree (manual_reference) WHERE ((manual_reference IS NOT NULL) AND (NOT (((manual_reference)::text = ''::text) AND (manual_reference IS NOT NULL))));
+
+
+--
+-- Name: writer_con_cluster__d06bd6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_cluster__d06bd6_idx ON public.igny8_content_cluster_map USING btree (cluster_id, role);
+
+
+--
+-- Name: writer_con_content__0af6a6_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_content__0af6a6_idx ON public.igny8_content_taxonomy_map USING btree (content_id, taxonomy_id);
+
+
+--
+-- Name: writer_con_content__bb02dd_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_content__bb02dd_idx ON public.igny8_content_cluster_map USING btree (content_id, role);
+
+
+--
+-- Name: writer_con_task__role_828ce1_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_task__role_828ce1_idx ON public.igny8_content_cluster_map USING btree (task_id, role);
+
+
+--
+-- Name: writer_con_task__taxon_e3bdad_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_task__taxon_e3bdad_idx ON public.igny8_content_taxonomy_map USING btree (task_id, taxonomy_id);
+
+
+--
+-- Name: writer_con_taxonomy_d55410_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_con_taxonomy_d55410_idx ON public.igny8_content_taxonomy_map USING btree (taxonomy_id);
+
+
+--
+-- Name: writer_tasks_cluster_role_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_tasks_cluster_role_idx ON public.igny8_tasks USING btree (content_structure);
+
+
+--
+-- Name: writer_tasks_entity_type_idx; Type: INDEX; Schema: public; Owner: igny8
+--
+
+CREATE INDEX writer_tasks_entity_type_idx ON public.igny8_tasks USING btree (content_type);
+
+
+--
+-- Name: auth_group_permissions auth_group_permissio_permission_id_84c5c92e_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissio_permission_id_84c5c92e_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_permission auth_permission_content_type_id_2f476e4b_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_content_type_id_2f476e4b_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: billing_historicalaimodelconfig billing_historicalai_history_user_id_5d6f91e4_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalaimodelconfig
+ ADD CONSTRAINT billing_historicalai_history_user_id_5d6f91e4_fk_igny8_use FOREIGN KEY (history_user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: billing_historicalcreditcostconfig billing_historicalcr_history_user_id_f53ca5b8_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalcreditcostconfig
+ ADD CONSTRAINT billing_historicalcr_history_user_id_f53ca5b8_fk_igny8_use FOREIGN KEY (history_user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: billing_historicalpayment billing_historicalpa_history_user_id_912081c7_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.billing_historicalpayment
+ ADD CONSTRAINT billing_historicalpa_history_user_id_912081c7_fk_igny8_use FOREIGN KEY (history_user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_log django_admin_log_content_type_id_c4bce8eb_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_content_type_id_c4bce8eb_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_log django_admin_log_user_id_c564eba6_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_user_id_c564eba6_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_account_payment_methods igny8_account_paymen_tenant_id_47b1fd6d_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_payment_methods
+ ADD CONSTRAINT igny8_account_paymen_tenant_id_47b1fd6d_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_account_settings igny8_account_settings_tenant_id_e9bb23de_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_account_settings
+ ADD CONSTRAINT igny8_account_settings_tenant_id_e9bb23de_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_ai_prompts igny8_ai_prompts_tenant_id_b491bbbf_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_prompts
+ ADD CONSTRAINT igny8_ai_prompts_tenant_id_b491bbbf_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_ai_settings igny8_ai_settings_tenant_id_56ab092b_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_settings
+ ADD CONSTRAINT igny8_ai_settings_tenant_id_56ab092b_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_ai_task_logs igny8_ai_task_logs_tenant_id_f1cd521f_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_ai_task_logs
+ ADD CONSTRAINT igny8_ai_task_logs_tenant_id_f1cd521f_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_author_profiles igny8_author_profile_cloned_from_id_bac3246c_fk_igny8_glo; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_author_profiles
+ ADD CONSTRAINT igny8_author_profile_cloned_from_id_bac3246c_fk_igny8_glo FOREIGN KEY (cloned_from_id) REFERENCES public.igny8_global_author_profiles(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_author_profiles igny8_author_profiles_tenant_id_a8a72f9c_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_author_profiles
+ ADD CONSTRAINT igny8_author_profiles_tenant_id_a8a72f9c_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_configs igny8_automation_con_account_id_ef6bc3ad_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_configs
+ ADD CONSTRAINT igny8_automation_con_account_id_ef6bc3ad_fk_igny8_ten FOREIGN KEY (account_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_configs igny8_automation_configs_site_id_304b1cd3_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_configs
+ ADD CONSTRAINT igny8_automation_configs_site_id_304b1cd3_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_rules igny8_automation_rules_sector_id_570f6fd7_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_rules
+ ADD CONSTRAINT igny8_automation_rules_sector_id_570f6fd7_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_rules igny8_automation_rules_site_id_faedae95_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_rules
+ ADD CONSTRAINT igny8_automation_rules_site_id_faedae95_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_rules igny8_automation_rules_tenant_id_3c948028_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_rules
+ ADD CONSTRAINT igny8_automation_rules_tenant_id_3c948028_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_runs igny8_automation_runs_account_id_81c40bfd_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_runs
+ ADD CONSTRAINT igny8_automation_runs_account_id_81c40bfd_fk_igny8_tenants_id FOREIGN KEY (account_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_automation_runs igny8_automation_runs_site_id_89c0bb67_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_automation_runs
+ ADD CONSTRAINT igny8_automation_runs_site_id_89c0bb67_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_billing_configuration igny8_billing_config_updated_by_id_fa067fba_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_billing_configuration
+ ADD CONSTRAINT igny8_billing_config_updated_by_id_fa067fba_fk_igny8_use FOREIGN KEY (updated_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_clusters igny8_clusters_deleted_by_id_3eb9b1b5_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_deleted_by_id_3eb9b1b5_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_clusters igny8_clusters_sector_id_98f035f1_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_sector_id_98f035f1_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_clusters igny8_clusters_site_id_40ac5b26_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_site_id_40ac5b26_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_clusters igny8_clusters_tenant_id_63e3efa2_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_clusters
+ ADD CONSTRAINT igny8_clusters_tenant_id_63e3efa2_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attrib_cluster_id_705a8c4d_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attrib_cluster_id_705a8c4d_fk_igny8_clu FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attrib_content_id_1eb1e4ef_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attrib_content_id_1eb1e4ef_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attributes_sector_id_40c43871_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attributes_sector_id_40c43871_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attributes_site_id_d8657a19_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attributes_site_id_d8657a19_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attributes_task_id_3824caa6_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attributes_task_id_3824caa6_fk_igny8_tasks_id FOREIGN KEY (task_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_attributes igny8_content_attributes_tenant_id_0716c076_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_attributes
+ ADD CONSTRAINT igny8_content_attributes_tenant_id_0716c076_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluste_cluster_id_d1e699af_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluste_cluster_id_d1e699af_fk_igny8_clu FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluste_content_id_88fda5e5_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluste_content_id_88fda5e5_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluste_sector_id_fbacc1e4_fk_igny8_sec; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluste_sector_id_fbacc1e4_fk_igny8_sec FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluste_tenant_id_3a7a4086_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluste_tenant_id_3a7a4086_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_cluster_id_37b89a0d_fk_igny8_clusters_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_cluster_id_37b89a0d_fk_igny8_clusters_id FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluster_map_site_id_1165716b_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluster_map_site_id_1165716b_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_cluster_map igny8_content_cluster_map_task_id_d3eeb407_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_cluster_map
+ ADD CONSTRAINT igny8_content_cluster_map_task_id_d3eeb407_fk_igny8_tasks_id FOREIGN KEY (task_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_deleted_by_id_8ff38ab9_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_deleted_by_id_8ff38ab9_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas__contentideas_id_dc9f61fa_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas__contentideas_id_dc9f61fa_fk_igny8_con FOREIGN KEY (contentideas_id) REFERENCES public.igny8_content_ideas(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas__keywords_id_412c7f1d_fk_igny8_key; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas__keywords_id_412c7f1d_fk_igny8_key FOREIGN KEY (keywords_id) REFERENCES public.igny8_keywords(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_deleted_by_id_d56759d2_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_deleted_by_id_d56759d2_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_keyword_cluster_id_05df9bcf_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_keyword_cluster_id_05df9bcf_fk_igny8_clu FOREIGN KEY (keyword_cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas_keyword_objects_contentideas_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas_keyword_objects_contentideas_id_fkey FOREIGN KEY (contentideas_id) REFERENCES public.igny8_content_ideas(id) ON DELETE CASCADE;
+
+
+--
+-- Name: igny8_content_ideas_keyword_objects igny8_content_ideas_keyword_objects_keywords_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas_keyword_objects
+ ADD CONSTRAINT igny8_content_ideas_keyword_objects_keywords_id_fkey FOREIGN KEY (keywords_id) REFERENCES public.igny8_keywords(id) ON DELETE CASCADE;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_sector_id_b8096029_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_sector_id_b8096029_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_site_id_3230e85c_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_site_id_3230e85c_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_taxonomy_id_0d3f023a_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_taxonomy_id_0d3f023a_fk_igny8_sit FOREIGN KEY (taxonomy_id) REFERENCES public.igny8_site_blueprint_taxonomies(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_ideas igny8_content_ideas_tenant_id_32ee9708_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_ideas
+ ADD CONSTRAINT igny8_content_ideas_tenant_id_32ee9708_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_sector_id_2b5c2cae_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_sector_id_2b5c2cae_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_site_id_fc3c9b6c_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_site_id_fc3c9b6c_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_task_id_9555c885_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_task_id_9555c885_fk_igny8_tasks_id FOREIGN KEY (task_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters igny8_content_taxono_clusters_id_86fbd283_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms_clusters
+ ADD CONSTRAINT igny8_content_taxono_clusters_id_86fbd283_fk_igny8_clu FOREIGN KEY (clusters_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxono_content_id_2ea2cbb8_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxono_content_id_2ea2cbb8_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_relations igny8_content_taxono_content_id_541ab7bc_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_relations
+ ADD CONSTRAINT igny8_content_taxono_content_id_541ab7bc_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms_clusters igny8_content_taxono_contenttaxonomy_id_9319f812_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms_clusters
+ ADD CONSTRAINT igny8_content_taxono_contenttaxonomy_id_9319f812_fk_igny8_con FOREIGN KEY (contenttaxonomy_id) REFERENCES public.igny8_content_taxonomy_terms(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxono_deleted_by_id_572e1b5a_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxono_deleted_by_id_572e1b5a_fk_igny8_use FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxono_parent_id_55eca0e5_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxono_parent_id_55eca0e5_fk_igny8_con FOREIGN KEY (parent_id) REFERENCES public.igny8_content_taxonomy_terms(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxono_sector_id_1b2a91de_fk_igny8_sec; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxono_sector_id_1b2a91de_fk_igny8_sec FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxono_sector_id_7a49e6a4_fk_igny8_sec; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxono_sector_id_7a49e6a4_fk_igny8_sec FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxono_taxonomy_id_31c70865_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxono_taxonomy_id_31c70865_fk_igny8_sit FOREIGN KEY (taxonomy_id) REFERENCES public.igny8_site_blueprint_taxonomies(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_relations igny8_content_taxono_taxonomy_id_8aeceae2_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_relations
+ ADD CONSTRAINT igny8_content_taxono_taxonomy_id_8aeceae2_fk_igny8_con FOREIGN KEY (taxonomy_id) REFERENCES public.igny8_content_taxonomy_terms(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxono_tenant_id_76e9eba3_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxono_tenant_id_76e9eba3_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxono_tenant_id_a5bdc208_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxono_tenant_id_a5bdc208_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxonomy_map_site_id_314dff20_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxonomy_map_site_id_314dff20_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_map igny8_content_taxonomy_map_task_id_971a4870_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_map
+ ADD CONSTRAINT igny8_content_taxonomy_map_task_id_971a4870_fk_igny8_tasks_id FOREIGN KEY (task_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content_taxonomy_terms igny8_content_taxonomy_terms_site_id_3bd3e90b_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content_taxonomy_terms
+ ADD CONSTRAINT igny8_content_taxonomy_terms_site_id_3bd3e90b_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_content igny8_content_tenant_id_8cdb3050_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_content
+ ADD CONSTRAINT igny8_content_tenant_id_8cdb3050_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_core_auth_historicalaccount igny8_core_auth_hist_history_user_id_f59a3bfe_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_core_auth_historicalaccount
+ ADD CONSTRAINT igny8_core_auth_hist_history_user_id_f59a3bfe_fk_igny8_use FOREIGN KEY (history_user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_transactions igny8_credit_transac_account_id_faad8963_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_transactions
+ ADD CONSTRAINT igny8_credit_transac_account_id_faad8963_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_transactions igny8_credit_transac_payment_id_20e3edd6_fk_igny8_pay; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_transactions
+ ADD CONSTRAINT igny8_credit_transac_payment_id_20e3edd6_fk_igny8_pay FOREIGN KEY (payment_id) REFERENCES public.igny8_payments(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_transactions igny8_credit_transac_tenant_id_7a2db06a_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_transactions
+ ADD CONSTRAINT igny8_credit_transac_tenant_id_7a2db06a_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_usage_logs igny8_credit_usage_logs_account_id_fcd88d38_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_usage_logs
+ ADD CONSTRAINT igny8_credit_usage_logs_account_id_fcd88d38_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_usage_logs igny8_credit_usage_logs_site_id_8a608e0b_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_usage_logs
+ ADD CONSTRAINT igny8_credit_usage_logs_site_id_8a608e0b_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_credit_usage_logs igny8_credit_usage_logs_tenant_id_0a80666f_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_credit_usage_logs
+ ADD CONSTRAINT igny8_credit_usage_logs_tenant_id_0a80666f_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_deployment_records igny8_deployment_rec_site_blueprint_id_d5d922a6_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_deployment_records
+ ADD CONSTRAINT igny8_deployment_rec_site_blueprint_id_d5d922a6_fk_igny8_sit FOREIGN KEY (site_blueprint_id) REFERENCES public.igny8_site_blueprints(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_deployment_records igny8_deployment_records_sector_id_67edf220_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_deployment_records
+ ADD CONSTRAINT igny8_deployment_records_sector_id_67edf220_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_deployment_records igny8_deployment_records_site_id_7200c3bd_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_deployment_records
+ ADD CONSTRAINT igny8_deployment_records_site_id_7200c3bd_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_deployment_records igny8_deployment_records_tenant_id_0faff7f6_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_deployment_records
+ ADD CONSTRAINT igny8_deployment_records_tenant_id_0faff7f6_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_email_settings igny8_email_settings_updated_by_id_26aa6445_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_email_settings
+ ADD CONSTRAINT igny8_email_settings_updated_by_id_26aa6445_fk_igny8_users_id FOREIGN KEY (updated_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_global_integration_settings igny8_global_integra_updated_by_id_88f8904c_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_global_integration_settings
+ ADD CONSTRAINT igny8_global_integra_updated_by_id_88f8904c_fk_igny8_use FOREIGN KEY (updated_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_content_id_1ea50453_fk_igny8_content_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_content_id_1ea50453_fk_igny8_content_id FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_deleted_by_id_24490395_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_deleted_by_id_24490395_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_sector_id_15f9f189_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_sector_id_15f9f189_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_site_id_f9b5d77b_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_site_id_f9b5d77b_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_task_id_7ae5d1c4_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_task_id_7ae5d1c4_fk_igny8_tasks_id FOREIGN KEY (task_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_images_tenant_id_872f05a0_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_images_tenant_id_872f05a0_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_industry_sectors igny8_industry_secto_industry_id_8df3b709_fk_igny8_ind; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_industry_sectors
+ ADD CONSTRAINT igny8_industry_secto_industry_id_8df3b709_fk_igny8_ind FOREIGN KEY (industry_id) REFERENCES public.igny8_industries(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_integration_providers igny8_integration_pr_updated_by_id_6ee0fefd_fk_igny8_use; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_integration_providers
+ ADD CONSTRAINT igny8_integration_pr_updated_by_id_6ee0fefd_fk_igny8_use FOREIGN KEY (updated_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_integration_settings igny8_integration_se_tenant_id_83fc9116_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_integration_settings
+ ADD CONSTRAINT igny8_integration_se_tenant_id_83fc9116_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_invoices igny8_invoices_subscription_id_5d18ae64_fk_igny8_sub; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_invoices
+ ADD CONSTRAINT igny8_invoices_subscription_id_5d18ae64_fk_igny8_sub FOREIGN KEY (subscription_id) REFERENCES public.igny8_subscriptions(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_invoices igny8_invoices_tenant_id_9a11632e_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_invoices
+ ADD CONSTRAINT igny8_invoices_tenant_id_9a11632e_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_cluster_id_ae5295d9_fk_igny8_clusters_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_cluster_id_ae5295d9_fk_igny8_clusters_id FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_deleted_by_id_65534e4f_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_deleted_by_id_65534e4f_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_sector_id_73b8b7dc_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_sector_id_73b8b7dc_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_seed_keyword_id_14a6b9e6_fk_igny8_see; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_seed_keyword_id_14a6b9e6_fk_igny8_see FOREIGN KEY (seed_keyword_id) REFERENCES public.igny8_seed_keywords(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_site_id_8e81a236_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_site_id_8e81a236_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_keywords igny8_keywords_tenant_id_311904b7_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_keywords
+ ADD CONSTRAINT igny8_keywords_tenant_id_311904b7_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_module_enable_settings igny8_module_enable__tenant_id_0d4046ca_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_enable_settings
+ ADD CONSTRAINT igny8_module_enable__tenant_id_0d4046ca_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_module_enable_settings igny8_module_enable_settings_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_enable_settings
+ ADD CONSTRAINT igny8_module_enable_settings_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) ON DELETE CASCADE;
+
+
+--
+-- Name: igny8_module_settings igny8_module_settings_tenant_id_f7241169_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_module_settings
+ ADD CONSTRAINT igny8_module_settings_tenant_id_f7241169_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_optimization_tasks igny8_optimization_t_content_id_86ac22d5_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_optimization_tasks
+ ADD CONSTRAINT igny8_optimization_t_content_id_86ac22d5_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_optimization_tasks igny8_optimization_tasks_tenant_id_5a5d23d7_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_optimization_tasks
+ ADD CONSTRAINT igny8_optimization_tasks_tenant_id_5a5d23d7_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprint_site_blueprint_id_0c7c81ae_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprint_site_blueprint_id_0c7c81ae_fk_igny8_sit FOREIGN KEY (site_blueprint_id) REFERENCES public.igny8_site_blueprints(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprints_sector_id_c7e67972_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprints_sector_id_c7e67972_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprints_site_id_639d8b5f_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprints_site_id_639d8b5f_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_page_blueprints igny8_page_blueprints_tenant_id_974b29c4_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_page_blueprints
+ ADD CONSTRAINT igny8_page_blueprints_tenant_id_974b29c4_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_password_reset_tokens igny8_password_reset_tokens_user_id_626dface_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_password_reset_tokens
+ ADD CONSTRAINT igny8_password_reset_tokens_user_id_626dface_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_payments igny8_payments_approved_by_id_f27e58c9_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payments
+ ADD CONSTRAINT igny8_payments_approved_by_id_f27e58c9_fk_igny8_users_id FOREIGN KEY (approved_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_payments igny8_payments_invoice_id_b54c85cb_fk_igny8_invoices_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payments
+ ADD CONSTRAINT igny8_payments_invoice_id_b54c85cb_fk_igny8_invoices_id FOREIGN KEY (invoice_id) REFERENCES public.igny8_invoices(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_payments igny8_payments_tenant_id_36c10015_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_payments
+ ADD CONSTRAINT igny8_payments_tenant_id_36c10015_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_plan_limit_usage igny8_plan_limit_usage_tenant_id_6d268a68_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_plan_limit_usage
+ ADD CONSTRAINT igny8_plan_limit_usage_tenant_id_6d268a68_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_rec_content_id_36300c06_fk_igny8_con; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_rec_content_id_36300c06_fk_igny8_con FOREIGN KEY (content_id) REFERENCES public.igny8_content(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_rec_site_blueprint_id_48b25b80_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_rec_site_blueprint_id_48b25b80_fk_igny8_sit FOREIGN KEY (site_blueprint_id) REFERENCES public.igny8_site_blueprints(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_records_sector_id_08011e81_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_records_sector_id_08011e81_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_records_site_id_60d88f84_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_records_site_id_60d88f84_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_records igny8_publishing_records_tenant_id_2c597c29_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_records
+ ADD CONSTRAINT igny8_publishing_records_tenant_id_2c597c29_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_settings igny8_publishing_set_tenant_id_92528ac1_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_settings
+ ADD CONSTRAINT igny8_publishing_set_tenant_id_92528ac1_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_publishing_settings igny8_publishing_settings_site_id_fe270c2c_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_publishing_settings
+ ADD CONSTRAINT igny8_publishing_settings_site_id_fe270c2c_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_scheduled_tasks igny8_scheduled_task_automation_rule_id_cd11cdfb_fk_igny8_aut; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_scheduled_tasks
+ ADD CONSTRAINT igny8_scheduled_task_automation_rule_id_cd11cdfb_fk_igny8_aut FOREIGN KEY (automation_rule_id) REFERENCES public.igny8_automation_rules(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_scheduled_tasks igny8_scheduled_tasks_tenant_id_bbd4c65d_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_scheduled_tasks
+ ADD CONSTRAINT igny8_scheduled_tasks_tenant_id_bbd4c65d_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sectors igny8_sectors_deleted_by_id_4690d4e3_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_deleted_by_id_4690d4e3_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sectors igny8_sectors_industry_sector_id_75f65d16_fk_igny8_ind; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_industry_sector_id_75f65d16_fk_igny8_ind FOREIGN KEY (industry_sector_id) REFERENCES public.igny8_industry_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sectors igny8_sectors_site_id_7a8b5aae_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_site_id_7a8b5aae_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sectors igny8_sectors_tenant_id_e752f511_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sectors
+ ADD CONSTRAINT igny8_sectors_tenant_id_e752f511_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_seed_keywords igny8_seed_keywords_industry_id_4d56b762_fk_igny8_industries_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_seed_keywords
+ ADD CONSTRAINT igny8_seed_keywords_industry_id_4d56b762_fk_igny8_industries_id FOREIGN KEY (industry_id) REFERENCES public.igny8_industries(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_seed_keywords igny8_seed_keywords_sector_id_37329a1b_fk_igny8_ind; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_seed_keywords
+ ADD CONSTRAINT igny8_seed_keywords_sector_id_37329a1b_fk_igny8_ind FOREIGN KEY (sector_id) REFERENCES public.igny8_industry_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_cluster_id_e724c458_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_cluster_id_e724c458_fk_igny8_clu FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters igny8_site_blueprint_clusters_id_8d93d420_fk_igny8_clu; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies_clusters
+ ADD CONSTRAINT igny8_site_blueprint_clusters_id_8d93d420_fk_igny8_clu FOREIGN KEY (clusters_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_sector_id_34c615f1_fk_igny8_sec; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_sector_id_34c615f1_fk_igny8_sec FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_sector_id_d80376a0_fk_igny8_sec; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_sector_id_d80376a0_fk_igny8_sec FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_site_blueprint_id_6895e46f_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_site_blueprint_id_6895e46f_fk_igny8_sit FOREIGN KEY (site_blueprint_id) REFERENCES public.igny8_site_blueprints(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_site_blueprint_id_ca0ec20d_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_site_blueprint_id_ca0ec20d_fk_igny8_sit FOREIGN KEY (site_blueprint_id) REFERENCES public.igny8_site_blueprints(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_site_id_d1987566_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_site_id_d1987566_fk_igny8_sit FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_site_id_f29f48af_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_site_id_f29f48af_fk_igny8_sit FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies_clusters igny8_site_blueprint_siteblueprinttaxonom_d523339b_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies_clusters
+ ADD CONSTRAINT igny8_site_blueprint_siteblueprinttaxonom_d523339b_fk_igny8_sit FOREIGN KEY (siteblueprinttaxonomy_id) REFERENCES public.igny8_site_blueprint_taxonomies(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_clusters igny8_site_blueprint_tenant_id_3cbd9f72_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_clusters
+ ADD CONSTRAINT igny8_site_blueprint_tenant_id_3cbd9f72_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprint_taxonomies igny8_site_blueprint_tenant_id_4921a604_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprint_taxonomies
+ ADD CONSTRAINT igny8_site_blueprint_tenant_id_4921a604_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprints igny8_site_blueprints_sector_id_b90c0c7c_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprints
+ ADD CONSTRAINT igny8_site_blueprints_sector_id_b90c0c7c_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprints igny8_site_blueprints_site_id_6b5a9bc5_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprints
+ ADD CONSTRAINT igny8_site_blueprints_site_id_6b5a9bc5_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_blueprints igny8_site_blueprints_tenant_id_44178c19_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_blueprints
+ ADD CONSTRAINT igny8_site_blueprints_tenant_id_44178c19_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_integrations igny8_site_integrations_site_id_35ea4196_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_integrations
+ ADD CONSTRAINT igny8_site_integrations_site_id_35ea4196_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_integrations igny8_site_integrations_tenant_id_202a66a2_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_integrations
+ ADD CONSTRAINT igny8_site_integrations_tenant_id_202a66a2_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_user_access igny8_site_user_access_granted_by_id_4e0447c0_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_user_access
+ ADD CONSTRAINT igny8_site_user_access_granted_by_id_4e0447c0_fk_igny8_users_id FOREIGN KEY (granted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_user_access igny8_site_user_access_site_id_4076367d_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_user_access
+ ADD CONSTRAINT igny8_site_user_access_site_id_4076367d_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_site_user_access igny8_site_user_access_user_id_9950be70_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_site_user_access
+ ADD CONSTRAINT igny8_site_user_access_user_id_9950be70_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sites igny8_sites_deleted_by_id_3cb42f45_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sites
+ ADD CONSTRAINT igny8_sites_deleted_by_id_3cb42f45_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sites igny8_sites_industry_id_2d95f01c_fk_igny8_industries_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sites
+ ADD CONSTRAINT igny8_sites_industry_id_2d95f01c_fk_igny8_industries_id FOREIGN KEY (industry_id) REFERENCES public.igny8_industries(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sites igny8_sites_tenant_id_42d927b0_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sites
+ ADD CONSTRAINT igny8_sites_tenant_id_42d927b0_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_strategies igny8_strategies_cloned_from_id_00d2dc5b_fk_igny8_glo; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_strategies
+ ADD CONSTRAINT igny8_strategies_cloned_from_id_00d2dc5b_fk_igny8_glo FOREIGN KEY (cloned_from_id) REFERENCES public.igny8_global_strategies(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_strategies igny8_strategies_sector_id_135e28a0_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_strategies
+ ADD CONSTRAINT igny8_strategies_sector_id_135e28a0_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_strategies igny8_strategies_tenant_id_696f6cbc_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_strategies
+ ADD CONSTRAINT igny8_strategies_tenant_id_696f6cbc_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_subscriptions igny8_subscriptions_plan_id_db72c395_fk_igny8_plans_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_subscriptions
+ ADD CONSTRAINT igny8_subscriptions_plan_id_db72c395_fk_igny8_plans_id FOREIGN KEY (plan_id) REFERENCES public.igny8_plans(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_subscriptions igny8_subscriptions_tenant_id_a9333321_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_subscriptions
+ ADD CONSTRAINT igny8_subscriptions_tenant_id_a9333321_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sync_events igny8_sync_events_integration_id_34e7fb2d_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sync_events
+ ADD CONSTRAINT igny8_sync_events_integration_id_34e7fb2d_fk_igny8_sit FOREIGN KEY (integration_id) REFERENCES public.igny8_site_integrations(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sync_events igny8_sync_events_site_id_3fd61740_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sync_events
+ ADD CONSTRAINT igny8_sync_events_site_id_3fd61740_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_sync_events igny8_sync_events_tenant_id_f7680236_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_sync_events
+ ADD CONSTRAINT igny8_sync_events_tenant_id_f7680236_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_system_ai_settings igny8_system_ai_settings_updated_by_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_system_ai_settings
+ ADD CONSTRAINT igny8_system_ai_settings_updated_by_id_fkey FOREIGN KEY (updated_by_id) REFERENCES public.igny8_users(id) ON DELETE SET NULL;
+
+
+--
+-- Name: igny8_images igny8_task_images_sector_id_8260471a_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_task_images_sector_id_8260471a_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_task_images_site_id_07174efc_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_task_images_site_id_07174efc_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_images igny8_task_images_tenant_id_abfc1895_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_images
+ ADD CONSTRAINT igny8_task_images_tenant_id_abfc1895_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_cluster_id_23944daa_fk_igny8_clusters_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_cluster_id_23944daa_fk_igny8_clusters_id FOREIGN KEY (cluster_id) REFERENCES public.igny8_clusters(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_deleted_by_id_51673724_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_deleted_by_id_51673724_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_idea_id_ed17e490_fk_igny8_content_ideas_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_idea_id_ed17e490_fk_igny8_content_ideas_id FOREIGN KEY (idea_id) REFERENCES public.igny8_content_ideas(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks_keyword_objects igny8_tasks_keyword__keywords_id_569d1241_fk_igny8_key; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks_keyword_objects
+ ADD CONSTRAINT igny8_tasks_keyword__keywords_id_569d1241_fk_igny8_key FOREIGN KEY (keywords_id) REFERENCES public.igny8_keywords(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks_keyword_objects igny8_tasks_keyword_objects_tasks_id_9995ae7c_fk_igny8_tasks_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks_keyword_objects
+ ADD CONSTRAINT igny8_tasks_keyword_objects_tasks_id_9995ae7c_fk_igny8_tasks_id FOREIGN KEY (tasks_id) REFERENCES public.igny8_tasks(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_sector_id_bd837f4e_fk_igny8_sectors_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_sector_id_bd837f4e_fk_igny8_sectors_id FOREIGN KEY (sector_id) REFERENCES public.igny8_sectors(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_site_id_5e333376_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_site_id_5e333376_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_taxonomy_id_a6ff9f2a_fk_igny8_sit; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_taxonomy_id_a6ff9f2a_fk_igny8_sit FOREIGN KEY (taxonomy_id) REFERENCES public.igny8_site_blueprint_taxonomies(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tasks igny8_tasks_tenant_id_b425532e_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tasks
+ ADD CONSTRAINT igny8_tasks_tenant_id_b425532e_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tenants igny8_tenants_deleted_by_id_6d14d9d8_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tenants
+ ADD CONSTRAINT igny8_tenants_deleted_by_id_6d14d9d8_fk_igny8_users_id FOREIGN KEY (deleted_by_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tenants igny8_tenants_owner_id_c822e77f_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tenants
+ ADD CONSTRAINT igny8_tenants_owner_id_c822e77f_fk_igny8_users_id FOREIGN KEY (owner_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_tenants igny8_tenants_plan_id_b3b756a8_fk_igny8_plans_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_tenants
+ ADD CONSTRAINT igny8_tenants_plan_id_b3b756a8_fk_igny8_plans_id FOREIGN KEY (plan_id) REFERENCES public.igny8_plans(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_user_settings igny8_user_settings_tenant_id_1ce81a47_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_user_settings
+ ADD CONSTRAINT igny8_user_settings_tenant_id_1ce81a47_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_user_settings igny8_user_settings_user_id_2f9a220d_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_user_settings
+ ADD CONSTRAINT igny8_user_settings_user_id_2f9a220d_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_users_groups igny8_users_groups_group_id_e316e5df_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_groups
+ ADD CONSTRAINT igny8_users_groups_group_id_e316e5df_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_users_groups igny8_users_groups_user_id_6584a667_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_groups
+ ADD CONSTRAINT igny8_users_groups_user_id_6584a667_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_users igny8_users_tenant_id_01c0c5b1_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users
+ ADD CONSTRAINT igny8_users_tenant_id_01c0c5b1_fk_igny8_tenants_id FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_users_user_permissions igny8_users_user_per_permission_id_3681cd29_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_user_permissions
+ ADD CONSTRAINT igny8_users_user_per_permission_id_3681cd29_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: igny8_users_user_permissions igny8_users_user_permissions_user_id_3b46d75a_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.igny8_users_user_permissions
+ ADD CONSTRAINT igny8_users_user_permissions_user_id_3b46d75a_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: notifications_notification notifications_notifi_content_type_id_74ab3a2c_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.notifications_notification
+ ADD CONSTRAINT notifications_notifi_content_type_id_74ab3a2c_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: notifications_notification notifications_notifi_tenant_id_156c9e0d_fk_igny8_ten; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.notifications_notification
+ ADD CONSTRAINT notifications_notifi_tenant_id_156c9e0d_fk_igny8_ten FOREIGN KEY (tenant_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: notifications_notification notifications_notification_site_id_ddf4ca85_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.notifications_notification
+ ADD CONSTRAINT notifications_notification_site_id_ddf4ca85_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: notifications_notification notifications_notification_user_id_b5e8c0ff_fk_igny8_users_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.notifications_notification
+ ADD CONSTRAINT notifications_notification_user_id_b5e8c0ff_fk_igny8_users_id FOREIGN KEY (user_id) REFERENCES public.igny8_users(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_downloads plugin_downloads_account_id_49603a25_fk_igny8_tenants_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_downloads
+ ADD CONSTRAINT plugin_downloads_account_id_49603a25_fk_igny8_tenants_id FOREIGN KEY (account_id) REFERENCES public.igny8_tenants(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_downloads plugin_downloads_plugin_id_60e1680f_fk_plugins_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_downloads
+ ADD CONSTRAINT plugin_downloads_plugin_id_60e1680f_fk_plugins_id FOREIGN KEY (plugin_id) REFERENCES public.plugins(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_downloads plugin_downloads_site_id_b0665852_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_downloads
+ ADD CONSTRAINT plugin_downloads_site_id_b0665852_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_downloads plugin_downloads_version_id_e296a8d7_fk_plugin_versions_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_downloads
+ ADD CONSTRAINT plugin_downloads_version_id_e296a8d7_fk_plugin_versions_id FOREIGN KEY (version_id) REFERENCES public.plugin_versions(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_installations plugin_installations_current_version_id_ed335097_fk_plugin_ve; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_current_version_id_ed335097_fk_plugin_ve FOREIGN KEY (current_version_id) REFERENCES public.plugin_versions(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_installations plugin_installations_pending_update_id_63c50022_fk_plugin_ve; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_pending_update_id_63c50022_fk_plugin_ve FOREIGN KEY (pending_update_id) REFERENCES public.plugin_versions(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_installations plugin_installations_plugin_id_23ef6cd7_fk_plugins_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_plugin_id_23ef6cd7_fk_plugins_id FOREIGN KEY (plugin_id) REFERENCES public.plugins(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_installations plugin_installations_site_id_fc76129e_fk_igny8_sites_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_installations
+ ADD CONSTRAINT plugin_installations_site_id_fc76129e_fk_igny8_sites_id FOREIGN KEY (site_id) REFERENCES public.igny8_sites(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: plugin_versions plugin_versions_plugin_id_baf841ae_fk_plugins_id; Type: FK CONSTRAINT; Schema: public; Owner: igny8
+--
+
+ALTER TABLE ONLY public.plugin_versions
+ ADD CONSTRAINT plugin_versions_plugin_id_baf841ae_fk_plugins_id FOREIGN KEY (plugin_id) REFERENCES public.plugins(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: pg_database_owner
+--
+
+GRANT USAGE ON SCHEMA public TO igny8_app;
+
+
+--
+-- Name: TABLE admin_interface_theme; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.admin_interface_theme TO igny8_app;
+
+
+--
+-- Name: TABLE auth_group; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_group TO igny8_app;
+
+
+--
+-- Name: TABLE auth_group_permissions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_group_permissions TO igny8_app;
+
+
+--
+-- Name: TABLE auth_permission; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_permission TO igny8_app;
+
+
+--
+-- Name: TABLE auth_user; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_user TO igny8_app;
+
+
+--
+-- Name: TABLE auth_user_groups; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_user_groups TO igny8_app;
+
+
+--
+-- Name: TABLE auth_user_user_permissions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.auth_user_user_permissions TO igny8_app;
+
+
+--
+-- Name: TABLE basefiles; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.basefiles TO igny8_app;
+
+
+--
+-- Name: TABLE billing_historicalaimodelconfig; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.billing_historicalaimodelconfig TO igny8_app;
+
+
+--
+-- Name: TABLE billing_historicalcreditcostconfig; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.billing_historicalcreditcostconfig TO igny8_app;
+
+
+--
+-- Name: TABLE billing_historicalpayment; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.billing_historicalpayment TO igny8_app;
+
+
+--
+-- Name: TABLE cdimages; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.cdimages TO igny8_app;
+
+
+--
+-- Name: TABLE client; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.client TO igny8_app;
+
+
+--
+-- Name: TABLE counters; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.counters TO igny8_app;
+
+
+--
+-- Name: TABLE device; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.device TO igny8_app;
+
+
+--
+-- Name: TABLE django_admin_log; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_admin_log TO igny8_app;
+
+
+--
+-- Name: TABLE django_celery_results_chordcounter; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_celery_results_chordcounter TO igny8_app;
+
+
+--
+-- Name: TABLE django_celery_results_groupresult; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_celery_results_groupresult TO igny8_app;
+
+
+--
+-- Name: TABLE django_celery_results_taskresult; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_celery_results_taskresult TO igny8_app;
+
+
+--
+-- Name: TABLE django_content_type; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_content_type TO igny8_app;
+
+
+--
+-- Name: TABLE django_migrations; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_migrations TO igny8_app;
+
+
+--
+-- Name: TABLE django_session; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.django_session TO igny8_app;
+
+
+--
+-- Name: TABLE file; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.file TO igny8_app;
+
+
+--
+-- Name: TABLE filename; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.filename TO igny8_app;
+
+
+--
+-- Name: TABLE fileset; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.fileset TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_account_payment_methods; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_account_payment_methods TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_account_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_account_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_ai_model_config; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_ai_model_config TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_ai_prompts; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_ai_prompts TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_ai_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_ai_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_ai_task_logs; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_ai_task_logs TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_author_profiles; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_author_profiles TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_automation_configs; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_automation_configs TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_automation_rules; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_automation_rules TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_automation_runs; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_automation_runs TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_billing_configuration; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_billing_configuration TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_clusters; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_clusters TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_attributes; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_attributes TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_cluster_map; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_cluster_map TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_ideas; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_ideas TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_ideas_keyword_objects; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_ideas_keyword_objects TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_taxonomy_map; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_taxonomy_map TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_taxonomy_relations; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_taxonomy_relations TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_taxonomy_terms; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_taxonomy_terms TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_content_taxonomy_terms_clusters; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_content_taxonomy_terms_clusters TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_core_auth_historicalaccount; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_core_auth_historicalaccount TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_credit_cost_config; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_credit_cost_config TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_credit_packages; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_credit_packages TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_credit_transactions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_credit_transactions TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_credit_usage_logs; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_credit_usage_logs TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_deployment_records; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_deployment_records TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_email_log; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_email_log TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_email_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_email_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_email_templates; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_email_templates TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_global_ai_prompts; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_global_ai_prompts TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_global_author_profiles; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_global_author_profiles TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_global_integration_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_global_integration_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_global_module_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_global_module_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_global_strategies; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_global_strategies TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_images; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_images TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_industries; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_industries TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_industry_sectors; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_industry_sectors TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_integration_providers; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_integration_providers TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_integration_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_integration_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_invoices; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_invoices TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_keywords; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_keywords TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_module_enable_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_module_enable_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_module_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_module_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_optimization_tasks; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_optimization_tasks TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_page_blueprints; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_page_blueprints TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_password_reset_tokens; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_password_reset_tokens TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_payment_method_config; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_payment_method_config TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_payments; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_payments TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_plan_limit_usage; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_plan_limit_usage TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_plans; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_plans TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_publishing_records; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_publishing_records TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_publishing_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_publishing_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_scheduled_tasks; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_scheduled_tasks TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_sectors; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_sectors TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_seed_keywords; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_seed_keywords TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_blueprint_clusters; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_blueprint_clusters TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_blueprint_taxonomies; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_blueprint_taxonomies TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_blueprint_taxonomies_clusters; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_blueprint_taxonomies_clusters TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_blueprints; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_blueprints TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_builder_audience_profiles; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_builder_audience_profiles TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_builder_brand_personalities; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_builder_brand_personalities TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_builder_business_types; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_builder_business_types TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_builder_hero_imagery; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_builder_hero_imagery TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_integrations; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_integrations TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_site_user_access; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_site_user_access TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_sites; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_sites TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_strategies; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_strategies TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_subscriptions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_subscriptions TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_sync_events; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_sync_events TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_system_ai_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_system_ai_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_system_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_system_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_tasks; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_tasks TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_tasks_keyword_objects; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_tasks_keyword_objects TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_tenants; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_tenants TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_user_settings; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_user_settings TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_users; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_users TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_users_groups; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_users_groups TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_users_user_permissions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_users_user_permissions TO igny8_app;
+
+
+--
+-- Name: TABLE igny8_webhook_events; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.igny8_webhook_events TO igny8_app;
+
+
+--
+-- Name: TABLE job; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.job TO igny8_app;
+
+
+--
+-- Name: TABLE jobhisto; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.jobhisto TO igny8_app;
+
+
+--
+-- Name: TABLE jobmedia; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.jobmedia TO igny8_app;
+
+
+--
+-- Name: TABLE location; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.location TO igny8_app;
+
+
+--
+-- Name: TABLE locationlog; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.locationlog TO igny8_app;
+
+
+--
+-- Name: TABLE log; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.log TO igny8_app;
+
+
+--
+-- Name: TABLE media; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.media TO igny8_app;
+
+
+--
+-- Name: TABLE mediatype; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.mediatype TO igny8_app;
+
+
+--
+-- Name: TABLE notifications_notification; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.notifications_notification TO igny8_app;
+
+
+--
+-- Name: TABLE path; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.path TO igny8_app;
+
+
+--
+-- Name: TABLE pathhierarchy; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.pathhierarchy TO igny8_app;
+
+
+--
+-- Name: TABLE pathvisibility; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.pathvisibility TO igny8_app;
+
+
+--
+-- Name: TABLE plugin_downloads; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.plugin_downloads TO igny8_app;
+
+
+--
+-- Name: TABLE plugin_installations; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.plugin_installations TO igny8_app;
+
+
+--
+-- Name: TABLE plugin_versions; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.plugin_versions TO igny8_app;
+
+
+--
+-- Name: TABLE plugins; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.plugins TO igny8_app;
+
+
+--
+-- Name: TABLE pool; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.pool TO igny8_app;
+
+
+--
+-- Name: TABLE restoreobject; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.restoreobject TO igny8_app;
+
+
+--
+-- Name: TABLE snapshot; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.snapshot TO igny8_app;
+
+
+--
+-- Name: TABLE status; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.status TO igny8_app;
+
+
+--
+-- Name: TABLE storage; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.storage TO igny8_app;
+
+
+--
+-- Name: TABLE unsavedfiles; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.unsavedfiles TO igny8_app;
+
+
+--
+-- Name: TABLE version; Type: ACL; Schema: public; Owner: igny8
+--
+
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.version TO igny8_app;
+
+
+--
+-- Name: DEFAULT PRIVILEGES FOR TABLES; Type: DEFAULT ACL; Schema: public; Owner: igny8
+--
+
+ALTER DEFAULT PRIVILEGES FOR ROLE igny8 IN SCHEMA public GRANT SELECT,INSERT,DELETE,UPDATE ON TABLES TO igny8_app;
+
+
+--
+-- PostgreSQL database dump complete
+--
+
+\unrestrict PUVE48TDasY77PgrE54IWB6JYHS4RdcgJkolpMhpw3CQikDoinRpBJ8K3EZ8pTM
+
diff --git a/backups/config/20260113/ai_models.json b/backups/config/20260113/ai_models.json
new file mode 100644
index 00000000..6fe9ce7b
--- /dev/null
+++ b/backups/config/20260113/ai_models.json
@@ -0,0 +1,191 @@
+[
+{
+ "model": "billing.aimodelconfig",
+ "pk": 12,
+ "fields": {
+ "model_name": "bytedance:seedream@4.5",
+ "model_type": "image",
+ "provider": "runware",
+ "display_name": "Seedream 4.5 - High Quality",
+ "is_default": false,
+ "is_active": true,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": null,
+ "credits_per_image": 5,
+ "quality_tier": "quality_option2",
+ "landscape_size": "2560x1440",
+ "square_size": "2048x2048",
+ "valid_sizes": [
+ "2048x2048",
+ "2304x1728",
+ "2560x1440",
+ "1728x2304",
+ "1440x2560"
+ ],
+ "max_tokens": null,
+ "context_window": null,
+ "capabilities": {
+ "high_resolution": true,
+ "provider_settings": {
+ "bytedance": {
+ "maxSequentialImages": 4
+ }
+ },
+ "max_sequential_images": 4
+ },
+ "created_at": "2026-01-12T09:31:14.196Z",
+ "updated_at": "2026-01-12T18:26:59.096Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 5,
+ "fields": {
+ "model_name": "dall-e-3",
+ "model_type": "image",
+ "provider": "openai",
+ "display_name": "DALL-E 3 - HD Quality",
+ "is_default": false,
+ "is_active": false,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": null,
+ "credits_per_image": 5,
+ "quality_tier": "quality",
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": null,
+ "capabilities": {},
+ "created_at": "2025-12-24T01:21:08.347Z",
+ "updated_at": "2026-01-03T21:46:19.717Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 6,
+ "fields": {
+ "model_name": "google:4@2",
+ "model_type": "image",
+ "provider": "runware",
+ "display_name": "Nano Banana - Premium",
+ "is_default": false,
+ "is_active": false,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": null,
+ "credits_per_image": 15,
+ "quality_tier": "premium",
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": null,
+ "capabilities": {},
+ "created_at": "2025-12-24T01:21:08.347Z",
+ "updated_at": "2026-01-03T20:12:21.724Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 10,
+ "fields": {
+ "model_name": "runware:97@1",
+ "model_type": "image",
+ "provider": "runware",
+ "display_name": "Hi Dream Full - Basic",
+ "is_default": true,
+ "is_active": true,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": null,
+ "credits_per_image": 1,
+ "quality_tier": "basic",
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": null,
+ "capabilities": {},
+ "created_at": "2026-01-03T16:54:17.244Z",
+ "updated_at": "2026-01-12T23:39:32.397Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 3,
+ "fields": {
+ "model_name": "gpt-4o",
+ "model_type": "text",
+ "provider": "openai",
+ "display_name": "GPT-4o - High Quality with Vision",
+ "is_default": false,
+ "is_active": false,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": 1000,
+ "credits_per_image": null,
+ "quality_tier": null,
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": 128000,
+ "capabilities": {},
+ "created_at": "2025-12-24T01:21:08.346Z",
+ "updated_at": "2025-12-24T01:21:08.346Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 1,
+ "fields": {
+ "model_name": "gpt-4o-mini",
+ "model_type": "text",
+ "provider": "openai",
+ "display_name": "GPT-4o mini - Fast & Affordable",
+ "is_default": true,
+ "is_active": true,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": 10000,
+ "credits_per_image": null,
+ "quality_tier": null,
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": 128000,
+ "capabilities": {},
+ "created_at": "2025-12-24T01:21:08.345Z",
+ "updated_at": "2026-01-04T22:12:40.728Z"
+ }
+},
+{
+ "model": "billing.aimodelconfig",
+ "pk": 4,
+ "fields": {
+ "model_name": "gpt-5.1",
+ "model_type": "text",
+ "provider": "openai",
+ "display_name": "GPT-5.1 - Premium",
+ "is_default": false,
+ "is_active": true,
+ "cost_per_1k_input": null,
+ "cost_per_1k_output": null,
+ "tokens_per_credit": 1000,
+ "credits_per_image": null,
+ "quality_tier": null,
+ "landscape_size": null,
+ "square_size": "1024x1024",
+ "valid_sizes": [],
+ "max_tokens": null,
+ "context_window": 8192,
+ "capabilities": {},
+ "created_at": "2025-12-24T01:21:08.347Z",
+ "updated_at": "2026-01-03T23:49:12.914Z"
+ }
+}
+]
diff --git a/backups/config/20260113/author_profiles.json b/backups/config/20260113/author_profiles.json
new file mode 100644
index 00000000..0d4f101c
--- /dev/null
+++ b/backups/config/20260113/author_profiles.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/backups/config/20260113/credit_costs.json b/backups/config/20260113/credit_costs.json
new file mode 100644
index 00000000..2c0cdf02
--- /dev/null
+++ b/backups/config/20260113/credit_costs.json
@@ -0,0 +1,102 @@
+[
+{
+ "model": "billing.creditcostconfig",
+ "pk": "clustering",
+ "fields": {
+ "display_name": "Keyword Clustering",
+ "base_credits": 1,
+ "is_active": true,
+ "description": "AI-powered keyword clustering into semantic groups"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "content_generation",
+ "fields": {
+ "display_name": "Content Generation",
+ "base_credits": 1,
+ "is_active": true,
+ "description": "AI-powered article content generation"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "idea_generation",
+ "fields": {
+ "display_name": "Content Ideas Generation",
+ "base_credits": 1,
+ "is_active": true,
+ "description": "Generate content ideas from keyword clusters"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "image_generation",
+ "fields": {
+ "display_name": "Image Generation",
+ "base_credits": 1,
+ "is_active": true,
+ "description": "AI-powered image generation"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "image_prompt_extraction",
+ "fields": {
+ "display_name": "Image Prompt Extraction",
+ "base_credits": 1,
+ "is_active": true,
+ "description": "Extract image prompts from content"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "linking",
+ "fields": {
+ "display_name": "Internal Linking",
+ "base_credits": 1,
+ "is_active": false,
+ "description": "AI-powered internal link suggestions"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "optimization",
+ "fields": {
+ "display_name": "Content Optimization",
+ "base_credits": 1,
+ "is_active": false,
+ "description": "AI-powered content optimization"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "reparse",
+ "fields": {
+ "display_name": "Content Reparse",
+ "base_credits": 1,
+ "is_active": false,
+ "description": "Reparse existing content"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "site_page_generation",
+ "fields": {
+ "display_name": "Site Page Generation",
+ "base_credits": 1,
+ "is_active": false,
+ "description": "Generate site pages from blueprint"
+ }
+},
+{
+ "model": "billing.creditcostconfig",
+ "pk": "site_structure_generation",
+ "fields": {
+ "display_name": "Site Structure Generation",
+ "base_credits": 1,
+ "is_active": false,
+ "description": "Generate complete site blueprint"
+ }
+}
+]
diff --git a/backups/config/20260113/export_metadata.json b/backups/config/20260113/export_metadata.json
new file mode 100644
index 00000000..706ed32d
--- /dev/null
+++ b/backups/config/20260113/export_metadata.json
@@ -0,0 +1,22 @@
+{
+ "exported_at": "2026-01-13T03:08:16.424735",
+ "django_version": "5.2.10",
+ "database": {
+ "engine": "postgresql",
+ "name": "igny8_db"
+ },
+ "successful_exports": [
+ "plans",
+ "credit_costs",
+ "ai_models",
+ "global_integrations",
+ "industries",
+ "sectors",
+ "seed_keywords",
+ "author_profiles",
+ "prompts",
+ "global_prompts"
+ ],
+ "failed_exports": [],
+ "export_count": 10
+}
\ No newline at end of file
diff --git a/backups/config/20260113/global_integrations.json b/backups/config/20260113/global_integrations.json
new file mode 100644
index 00000000..a1d3e6d5
--- /dev/null
+++ b/backups/config/20260113/global_integrations.json
@@ -0,0 +1,32 @@
+[
+{
+ "model": "system.globalintegrationsettings",
+ "pk": 1,
+ "fields": {
+ "openai_api_key": "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",
+ "openai_model": "gpt-4o-mini",
+ "openai_temperature": 0.7,
+ "openai_max_tokens": 16000,
+ "anthropic_api_key": "",
+ "anthropic_model": "claude-3-5-sonnet-20241022",
+ "anthropic_temperature": 0.7,
+ "anthropic_max_tokens": 8192,
+ "default_text_provider": "openai",
+ "dalle_api_key": "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",
+ "dalle_model": "dall-e-3",
+ "dalle_size": "1792x1024",
+ "runware_api_key": "tuHmZhhyUcArJUQ3r0Jiw8ViPaiit0Z3",
+ "runware_model": "bria:10@1",
+ "bria_api_key": "",
+ "bria_model": "bria-2.3",
+ "default_image_service": "openai",
+ "image_quality": "hd",
+ "image_style": "realistic",
+ "max_in_article_images": 4,
+ "desktop_image_size": "1024x1024",
+ "is_active": true,
+ "last_updated": "2026-01-03T21:54:01.912Z",
+ "updated_by": null
+ }
+}
+]
diff --git a/backups/config/20260113/global_prompts.json b/backups/config/20260113/global_prompts.json
new file mode 100644
index 00000000..1545b230
--- /dev/null
+++ b/backups/config/20260113/global_prompts.json
@@ -0,0 +1,177 @@
+[
+{
+ "model": "system.globalaiprompt",
+ "pk": 1,
+ "fields": {
+ "prompt_type": "clustering",
+ "prompt_value": "# Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n \"keywords\": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"...\",\r\n \"description\": \"...\",\r\n \"keywords\": [\"...\", \"...\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- \"best foot massagers for plantar fasciitis\"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- \"heated shiatsu back massager\"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- \"are back massagers safe during pregnancy\"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - \"what causes plantar fasciitis\" → \"best treatments for plantar fasciitis\" → \"foot massagers for plantar fasciitis\"\r\n \r\n- **General → Specific → Variant**\r\n - \"foot massagers\" → \"shiatsu foot massagers\" → \"heated shiatsu foot massagers\"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - \"do vitamin c serums work\" → \"how vitamin c brightens skin\" → \"best vitamin c serums\" → \"vitamin c vs retinol\"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - \"heated massagers\" → \"heated vs unheated massagers\" → \"heated massagers for arthritis\"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ \"foot massagers for plantar fasciitis\" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ \"vitamin c serums for brightening\" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ \"massagers\" (too broad, no natural ecosystem)\r\n- ❌ \"renpho foot massager cord length\" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - \"back massager\" + \"back support pillow\" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"[Natural, SEO-relevant cluster name representing the root topic]\",\r\n \"description\": \"[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]\",\r\n \"keywords\": [\"keyword 1\", \"keyword 2\", \"keyword 3\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- \"Foot Massagers for Plantar Fasciitis Treatment\"\r\n- \"Organic Cotton Bedding for Summer\"\r\n- \"Vitamin C Serums for Skin Brightening\"\r\n- \"Waterproof Car Trunk Organizers\"\r\n\r\n**Poor Cluster Names:**\r\n- \"Massagers\" (too broad)\r\n- \"Products\" (meaningless)\r\n- \"Heated\" (just a feature, not a topic)\r\n- \"Queries about safety\" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n\"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY].\"\r\n\r\n**Example:**\r\n\"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options.\"\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** \"All keywords with 'heated' go together\"\r\n❌ **Forced categorization:** \"Must fit everything into clusters\"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use \"informational\" or \"commercial\" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** \"massage\" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n \"name\": \"Heated Shiatsu Back Massagers for Pain Relief\",\r\n \"description\": \"This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.\",\r\n \"keywords\": [\r\n \"heated back massagers\",\r\n \"shiatsu back massager with heat\",\r\n \"best heated massagers for back pain\",\r\n \"do heated massagers help muscle pain\",\r\n \"heated vs unheated back massagers\",\r\n \"shiatsu massage for lower back pain\"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n \"name\": \"Organic Cotton Bed Sheets for Hot Sleepers\",\r\n \"description\": \"This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.\",\r\n \"keywords\": [\r\n \"organic cotton sheets for summer\",\r\n \"best cooling cotton bed sheets\",\r\n \"breathable organic cotton bedding\",\r\n \"cotton vs linen sheets for hot sleepers\",\r\n \"organic cotton king size sheets\",\r\n \"are cotton sheets good for hot weather\"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n \"name\": \"Massager Products\",\r\n \"keywords\": [\r\n \"foot massagers\",\r\n \"back massagers\", \r\n \"neck massagers\",\r\n \"massage oils\",\r\n \"massage chairs\"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word \"massage\" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters.",
+ "description": "",
+ "variables": {
+ "clusters": [
+ {
+ "name": "...",
+ "keywords": [
+ "...",
+ "...",
+ "..."
+ ],
+ "description": "..."
+ }
+ ]
+ },
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-20T19:25:26.256Z",
+ "created_at": "2025-12-20T12:53:51.902Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 3,
+ "fields": {
+ "prompt_type": "content_generation",
+ "prompt_value": "# Editorial Content Generator\r\n\r\nGenerate complete, SEO-optimized HTML content from the provided outline.\r\n\r\n---\r\n\r\n## INPUT\r\n\r\n**CONTENT IDEA:**\r\n[IGNY8_IDEA]\r\n\r\n**KEYWORD CLUSTER:**\r\n[IGNY8_CLUSTER]\r\n\r\n**KEYWORDS:**\r\n[IGNY8_KEYWORDS]\r\n\r\n---\r\n\r\n## OUTPUT FORMAT\r\n\r\n\r\n{\r\n \"title\": \"string\",\r\n \"meta_title\": \"string (max 60 chars)\",\r\n \"meta_description\": \"string (max 160 chars)\",\r\n \"content\": \"string (HTML)\",\r\n \"word_count\": integer,\r\n \"primary_keyword\": \"string\",\r\n \"secondary_keywords\": [\"string\"],\r\n \"tags\": [\"string\"],\r\n \"categories\": [\"Parent > Child\"]\r\n}\r\n\r\n\r\n---\r\n\r\n## CRITICAL REQUIREMENTS\r\n\r\n### 1. WORD COUNT: 1000-1200 words target\r\n\r\n**Section breakdown:**\r\n- Introduction: 100-150 words\r\n- Each H2 section: 150-180 words\r\n- Write 6 H2 sections\r\n\r\n### 2. SECTION FORMAT VARIETY\r\n\r\n**For 6 H2 sections, distribute as:**\r\n- 2 sections: Paragraphs ONLY \r\n- 2 section: Paragraphs + Lists\r\n- 1 section: Paragraphs + Tables\r\n* Use block quote element in different sections randomly in sections where table is not used, and make sure to provide the most insightful information within block quote\r\n\r\n**Rules:**\r\n- Randomize which sections get which format\r\n- Never use same pattern for consecutive sections\r\n- Maximum 2 sections can have lists\r\n- Maximum 2 sections can have tables\r\n- Lists: 4-5 items, 15-20 words each\r\n- Tables: 4-5 columns, 5-6 rows with real data\r\n\r\n### 3. CONTENT DEPTH (NOT surface explanations)\r\n\r\n**Every paragraph must:**\r\n- Be 50-60 words \r\n- Explain HOW/WHY, not just WHAT\r\n- Include specific numbers, examples, mechanisms\r\n- Provide actionable insights\r\n\r\n**Lists must contain:**\r\n- 4-5 items maximum\r\n- Each item: 15-20 words\r\n- Specific details with real examples\r\n- Technical specifics (measurements, ranges, capabilities)\r\n\r\n**Tables must contain:**\r\n- 4-5 columns\r\n- 5-6 rows \r\n- Real comparative data (prices, specs, measurements)\r\n- No vague terms (avoid \"good\", \"quality\", \"effective\")\r\n\r\n---\r\n\r\n## HTML STRUCTURE\r\n\r\n### Introduction Format:\r\n\r\n[Hook: 40-50 words] \r\n[Paragraph 1: 50-70 words with primary keyword] \r\n[Paragraph 2: 50-60 words] \r\n[Paragraph 3: 50-60 words] \r\n\r\n\r\n### H2 Section Format:\r\n\r\n[Heading]\r\n[Opening: 50-70 words explaining core concept] \r\n\r\n\r\n\r\n\r\n[Subheading]\r\n[60-70 words of detailed explanation] \r\n[Subheading]\r\n[60-70 words of detailed explanation] \r\n\r\n\r\n[Subheading]\r\n[50-70 words introducing the list] \r\n\r\n - [15-20 word item with specific details]
\r\n \r\n \r\n\r\n\r\n[Subheading]\r\n[50-70 words introducing the table] \r\n\r\n\r\n | Col1 | Col2 | Col3 | Col4 | \r\n\r\n\r\n | Data | Data | Data | Data | \r\n \r\n\r\n \r\n\r\n[Closing: 50-70 words synthesizing the section] \r\n\r\n\r\n**Valid HTML tags only:** ``, ``, ``, ``, ``, ``, ``, `- `, `
`, ``, ``, ``, `| `, ` | `\r\n\r\n---\r\n\r\n## WRITING RULES\r\n\r\n### DO:\r\n✓ Use specific examples, brands, models, numbers\r\n✓ Explain mechanisms and technical details\r\n✓ Include real data (prices, percentages, measurements)\r\n✓ Write naturally with varied sentence length\r\n✓ Use active voice\r\n✓ Connect ideas logically between paragraphs\r\n\r\n### DON'T:\r\n✗ Generic openings (\"In today's world...\")\r\n✗ Repeat H2/H3 in first sentence\r\n✗ Robotic transitions (\"First...\", \"Second...\")\r\n✗ Filler phrases (\"It's important to note...\")\r\n✗ Placeholder content (\"Brand A\", \"Model X\", \"Data 1\")\r\n✗ Paragraphs under 40 words or over 80 words\r\n✗ Lists with more than 6 items or items over 25 words\r\n✗ Tables with more than 5 columns or 6 rows\r\n✗ Writing more than 1200 words total\r\n\r\n---\r\n\r\n## KEYWORD USAGE\r\n\r\n**Primary keyword** (identify from title):\r\n- Use in title, intro, meta title/description\r\n- Include in 2-3 H2 headings naturally\r\n- Mention 2-3 times in content (0.5-1% density)\r\n\r\n**Secondary keywords** (3-4 from keyword list):\r\n- Distribute across H2 sections\r\n- Use in H2/H3 headings where natural\r\n- 2-3 mentions each (0.3-0.6% density)\r\n- Include variations and related terms\r\n\r\n---\r\n\r\n## METADATA\r\n\r\n**Meta Title:** Under 60 chars, primary keyword included, action-oriented\r\n**Meta Description:** 140-160 chars, primary keyword, clear value proposition\r\n**Tags:** 5 tags, 2-4 words each, lowercase, topically relevant\r\n**Categories:** 1-2 in format \"Parent > Child\"\r\n\r\n---\r\n\r\n## VERIFICATION BEFORE OUTPUT\r\n\r\n- [ ] 1000-1200 words ONLY (excluding HTML tags) - STOP if exceeding\r\n- [ ] 6 H2 sections\r\n- [ ] Maximum 2 sections with lists\r\n- [ ] Maximum 2 sections with tables\r\n- [ ] Random sections sequence with differnet format\r\n- [ ] All paragraphs 50-80 words\r\n- [ ] All lists 4-5 items, 15-20 words each\r\n- [ ] All tables 4-5 columns, 5-6 rows, real data\r\n- [ ] No placeholder content anywhere\r\n- [ ] Primary keyword optimized correctly\r\n- [ ] Meta title <60 chars, description <160 chars\r\n- [ ] Valid JSON with escaped quotes\r\n\r\n---\r\n\r\n## IMPORTANT\r\n\r\nReturn ONLY valid JSON. No explanatory text. Ensure word_count reflects actual content words.",
+ "description": "",
+ "variables": [],
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-20T20:21:47.267Z",
+ "created_at": "2025-12-20T12:53:51.906Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 2,
+ "fields": {
+ "prompt_type": "ideas",
+ "prompt_value": "# SEO Content Idea Generator\r\n\r\nYou are a content strategist. Generate content ideas and simple outlines for keyword clusters. The actual content will be written by a separate system.\r\n\r\n---\r\n\r\n## INPUT FORMAT\r\n\r\n**Clusters to analyze:**\r\n[IGNY8_CLUSTERS]\r\n\r\n**Keywords in each cluster:**\r\n[IGNY8_CLUSTER_KEYWORDS]\r\n\r\n---\r\n\r\n## OUTPUT REQUIREMENTS\r\n\r\nGenerate exactly **4 content ideas per cluster**:\r\n- 1 cluster hub page (comprehensive overview)\r\n- 3 supporting articles (focused on specific angles)\r\n\r\n---\r\n\r\n## OUTPUT JSON OBJECT STRUCTURE\r\n\r\n\r\n## OUTPUT JSON OBJECT STRUCTURE\r\n{\r\n \"ideas\": [\r\n {\r\n \"title\": \"[Compelling title with primary keyword]\",\r\n \"description\": {\r\n \"overview\": \"[2-3 sentence description of what this content covers and its unique angle]\",\r\n \"outline\": {\r\n \"intro_focus\": \"[What the introduction should establish]\",\r\n \"main_sections\": [\r\n {\r\n \"h2_topic\": \"[Section topic/angle]\",\r\n \"coverage\": \"[What this section should cover - 1 sentence]\"\r\n }\r\n ]\r\n }\r\n },\r\n \"covered_keywords\": \"[3-8 relevant keywords from cluster, comma-separated]\",\r\n \"content_type\": \"post|page\",\r\n \"content_structure\": \"cluster_hub|guide_tutorial|how_to|comparison|review|top_listicle|question\",\r\n \"cluster_id\": \"[Cluster ID number]\",\r\n \"estimated_word_count\": 1500\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CONTENT STRUCTURE BY TYPE\r\n\r\n### Cluster Hub (1 per cluster)\r\n- **Purpose**: Comprehensive overview of entire topic cluster\r\n- **Sections**: 8-10 H2 sections\r\n- **Coverage**: Introduces all major subtopics, links to supporting content\r\n- **Keywords**: Covers 5-8 keywords from cluster naturally\r\n\r\n### Guide/Tutorial (Supporting)\r\n- **Purpose**: Step-by-step educational content\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Process-oriented, actionable steps\r\n- **Keywords**: Focuses on 2-4 specific keywords\r\n\r\n### How-To (Supporting)\r\n- **Purpose**: Solve a specific problem\r\n- **Sections**: 5-7 H2 sections\r\n- **Coverage**: Problem → solution framework\r\n- **Keywords**: Long-tail, question-based keywords\r\n\r\n### Comparison (Supporting)\r\n- **Purpose**: Compare options/alternatives\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Feature analysis, pros/cons, recommendations\r\n- **Keywords**: \"vs\", \"best\", \"alternative\" keywords\r\n\r\n### Review (Supporting)\r\n- **Purpose**: Evaluate specific products/services\r\n- **Sections**: 6-8 H2 sections\r\n- **Coverage**: Features, testing, verdict\r\n- **Keywords**: Product/brand names + descriptive terms\r\n\r\n### Top Listicle (Supporting)\r\n- **Purpose**: Curated ranked list\r\n- **Sections**: 6-8 H2 sections (intro + items + conclusion)\r\n- **Coverage**: Criteria, ranked items, selection guide\r\n- **Keywords**: \"best\", \"top\", number-based keywords\r\n\r\n### Question (Supporting)\r\n- **Purpose**: Answer specific query\r\n- **Sections**: 5-7 H2 sections\r\n- **Coverage**: Question → context → answer → implications\r\n- **Keywords**: Question keywords, related queries\r\n\r\n---\r\n\r\n## OUTLINE REQUIREMENTS\r\n\r\nFor each idea, provide:\r\n\r\n1. **Intro Focus**: What angle/hook the introduction should take (1 sentence)\r\n\r\n2. **Main Sections**: 5-10 H2 topics with brief coverage notes\r\n - List the H2 section topics only\r\n - 1 sentence on what each section should cover\r\n - No need for H3 breakdown (content generator will handle)\r\n - No formatting details (content generator will handle)\r\n\r\n3. **Section suggestions**:\r\n - Foundation/basics sections (if needed)\r\n - Core concept sections (main body)\r\n - Application/implementation sections\r\n - Advanced/future sections (if appropriate)\r\n\r\n---\r\n\r\n## TITLE GUIDELINES\r\n\r\n- Naturally include primary keyword\r\n- 50-65 characters ideal\r\n- Compelling and specific\r\n- Match content structure type:\r\n - Hub: \"Complete Guide to [Topic]\"\r\n - How-to: \"How to [Action] [Object/Goal]\"\r\n - Comparison: \"[X] vs [Y]: Which Is Better?\"\r\n - Review: \"[Product/Service] Review: [Key Benefit]\"\r\n - Listicle: \"[Number] Best [Items] for [Purpose]\"\r\n - Question: \"[Question Using Primary Keyword]?\"\r\n\r\n---\r\n\r\n## KEYWORD COVERAGE\r\n\r\n### Covered Keywords (5-8 per idea)\r\nList all relevant keywords from the cluster that this content will naturally address:\r\n- Include the main keyword that appears in the title\r\n- Include related search terms from cluster\r\n- Include natural variations and long-tail keywords\r\n- Include supporting/related terms\r\n\r\n**The content generator will automatically:**\r\n- Identify the primary keyword from title and context\r\n- Categorize remaining keywords as secondary\r\n- Optimize keyword placement and density\r\n\r\n### Coverage Strategy\r\n- **Cluster Hub**: 6-10 keywords (comprehensive coverage)\r\n- **Supporting Content**: 4-6 keywords (focused coverage)\r\n\r\n---\r\n\r\n## CONTENT ANGLE REQUIREMENTS\r\n\r\nEach idea must have a **unique angle**:\r\n\r\n✓ Different content structure types across the 4 ideas\r\n✓ Different target intents (informational, commercial, navigational)\r\n✓ Different depth levels (overview vs deep-dive)\r\n✓ No duplicate section topics across ideas in same cluster\r\n\r\n**Example for \"Email Marketing\" cluster:**\r\n1. Hub: \"Complete Guide to Email Marketing\" \r\n - covered_keywords: \"email marketing, email campaigns, newsletter marketing, email automation, email list building, email marketing strategy\"\r\n2. Supporting: \"How to Build an Email List from Scratch\"\r\n - covered_keywords: \"email list building, grow email list, subscriber acquisition, lead magnets, email signup forms\"\r\n3. Supporting: \"Mailchimp vs ConvertKit: Email Platform Comparison\"\r\n - covered_keywords: \"mailchimp vs convertkit, email marketing platforms, email software comparison, best email tools\"\r\n4. Supporting: \"10 Best Email Marketing Tools for Small Businesses\"\r\n - covered_keywords: \"email marketing tools, email software, email marketing platforms, small business email marketing\"\r\n\r\n---\r\n\r\n## QUALITY CHECKS\r\n\r\nBefore finalizing, verify:\r\n- ✓ 4 ideas per cluster (1 hub + 3 supporting)\r\n- ✓ Each idea has unique content_structure type\r\n- ✓ Title includes a relevant keyword from cluster\r\n- ✓ 5-10 H2 sections outlined per idea\r\n- ✓ 5-8 covered_keywords listed per idea\r\n- ✓ Content angles don't overlap\r\n- ✓ Valid JSON format\r\n\r\n---\r\n\r\n## OUTPUT FORMAT\r\n\r\nReturn ONLY valid JSON with no comments or explanations.\r\n\r\nThe \"outline\" object should be simple and high-level - just enough to guide the content generator. The actual detailed structure, word counts, formatting, H3 subsections, lists, tables, etc. will be handled by the content generation system.\r\n\r\n---\r\n\r\n## WHAT NOT TO INCLUDE\r\n\r\n❌ Detailed H3 subsections (content generator handles this)\r\n❌ Specific formatting instructions (paragraph/list/table details)\r\n❌ Word count per section (content generator calculates)\r\n❌ Detailed content descriptions (keep coverage notes brief)\r\n❌ HTML structure (content generator outputs HTML)\r\n❌ Introduction hook text (content generator writes this)\r\n\r\nKeep outlines strategic and high-level. Let the content generation system handle tactical execution.",
+ "description": "",
+ "variables": {
+ "ideas": [
+ {
+ "title": "[Compelling title with primary keyword]",
+ "cluster_id": "[Cluster ID number]",
+ "description": {
+ "outline": {
+ "intro_focus": "[What the introduction should establish]",
+ "main_sections": [
+ {
+ "coverage": "[What this section should cover - 1 sentence]",
+ "h2_topic": "[Section topic/angle]"
+ }
+ ]
+ },
+ "overview": "[2-3 sentence description of what this content covers and its unique angle]"
+ },
+ "content_type": "post|page",
+ "covered_keywords": "[3-8 relevant keywords from cluster, comma-separated]",
+ "content_structure": "cluster_hub|guide_tutorial|how_to|comparison|review|top_listicle|question",
+ "estimated_word_count": 1500
+ }
+ ]
+ },
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-20T19:27:56.816Z",
+ "created_at": "2025-12-20T12:53:51.905Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 4,
+ "fields": {
+ "prompt_type": "image_prompt_extraction",
+ "prompt_value": "Extract image prompts from the following article content.\r\n\r\n**ARTICLE TITLE:** {title}\r\n\r\n**ARTICLE CONTENT:** {content}\r\n\r\n**INSTRUCTIONS:**\r\n\r\nExtract image prompts for:\r\n1. **Featured Image:** One main image that represents the article topic\r\n2. **In-Article Images:** Up to {max_images} images that would be useful within the article content\r\n3. **Content Paragraphs (caption):** For each image, write a natural content paragraph (40-60 words) that discusses the topic represented by the image. This should read as regular article content that flows naturally with the surrounding text, NOT as an image description or caption. The paragraph should provide substantive information about the topic while contextually relating to what the image shows.\r\n\r\n**Return a JSON object with this structure:**\r\n\r\n{{\r\n \"featured_prompt\": \"Detailed description of the featured image (max 600 characters)\",\r\n \"featured_caption\": \"A 40-60 word paragraph that serves as both an image caption and represents content from the article, providing context naturally\",\r\n \"in_article_prompts\": [\r\n {{\r\n \"prompt\": \"Description of first in-article image (max 600 characters)\",\r\n \"caption\": \"A 40-60 word paragraph describing this image while incorporating relevant content from the corresponding section\"\r\n }},\r\n {{\r\n \"prompt\": \"Description of second in-article image (max 600 characters)\",\r\n \"caption\": \"A 40-60 word paragraph describing this image while incorporating relevant content from the corresponding section\"\r\n }}\r\n ]\r\n}}\r\n\r\n**Requirements:**\r\n- Each prompt must be detailed enough for image generation, describing visual elements, style, mood, and composition\r\n- Maximum prompt length: 600 characters per image prompt\r\n- Caption length: 40-60 words each\r\n- Captions should blend image description with article content naturally",
+ "description": "",
+ "variables": [],
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-25T02:05:23.641Z",
+ "created_at": "2025-12-20T12:53:51.908Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 5,
+ "fields": {
+ "prompt_type": "image_prompt_template",
+ "prompt_value": "Image Type: {image_type},\r\nImage Prompt: {image_prompt}",
+ "description": "",
+ "variables": [],
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-20T19:57:17.579Z",
+ "created_at": "2025-12-20T12:53:51.910Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 6,
+ "fields": {
+ "prompt_type": "negative_prompt",
+ "prompt_value": "text, watermark, logo, signature, username, artist name, blurry, low quality, pixelated, distorted, deformed, duplicate, cropped, out of frame, bad anatomy, bad proportions, extra limbs, missing limbs, floating limbs, disconnected limbs, mutation, mutated, ugly, disgusting, amputation, cartoon, anime",
+ "description": "",
+ "variables": [],
+ "is_active": true,
+ "version": 1,
+ "last_updated": "2025-12-20T19:57:43.034Z",
+ "created_at": "2025-12-20T12:53:51.912Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 8,
+ "fields": {
+ "prompt_type": "product_generation",
+ "prompt_value": "Create comprehensive product content for:\r\n\r\nProduct Name: {product_name}\r\nCategory: {category}\r\nFeatures: {features}\r\nTarget Audience: {audience}\r\n\r\nGenerate:\r\n1. Compelling product description (200-300 words)\r\n2. Key features and benefits (bullet points)\r\n3. Technical specifications\r\n4. Use cases or applications\r\n5. SEO-optimized meta description\r\n\r\nReturn structured JSON with all elements.",
+ "description": "",
+ "variables": [],
+ "is_active": false,
+ "version": 1,
+ "last_updated": "2025-12-20T19:58:14.244Z",
+ "created_at": "2025-12-20T12:53:51.917Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 9,
+ "fields": {
+ "prompt_type": "service_generation",
+ "prompt_value": "Create detailed service page content for:\r\n\r\nService Name: {service_name}\r\nCategory: {category}\r\nKey Benefits: {benefits}\r\nTarget Audience: {audience}\r\n\r\nGenerate:\r\n1. Overview section (150-200 words)\r\n2. Process or methodology (step-by-step)\r\n3. Benefits and outcomes\r\n4. Why choose us / differentiators\r\n5. FAQ section (5-7 questions)\r\n6. Call-to-action suggestions\r\n\r\nReturn structured HTML content.",
+ "description": "",
+ "variables": [],
+ "is_active": false,
+ "version": 1,
+ "last_updated": "2025-12-20T19:58:23.805Z",
+ "created_at": "2025-12-20T12:53:51.919Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 7,
+ "fields": {
+ "prompt_type": "site_structure_generation",
+ "prompt_value": "Design a comprehensive site structure for:\r\n\r\nBusiness Type: {business_type}\r\nPrimary Keywords: {keywords}\r\nTarget Audience: {audience}\r\nGoals: {goals}\r\n\r\nInstructions:\r\n1. Create a logical, user-friendly navigation hierarchy\r\n2. Include essential pages (Home, About, Services/Products, Contact)\r\n3. Design category pages for primary keywords\r\n4. Plan supporting content pages\r\n5. Consider user journey and conversion paths\r\n\r\nReturn a JSON structure:\r\n{\r\n \"navigation\": [\r\n {\r\n \"page\": \"Page name\",\r\n \"slug\": \"url-slug\",\r\n \"type\": \"home|category|product|service|content|utility\",\r\n \"children\": []\r\n }\r\n ]\r\n}",
+ "description": "",
+ "variables": [],
+ "is_active": false,
+ "version": 1,
+ "last_updated": "2025-12-20T19:58:33.034Z",
+ "created_at": "2025-12-20T12:53:51.914Z"
+ }
+},
+{
+ "model": "system.globalaiprompt",
+ "pk": 10,
+ "fields": {
+ "prompt_type": "taxonomy_generation",
+ "prompt_value": "Create a logical taxonomy structure for:\r\n\r\nContent Type: {content_type}\r\nDomain: {domain}\r\nExisting Keywords: {keywords}\r\n\r\nInstructions:\r\n1. Design parent categories that organize content logically\r\n2. Create subcategories for detailed organization\r\n3. Ensure balanced hierarchy (not too deep or flat)\r\n4. Use clear, descriptive category names\r\n5. Consider SEO and user navigation\r\n\r\nReturn a JSON structure:\r\n{\r\n \"categories\": [\r\n {\r\n \"name\": \"Category Name\",\r\n \"slug\": \"category-slug\",\r\n \"description\": \"Brief description\",\r\n \"subcategories\": []\r\n }\r\n ]\r\n}",
+ "description": "",
+ "variables": [],
+ "is_active": false,
+ "version": 1,
+ "last_updated": "2025-12-20T19:58:48.350Z",
+ "created_at": "2025-12-20T12:53:51.922Z"
+ }
+}
+]
diff --git a/backups/config/20260113/industries.json b/backups/config/20260113/industries.json
new file mode 100644
index 00000000..a4fa04ea
--- /dev/null
+++ b/backups/config/20260113/industries.json
@@ -0,0 +1,158 @@
+[
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 22,
+ "fields": {
+ "name": "Apparel & Fashion",
+ "slug": "apparel-fashion",
+ "description": "Fashion, clothing, and apparel industry",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.128Z",
+ "updated_at": "2025-11-19T20:57:22.128Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 9,
+ "fields": {
+ "name": "Automotive",
+ "slug": "automotive",
+ "description": "Automotive sales, services, and parts",
+ "is_active": true,
+ "created_at": "2025-11-04T16:43:57.026Z",
+ "updated_at": "2025-11-19T20:57:22.146Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 23,
+ "fields": {
+ "name": "Beauty & Personal Care",
+ "slug": "beauty-personal-care",
+ "description": "Beauty, skincare, and personal care products and services",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.140Z",
+ "updated_at": "2025-11-19T20:57:22.141Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 29,
+ "fields": {
+ "name": "Education & Training",
+ "slug": "education-training",
+ "description": "Educational institutions, training programs, and learning services",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.190Z",
+ "updated_at": "2025-11-19T20:57:22.190Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 10,
+ "fields": {
+ "name": "Fashion & Apparel",
+ "slug": "fashion-apparel",
+ "description": "Fashion, clothing, and apparel businesses",
+ "is_active": false,
+ "created_at": "2025-11-04T16:43:57.035Z",
+ "updated_at": "2025-11-19T21:05:19.935Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 28,
+ "fields": {
+ "name": "Finance & Insurance",
+ "slug": "finance-insurance",
+ "description": "Financial services, banking, insurance, and investment",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.182Z",
+ "updated_at": "2025-11-19T20:57:22.182Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 7,
+ "fields": {
+ "name": "Food & Beverage",
+ "slug": "food-beverage",
+ "description": "Restaurants, food services, and beverage industry",
+ "is_active": true,
+ "created_at": "2025-11-04T16:43:57.006Z",
+ "updated_at": "2025-11-19T20:57:22.196Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 25,
+ "fields": {
+ "name": "Healthcare & Medical",
+ "slug": "healthcare-medical",
+ "description": "Healthcare services, medical practices, and health-related services",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.161Z",
+ "updated_at": "2025-11-19T20:57:22.161Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 24,
+ "fields": {
+ "name": "Home & Furniture",
+ "slug": "home-furniture",
+ "description": "Furniture, home decor, and home improvement",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.155Z",
+ "updated_at": "2025-11-19T20:57:22.155Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 21,
+ "fields": {
+ "name": "Home & Garden",
+ "slug": "home-garden",
+ "description": "Home improvement, gardening, landscaping, and interior design",
+ "is_active": true,
+ "created_at": "2025-11-05T11:07:20.331Z",
+ "updated_at": "2025-11-05T11:07:20.331Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 26,
+ "fields": {
+ "name": "Real Estate & Construction",
+ "slug": "real-estate-construction",
+ "description": "Real estate, property management, and construction services",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.168Z",
+ "updated_at": "2025-11-19T20:57:22.168Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 1,
+ "fields": {
+ "name": "Technology",
+ "slug": "technology",
+ "description": "Software, cloud computing, cybersecurity, and technology services",
+ "is_active": false,
+ "created_at": "2025-11-04T14:56:39.099Z",
+ "updated_at": "2025-11-19T21:05:19.931Z"
+ }
+},
+{
+ "model": "igny8_core_auth.industry",
+ "pk": 27,
+ "fields": {
+ "name": "Technology & IT Services",
+ "slug": "technology-it-services",
+ "description": "Technology services, software development, and IT solutions",
+ "is_active": true,
+ "created_at": "2025-11-19T20:57:22.175Z",
+ "updated_at": "2025-11-19T20:57:22.175Z"
+ }
+}
+]
diff --git a/backups/config/20260113/plans.json b/backups/config/20260113/plans.json
new file mode 100644
index 00000000..1d0bac75
--- /dev/null
+++ b/backups/config/20260113/plans.json
@@ -0,0 +1,191 @@
+[
+{
+ "model": "igny8_core_auth.plan",
+ "pk": 6,
+ "fields": {
+ "name": "Internal (System/Superuser)",
+ "slug": "internal",
+ "price": "0.00",
+ "original_price": null,
+ "billing_cycle": "monthly",
+ "annual_discount_percent": 15,
+ "is_featured": false,
+ "features": [
+ "ai_writer",
+ "image_gen",
+ "auto_publish",
+ "custom_prompts",
+ "unlimited"
+ ],
+ "is_active": true,
+ "is_internal": true,
+ "created_at": "2025-11-08T23:14:16.130Z",
+ "max_users": 10000,
+ "max_sites": 20,
+ "max_industries": null,
+ "max_author_profiles": 5,
+ "max_keywords": 100000,
+ "max_ahrefs_queries": 500,
+ "included_credits": 10000,
+ "extra_credit_price": "0.01",
+ "allow_credit_topup": true,
+ "auto_credit_topup_threshold": null,
+ "auto_credit_topup_amount": null,
+ "stripe_product_id": null,
+ "stripe_price_id": null,
+ "credits_per_month": 2000
+ }
+},
+{
+ "model": "igny8_core_auth.plan",
+ "pk": 1,
+ "fields": {
+ "name": "Free Plan",
+ "slug": "free",
+ "price": "0.00",
+ "original_price": null,
+ "billing_cycle": "monthly",
+ "annual_discount_percent": 15,
+ "is_featured": false,
+ "features": [
+ "1 Site",
+ "50 Keywords",
+ "100 Credits",
+ "10K Words",
+ "10 Clusters",
+ "20 Images"
+ ],
+ "is_active": false,
+ "is_internal": false,
+ "created_at": "2025-11-02T22:01:17.053Z",
+ "max_users": 1,
+ "max_sites": 1,
+ "max_industries": 1,
+ "max_author_profiles": 2,
+ "max_keywords": 100,
+ "max_ahrefs_queries": 0,
+ "included_credits": 100,
+ "extra_credit_price": "0.00",
+ "allow_credit_topup": false,
+ "auto_credit_topup_threshold": null,
+ "auto_credit_topup_amount": null,
+ "stripe_product_id": null,
+ "stripe_price_id": null,
+ "credits_per_month": 0
+ }
+},
+{
+ "model": "igny8_core_auth.plan",
+ "pk": 2,
+ "fields": {
+ "name": "Starter",
+ "slug": "starter",
+ "price": "99.00",
+ "original_price": null,
+ "billing_cycle": "monthly",
+ "annual_discount_percent": 10,
+ "is_featured": false,
+ "features": [
+ "50 Pages/Articles",
+ "2 Sites",
+ "2 Team Users",
+ "500 Keywords",
+ "200 Images",
+ "AI SEO"
+ ],
+ "is_active": true,
+ "is_internal": false,
+ "created_at": "2025-11-04T14:55:33.381Z",
+ "max_users": 2,
+ "max_sites": 2,
+ "max_industries": null,
+ "max_author_profiles": 5,
+ "max_keywords": 500,
+ "max_ahrefs_queries": 50,
+ "included_credits": 1000,
+ "extra_credit_price": "0.10",
+ "allow_credit_topup": true,
+ "auto_credit_topup_threshold": null,
+ "auto_credit_topup_amount": null,
+ "stripe_product_id": "prod_TkGrgKWbrBo4sX",
+ "stripe_price_id": "price_1SmmJhPdRe4dWeLwSufhikqW",
+ "credits_per_month": 1000
+ }
+},
+{
+ "model": "igny8_core_auth.plan",
+ "pk": 4,
+ "fields": {
+ "name": "Growth",
+ "slug": "growth",
+ "price": "199.00",
+ "original_price": null,
+ "billing_cycle": "monthly",
+ "annual_discount_percent": 10,
+ "is_featured": true,
+ "features": [
+ "200 Pages/Articles",
+ "5 Sites",
+ "3 Team Users",
+ "2000 Keywords",
+ "800 Images",
+ "AI SEO"
+ ],
+ "is_active": true,
+ "is_internal": false,
+ "created_at": "2025-11-07T11:46:29.144Z",
+ "max_users": 3,
+ "max_sites": 5,
+ "max_industries": null,
+ "max_author_profiles": 5,
+ "max_keywords": 2000,
+ "max_ahrefs_queries": 200,
+ "included_credits": 2000,
+ "extra_credit_price": "0.08",
+ "allow_credit_topup": true,
+ "auto_credit_topup_threshold": null,
+ "auto_credit_topup_amount": null,
+ "stripe_product_id": "prod_TkGsliLPq7Sl8w",
+ "stripe_price_id": "price_1SmmKMPdRe4dWeLw9nfQUVus",
+ "credits_per_month": 0
+ }
+},
+{
+ "model": "igny8_core_auth.plan",
+ "pk": 5,
+ "fields": {
+ "name": "Scale",
+ "slug": "scale",
+ "price": "299.00",
+ "original_price": null,
+ "billing_cycle": "monthly",
+ "annual_discount_percent": 10,
+ "is_featured": false,
+ "features": [
+ "500 Pages/Articles",
+ "99 Sites",
+ "5 Team Users",
+ "5000 Keywords",
+ "2000 Images",
+ "AI SEO"
+ ],
+ "is_active": true,
+ "is_internal": false,
+ "created_at": "2025-11-07T11:46:29.148Z",
+ "max_users": 5,
+ "max_sites": 99,
+ "max_industries": null,
+ "max_author_profiles": 10,
+ "max_keywords": 5000,
+ "max_ahrefs_queries": 500,
+ "included_credits": 5000,
+ "extra_credit_price": "0.06",
+ "allow_credit_topup": true,
+ "auto_credit_topup_threshold": null,
+ "auto_credit_topup_amount": null,
+ "stripe_product_id": "prod_TkGs64iCjpb9Ok",
+ "stripe_price_id": "price_1SmmL6PdRe4dWeLwisBUvC0N",
+ "credits_per_month": 0
+ }
+}
+]
diff --git a/backups/config/20260113/prompts.json b/backups/config/20260113/prompts.json
new file mode 100644
index 00000000..a4284d00
--- /dev/null
+++ b/backups/config/20260113/prompts.json
@@ -0,0 +1,16 @@
+[
+{
+ "model": "system.aiprompt",
+ "pk": 17,
+ "fields": {
+ "account": 90,
+ "prompt_type": "clustering",
+ "prompt_value": "# Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n \"keywords\": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"...\",\r\n \"description\": \"...\",\r\n \"keywords\": [\"...\", \"...\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- \"best foot massagers for plantar fasciitis\"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- \"heated shiatsu back massager\"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- \"are back massagers safe during pregnancy\"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - \"what causes plantar fasciitis\" → \"best treatments for plantar fasciitis\" → \"foot massagers for plantar fasciitis\"\r\n \r\n- **General → Specific → Variant**\r\n - \"foot massagers\" → \"shiatsu foot massagers\" → \"heated shiatsu foot massagers\"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - \"do vitamin c serums work\" → \"how vitamin c brightens skin\" → \"best vitamin c serums\" → \"vitamin c vs retinol\"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - \"heated massagers\" → \"heated vs unheated massagers\" → \"heated massagers for arthritis\"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ \"foot massagers for plantar fasciitis\" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ \"vitamin c serums for brightening\" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ \"massagers\" (too broad, no natural ecosystem)\r\n- ❌ \"renpho foot massager cord length\" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - \"back massager\" + \"back support pillow\" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"[Natural, SEO-relevant cluster name representing the root topic]\",\r\n \"description\": \"[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]\",\r\n \"keywords\": [\"keyword 1\", \"keyword 2\", \"keyword 3\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- \"Foot Massagers for Plantar Fasciitis Treatment\"\r\n- \"Organic Cotton Bedding for Summer\"\r\n- \"Vitamin C Serums for Skin Brightening\"\r\n- \"Waterproof Car Trunk Organizers\"\r\n\r\n**Poor Cluster Names:**\r\n- \"Massagers\" (too broad)\r\n- \"Products\" (meaningless)\r\n- \"Heated\" (just a feature, not a topic)\r\n- \"Queries about safety\" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n\"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY].\"\r\n\r\n**Example:**\r\n\"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options.\"\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** \"All keywords with 'heated' go together\"\r\n❌ **Forced categorization:** \"Must fit everything into clusters\"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use \"informational\" or \"commercial\" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** \"massage\" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n \"name\": \"Heated Shiatsu Back Massagers for Pain Relief\",\r\n \"description\": \"This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.\",\r\n \"keywords\": [\r\n \"heated back massagers\",\r\n \"shiatsu back massager with heat\",\r\n \"best heated massagers for back pain\",\r\n \"do heated massagers help muscle pain\",\r\n \"heated vs unheated back massagers\",\r\n \"shiatsu massage for lower back pain\"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n \"name\": \"Organic Cotton Bed Sheets for Hot Sleepers\",\r\n \"description\": \"This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.\",\r\n \"keywords\": [\r\n \"organic cotton sheets for summer\",\r\n \"best cooling cotton bed sheets\",\r\n \"breathable organic cotton bedding\",\r\n \"cotton vs linen sheets for hot sleepers\",\r\n \"organic cotton king size sheets\",\r\n \"are cotton sheets good for hot weather\"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n \"name\": \"Massager Products\",\r\n \"keywords\": [\r\n \"foot massagers\",\r\n \"back massagers\", \r\n \"neck massagers\",\r\n \"massage oils\",\r\n \"massage chairs\"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word \"massage\" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters.",
+ "default_prompt": "# Semantic Authority Grid - Keyword Clustering Engine\r\n\r\nYou are a semantic strategist building **topic ecosystems** using the Semantic Authority Grid methodology. Analyze keywords and group them into **mini-ecosystems** where each cluster represents a complete, self-contained topic authority area.\r\n\r\n---\r\n\r\n## CORE PRINCIPLE\r\n\r\n**Clusters are Mini-Ecosystems**\r\n\r\nEach cluster must function as a complete topical authority unit containing:\r\n- 1 root/anchor topic (hub page potential)\r\n- Supporting semantic variations (blog topics)\r\n- Natural attribute dimensions (filters/taxonomies)\r\n- Clear user journey pathways\r\n- ignore volume & difficulty provided\r\n---\r\n\r\n## Keywords to Cluster\r\n\r\n{\r\n \"keywords\": [IGNY8_KEYWORDS]\r\n}\r\n\r\n---\r\n\r\n## OUTPUT FORMAT JSON Object\r\n\r\nReturn ONLY valid JSON with no explanations or commentary:\r\n\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"...\",\r\n \"description\": \"...\",\r\n \"keywords\": [\"...\", \"...\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n---\r\n\r\n## CLUSTERING METHODOLOGY\r\n\r\n### Step 1: Identify Natural Semantic Overlaps\r\n\r\nKeywords cluster together when they share **2+ dimensional intersections**:\r\n\r\n**Dimensional Framework:**\r\n1. **Topic/Subject** → The core thing being discussed\r\n2. **Problem/Need** → What pain point or desire drives the search\r\n3. **Solution/Method** → How something is done or achieved\r\n4. **Feature/Attribute** → Specific characteristics (heated, waterproof, organic, portable)\r\n5. **Persona/Audience** → Who needs this (beginners, professionals, age groups, conditions)\r\n6. **Use-Case/Application** → Where/when/why it's used (pregnancy, travel, office, summer)\r\n7. **Product Type/Format** → Category or form factor (serum, massager, organizer, sheets)\r\n8. **Comparison/Alternative** → Explicit or implied comparison queries\r\n9. **Context/Modifier** → Geographic, temporal, or situational qualifiers\r\n\r\n**Example of Multi-Dimensional Intersection:**\r\n- \"best foot massagers for plantar fasciitis\"\r\n - Dimensions: Product Type (foot massager) + Persona (plantar fasciitis sufferers) + Problem (pain relief)\r\n- \"heated shiatsu back massager\"\r\n - Dimensions: Product Type (back massager) + Feature (heated) + Feature (shiatsu)\r\n- \"are back massagers safe during pregnancy\"\r\n - Dimensions: Product Type (back massager) + Persona (pregnant women) + Problem (safety concern)\r\n\r\nThese belong in the same cluster because they share **Product Type dimension** and serve **interconnected user journeys**.\r\n\r\n---\r\n\r\n### Step 2: Map User Journey Patterns\r\n\r\nEach cluster should support natural user exploration paths:\r\n\r\n**Journey Patterns:**\r\n- **Problem → Information → Solution → Product**\r\n - \"what causes plantar fasciitis\" → \"best treatments for plantar fasciitis\" → \"foot massagers for plantar fasciitis\"\r\n \r\n- **General → Specific → Variant**\r\n - \"foot massagers\" → \"shiatsu foot massagers\" → \"heated shiatsu foot massagers\"\r\n \r\n- **Question → Explanation → Options → Decision**\r\n - \"do vitamin c serums work\" → \"how vitamin c brightens skin\" → \"best vitamin c serums\" → \"vitamin c vs retinol\"\r\n \r\n- **Feature Discovery → Feature Comparison → Feature + Use-Case**\r\n - \"heated massagers\" → \"heated vs unheated massagers\" → \"heated massagers for arthritis\"\r\n\r\n**Cluster Test:** Can a user naturally move from any keyword in the cluster to any other keyword in a logical research/buying journey?\r\n\r\n---\r\n\r\n### Step 3: Identify Cluster Anchors (Hub Potential)\r\n\r\nEach cluster needs a clear **root keyword** that can serve as the hub page:\r\n\r\n**Hub Characteristics:**\r\n- Broad enough to encompass all cluster keywords\r\n- Specific enough to be commercially or informationally valuable\r\n- Natural landing point for user journey\r\n- Can support 3-10+ supporting content pieces\r\n\r\n**Examples:**\r\n- ✅ \"foot massagers for plantar fasciitis\" (hub)\r\n - Supports: safety concerns, specific features, comparisons, use-cases\r\n- ✅ \"vitamin c serums for brightening\" (hub)\r\n - Supports: vs alternatives, for skin types, application guides, safety\r\n- ❌ \"massagers\" (too broad, no natural ecosystem)\r\n- ❌ \"renpho foot massager cord length\" (too narrow, can't support ecosystem)\r\n\r\n---\r\n\r\n### Step 4: Extract Attribute Dimensions\r\n\r\nFor each cluster, identify **taxonomy-worthy dimensions** that could become:\r\n- Product filters\r\n- Content tags\r\n- URL parameters\r\n- Faceted navigation\r\n\r\n**Extraction Method:**\r\nLook for recurring **modifiers** across cluster keywords:\r\n- Material: cotton, linen, silk, organic\r\n- Feature: heated, waterproof, portable, wireless\r\n- Size: king, queen, twin, compact\r\n- Type: shiatsu, percussion, vibration, EMS\r\n- Audience: men, women, seniors, athletes\r\n- Context: travel, home, office, car\r\n\r\nThese dimensions should appear in the cluster's description as **natural grouping signals**.\r\n\r\n---\r\n\r\n## CLUSTERING RULES\r\n\r\n### Formation Rules\r\n\r\n1. **Semantic Coherence**\r\n - Keywords must share meaningful semantic relationships\r\n - Shared words alone don't make a cluster\r\n - \"back massager\" + \"back support pillow\" = different clusters (different product ecosystems)\r\n\r\n2. **Dimensional Intersection**\r\n - Minimum 2 shared dimensions required\r\n - More intersections = stronger cluster\r\n - Keywords with 3+ shared dimensions are core cluster members\r\n\r\n3. **User Journey Viability**\r\n - Cluster keywords should form natural navigation paths\r\n - Hub → supporting blogs → variants should flow logically\r\n - Test: Would a user exploring this topic naturally encounter all these keywords?\r\n\r\n4. **Ecosystem Completeness**\r\n - Each cluster should be self-contained\r\n - Should support 1 hub page + 3-10 supporting articles\r\n - Must have enough depth for authority building\r\n\r\n5. **Exclusion Over Inclusion**\r\n - Better to leave keywords unclustered than force weak groupings\r\n - Outliers should be excluded from output\r\n - Only cluster keywords with strong semantic bonds\r\n\r\n### Size & Quality Rules\r\n\r\n- **Minimum cluster size:** 3 keywords (otherwise it's not an ecosystem)\r\n- **Maximum cluster size:** 15 keywords (beyond this, consider splitting)\r\n- **Optimal cluster size:** 5-10 keywords (hub + supporting + variants)\r\n- **No keyword duplication:** Each keyword appears in exactly one cluster\r\n- **Quality over quantity:** 5 strong clusters > 15 weak clusters\r\n\r\n---\r\n\r\n## OUTPUT STRUCTURE json object\r\n{\r\n \"clusters\": [\r\n {\r\n \"name\": \"[Natural, SEO-relevant cluster name representing the root topic]\",\r\n \"description\": \"[2-3 sentences explaining: (1) what semantic dimensions bind these keywords, (2) what user journey or problem space this cluster addresses]\",\r\n \"keywords\": [\"keyword 1\", \"keyword 2\", \"keyword 3\", \"...\"]\r\n }\r\n ]\r\n}\r\n\r\n\r\n### Naming Guidelines\r\n\r\n**Good Cluster Names:**\r\n- \"Foot Massagers for Plantar Fasciitis Treatment\"\r\n- \"Organic Cotton Bedding for Summer\"\r\n- \"Vitamin C Serums for Skin Brightening\"\r\n- \"Waterproof Car Trunk Organizers\"\r\n\r\n**Poor Cluster Names:**\r\n- \"Massagers\" (too broad)\r\n- \"Products\" (meaningless)\r\n- \"Heated\" (just a feature, not a topic)\r\n- \"Queries about safety\" (meta, not topical)\r\n\r\n### Description Guidelines\r\n\r\n**Good Description Format:**\r\n\"This cluster covers [TOPIC] focused on [PROBLEM/USE-CASE] for [AUDIENCE]. Keywords share dimensions of [DIMENSION 1] and [DIMENSION 2], forming a natural ecosystem for users researching [USER JOURNEY].\"\r\n\r\n**Example:**\r\n\"This cluster covers foot massage devices specifically for plantar fasciitis relief. Keywords share dimensions of product type (foot massager), health condition (plantar fasciitis), and therapeutic features (shiatsu, heated, EMS), forming a natural ecosystem for users researching pain relief solutions and comparing treatment options.\"\r\n\r\n---\r\n\r\n## VALIDATION CHECKLIST\r\n\r\nBefore finalizing clusters, verify:\r\n\r\n✓ **Hub Potential:** Each cluster has 1 clear anchor keyword for hub page\r\n✓ **Dimensional Overlap:** Keywords share 2+ semantic dimensions\r\n✓ **User Journey:** Natural navigation paths exist within cluster\r\n✓ **Attribute Dimensions:** Recurring modifiers can become filters/taxonomies\r\n✓ **Ecosystem Completeness:** Supports 1 hub + 3-10 supporting articles\r\n✓ **Semantic Coherence:** Keywords genuinely belong together, not just word overlap\r\n✓ **No Duplication:** Each keyword appears once\r\n✓ **No Weak Clusters:** Only include strong, viable ecosystems\r\n\r\n---\r\n\r\n## ANTI-PATTERNS TO AVOID\r\n\r\n❌ **Single-word grouping:** \"All keywords with 'heated' go together\"\r\n❌ **Forced categorization:** \"Must fit everything into clusters\"\r\n❌ **Shallow connections:** Keywords share one word but no semantic relationship\r\n❌ **Traditional SEO intent labels:** Don't use \"informational\" or \"commercial\" as clustering logic\r\n❌ **Assumed site structure:** Don't cluster based on existing categories\r\n❌ **Word-matching only:** \"massage\" keywords together regardless of context\r\n\r\n✅ **Multi-dimensional analysis:** Find deep semantic intersections\r\n✅ **User journey modeling:** Natural exploration and research paths\r\n✅ **Ecosystem thinking:** Self-contained topical authority units\r\n✅ **Attribute extraction:** Recurring dimensions that create taxonomies\r\n✅ **Quality filtering:** Only strong, viable clusters in output\r\n\r\n---\r\n\r\n## EXAMPLES\r\n\r\n### Example 1: Strong Cluster\r\n\r\n{\r\n \"name\": \"Heated Shiatsu Back Massagers for Pain Relief\",\r\n \"description\": \"This cluster covers back massage devices combining heated therapy with shiatsu technique for pain management. Keywords intersect on product type (back massager), features (heated, shiatsu), and problem-solving (pain relief, muscle tension), supporting a complete user journey from problem awareness to product comparison.\",\r\n \"keywords\": [\r\n \"heated back massagers\",\r\n \"shiatsu back massager with heat\",\r\n \"best heated massagers for back pain\",\r\n \"do heated massagers help muscle pain\",\r\n \"heated vs unheated back massagers\",\r\n \"shiatsu massage for lower back pain\"\r\n ]\r\n}\r\n\r\n\r\n### Example 2: Multi-Dimensional Cluster\r\n\r\n{\r\n \"name\": \"Organic Cotton Bed Sheets for Hot Sleepers\",\r\n \"description\": \"This cluster addresses cooling bedding solutions using organic materials. Keywords intersect on material (organic cotton), product type (bed sheets), use-case (hot weather/hot sleepers), and benefit (breathability, cooling), forming an ecosystem for users researching temperature-regulating sleep solutions.\",\r\n \"keywords\": [\r\n \"organic cotton sheets for summer\",\r\n \"best cooling cotton bed sheets\",\r\n \"breathable organic cotton bedding\",\r\n \"cotton vs linen sheets for hot sleepers\",\r\n \"organic cotton king size sheets\",\r\n \"are cotton sheets good for hot weather\"\r\n ]\r\n}\r\n\r\n\r\n### Example 3: What NOT to Cluster\r\n\r\n❌ BAD CLUSTER:\r\n{\r\n \"name\": \"Massager Products\",\r\n \"keywords\": [\r\n \"foot massagers\",\r\n \"back massagers\", \r\n \"neck massagers\",\r\n \"massage oils\",\r\n \"massage chairs\"\r\n ]\r\n}\r\n\r\n**Why it's bad:** Keywords share only the word \"massage\" but represent completely different product ecosystems with different user journeys, problems, and attributes. These should be separate clusters.",
+ "is_customized": false,
+ "is_active": true,
+ "updated_at": "2025-12-20T20:09:13.413Z",
+ "created_at": "2025-12-20T20:04:43.984Z"
+ }
+}
+]
diff --git a/backups/config/20260113/sectors.json b/backups/config/20260113/sectors.json
new file mode 100644
index 00000000..dbbf4b88
--- /dev/null
+++ b/backups/config/20260113/sectors.json
@@ -0,0 +1,86 @@
+[
+{
+ "model": "igny8_core_auth.sector",
+ "pk": 50,
+ "fields": {
+ "is_deleted": false,
+ "deleted_at": null,
+ "restore_until": null,
+ "delete_reason": null,
+ "deleted_by": null,
+ "account": 90,
+ "site": 21,
+ "industry_sector": 68,
+ "name": "Footwear",
+ "slug": "footwear",
+ "description": "",
+ "is_active": false,
+ "status": "active",
+ "created_at": "2025-12-10T07:51:10.139Z",
+ "updated_at": "2025-12-10T07:51:10.139Z"
+ }
+},
+{
+ "model": "igny8_core_auth.sector",
+ "pk": 51,
+ "fields": {
+ "is_deleted": false,
+ "deleted_at": null,
+ "restore_until": null,
+ "delete_reason": null,
+ "deleted_by": null,
+ "account": 90,
+ "site": 21,
+ "industry_sector": 66,
+ "name": "Kidswear",
+ "slug": "kidswear",
+ "description": "",
+ "is_active": false,
+ "status": "active",
+ "created_at": "2025-12-10T07:51:10.144Z",
+ "updated_at": "2025-12-10T07:51:10.144Z"
+ }
+},
+{
+ "model": "igny8_core_auth.sector",
+ "pk": 61,
+ "fields": {
+ "is_deleted": false,
+ "deleted_at": null,
+ "restore_until": null,
+ "delete_reason": null,
+ "deleted_by": null,
+ "account": 90,
+ "site": 21,
+ "industry_sector": 101,
+ "name": "Physiotherapy & Rehabilitation",
+ "slug": "physiotherapy-rehabilitation",
+ "description": "",
+ "is_active": true,
+ "status": "active",
+ "created_at": "2025-12-17T05:40:13.377Z",
+ "updated_at": "2026-01-01T04:22:28.190Z"
+ }
+},
+{
+ "model": "igny8_core_auth.sector",
+ "pk": 62,
+ "fields": {
+ "is_deleted": false,
+ "deleted_at": null,
+ "restore_until": null,
+ "delete_reason": null,
+ "deleted_by": null,
+ "account": 90,
+ "site": 21,
+ "industry_sector": 103,
+ "name": "Mental Health & Therapy",
+ "slug": "mental-health-therapy",
+ "description": "",
+ "is_active": true,
+ "status": "active",
+ "created_at": "2026-01-01T04:22:28.197Z",
+ "updated_at": "2026-01-01T04:22:28.197Z"
+ }
+}
+]
diff --git a/backups/config/20260113/seed_keywords.json b/backups/config/20260113/seed_keywords.json
new file mode 100644
index 00000000..5557aaea
--- /dev/null
+++ b/backups/config/20260113/seed_keywords.json
@@ -0,0 +1,1592 @@
+[
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 146,
+ "fields": {
+ "keyword": "back and neck massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 900,
+ "difficulty": 6,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.805Z",
+ "updated_at": "2025-12-01T03:36:50.805Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 181,
+ "fields": {
+ "keyword": "back and shoulder massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 31,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.939Z",
+ "updated_at": "2025-12-01T03:36:50.939Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 178,
+ "fields": {
+ "keyword": "back hook massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.929Z",
+ "updated_at": "2025-12-01T03:36:50.929Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 140,
+ "fields": {
+ "keyword": "back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 23000,
+ "difficulty": 1,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.784Z",
+ "updated_at": "2025-12-01T03:36:50.784Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 142,
+ "fields": {
+ "keyword": "back massager for chair",
+ "industry": 25,
+ "sector": 101,
+ "volume": 1700,
+ "difficulty": 3,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.792Z",
+ "updated_at": "2025-12-01T03:36:50.792Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 154,
+ "fields": {
+ "keyword": "back massager gun",
+ "industry": 25,
+ "sector": 101,
+ "volume": 450,
+ "difficulty": 22,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.836Z",
+ "updated_at": "2025-12-01T03:36:50.836Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 167,
+ "fields": {
+ "keyword": "back massager handheld",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 5,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.893Z",
+ "updated_at": "2025-12-01T03:36:50.893Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 157,
+ "fields": {
+ "keyword": "back massager nearby",
+ "industry": 25,
+ "sector": 101,
+ "volume": 400,
+ "difficulty": 1,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.847Z",
+ "updated_at": "2025-12-01T03:36:50.847Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 159,
+ "fields": {
+ "keyword": "back massager near me",
+ "industry": 25,
+ "sector": 101,
+ "volume": 400,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.855Z",
+ "updated_at": "2025-12-01T03:36:50.855Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 180,
+ "fields": {
+ "keyword": "back massager stick",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 3,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.936Z",
+ "updated_at": "2025-12-01T03:36:50.936Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 160,
+ "fields": {
+ "keyword": "back massager walmart",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.861Z",
+ "updated_at": "2025-12-01T03:36:50.861Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 150,
+ "fields": {
+ "keyword": "back massager with heat",
+ "industry": 25,
+ "sector": 101,
+ "volume": 600,
+ "difficulty": 5,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.822Z",
+ "updated_at": "2025-12-01T03:36:50.822Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 172,
+ "fields": {
+ "keyword": "back roller massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 1,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.909Z",
+ "updated_at": "2025-12-01T03:36:50.909Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 188,
+ "fields": {
+ "keyword": "back vibrating massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 150,
+ "difficulty": 12,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.963Z",
+ "updated_at": "2025-12-01T03:36:50.963Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 37,
+ "fields": {
+ "keyword": "bathroom renovation",
+ "industry": 21,
+ "sector": 60,
+ "volume": 650,
+ "difficulty": 44,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.496Z",
+ "updated_at": "2025-11-09T00:05:33.496Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 176,
+ "fields": {
+ "keyword": "best back and neck massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 22,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.922Z",
+ "updated_at": "2025-12-01T03:36:50.922Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 141,
+ "fields": {
+ "keyword": "best back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 2200,
+ "difficulty": 6,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.788Z",
+ "updated_at": "2025-12-01T03:36:50.788Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 153,
+ "fields": {
+ "keyword": "best back massager for chair",
+ "industry": 25,
+ "sector": 101,
+ "volume": 600,
+ "difficulty": 2,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.833Z",
+ "updated_at": "2025-12-01T03:36:50.833Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 173,
+ "fields": {
+ "keyword": "best back massager for knots",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 16,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.913Z",
+ "updated_at": "2025-12-01T03:36:50.913Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 174,
+ "fields": {
+ "keyword": "best back massager for lower back pain",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.916Z",
+ "updated_at": "2025-12-01T03:36:50.916Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 168,
+ "fields": {
+ "keyword": "best handheld back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 5,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.897Z",
+ "updated_at": "2025-12-01T03:36:50.897Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 161,
+ "fields": {
+ "keyword": "best lower back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 10,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.865Z",
+ "updated_at": "2025-12-01T03:36:50.865Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 169,
+ "fields": {
+ "keyword": "best massager for back",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 11,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.900Z",
+ "updated_at": "2025-12-01T03:36:50.900Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 166,
+ "fields": {
+ "keyword": "best neck and back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 14,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.890Z",
+ "updated_at": "2025-12-01T03:36:50.890Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 165,
+ "fields": {
+ "keyword": "car back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.885Z",
+ "updated_at": "2025-12-01T03:36:50.885Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 155,
+ "fields": {
+ "keyword": "chair back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 450,
+ "difficulty": 3,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.840Z",
+ "updated_at": "2025-12-01T03:36:50.840Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 17,
+ "fields": {
+ "keyword": "color scheme ideas",
+ "industry": 21,
+ "sector": 62,
+ "volume": 650,
+ "difficulty": 44,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.472Z",
+ "updated_at": "2025-11-09T00:05:33.472Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 45,
+ "fields": {
+ "keyword": "composting guide",
+ "industry": 21,
+ "sector": 59,
+ "volume": 750,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.505Z",
+ "updated_at": "2025-11-09T00:05:33.505Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 8,
+ "fields": {
+ "keyword": "curtain design tips",
+ "industry": 21,
+ "sector": 63,
+ "volume": 600,
+ "difficulty": 36,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.461Z",
+ "updated_at": "2025-11-09T00:05:33.461Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 190,
+ "fields": {
+ "keyword": "dasdasd",
+ "industry": 25,
+ "sector": 101,
+ "volume": 3234,
+ "difficulty": 23,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-12T20:20:23.248Z",
+ "updated_at": "2025-12-12T20:20:23.248Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 27,
+ "fields": {
+ "keyword": "deck building guide",
+ "industry": 21,
+ "sector": 61,
+ "volume": 650,
+ "difficulty": 44,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.483Z",
+ "updated_at": "2025-11-09T00:05:33.483Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 14,
+ "fields": {
+ "keyword": "decoration trends",
+ "industry": 21,
+ "sector": 62,
+ "volume": 800,
+ "difficulty": 68,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.468Z",
+ "updated_at": "2025-11-09T00:05:33.468Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 4,
+ "fields": {
+ "keyword": "decorative mirrors",
+ "industry": 21,
+ "sector": 63,
+ "volume": 800,
+ "difficulty": 68,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.456Z",
+ "updated_at": "2025-11-09T00:05:33.456Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 170,
+ "fields": {
+ "keyword": "deep tissue back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 3,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.903Z",
+ "updated_at": "2025-12-01T03:36:50.903Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 39,
+ "fields": {
+ "keyword": "diy home projects",
+ "industry": 21,
+ "sector": 60,
+ "volume": 550,
+ "difficulty": 28,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.498Z",
+ "updated_at": "2025-11-09T00:05:33.498Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 156,
+ "fields": {
+ "keyword": "electric back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 400,
+ "difficulty": 9,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.843Z",
+ "updated_at": "2025-12-01T03:36:50.843Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 177,
+ "fields": {
+ "keyword": "electric massager for back pain",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 13,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.925Z",
+ "updated_at": "2025-12-01T03:36:50.925Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 36,
+ "fields": {
+ "keyword": "flooring installation",
+ "industry": 21,
+ "sector": 60,
+ "volume": 700,
+ "difficulty": 52,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.495Z",
+ "updated_at": "2025-11-09T00:05:33.495Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 48,
+ "fields": {
+ "keyword": "flower garden design",
+ "industry": 21,
+ "sector": 59,
+ "volume": 600,
+ "difficulty": 36,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.508Z",
+ "updated_at": "2025-11-09T00:05:33.508Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 18,
+ "fields": {
+ "keyword": "furniture arrangement",
+ "industry": 21,
+ "sector": 62,
+ "volume": 600,
+ "difficulty": 36,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.473Z",
+ "updated_at": "2025-11-09T00:05:33.473Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 21,
+ "fields": {
+ "keyword": "garden edging ideas",
+ "industry": 21,
+ "sector": 61,
+ "volume": 950,
+ "difficulty": 92,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.476Z",
+ "updated_at": "2025-11-09T00:05:33.476Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 42,
+ "fields": {
+ "keyword": "garden irrigation systems",
+ "industry": 21,
+ "sector": 59,
+ "volume": 900,
+ "difficulty": 84,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.502Z",
+ "updated_at": "2025-11-09T00:05:33.502Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 26,
+ "fields": {
+ "keyword": "garden pathways",
+ "industry": 21,
+ "sector": 61,
+ "volume": 700,
+ "difficulty": 52,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.482Z",
+ "updated_at": "2025-11-09T00:05:33.482Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 44,
+ "fields": {
+ "keyword": "garden pest control",
+ "industry": 21,
+ "sector": 59,
+ "volume": 800,
+ "difficulty": 68,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.504Z",
+ "updated_at": "2025-11-09T00:05:33.504Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 47,
+ "fields": {
+ "keyword": "garden tools",
+ "industry": 21,
+ "sector": 59,
+ "volume": 650,
+ "difficulty": 44,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.507Z",
+ "updated_at": "2025-11-09T00:05:33.507Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 163,
+ "fields": {
+ "keyword": "hand held back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 7,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.876Z",
+ "updated_at": "2025-12-01T03:36:50.876Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 147,
+ "fields": {
+ "keyword": "handheld back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 900,
+ "difficulty": 7,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.810Z",
+ "updated_at": "2025-12-01T03:36:50.810Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 152,
+ "fields": {
+ "keyword": "heated back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 600,
+ "difficulty": 7,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.830Z",
+ "updated_at": "2025-12-01T03:36:50.830Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 43,
+ "fields": {
+ "keyword": "herb garden ideas",
+ "industry": 21,
+ "sector": 59,
+ "volume": 850,
+ "difficulty": 76,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.503Z",
+ "updated_at": "2025-11-09T00:05:33.503Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 2,
+ "fields": {
+ "keyword": "home accent pieces",
+ "industry": 21,
+ "sector": 63,
+ "volume": 900,
+ "difficulty": 84,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.449Z",
+ "updated_at": "2025-11-09T00:05:33.449Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 10,
+ "fields": {
+ "keyword": "home decor accessories",
+ "industry": 21,
+ "sector": 63,
+ "volume": 500,
+ "difficulty": 20,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.463Z",
+ "updated_at": "2025-11-09T00:05:33.463Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 19,
+ "fields": {
+ "keyword": "home decor ideas",
+ "industry": 21,
+ "sector": 62,
+ "volume": 550,
+ "difficulty": 28,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.474Z",
+ "updated_at": "2025-11-09T00:05:33.474Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 148,
+ "fields": {
+ "keyword": "homedics back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 800,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.813Z",
+ "updated_at": "2025-12-01T03:36:50.813Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 5,
+ "fields": {
+ "keyword": "home fragrance tips",
+ "industry": 21,
+ "sector": 63,
+ "volume": 750,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.457Z",
+ "updated_at": "2025-11-09T00:05:33.457Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 32,
+ "fields": {
+ "keyword": "home maintenance checklist",
+ "industry": 21,
+ "sector": 60,
+ "volume": 900,
+ "difficulty": 84,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.490Z",
+ "updated_at": "2025-11-09T00:05:33.490Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 11,
+ "fields": {
+ "keyword": "home organization tips",
+ "industry": 21,
+ "sector": 62,
+ "volume": 950,
+ "difficulty": 92,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.464Z",
+ "updated_at": "2025-11-09T00:05:33.464Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 40,
+ "fields": {
+ "keyword": "home renovation ideas",
+ "industry": 21,
+ "sector": 60,
+ "volume": 500,
+ "difficulty": 20,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.499Z",
+ "updated_at": "2025-11-09T00:05:33.499Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 34,
+ "fields": {
+ "keyword": "home repair guide",
+ "industry": 21,
+ "sector": 60,
+ "volume": 800,
+ "difficulty": 68,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.492Z",
+ "updated_at": "2025-11-09T00:05:33.492Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 15,
+ "fields": {
+ "keyword": "home staging tips",
+ "industry": 21,
+ "sector": 62,
+ "volume": 750,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.469Z",
+ "updated_at": "2025-11-09T00:05:33.469Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 171,
+ "fields": {
+ "keyword": "hyperice back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 22,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.906Z",
+ "updated_at": "2025-12-01T03:36:50.906Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 20,
+ "fields": {
+ "keyword": "interior design styles",
+ "industry": 21,
+ "sector": 62,
+ "volume": 500,
+ "difficulty": 20,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.475Z",
+ "updated_at": "2025-11-09T00:05:33.475Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 31,
+ "fields": {
+ "keyword": "interior design trends",
+ "industry": 21,
+ "sector": 60,
+ "volume": 950,
+ "difficulty": 92,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.489Z",
+ "updated_at": "2025-11-09T00:05:33.489Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 12,
+ "fields": {
+ "keyword": "interior lighting design",
+ "industry": 21,
+ "sector": 62,
+ "volume": 900,
+ "difficulty": 84,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.466Z",
+ "updated_at": "2025-11-09T00:05:33.466Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 186,
+ "fields": {
+ "keyword": "is it safe to use a vibrating back massager during pregnancy",
+ "industry": 25,
+ "sector": 101,
+ "volume": 150,
+ "difficulty": 7,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.956Z",
+ "updated_at": "2025-12-01T03:36:50.956Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 136,
+ "fields": {
+ "keyword": "keyword 1",
+ "industry": 1,
+ "sector": 1,
+ "volume": 10000,
+ "difficulty": 45,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-30T05:01:02.843Z",
+ "updated_at": "2025-11-30T05:01:02.843Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 137,
+ "fields": {
+ "keyword": "keywrod 2",
+ "industry": 25,
+ "sector": 106,
+ "volume": 5000,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-30T05:01:02.862Z",
+ "updated_at": "2025-11-30T05:01:02.862Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 38,
+ "fields": {
+ "keyword": "kitchen remodeling",
+ "industry": 21,
+ "sector": 60,
+ "volume": 600,
+ "difficulty": 36,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.497Z",
+ "updated_at": "2025-11-09T00:05:33.497Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 30,
+ "fields": {
+ "keyword": "landscape design ideas",
+ "industry": 21,
+ "sector": 61,
+ "volume": 500,
+ "difficulty": 20,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.487Z",
+ "updated_at": "2025-11-09T00:05:33.487Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 29,
+ "fields": {
+ "keyword": "lawn care tips",
+ "industry": 21,
+ "sector": 61,
+ "volume": 550,
+ "difficulty": 28,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.486Z",
+ "updated_at": "2025-11-09T00:05:33.486Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 24,
+ "fields": {
+ "keyword": "lawn mowing tips",
+ "industry": 21,
+ "sector": 61,
+ "volume": 800,
+ "difficulty": 68,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.479Z",
+ "updated_at": "2025-11-09T00:05:33.479Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 144,
+ "fields": {
+ "keyword": "lower back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 1200,
+ "difficulty": 9,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.799Z",
+ "updated_at": "2025-12-01T03:36:50.799Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 184,
+ "fields": {
+ "keyword": "massager back",
+ "industry": 25,
+ "sector": 101,
+ "volume": 150,
+ "difficulty": 11,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.949Z",
+ "updated_at": "2025-12-01T03:36:50.949Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 143,
+ "fields": {
+ "keyword": "massager for back",
+ "industry": 25,
+ "sector": 101,
+ "volume": 1400,
+ "difficulty": 4,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.795Z",
+ "updated_at": "2025-12-01T03:36:50.795Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 182,
+ "fields": {
+ "keyword": "massager for back pain",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 15,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.942Z",
+ "updated_at": "2025-12-01T03:36:50.942Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 139,
+ "fields": {
+ "keyword": "medical software",
+ "industry": 25,
+ "sector": 101,
+ "volume": 5000,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.778Z",
+ "updated_at": "2025-12-01T03:36:50.778Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 145,
+ "fields": {
+ "keyword": "neck and back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 1000,
+ "difficulty": 10,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.802Z",
+ "updated_at": "2025-12-01T03:36:50.802Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 50,
+ "fields": {
+ "keyword": "organic gardening",
+ "industry": 21,
+ "sector": 59,
+ "volume": 500,
+ "difficulty": 20,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.510Z",
+ "updated_at": "2025-11-09T00:05:33.510Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 22,
+ "fields": {
+ "keyword": "outdoor kitchen design",
+ "industry": 21,
+ "sector": 61,
+ "volume": 900,
+ "difficulty": 84,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.477Z",
+ "updated_at": "2025-11-09T00:05:33.477Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 25,
+ "fields": {
+ "keyword": "outdoor lighting ideas",
+ "industry": 21,
+ "sector": 61,
+ "volume": 750,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.481Z",
+ "updated_at": "2025-11-09T00:05:33.481Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 28,
+ "fields": {
+ "keyword": "outdoor patio design",
+ "industry": 21,
+ "sector": 61,
+ "volume": 600,
+ "difficulty": 36,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.485Z",
+ "updated_at": "2025-11-09T00:05:33.485Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 35,
+ "fields": {
+ "keyword": "painting tips",
+ "industry": 21,
+ "sector": 60,
+ "volume": 750,
+ "difficulty": 60,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.494Z",
+ "updated_at": "2025-11-09T00:05:33.494Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 7,
+ "fields": {
+ "keyword": "pillow arrangement",
+ "industry": 21,
+ "sector": 63,
+ "volume": 650,
+ "difficulty": 44,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.460Z",
+ "updated_at": "2025-11-09T00:05:33.460Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 46,
+ "fields": {
+ "keyword": "plant care tips",
+ "industry": 21,
+ "sector": 59,
+ "volume": 700,
+ "difficulty": 52,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.506Z",
+ "updated_at": "2025-11-09T00:05:33.506Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 164,
+ "fields": {
+ "keyword": "portable back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 1,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.880Z",
+ "updated_at": "2025-12-01T03:36:50.880Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 33,
+ "fields": {
+ "keyword": "power tools review",
+ "industry": 21,
+ "sector": 60,
+ "volume": 850,
+ "difficulty": 76,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.491Z",
+ "updated_at": "2025-11-09T00:05:33.491Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 138,
+ "fields": {
+ "keyword": "python programming",
+ "industry": 25,
+ "sector": 101,
+ "volume": 10000,
+ "difficulty": 45,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.765Z",
+ "updated_at": "2025-12-01T03:36:50.765Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 185,
+ "fields": {
+ "keyword": "renpho back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 150,
+ "difficulty": 1,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.952Z",
+ "updated_at": "2025-12-01T03:36:50.952Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 13,
+ "fields": {
+ "keyword": "room makeover ideas",
+ "industry": 21,
+ "sector": 62,
+ "volume": 850,
+ "difficulty": 76,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.467Z",
+ "updated_at": "2025-11-09T00:05:33.467Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 3,
+ "fields": {
+ "keyword": "rug selection guide",
+ "industry": 21,
+ "sector": 63,
+ "volume": 850,
+ "difficulty": 76,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.455Z",
+ "updated_at": "2025-11-09T00:05:33.455Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 1,
+ "fields": {
+ "keyword": "seasonal home decor",
+ "industry": 21,
+ "sector": 63,
+ "volume": 950,
+ "difficulty": 92,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.446Z",
+ "updated_at": "2025-11-09T00:05:33.446Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 41,
+ "fields": {
+ "keyword": "seasonal planting guide",
+ "industry": 21,
+ "sector": 59,
+ "volume": 950,
+ "difficulty": 92,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.501Z",
+ "updated_at": "2025-11-09T00:05:33.501Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 179,
+ "fields": {
+ "keyword": "self back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 22,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.932Z",
+ "updated_at": "2025-12-01T03:36:50.932Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 183,
+ "fields": {
+ "keyword": "shiatsu back and neck massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 2,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.946Z",
+ "updated_at": "2025-12-01T03:36:50.946Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 149,
+ "fields": {
+ "keyword": "shiatsu back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 700,
+ "difficulty": 9,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.818Z",
+ "updated_at": "2025-12-01T03:36:50.818Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 151,
+ "fields": {
+ "keyword": "shiatsu neck and back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 600,
+ "difficulty": 4,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.826Z",
+ "updated_at": "2025-12-01T03:36:50.826Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 189,
+ "fields": {
+ "keyword": "shop back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 250,
+ "difficulty": 33,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.966Z",
+ "updated_at": "2025-12-01T03:36:50.966Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 16,
+ "fields": {
+ "keyword": "small space design",
+ "industry": 21,
+ "sector": 62,
+ "volume": 700,
+ "difficulty": 52,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.470Z",
+ "updated_at": "2025-11-09T00:05:33.470Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 191,
+ "fields": {
+ "keyword": "test 1",
+ "industry": 25,
+ "sector": 101,
+ "volume": 34422,
+ "difficulty": 59,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-12T20:53:31.059Z",
+ "updated_at": "2025-12-12T20:53:31.059Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 23,
+ "fields": {
+ "keyword": "tree planting guide",
+ "industry": 21,
+ "sector": 61,
+ "volume": 850,
+ "difficulty": 76,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.478Z",
+ "updated_at": "2025-11-09T00:05:33.478Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 175,
+ "fields": {
+ "keyword": "upper back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 200,
+ "difficulty": 2,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.919Z",
+ "updated_at": "2025-12-01T03:36:50.919Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 6,
+ "fields": {
+ "keyword": "vase decoration ideas",
+ "industry": 21,
+ "sector": 63,
+ "volume": 700,
+ "difficulty": 52,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.459Z",
+ "updated_at": "2025-11-09T00:05:33.459Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 49,
+ "fields": {
+ "keyword": "vegetable gardening",
+ "industry": 21,
+ "sector": 59,
+ "volume": 550,
+ "difficulty": 28,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.509Z",
+ "updated_at": "2025-11-09T00:05:33.509Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 158,
+ "fields": {
+ "keyword": "venom back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 400,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.850Z",
+ "updated_at": "2025-12-01T03:36:50.850Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 162,
+ "fields": {
+ "keyword": "vibrating back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 300,
+ "difficulty": 10,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.870Z",
+ "updated_at": "2025-12-01T03:36:50.870Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 187,
+ "fields": {
+ "keyword": "wahl back massager",
+ "industry": 25,
+ "sector": 101,
+ "volume": 150,
+ "difficulty": 0,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-12-01T03:36:50.960Z",
+ "updated_at": "2025-12-01T03:36:50.960Z"
+ }
+},
+{
+ "model": "igny8_core_auth.seedkeyword",
+ "pk": 9,
+ "fields": {
+ "keyword": "wall art ideas",
+ "industry": 21,
+ "sector": 63,
+ "volume": 550,
+ "difficulty": 28,
+ "country": "US",
+ "is_active": true,
+ "created_at": "2025-11-09T00:05:33.462Z",
+ "updated_at": "2025-11-09T00:05:33.462Z"
+ }
+}
+]
| |