# Generated by Django 6.0 on 2025-12-08 16:43

import django.db.models.deletion
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='DailyStats',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateField(db_index=True, unique=True)),
                ('unique_visitors', models.IntegerField(default=0)),
                ('total_page_views', models.IntegerField(default=0)),
                ('new_visitors', models.IntegerField(default=0)),
                ('returning_visitors', models.IntegerField(default=0)),
                ('avg_time_on_site', models.IntegerField(default=0, help_text='Average seconds')),
                ('avg_pages_per_visit', models.DecimalField(decimal_places=2, default=0, max_digits=5)),
                ('bounce_rate', models.DecimalField(decimal_places=2, default=0, max_digits=5)),
                ('new_users', models.IntegerField(default=0)),
                ('orders', models.IntegerField(default=0)),
                ('revenue', models.DecimalField(decimal_places=2, default=0, max_digits=12)),
                ('mobile_visitors', models.IntegerField(default=0)),
                ('tablet_visitors', models.IntegerField(default=0)),
                ('desktop_visitors', models.IntegerField(default=0)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'verbose_name_plural': 'Daily Statistics',
                'ordering': ['-date'],
            },
        ),
        migrations.CreateModel(
            name='PopularPage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('url', models.CharField(db_index=True, max_length=500, unique=True)),
                ('page_title', models.CharField(blank=True, max_length=300)),
                ('view_count_today', models.IntegerField(default=0)),
                ('view_count_week', models.IntegerField(default=0)),
                ('view_count_month', models.IntegerField(default=0)),
                ('view_count_total', models.IntegerField(default=0)),
                ('avg_time_on_page', models.IntegerField(default=0)),
                ('bounce_rate', models.DecimalField(decimal_places=2, default=0, max_digits=5)),
                ('last_viewed', models.DateTimeField(auto_now=True)),
            ],
            options={
                'ordering': ['-view_count_total'],
            },
        ),
        migrations.CreateModel(
            name='TrafficAlert',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('alert_type', models.CharField(choices=[('spike', 'Traffic Spike'), ('drop', 'Traffic Drop'), ('suspicious', 'Suspicious Activity'), ('milestone', 'Milestone Reached')], max_length=20)),
                ('message', models.TextField()),
                ('metric_name', models.CharField(max_length=100)),
                ('metric_value', models.IntegerField()),
                ('threshold', models.IntegerField()),
                ('is_resolved', models.BooleanField(default=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='TrafficSource',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('source_type', models.CharField(choices=[('direct', 'Direct'), ('search', 'Search Engine'), ('social', 'Social Media'), ('email', 'Email'), ('referral', 'Referral'), ('paid', 'Paid Ads')], db_index=True, max_length=20)),
                ('source_name', models.CharField(blank=True, max_length=200)),
                ('referrer_url', models.CharField(blank=True, max_length=500)),
                ('utm_source', models.CharField(blank=True, max_length=200)),
                ('utm_medium', models.CharField(blank=True, max_length=200)),
                ('utm_campaign', models.CharField(blank=True, max_length=200)),
                ('utm_term', models.CharField(blank=True, max_length=200)),
                ('utm_content', models.CharField(blank=True, max_length=200)),
                ('visit_count', models.IntegerField(default=0)),
                ('page_views', models.IntegerField(default=0)),
                ('conversions', models.IntegerField(default=0)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'ordering': ['-visit_count'],
            },
        ),
        migrations.CreateModel(
            name='RealTimeVisitor',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('session_id', models.CharField(db_index=True, max_length=100, unique=True)),
                ('current_page', models.CharField(max_length=500)),
                ('ip_address', models.GenericIPAddressField()),
                ('device_type', models.CharField(blank=True, max_length=20)),
                ('browser', models.CharField(blank=True, max_length=50)),
                ('country', models.CharField(blank=True, max_length=100)),
                ('last_activity', models.DateTimeField(auto_now=True, db_index=True)),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-last_activity'],
            },
        ),
        migrations.CreateModel(
            name='Visitor',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ip_address', models.GenericIPAddressField(db_index=True)),
                ('user_agent', models.TextField()),
                ('fingerprint', models.CharField(db_index=True, max_length=64, unique=True)),
                ('device_type', models.CharField(blank=True, max_length=20)),
                ('browser', models.CharField(blank=True, max_length=50)),
                ('os', models.CharField(blank=True, max_length=50)),
                ('country', models.CharField(blank=True, max_length=100)),
                ('city', models.CharField(blank=True, max_length=100)),
                ('visit_count', models.IntegerField(default=1)),
                ('page_views', models.IntegerField(default=0)),
                ('first_visit', models.DateTimeField(auto_now_add=True)),
                ('last_visit', models.DateTimeField(auto_now=True)),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-last_visit'],
            },
        ),
        migrations.CreateModel(
            name='PageView',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('session_id', models.CharField(db_index=True, max_length=100)),
                ('url', models.CharField(db_index=True, max_length=500)),
                ('page_title', models.CharField(blank=True, max_length=300)),
                ('referrer', models.CharField(blank=True, max_length=500)),
                ('ip_address', models.GenericIPAddressField()),
                ('user_agent', models.TextField()),
                ('device_type', models.CharField(blank=True, max_length=20)),
                ('browser', models.CharField(blank=True, max_length=50)),
                ('os', models.CharField(blank=True, max_length=50)),
                ('country', models.CharField(blank=True, max_length=100)),
                ('city', models.CharField(blank=True, max_length=100)),
                ('time_on_page', models.IntegerField(default=0, help_text='Seconds spent on page')),
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-created_at'],
                'indexes': [models.Index(fields=['-created_at', 'url'], name='analytics_p_created_7b7dfb_idx'), models.Index(fields=['session_id', '-created_at'], name='analytics_p_session_5811c4_idx')],
            },
        ),
    ]
