# Generated by Django 5.2.16 on 2026-07-31 01:19 import django.db.models.deletion from django.conf import settings from django.db import migrations, models import infrasynth.shared.enums class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="Workflow", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("slug", models.SlugField(max_length=100, unique=True)), ("name", models.CharField(max_length=200)), ("description", models.TextField(blank=True)), ("is_active", models.BooleanField(default=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ], options={ "db_table": "workflows_definition", }, ), migrations.CreateModel( name="WorkflowNode", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("name", models.CharField(max_length=200)), ( "node_type", models.CharField( choices=[("start", "Start"), ("intermediate", "Intermediate"), ("end", "End")], default="intermediate", max_length=20, ), ), ("min_approvals", models.PositiveSmallIntegerField(default=1)), ( "approval_strategy", models.CharField( choices=infrasynth.shared.enums.ApprovalStrategy.choices, default=infrasynth.shared.enums.ApprovalStrategy["ALL"], max_length=20, ), ), ("position_x", models.IntegerField(default=0)), ("position_y", models.IntegerField(default=0)), ( "workflow", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="nodes", to="infrasynth_workflows.workflow", ), ), ], options={ "db_table": "workflows_node", "unique_together": {("workflow", "name")}, }, ), migrations.CreateModel( name="WorkflowInstance", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "status", models.CharField( choices=[ ("in_progress", "In Progress"), ("completed", "Completed"), ("cancelled", "Cancelled"), ], default="in_progress", max_length=20, ), ), ("started_at", models.DateTimeField(auto_now_add=True)), ("completed_at", models.DateTimeField(blank=True, null=True)), ("metadata", models.JSONField(default=dict)), ( "owner", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "workflow", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="instances", to="infrasynth_workflows.workflow", ), ), ( "current_node", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_workflows.workflownode", ), ), ], options={ "db_table": "workflows_instance", }, ), migrations.CreateModel( name="NodeAssignment", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("visit_number", models.IntegerField(default=1)), ("is_required", models.BooleanField(default=True)), ("has_processed", models.BooleanField(default=False)), ("decision", models.CharField(blank=True, max_length=50, null=True)), ("comments", models.TextField(blank=True)), ("submitted_data", models.JSONField(blank=True, default=dict, null=True)), ("processed_at", models.DateTimeField(blank=True, null=True)), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="+", to=settings.AUTH_USER_MODEL ), ), ( "instance", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="assignments", to="infrasynth_workflows.workflowinstance", ), ), ( "node", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="assignments", to="infrasynth_workflows.workflownode", ), ), ], options={ "db_table": "workflows_node_assignment", }, ), migrations.CreateModel( name="Transition", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("condition_slug", models.CharField(blank=True, max_length=100)), ("is_default", models.BooleanField(default=False)), ( "from_node", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="outgoing_transitions", to="infrasynth_workflows.workflownode", ), ), ( "to_node", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="incoming_transitions", to="infrasynth_workflows.workflownode", ), ), ], options={ "db_table": "workflows_transition", "unique_together": {("from_node", "condition_slug")}, }, ), migrations.CreateModel( name="WorkflowObserver", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "instance", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="observers", to="infrasynth_workflows.workflowinstance", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="+", to=settings.AUTH_USER_MODEL ), ), ], options={ "db_table": "workflows_observer", "unique_together": {("instance", "user")}, }, ), ]