init: Prefect ETL sync project (RIIN/SDS → PG) with 12 sync flows
This commit is contained in:
@@ -0,0 +1,409 @@
|
||||
"""RIIN 分销平台 —— 数据模型(pydantic v2)。
|
||||
|
||||
忠实还原 @inkreach/riin-dis 的 TypeScript 类型,extra='allow' 兼容未知字段。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from enum import IntEnum
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from pydantic.alias_generators import to_camel
|
||||
|
||||
|
||||
class PlatformType(IntEnum):
|
||||
TIKTOK = 11
|
||||
TEMU = 13
|
||||
SHEIN = 17
|
||||
WALMART = 19
|
||||
|
||||
|
||||
class ShopType(IntEnum):
|
||||
TIKTOK = 11
|
||||
TEMU = 13
|
||||
SHEIN = 17
|
||||
WALMART = 19
|
||||
|
||||
|
||||
class OrderStatusValue(IntEnum):
|
||||
NOT_PUSHED = -4
|
||||
PENDING_REVIEW = -5
|
||||
ASSIGN_FAILED = -6
|
||||
UNDER_REVIEW = -3
|
||||
PENDING_PUSH = 1
|
||||
UNDER_REVIEW_DISTRIBUTOR = 3
|
||||
PUSHED = 4
|
||||
IN_PRODUCTION = 5
|
||||
SHIPPED = 12
|
||||
COMPLETED = 13
|
||||
CANCELLED = 14
|
||||
CLOSED = 15
|
||||
DAY_RANGE_3 = 101
|
||||
DAY_RANGE_3_7 = 102
|
||||
DAY_RANGE_7_15 = 103
|
||||
DAY_RANGE_15_PLUS = 104
|
||||
|
||||
|
||||
class ExpressSource(IntEnum):
|
||||
FACTORY = 1
|
||||
PLATFORM_LABEL = 2
|
||||
SELF_LABEL = 3
|
||||
|
||||
|
||||
class TimeType(IntEnum):
|
||||
ORDER_CREATE = 1
|
||||
PUSH_FACTORY = 5
|
||||
MERCHANT_PUSH = 3
|
||||
SHIP = 4
|
||||
|
||||
|
||||
class _RiinModel(BaseModel):
|
||||
model_config = ConfigDict(
|
||||
extra="allow",
|
||||
populate_by_name=True,
|
||||
alias_generator=to_camel,
|
||||
)
|
||||
|
||||
|
||||
# ----- 认证 -----
|
||||
|
||||
|
||||
class LoginResult(_RiinModel):
|
||||
id: str | None = None
|
||||
tenant_id: str | None = None
|
||||
sub_id: str | None = None
|
||||
tenant_name: str | None = None
|
||||
username: str | None = None
|
||||
nickname: str | None = None
|
||||
user_type: str | None = None
|
||||
token: str
|
||||
token_flag: str | None = None
|
||||
invite_code: str | None = None
|
||||
main_account: bool | None = None
|
||||
factory: bool | None = None
|
||||
distribution: bool | None = None
|
||||
sub_distribution: bool | None = None
|
||||
|
||||
|
||||
# ----- 订单 -----
|
||||
|
||||
|
||||
class ExpressItem(_RiinModel):
|
||||
express_name: str | None = None
|
||||
ship_logistics_type: str | None = None
|
||||
|
||||
|
||||
class Order(_RiinModel):
|
||||
id: str
|
||||
tenant_id: str | None = None
|
||||
sub_id: str | None = None
|
||||
sub_name: str | None = None
|
||||
source_platform_oid: str | None = None
|
||||
platform_oid: str | None = None
|
||||
platform_order_name: str | None = None
|
||||
order_status: int | None = None
|
||||
order_type: int | None = None
|
||||
goods_total_qty: int | None = None
|
||||
platform_order_status: str | None = None
|
||||
platform_refund_status: str | None = None
|
||||
platform_shop_code: str | None = None
|
||||
platform_shop_id: str | None = None
|
||||
platform_shop_name: str | None = None
|
||||
platform_type: int | None = None
|
||||
sub_platform_type: int | None = None
|
||||
seller_flag: str | None = None
|
||||
factory_remark: str | None = None
|
||||
distributor_remark: str | None = None
|
||||
seller_remark: str | None = None
|
||||
buyer_remark: str | None = None
|
||||
delivery_courier: str | None = None
|
||||
express_code: str | None = None
|
||||
express_fee: float | None = None
|
||||
express_source: int | None = None
|
||||
courier_number: str | None = None
|
||||
consignee_name: str | None = None
|
||||
phone: str | None = None
|
||||
email: str | None = None
|
||||
address: str | None = None
|
||||
receiver_country: str | None = None
|
||||
receiver_province: str | None = None
|
||||
receiver_city: str | None = None
|
||||
receiver_district: str | None = None
|
||||
receiver_town: str | None = None
|
||||
post_code: str | None = None
|
||||
currency: str | None = None
|
||||
currency_type: str | None = None
|
||||
total_fee: float | None = None
|
||||
payment: float | None = None
|
||||
received_payment: float | None = None
|
||||
total_price: float | None = None
|
||||
total_sell_price: float | None = None
|
||||
post_fee: float | None = None
|
||||
order_create_time: str | None = None
|
||||
pre_shipping_time: str | None = None
|
||||
shipping_time: str | None = None
|
||||
order_pay_time: str | None = None
|
||||
order_time: str | None = None
|
||||
finish_time: str | None = None
|
||||
cancel_time: str | None = None
|
||||
audit_time: str | None = None
|
||||
push_time: str | None = None
|
||||
distributor_push_time: str | None = None
|
||||
distributor_push_target_name: str | None = None
|
||||
except_last_shipping_time: str | None = None
|
||||
push_msg: str | None = None
|
||||
pushed_failed: str | None = None
|
||||
assigned_fail_reason: str | None = None
|
||||
urgent_order: int | None = None
|
||||
is_third_flag: bool | None = None
|
||||
is_custom_product: bool | None = None
|
||||
express_list: list[ExpressItem] = []
|
||||
|
||||
|
||||
class OrderPageData(_RiinModel):
|
||||
records: list[Order] = []
|
||||
total: int = 0
|
||||
|
||||
|
||||
class OrderPageResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: OrderPageData = OrderPageData()
|
||||
|
||||
|
||||
class PrintingImage(_RiinModel):
|
||||
id: str | None = None
|
||||
type: int | None = None
|
||||
url: str | None = None
|
||||
name: str | None = None
|
||||
code: str | None = None
|
||||
|
||||
|
||||
class OrderGoodsImageObjs(_RiinModel):
|
||||
sku_image: str | None = None
|
||||
printing_image: str | None = None
|
||||
printing_images: list[PrintingImage] = []
|
||||
sku_images: list[str] | None = None
|
||||
print_urls: list[str] = []
|
||||
sku_urls: list[str] = []
|
||||
|
||||
|
||||
class OrderGoods(_RiinModel):
|
||||
id: str
|
||||
order_id: str | None = None
|
||||
platform_oid: str | None = None
|
||||
platform_spu_id: str | None = None
|
||||
platform_sku_id: str | None = None
|
||||
title: str | None = None
|
||||
specification: str | None = None
|
||||
goods_status: str | None = None
|
||||
refund_status: str | None = None
|
||||
price: float | None = None
|
||||
sell_price: float | None = None
|
||||
num: int | None = None
|
||||
total_price: float | None = None
|
||||
total_sell_price: float | None = None
|
||||
sku_image: str | None = None
|
||||
mapping_sku_code: str | None = None
|
||||
factory_mapping_sku_code: str | None = None
|
||||
style_code: str | None = None
|
||||
image_code: str | None = None
|
||||
size_code: str | None = None
|
||||
color_code: str | None = None
|
||||
style_name: str | None = None
|
||||
image_name: str | None = None
|
||||
size_name: str | None = None
|
||||
color_name: str | None = None
|
||||
product_code: str | None = None
|
||||
craft_type: int | None = None
|
||||
print_position: str | None = None
|
||||
image_objs: Any | None = None
|
||||
|
||||
|
||||
class OrderGoodsResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: list[OrderGoods] = []
|
||||
|
||||
|
||||
class OrderListCount(_RiinModel):
|
||||
assigned_suceessed: int = 0
|
||||
factory_auditing: int = 0
|
||||
in_producing: int = 0
|
||||
shipped: int = 0
|
||||
closed: int = 0
|
||||
refunding: int = 0
|
||||
refunded: int = 0
|
||||
rejecting: int = 0
|
||||
rejected_to_shop: int = 0
|
||||
day_range_group1: int = 0
|
||||
day_range_group2: int = 0
|
||||
day_range_group3: int = 0
|
||||
day_range_group4: int = 0
|
||||
|
||||
|
||||
class OrderListCountResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: OrderListCount = OrderListCount()
|
||||
|
||||
|
||||
class OrderLog(_RiinModel):
|
||||
id: str | None = None
|
||||
order_id: str | None = None
|
||||
platform_oid: str | None = None
|
||||
operate_type: str | None = None
|
||||
operate_msg: str | None = None
|
||||
operator_name: str | None = None
|
||||
operate_time: str | None = None
|
||||
|
||||
|
||||
class OrderLogResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: list[OrderLog] = []
|
||||
|
||||
|
||||
# ----- 店铺 / 工厂 / 客户 -----
|
||||
|
||||
|
||||
class CustomerShop(_RiinModel):
|
||||
tenant_id: str | None = None
|
||||
tenant_name: str | None = None
|
||||
shop_id: str | None = None
|
||||
shop_code: str | None = None
|
||||
shop_name: str | None = None
|
||||
shop_type: int | None = None
|
||||
sub_id: str | None = None
|
||||
|
||||
|
||||
class CustomerShopListResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: list[CustomerShop] = []
|
||||
|
||||
|
||||
class FactoryInfo(_RiinModel):
|
||||
factory_id: str | None = None
|
||||
phone: str | None = None
|
||||
contact: str | None = None
|
||||
address: str | None = None
|
||||
name: str | None = None
|
||||
logo_url: str | None = None
|
||||
|
||||
|
||||
class FactoryInfoListResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: list[FactoryInfo] = []
|
||||
|
||||
|
||||
class Customer(_RiinModel):
|
||||
id: str | None = None
|
||||
tenant_id: str | None = None
|
||||
customer_tenant_id: str | None = None
|
||||
customer_name: str | None = None
|
||||
username: str | None = None
|
||||
contacts: str | None = None
|
||||
mobile: str | None = None
|
||||
settlement_currency: int | None = None
|
||||
disable: int | None = None
|
||||
|
||||
|
||||
class CustomerListResponse(_RiinModel):
|
||||
successful: bool | None = None
|
||||
message: str | None = None
|
||||
error_code: str | None = None
|
||||
data: list[Customer] = []
|
||||
|
||||
|
||||
# ----- 辅助主数据 -----
|
||||
|
||||
|
||||
class Article(_RiinModel):
|
||||
id: str | None = None
|
||||
code: str | None = None
|
||||
name: str | None = None
|
||||
|
||||
|
||||
class Size(_RiinModel):
|
||||
id: str | None = None
|
||||
code: str | None = None
|
||||
name: str | None = None
|
||||
|
||||
|
||||
class Color(_RiinModel):
|
||||
id: str | None = None
|
||||
code: str | None = None
|
||||
name: str | None = None
|
||||
|
||||
|
||||
class ThirdInterfaceCustomer(_RiinModel):
|
||||
id: str | None = None
|
||||
name: str | None = None
|
||||
|
||||
|
||||
class ExpressInfo(_RiinModel):
|
||||
id: str | None = None
|
||||
name: str | None = None
|
||||
code: str | None = None
|
||||
|
||||
|
||||
class PageData(_RiinModel):
|
||||
records: list[Any] = []
|
||||
total: int = 0
|
||||
|
||||
|
||||
# ----- 查询参数(请求 schema)-----
|
||||
|
||||
|
||||
class OrderPageRequest(BaseModel):
|
||||
"""RIIN 订单分页查询参数。timeType/startTime/endTime 等可选。"""
|
||||
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
time_type: int | None = None
|
||||
start_time: str | None = None
|
||||
end_time: str | None = None
|
||||
platform_oid_list: str | None = None
|
||||
shop_code_list: list[str] | None = None
|
||||
courier_number_list: str | None = None
|
||||
sub_id_list: list[str] | None = None
|
||||
goods_title: str | None = None
|
||||
mapping_sku_code: str | None = None
|
||||
platform_type: int | None = None
|
||||
order_source: int | None = None
|
||||
factory_ids: list[str] | None = None
|
||||
express_source: int | None = None
|
||||
delivery_courier: str | None = None
|
||||
receiver_country: str | None = None
|
||||
region: str | None = None
|
||||
receiver_province: str | None = None
|
||||
craft_type: int | None = None
|
||||
style_code_list: list[str] | None = None
|
||||
color_code_list: list[str] | None = None
|
||||
size_code_list: list[str] | None = None
|
||||
seller_remark: str | None = None
|
||||
urgent_order: int | None = None
|
||||
third_interface_customer_id: str | None = None
|
||||
platform_status_list: list[str] | None = None
|
||||
is_third_flag: bool | None = None
|
||||
page_index: int | None = None
|
||||
page_size: int | None = None
|
||||
order_status: int | None = None
|
||||
day_range_group: int | None = None
|
||||
has_refund: bool | None = None
|
||||
push_failed: bool | None = None
|
||||
assigned_fail_reason: str | None = None
|
||||
push_fail_reason: str | None = None
|
||||
factory_remark_param: str | None = None
|
||||
distributor_remark_param: str | None = None
|
||||
limit: int | None = None
|
||||
all: bool | None = None
|
||||
Reference in New Issue
Block a user