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')],
},
),
]
PO
powerty
Author
· Staff
Aug. 26, 2026
Aug. 26, 2026
1
Views
0
Likes
1m
Read