AutoRpa/rpa_cart
Yuuuu 0fa29ec9bd feat: 加购班领表2按仓加入购物车,失败改status=2
选品成功行领取后按条形码对仓加车。成功盖章不插行;登录挂、库存、中包装只改该行失败状态。不推接口2。
2026-10-05 08:39:16 +08:00
..
tests feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
README.md feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_add.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_job.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_match.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_repo.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_search.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_yaoex.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
cart_ybm.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
db.py feat: 1号药城支付订单落表2 2026-10-03 11:55:36 +08:00
job.py fix: 支付落表取消查详情,细单ID自生成,按订单号判重 2026-10-04 17:28:52 +08:00
main.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
parse_xls.py fix: 1号药城支付条码取首个、品名按短名匹配 2026-10-03 20:53:30 +08:00
pyproject.toml feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00
repo.py fix: 支付落表取消查详情,细单ID自生成,按订单号判重 2026-10-04 17:28:52 +08:00
settle.py fix: 支付落表取消查详情,细单ID自生成,按订单号判重 2026-10-04 17:28:52 +08:00
uv.lock feat: 1号药城支付订单落表2 2026-10-03 11:55:36 +08:00
yaoex_client.py fix: 支付落表取消查详情,细单ID自生成,按订单号判重 2026-10-04 17:28:52 +08:00
yaoex_login.py feat: 加购班领表2按仓加入购物车,失败改status=2 2026-10-05 08:39:16 +08:00

README.md

rpa_cart

加购与支付回传。两个班次,同一个包。

班次 状态
加购 operateType=1 领表 2 选品成功行,按仓加进购物车。成功盖章,失败改 status=2
支付回传 operateType=2 1 号药城已做落表。不推接口 2

加购

选品已经把「哪个仓、加几件」写成表 2:operate_type=1、status=1、push_status=0、update_user_name=系统管理员。本班读这些行,登录 1 号药城 / 药帮忙,按条形码再搜一次,对上 supplier_name,改数量,加入购物车。同一 omsId 拆两仓、两平台要加齐。

成功不插新行,只把 update_user_name 改成 加购班。加不进去(登录挂、库存没了、中包装加不进、对不上仓)改该行 status=2,写失败原因。领取时先盖 加购中;中途崩溃停在这一戳,改回 系统管理员 再跑。

不推订单中心,不清空购物车,不碰合同。表 2 没有 sku_id,加购必须再搜条形码。选完到加购之间库存可能变,已知。

cd rpa_cart
uv sync --python 3.12
uv run python main.py cart
uv run python main.py cart --limit 20
uv run python main.py cart --platform yaoex

账号用 rpa_selection/.env 的 YAOEX_* / YBM_*,库用 RPA_ORACLE_*。

验收(内存、不连库):

uv run pytest tests/test_cart_job.py::test_job_adds_split_rows_without_insert -q

杭州 3 + 广东 7 两行都加车,表 2 仍两行。失败点名 test_job_marks_out_of_stock、test_job_marks_login_fail_as_system_error。

接口 2 仍捞全部 push_status=0。加购班跑完之前不要组装推送。

1 号药城支付落表

从买家中心导出已付订单,按导出行字段写入表 2 operate_type=2。不对加购行。购物车和支付单没有强关联,oms_id 表上 NOT NULL,先填 0,等人后选。

cd rpa_cart
uv sync --python 3.12
# 账号用 rpa_selection/.env 的 YAOEX_*,库用 RPA_ORACLE_*
uv run python main.py
uv run python main.py --dry-run --xls /tmp/yaoex_order_export/orders.xls
uv run python main.py --days 0          # 仅当天(默认)
uv run python main.py --day 2026-09-30 --days 0

过滤:只落 待发货 / 待收货 / 已完成。单价用折后单价,总价 round(折后单价×数量, 4)。pay_order_no 用商城订单号。pay_order_dtl_id 落库时自生成(UUID hex),不是平台数据,给订单中心防重传。

幂等:同一 pay_order_no 不重复插入。Excel 没有细单 ID,不再打详情接口。

uv run pytest -v

Windows 真库

Mac 打不到 192.168.12.244,改表 2 在 Windows 上测。支付导出/解析在 Mac 已经跑过;Win 上要测登录、导出、落表,以及加购登录和对仓加车。

Python 3.12 + Instant Client(位数一致)+ Chrome。密码不要写进仓库。把本包和 rpa_selection/.env 一起带过去。

PowerShell:

cd rpa_cart
uv sync --python 3.12
uv run playwright install chrome
$env:RPA_ORACLE_HOST = "192.168.12.244"
$env:RPA_ORACLE_PORT = "1521"
$env:RPA_ORACLE_SERVICE = "rpa"
$env:RPA_ORACLE_USER = "rpainit"
$env:RPA_ORACLE_PASSWORD = "这里填密码"
$env:RPA_ORACLE_THICK = "1"
$env:RPA_ORACLE_CLIENT_LIB = "C:\oracle\instantclient"

uv run pytest tests/test_cart_job.py::test_job_adds_split_rows_without_insert -q
uv run python main.py cart
# 国庆当天可能没单,用 9-30 有数
uv run python main.py --dry-run --day 2026-09-30 --days 0
uv run python main.py --day 2026-09-30 --days 0

看控制台 inserted / skipped_dup / unmatched。同一订单号再跑应 skipped_dup 上升。

查库:

SELECT operate_type, oms_id, platform_type, supplier_name, bar_code,
       purchase_price, purchase_qty, purchase_total,
       pay_order_no, pay_order_dtl_id, push_status
FROM rpa_cart_settlement_goods_data
WHERE operate_type = 2 AND platform_type = 66
ORDER BY fid DESC;

再跑一遍同一天,skipped_dup 应上升,行数不再增加。

不要在页面点「确认收货」。脚本自己导出,过滤待发货/待收货/已完成。

本期不做

清空购物车、药帮忙支付、接口 2 推送。