"""核心数据模型。 OrderTask 对齐 docs/04-architecture.md §3.3 的内部任务模型字段集合与类型。 字段顺序因 dataclass「无默认值字段须在有默认值字段之前」的约束做了分组调整, 字段集合、类型与语义与文档一致。支付模式不挂在本模型上(见 §3.3 说明与 §4.4 PaymentConfig)。 """ from __future__ import annotations from dataclasses import dataclass, field from datetime import datetime from decimal import Decimal from src.core.status import TaskStatus @dataclass class OrderTask: """一条已审核的拼多多下单任务。 必填字段(来自 Excel 必填列)在前,其余可选字段与执行期回填字段带默认值。 本模型只承载数据,不做业务校验;表头/数量等校验在 Excel 导入模块(T-201)。 """ # 必填:来自 Excel 的核心任务信息 task_id: str row_index: int product_url: str sku_text: str quantity: int # 可选:来自 Excel 的辅助信息 sku_items: dict[str, str] = field(default_factory=dict) product_name: str | None = None receiver: str | None = None phone: str | None = None address: str | None = None note: str | None = None expected_amount: Decimal | None = None max_pay_amount: Decimal | None = None # 执行期回填 status: TaskStatus = TaskStatus.PENDING order_no: str | None = None fail_reason: str | None = None screenshot_path: str | None = None started_at: datetime | None = None finished_at: datetime | None = None