Programming

1. oo1 init

# Generated by Django 6.1 on 2026-08-26 10:36

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='QualityCheck',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('run_period', models.IntegerField(db_index=True)),
                ('check_name', models.CharField(help_text="`check` is reserved by Django's model API", max_length=60)),
                ('severity', models.CharField(max_length=8)),
                ('status', models.CharField(max_length=8)),
                ('detail', models.TextField(blank=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'ordering': ['-run_period', 'check_name'],
            },
        ),
        migrations.CreateModel(
            name='ReportRun',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('period', models.IntegerField(db_index=True)),
                ('lang', models.CharField(default='ru', max_length=5)),
                ('fx_mode', models.CharField(default='nominal', max_length=12)),
                ('html_path', models.CharField(blank=True, max_length=500)),
                ('generated_at', models.DateTimeField(auto_now_add=True)),
                ('notes', models.TextField(blank=True)),
            ],
            options={
                'ordering': ['-period', '-generated_at'],
                'get_latest_by': 'generated_at',
            },
        ),
        migrations.CreateModel(
            name='Snapshot',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('report_date', models.DateField(unique=True)),
                ('period', models.IntegerField(db_index=True, help_text='YYYYMM of the month described')),
                ('source_name', models.CharField(blank=True, max_length=255)),
                ('source_sha256', models.CharField(blank=True, help_text='re-ingesting an identical file is a no-op', max_length=64)),
                ('row_count', models.BigIntegerField(default=0)),
                ('loan_count', models.BigIntegerField(default=0)),
                ('exposure_total', models.FloatField(default=0.0)),
                ('npl_ratio', models.FloatField(blank=True, null=True)),
                ('status', models.CharField(choices=[('ok', 'ok'), ('stale', 'stale'), ('failed', 'failed')], default='ok', max_length=12)),
                ('ingested_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'ordering': ['-period'],
            },
        ),
        migrations.CreateModel(
            name='MartRow',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('mart', models.CharField(db_index=True, max_length=40)),
                ('period', models.IntegerField(db_index=True)),
                ('dim_name', models.CharField(default='__all__', max_length=40)),
                ('dim_value', models.CharField(default='__all__', max_length=120)),
                ('k1', models.CharField(blank=True, default='', max_length=40)),
                ('k2', models.CharField(blank=True, default='', max_length=40)),
                ('data', models.JSONField(default=dict)),
            ],
            options={
                'indexes': [models.Index(fields=['mart', 'period'], name='portfolio_m_mart_58aa29_idx'), models.Index(fields=['mart', 'dim_name', 'dim_value'], name='portfolio_m_mart_b13717_idx')],
                'constraints': [models.UniqueConstraint(fields=('mart', 'period', 'dim_name', 'dim_value', 'k1', 'k2'), name='uniq_mart_row')],
            },
        ),
    ]
Helpful? Dislike 0 Log in to react