From d8e4adb0b551a3d2cefb71dd1aa3e4c0f02b1f6b Mon Sep 17 00:00:00 2001 From: Administrator <1397750220@qq.com> Date: Mon, 21 Sep 2026 10:43:49 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flows/platform_order/sdspod.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flows/platform_order/sdspod.py b/flows/platform_order/sdspod.py index a46bc90..82bd387 100644 --- a/flows/platform_order/sdspod.py +++ b/flows/platform_order/sdspod.py @@ -359,7 +359,13 @@ def sd_format_item(item): create_time = item.get("gmtCreated", "") parcel_list = item.get("parcelList", []) if parcel_list and isinstance(parcel_list, list): - qty = sum(p.get("totalQty", 0) for p in parcel_list) + def safe_int(val): + try: + return int(val) + except (ValueError, TypeError): + return 0 + + qty = sum(safe_int(p.get("totalQty", 0)) for p in parcel_list) else: qty = 0 -- 2.54.0 From 6007b2c34b05f4ead98da347287decdbbec0f2d0 Mon Sep 17 00:00:00 2001 From: Administrator <1397750220@qq.com> Date: Mon, 21 Sep 2026 10:52:45 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flows/platform_order/sdspod.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flows/platform_order/sdspod.py b/flows/platform_order/sdspod.py index 82bd387..e6f36d2 100644 --- a/flows/platform_order/sdspod.py +++ b/flows/platform_order/sdspod.py @@ -369,6 +369,8 @@ def sd_format_item(item): else: qty = 0 + + return [ to_chinese_country(country), to_chinese_country(country), -- 2.54.0 From 10d3c5f278504d6a49478cc2e6852c22f79eeffc Mon Sep 17 00:00:00 2001 From: Administrator <1397750220@qq.com> Date: Wed, 23 Sep 2026 11:41:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20platform-order?= =?UTF-8?q?-upper-sync=20flow=20=E5=B9=B6=E6=B3=A8=E5=86=8C=E9=83=A8?= =?UTF-8?q?=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform_order_upper_sync.py | 65 +++++++++++++++++++ prefect.yaml | 9 ++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 flows/platform_order/platform_order_upper_sync.py diff --git a/flows/platform_order/platform_order_upper_sync.py b/flows/platform_order/platform_order_upper_sync.py new file mode 100644 index 0000000..c6e0aaf --- /dev/null +++ b/flows/platform_order/platform_order_upper_sync.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +"""平台订单 platform 字段大写同步:把 platform_order_data.platform 统一转为大写。 + +优化自 platform_order_upper_sync.py,对应 platform-order-upper-sync。 +""" + +import time + +import psycopg2 +from prefect import flow + +# 数据库连接参数 +conn_params = { + "host": "192.168.124.92", + "port": 5432, + "user": "postgres", + "password": "Inkreach123456.", + "database": "smt", +} + + +def log_msg(msg, level="info"): + ts = time.strftime('%H:%M:%S') + tag = {"success": "[OK]", "error": "[ERR]"}.get(level, "") + print(f"[{ts}] {tag} {msg}") + + +def update_platform_upper() -> int: + conn = None + cur = None + try: + conn = psycopg2.connect(**conn_params) + cur = conn.cursor() + + # 仅更新需要变更的行,避免每次都全表写入 + update_sql = """ + UPDATE platform_order_data + SET platform = UPPER(platform) + WHERE platform IS NOT NULL + AND platform <> UPPER(platform); + """ + cur.execute(update_sql) + affected_rows = cur.rowcount + conn.commit() + log_msg(f"platform 大写转换完成,共 {affected_rows} 行受影响", "success") + return affected_rows + except Exception as e: + log_msg(f"platform 大写转换失败:{e}", "error") + if conn: + conn.rollback() + raise + finally: + if cur: + cur.close() + if conn: + conn.close() + + +@flow(name="platform-order-upper-sync", log_prints=True) +def platform_order_upper_sync() -> int: + return update_platform_upper() + + +if __name__ == "__main__": + platform_order_upper_sync.serve(name="platform-order-upper-sync", cron="*/2 * * * *") diff --git a/prefect.yaml b/prefect.yaml index 3fce7f3..4547703 100644 --- a/prefect.yaml +++ b/prefect.yaml @@ -97,7 +97,14 @@ deployments: - name: platform-order-sdspod entrypoint: flows/platform_order/sdspod.py:sdspod_platform_sync schedules: - - cron: '*/30 * * * *' + - cron: 0 * * * * + timezone: Asia/Shanghai + work_pool: + name: inkreach-pool +- name: platform-order-upper-sync + entrypoint: flows/platform_order/platform_order_upper_sync.py:platform_order_upper_sync + schedules: + - cron: '*/2 * * * *' timezone: Asia/Shanghai work_pool: name: inkreach-pool -- 2.54.0