# Generated by Django 6.0.3 on 2026-04-04 09:22 import apps.express_query.models 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="ExpressQueryTask", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("title", models.CharField(blank=True, default="", max_length=255, verbose_name="任务名称")), ( "waybill_image", models.FileField(upload_to=apps.express_query.models._waybill_upload_to, verbose_name="邮单页面"), ), ( "status", models.CharField( choices=[ ("pending", "待处理"), ("ocr_parsing", "OCR识别中"), ("waiting_login", "等待登录"), ("querying", "查询中"), ("success", "成功"), ("failed", "失败"), ], default="pending", max_length=32, verbose_name="任务状态", ), ), ( "carrier_type", models.CharField( choices=[("unknown", "未知"), ("ems", "EMS"), ("sf", "顺丰")], default="unknown", max_length=16, verbose_name="承运商", ), ), ("tracking_number", models.CharField(blank=True, default="", max_length=64, verbose_name="运单号")), ("ocr_text", models.TextField(blank=True, default="", verbose_name="OCR文本")), ("query_url", models.URLField(blank=True, default="", verbose_name="查询页面URL")), ( "result_pdf", models.FileField( blank=True, null=True, upload_to=apps.express_query.models._result_pdf_upload_to, verbose_name="查询结果PDF", ), ), ("result_payload", models.JSONField(blank=True, default=dict, verbose_name="执行结果")), ("queue_task_id", models.CharField(blank=True, default="", max_length=64, verbose_name="队列任务ID")), ("error_message", models.TextField(blank=True, default="", verbose_name="错误信息")), ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="创建时间")), ("started_at", models.DateTimeField(blank=True, null=True, verbose_name="开始时间")), ("finished_at", models.DateTimeField(blank=True, null=True, verbose_name="完成时间")), ("updated_at", models.DateTimeField(auto_now=True, verbose_name="更新时间")), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="express_query_tasks", to=settings.AUTH_USER_MODEL, verbose_name="创建人", ), ), ], options={ "verbose_name": "快递查询任务", "verbose_name_plural": "快递查询任务", "ordering": ["-created_at"], "indexes": [ models.Index(fields=["status", "-created_at"], name="express_que_status_cf7fda_idx"), models.Index(fields=["carrier_type", "-created_at"], name="express_que_carrier_3b108f_idx"), models.Index(fields=["tracking_number"], name="express_que_trackin_0d71fc_idx"), ], }, ), ]