48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
"""核心数据模型。
|
|||
|
|
|
||
|
|
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
|