refactor stage 1
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# Generated by Django 5.2.8 on 2025-11-19
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
def default_json():
|
||||
return {}
|
||||
|
||||
|
||||
def default_list():
|
||||
return []
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('site_building', '0002_sitebuilder_metadata'),
|
||||
('planner', '0007_merge_20251109_2138'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='clusters',
|
||||
name='context_type',
|
||||
field=models.CharField(choices=[('topic', 'Topic Cluster'), ('attribute', 'Attribute Cluster'), ('service_line', 'Service Line')], default='topic', help_text='Primary dimension for this cluster (topic, attribute, service line)', max_length=50),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='clusters',
|
||||
name='dimension_meta',
|
||||
field=models.JSONField(blank=True, default=default_json, help_text='Extended metadata (taxonomy hints, attribute suggestions, coverage targets)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentideas',
|
||||
name='cluster_role',
|
||||
field=models.CharField(choices=[('hub', 'Hub Page'), ('supporting', 'Supporting Page'), ('attribute', 'Attribute Page')], default='hub', help_text='Role within the cluster-driven sitemap', max_length=50),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentideas',
|
||||
name='site_entity_type',
|
||||
field=models.CharField(choices=[('page', 'Site Page'), ('blog_post', 'Blog Post'), ('product', 'Product'), ('service', 'Service'), ('taxonomy', 'Taxonomy Page')], default='page', help_text='Target entity type when promoting idea into tasks/pages', max_length=50),
|
||||
),
|
||||
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'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='keywords',
|
||||
name='attribute_values',
|
||||
field=models.JSONField(blank=True, default=default_list, help_text='Optional attribute metadata (e.g., product specs, service modifiers)'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='clusters',
|
||||
index=models.Index(fields=['context_type'], name='planner_cl_context__2ed54f_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentideas',
|
||||
index=models.Index(fields=['site_entity_type'], name='planner_co_site_ent_d3183c_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentideas',
|
||||
index=models.Index(fields=['cluster_role'], name='planner_co_cluster__f97a65_idx'),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('site_building', '0003_workflow_and_taxonomies'),
|
||||
('planner', '0008_stage1_site_builder_fields'),
|
||||
('writer', '0011_add_universal_content_types'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ContentClusterMap',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('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')),
|
||||
('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')),
|
||||
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contentclustermap_set', to='igny8_core_auth.site')),
|
||||
('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='cluster_mappings', to='writer.tasks')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Content Cluster Map',
|
||||
'verbose_name_plural': 'Content Cluster Maps',
|
||||
'db_table': 'igny8_content_cluster_map',
|
||||
'ordering': ['-created_at'],
|
||||
'unique_together': {('content', 'cluster', 'role')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ContentTaxonomyMap',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
|
||||
('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')),
|
||||
('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')),
|
||||
('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='taxonomy_mappings', to='writer.tasks')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Content Taxonomy Map',
|
||||
'verbose_name_plural': 'Content Taxonomy Maps',
|
||||
'db_table': 'igny8_content_taxonomy_map',
|
||||
'ordering': ['-created_at'],
|
||||
'unique_together': {('content', 'taxonomy')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ContentAttributeMap',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('name', models.CharField(max_length=120)),
|
||||
('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')),
|
||||
('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')),
|
||||
('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='attribute_mappings', to='writer.tasks')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Content Attribute Map',
|
||||
'verbose_name_plural': 'Content Attribute Maps',
|
||||
'db_table': 'igny8_content_attribute_map',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentclustermap',
|
||||
index=models.Index(fields=['cluster', 'role'], name='writer_con_cluster__d06bd6_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentclustermap',
|
||||
index=models.Index(fields=['content', 'role'], name='writer_con_content__bb02dd_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentclustermap',
|
||||
index=models.Index(fields=['task', 'role'], name='writer_con_task__role_828ce1_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contenttaxonomymap',
|
||||
index=models.Index(fields=['taxonomy'], name='writer_con_taxonomy_d55410_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contenttaxonomymap',
|
||||
index=models.Index(fields=['content', 'taxonomy'], name='writer_con_content__0af6a6_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contenttaxonomymap',
|
||||
index=models.Index(fields=['task', 'taxonomy'], name='writer_con_task__taxon_e3bdad_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentattributemap',
|
||||
index=models.Index(fields=['name'], name='writer_con_name_a9671a_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentattributemap',
|
||||
index=models.Index(fields=['content', 'name'], name='writer_con_content__34a91e_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentattributemap',
|
||||
index=models.Index(fields=['task', 'name'], name='writer_con_task__name_fa4a4e_idx'),
|
||||
),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user