46 lines
3.0 KiB
Python
46 lines
3.0 KiB
Python
# 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'],
|
|
},
|
|
),
|
|
]
|