# Generated by Django 5.2.17 on 2026-10-06 17:23

import django.core.serializers.json
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='SystemLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
                ('level', models.CharField(choices=[('info', 'Info'), ('warning', 'Warning'), ('error', 'Error')], db_index=True, max_length=10)),
                ('module', models.CharField(choices=[('payments', 'Payments (M-Pesa)'), ('store', 'Online store'), ('pos', 'POS'), ('sales', 'Sales'), ('inventory', 'Inventory'), ('payouts', 'Author payouts'), ('expenses', 'Expenses'), ('catalog', 'Catalog'), ('system', 'System')], db_index=True, max_length=20)),
                ('event', models.CharField(db_index=True, help_text='Machine-readable event code, e.g. mpesa.callback.unmatched', max_length=80)),
                ('message', models.TextField()),
                ('reference', models.CharField(blank=True, db_index=True, help_text='Order reference, invoice number, POS payment id, …', max_length=100)),
                ('checkout_request_id', models.CharField(blank=True, db_index=True, max_length=100)),
                ('phone_number', models.CharField(blank=True, db_index=True, max_length=20)),
                ('mpesa_receipt', models.CharField(blank=True, db_index=True, max_length=50)),
                ('related_model', models.CharField(blank=True, help_text='app_label.model', max_length=100)),
                ('related_id', models.CharField(blank=True, max_length=50)),
                ('http_status', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('request_data', models.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True)),
                ('response_data', models.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True)),
                ('traceback', models.TextField(blank=True)),
                ('alert_sent_at', models.DateTimeField(blank=True, null=True)),
                ('resolved', models.BooleanField(db_index=True, default=False)),
                ('resolved_at', models.DateTimeField(blank=True, null=True)),
                ('resolution_notes', models.TextField(blank=True)),
                ('resolved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('user', models.ForeignKey(blank=True, help_text='Staff member whose action triggered this, if any.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'System Log entry',
                'verbose_name_plural': 'System Log',
                'ordering': ['-created_at'],
                'indexes': [models.Index(fields=['level', 'resolved', 'created_at'], name='system_logs_level_e4afbd_idx'), models.Index(fields=['module', 'created_at'], name='system_logs_module_b346b4_idx')],
            },
        ),
    ]
