101 lines
5.9 KiB
Python
101 lines
5.9 KiB
Python
|
|
from django.db import migrations, models
|
||
|
|
import django.db.models.deletion
|
||
|
|
import uuid
|
||
|
|
|
||
|
|
class Migration(migrations.Migration):
|
||
|
|
initial = True
|
||
|
|
|
||
|
|
dependencies = [
|
||
|
|
('orgs', '0001_initial'),
|
||
|
|
('mlstore', '0001_initial'),
|
||
|
|
('users', '0001_initial'),
|
||
|
|
]
|
||
|
|
|
||
|
|
operations = [
|
||
|
|
migrations.CreateModel(
|
||
|
|
name='OnboardingFlow',
|
||
|
|
fields=[
|
||
|
|
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
||
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
||
|
|
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||
|
|
('title', models.CharField(max_length=255)),
|
||
|
|
('description', models.TextField(blank=True, default='')),
|
||
|
|
('status', models.CharField(choices=[('draft', 'Draft'), ('published', 'Published'), ('archived', 'Archived')], default='draft', max_length=20)),
|
||
|
|
('agent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='onboarding_flows', to='mlstore.agent')),
|
||
|
|
('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='onboarding_flows', to='orgs.role')),
|
||
|
|
],
|
||
|
|
options={
|
||
|
|
'verbose_name': 'Onboarding Flow',
|
||
|
|
'verbose_name_plural': 'Onboarding Flows',
|
||
|
|
'ordering': ['-created_at'],
|
||
|
|
},
|
||
|
|
),
|
||
|
|
migrations.CreateModel(
|
||
|
|
name='OnboardingPage',
|
||
|
|
fields=[
|
||
|
|
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
||
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
||
|
|
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||
|
|
('order', models.IntegerField(default=0)),
|
||
|
|
('title', models.CharField(max_length=255)),
|
||
|
|
('body', models.TextField(blank=True, default='')),
|
||
|
|
('meta', models.JSONField(blank=True, default=dict)),
|
||
|
|
('flow', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pages', to='onboarding.onboardingflow')),
|
||
|
|
],
|
||
|
|
options={
|
||
|
|
'verbose_name': 'Onboarding Page',
|
||
|
|
'verbose_name_plural': 'Onboarding Pages',
|
||
|
|
'ordering': ['order', 'created_at'],
|
||
|
|
},
|
||
|
|
),
|
||
|
|
migrations.CreateModel(
|
||
|
|
name='OnboardingField',
|
||
|
|
fields=[
|
||
|
|
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
||
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
||
|
|
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||
|
|
('order', models.IntegerField(default=0)),
|
||
|
|
('key', models.CharField(max_length=120)),
|
||
|
|
('label', models.CharField(max_length=255)),
|
||
|
|
('field_type', models.CharField(choices=[('text', 'Text'), ('textarea', 'Textarea'), ('select', 'Select'), ('multiselect', 'Multi Select'), ('number', 'Number'), ('boolean', 'Boolean'), ('date', 'Date')], default='text', max_length=30)),
|
||
|
|
('required', models.BooleanField(default=False)),
|
||
|
|
('help_text', models.TextField(blank=True, default='')),
|
||
|
|
('placeholder', models.CharField(blank=True, default='', max_length=255)),
|
||
|
|
('options', models.JSONField(blank=True, default=list)),
|
||
|
|
('default_value', models.JSONField(blank=True, null=True, default=None)),
|
||
|
|
('validation', models.JSONField(blank=True, default=dict)),
|
||
|
|
('page', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='onboarding.onboardingpage')),
|
||
|
|
],
|
||
|
|
options={
|
||
|
|
'verbose_name': 'Onboarding Field',
|
||
|
|
'verbose_name_plural': 'Onboarding Fields',
|
||
|
|
'ordering': ['order', 'created_at'],
|
||
|
|
'unique_together': {('page', 'key')},
|
||
|
|
},
|
||
|
|
),
|
||
|
|
migrations.CreateModel(
|
||
|
|
name='OnboardingSession',
|
||
|
|
fields=[
|
||
|
|
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
||
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
||
|
|
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||
|
|
('status', models.CharField(choices=[('in_progress', 'In Progress'), ('completed', 'Completed'), ('abandoned', 'Abandoned')], default='in_progress', max_length=20)),
|
||
|
|
('current_page_order', models.IntegerField(default=0)),
|
||
|
|
('responses', models.JSONField(blank=True, default=dict)),
|
||
|
|
('completed_at', models.DateTimeField(blank=True, null=True)),
|
||
|
|
('agent_run', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='onboarding_sessions', to='mlstore.agentrun')),
|
||
|
|
('flow', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sessions', to='onboarding.onboardingflow')),
|
||
|
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='onboarding_sessions', to='users.user')),
|
||
|
|
],
|
||
|
|
options={
|
||
|
|
'verbose_name': 'Onboarding Session',
|
||
|
|
'verbose_name_plural': 'Onboarding Sessions',
|
||
|
|
'ordering': ['-created_at'],
|
||
|
|
},
|
||
|
|
),
|
||
|
|
]
|