# Generated by Django 5.1 on 2025-09-23 19:28 from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('core', '0001_initial'), ] operations = [ migrations.CreateModel( name='CrawlTask', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, verbose_name='任务名称')), ('task_type', models.CharField(choices=[('keyword', '关键词搜索'), ('historical', '历史文章'), ('full_site', '全站爬取')], default='keyword', max_length=20, verbose_name='任务类型')), ('keyword', models.CharField(blank=True, max_length=200, null=True, verbose_name='搜索关键词')), ('websites', models.JSONField(default=list, verbose_name='目标网站')), ('start_date', models.DateField(blank=True, null=True, verbose_name='开始日期')), ('end_date', models.DateField(blank=True, null=True, verbose_name='结束日期')), ('max_pages', models.IntegerField(default=10, verbose_name='最大页数')), ('max_articles', models.IntegerField(default=100, verbose_name='最大文章数')), ('status', models.CharField(choices=[('pending', '等待中'), ('running', '运行中'), ('completed', '已完成'), ('failed', '失败'), ('cancelled', '已取消')], default='pending', max_length=20, verbose_name='状态')), ('progress', models.IntegerField(default=0, verbose_name='进度百分比')), ('current_website', models.CharField(blank=True, max_length=100, null=True, verbose_name='当前网站')), ('current_action', models.CharField(blank=True, max_length=200, null=True, verbose_name='当前操作')), ('total_articles', models.IntegerField(default=0, verbose_name='总文章数')), ('success_count', models.IntegerField(default=0, verbose_name='成功数')), ('failed_count', models.IntegerField(default=0, verbose_name='失败数')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('started_at', models.DateTimeField(blank=True, null=True, verbose_name='开始时间')), ('completed_at', models.DateTimeField(blank=True, null=True, verbose_name='完成时间')), ('error_message', models.TextField(blank=True, null=True, verbose_name='错误信息')), ('result_details', models.JSONField(blank=True, default=dict, verbose_name='结果详情')), ('created_by', models.CharField(blank=True, max_length=100, null=True, verbose_name='创建者')), ], options={ 'verbose_name': '爬取任务', 'verbose_name_plural': '爬取任务', 'ordering': ['-created_at'], }, ), ]