diff --git a/backend/celerybeat-schedule b/backend/celerybeat-schedule index cbf428af..09f6fcb3 100644 Binary files a/backend/celerybeat-schedule and b/backend/celerybeat-schedule differ diff --git a/backend/db.sqlite3 b/backend/db.sqlite3 new file mode 100644 index 00000000..71a8a011 Binary files /dev/null and b/backend/db.sqlite3 differ diff --git a/backend/igny8_core/business/site_building/migrations/0003_workflow_and_taxonomies.py b/backend/igny8_core/business/site_building/migrations/0003_workflow_and_taxonomies.py index 5d178df5..736e848e 100644 --- a/backend/igny8_core/business/site_building/migrations/0003_workflow_and_taxonomies.py +++ b/backend/igny8_core/business/site_building/migrations/0003_workflow_and_taxonomies.py @@ -5,8 +5,9 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('planner', '0008_stage1_site_builder_fields'), + ('planner', '0007_merge_20251109_2138'), ('site_building', '0002_sitebuilder_metadata'), + ('igny8_core_auth', '0014_remove_plan_operation_limits_phase0'), ] operations = [ @@ -19,7 +20,7 @@ class Migration(migrations.Migration): ('role', models.CharField(choices=[('hub', 'Hub Page'), ('supporting', 'Supporting Page'), ('attribute', 'Attribute Page')], default='hub', max_length=50)), ('coverage_status', models.CharField(choices=[('pending', 'Pending'), ('in_progress', 'In Progress'), ('complete', 'Complete')], default='pending', max_length=50)), ('metadata', models.JSONField(blank=True, default=dict, help_text='Additional coverage metadata (target pages, keyword counts, ai hints)')), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprintcluster_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprintcluster_set', to='igny8_core_auth.tenant')), ('cluster', models.ForeignKey(help_text='Planner cluster being mapped into the site blueprint', on_delete=django.db.models.deletion.CASCADE, related_name='blueprint_links', to='planner.clusters')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprintcluster_set', to='igny8_core_auth.sector')), ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprintcluster_set', to='igny8_core_auth.site')), @@ -44,7 +45,7 @@ class Migration(migrations.Migration): ('blocking_reason', models.TextField(blank=True, help_text='Human-readable explanation when blocked', null=True)), ('completed', models.BooleanField(default=False, help_text='Marks wizard completion')), ('metadata', models.JSONField(blank=True, default=dict)), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='workflowstate_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='workflowstate_set', to='igny8_core_auth.tenant')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workflowstate_set', to='igny8_core_auth.sector')), ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workflowstate_set', to='igny8_core_auth.site')), ('site_blueprint', models.OneToOneField(help_text='Blueprint whose progress is being tracked', on_delete=django.db.models.deletion.CASCADE, related_name='workflow_state', to='site_building.siteblueprint')), @@ -68,7 +69,7 @@ class Migration(migrations.Migration): ('description', models.TextField(blank=True, null=True)), ('metadata', models.JSONField(blank=True, default=dict, help_text='Additional taxonomy metadata or AI hints')), ('external_reference', models.CharField(blank=True, help_text='External system ID (WordPress/WooCommerce/etc.)', max_length=255, null=True)), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprinttaxonomy_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprinttaxonomy_set', to='igny8_core_auth.tenant')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprinttaxonomy_set', to='igny8_core_auth.sector')), ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='siteblueprinttaxonomy_set', to='igny8_core_auth.site')), ('site_blueprint', models.ForeignKey(help_text='Site blueprint this taxonomy belongs to', on_delete=django.db.models.deletion.CASCADE, related_name='taxonomies', to='site_building.siteblueprint')), diff --git a/backend/igny8_core/modules/planner/migrations/0008_stage1_site_builder_fields.py b/backend/igny8_core/modules/planner/migrations/0008_stage1_site_builder_fields.py index 65910440..62bb017d 100644 --- a/backend/igny8_core/modules/planner/migrations/0008_stage1_site_builder_fields.py +++ b/backend/igny8_core/modules/planner/migrations/0008_stage1_site_builder_fields.py @@ -16,7 +16,7 @@ def default_list(): class Migration(migrations.Migration): dependencies = [ - ('site_building', '0002_sitebuilder_metadata'), + ('site_building', '0003_workflow_and_taxonomies'), ('planner', '0007_merge_20251109_2138'), ] @@ -44,7 +44,14 @@ class Migration(migrations.Migration): migrations.AddField( model_name='contentideas', name='taxonomy', - field=models.ForeignKey(blank=True, help_text='Optional taxonomy association when derived from blueprint planning', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='content_ideas', to='site_building.siteblueprinttaxonomy'), + field=models.ForeignKey( + blank=True, + help_text='Optional taxonomy association when derived from blueprint planning', + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name='content_ideas', + to='site_building.SiteBlueprintTaxonomy', + ), ), migrations.AddField( model_name='keywords', diff --git a/backend/igny8_core/modules/writer/migrations/0012_metadata_mapping_tables.py b/backend/igny8_core/modules/writer/migrations/0012_metadata_mapping_tables.py index 22faca5c..321cae4e 100644 --- a/backend/igny8_core/modules/writer/migrations/0012_metadata_mapping_tables.py +++ b/backend/igny8_core/modules/writer/migrations/0012_metadata_mapping_tables.py @@ -20,7 +20,7 @@ class Migration(migrations.Migration): ('role', models.CharField(choices=[('hub', 'Hub Page'), ('supporting', 'Supporting Page'), ('attribute', 'Attribute Page')], default='hub', max_length=50)), ('source', models.CharField(choices=[('blueprint', 'Blueprint'), ('manual', 'Manual'), ('import', 'Import')], default='blueprint', max_length=50)), ('metadata', models.JSONField(blank=True, default=dict)), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contentclustermap_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contentclustermap_set', to='igny8_core_auth.tenant')), ('cluster', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_mappings', to='planner.clusters')), ('content', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='cluster_mappings', to='writer.content')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contentclustermap_set', to='igny8_core_auth.sector')), @@ -43,11 +43,11 @@ class Migration(migrations.Migration): ('updated_at', models.DateTimeField(auto_now=True)), ('source', models.CharField(choices=[('blueprint', 'Blueprint'), ('manual', 'Manual'), ('import', 'Import')], default='blueprint', max_length=50)), ('metadata', models.JSONField(blank=True, default=dict)), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contenttaxonomymap_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contenttaxonomymap_set', to='igny8_core_auth.tenant')), ('content', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='taxonomy_mappings', to='writer.content')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contenttaxonomymap_set', to='igny8_core_auth.sector')), ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contenttaxonomymap_set', to='igny8_core_auth.site')), - ('taxonomy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_mappings', to='site_building.siteblueprinttaxonomy')), + ('taxonomy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_mappings', to='site_building.SiteBlueprintTaxonomy')), ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='taxonomy_mappings', to='writer.tasks')), ], options={ @@ -68,7 +68,7 @@ class Migration(migrations.Migration): ('value', models.CharField(blank=True, max_length=255, null=True)), ('source', models.CharField(choices=[('blueprint', 'Blueprint'), ('manual', 'Manual'), ('import', 'Import')], default='blueprint', max_length=50)), ('metadata', models.JSONField(blank=True, default=dict)), - ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contentattributemap_set', to='igny8_core_auth.account')), + ('account', models.ForeignKey(db_column='tenant_id', on_delete=django.db.models.deletion.CASCADE, related_name='contentattributemap_set', to='igny8_core_auth.tenant')), ('content', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='attribute_mappings', to='writer.content')), ('sector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contentattributemap_set', to='igny8_core_auth.sector')), ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contentattributemap_set', to='igny8_core_auth.site')),