Files
green_classroom/core/migrations/0002_crawltask.py
2025-09-24 03:38:32 +08:00

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'],
},
),
]