feat: dedup expected data by handover_no before export submit
- store.get_existing_handover_nos: query PG expected_record.handover_no - inject dedup skip before submitting export in zto/yunda/anneng/shunxin - shunxin reads RTS handover_no from waybill-list view (method 1) - force-redownload switch threaded via task_spec -> dispatch -> impl - schema: add idx_expected_handover index Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -422,6 +422,25 @@ def ingest_task(site, kind):
|
||||
return total
|
||||
|
||||
|
||||
def get_existing_handover_nos(site):
|
||||
"""查该站点已落库的交接单号集合(expected_record.handover_no)。
|
||||
供"提交导出任务前"去重:已落库的交接单号不再重复提交导出任务。
|
||||
PG 不可用(cpolar 抖动等)时返回空集 + 告警,调用方按"未确认存在"处理
|
||||
(继续提交导出,UPSERT 兜底,绝不因去重查询失败而漏数据)。"""
|
||||
try:
|
||||
with _connect(_load_pg_config()["dbname"]) as conn:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"SELECT handover_no FROM expected_record "
|
||||
"WHERE site=%s AND handover_no IS NOT NULL AND handover_no <> ''",
|
||||
(site,),
|
||||
)
|
||||
return {str(r[0]).strip() for r in cur.fetchall()}
|
||||
except Exception as e:
|
||||
print(f">> [去重] 查询已落库交接单号失败({site}),本次不去重: {e}")
|
||||
return set()
|
||||
|
||||
|
||||
# ============================== 命令行 ==============================
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user