|
|
||
|---|---|---|
| .. | ||
| .vscode | ||
| output | ||
| tests | ||
| .env.example | ||
| .python-version | ||
| README.md | ||
| auth_login.py | ||
| db.py | ||
| http_util.py | ||
| job.py | ||
| main.py | ||
| mall_config.py | ||
| persist.py | ||
| pipeline.py | ||
| pyproject.toml | ||
| repo.py | ||
| rules.py | ||
| search_yaoex.py | ||
| search_ybm.py | ||
| secrets.example.json | ||
| start.ps1 | ||
| util.py | ||
| uv.lock | ||
README.md
洁达商城选品
班次作业:从表 1 捞 deal_flag=0,按条形码搜 1 号药城 / 药帮忙,规则选出仓,结果写入表 2。不加购,不推订单中心。
口径:docs/RPA订单中心接口开发口径_20260930.md 第 3 节。
数据流
rpa_sales_goods_mapping_data (deal_flag=0)
→ 领取并置 3
→ 登录一次 / 平台
→ 按条形码搜索(批准文号只落表,不拿去搜)
→ 选品规则(两平台合并,按仓序拆量)
→ rpa_cart_settlement_goods_data(operate_type=1, push_status=0)
→ 表 1 deal_flag=1 成功 / 2 失败
两平台搜完后合并统一判定。凑齐计划量才落成功行;凑不齐不落部分成功。一边故障、另一边单独能凑齐:按成功落。一边故障且剩下的凑不齐:系统故障(可把 deal_flag 改回 0 重跑)。两边都搜到但合计不够:业务失败「库存不足」,该 omsId 不重跑。
规则
硬过滤三项,再按仓序拆量(同一平台同一仓只留低价那条):
- 自营仓(商家名去
[自营]后必须等于四级名单全称) - 毛利
(销售价格 - 平台价) / 销售价格 >= 4% - 效期 ≥ 12 个月
- 仓序(级内由近到远):药帮忙杭州/长沙/湖北小药药 → 1 药城广东/昆山/湖北亿昊 → 济南小药药、天津壹号、重庆亿昊 → 辽宁亿昊、陕西壹号、河南壹号、重庆壹号、重庆小药药
- 按序贪心拆量。凑齐则每个仓一行,
purchase_qty为该仓件数;凑不齐整单失败
multi_platform_flag=1 仅当成功行出现两个 platform_type。湖南壹号、甘肃壹号云不在自营集合。口径见 docs/superpowers/specs/2026-10-02-selection-split-allocation-design.md。
环境
cd rpa_selection
uv sync --python 3.12
uv run playwright install chromium
Oracle 与 rpa_oms 同一套变量:RPA_ORACLE_HOST / PORT / SERVICE / USER / PASSWORD,11.2 用 thick。Windows 还要 RPA_ORACLE_CLIENT_LIB。选品 .env 里 Oracle 密码留空时,会补 rpa_oms/.env 里已有的值。
商城账号(任选其一,不要提交真实密码):
- 复制
.env.example为.env,填YAOEX_USERNAME/YAOEX_PASSWORD/YBM_USERNAME/YBM_PASSWORD - 或复制
secrets.example.json为secrets.json
已有登录态可跳过浏览器:--yaoex-auth auth.json、--ybm-cookies cookies.json。
运行
cd rpa_selection
uv run pytest -v
uv run python main.py --limit 5
uv run python main.py --platform yaoex
Windows:
cd rpa_selection
uv sync --python 3.12
Copy-Item -LiteralPath .env.example -Destination .env
# 商城账号写本机 .env;Oracle 也可只留在 rpa_oms/.env
.\start.ps1 --limit 5
--limit 只领取本班前 N 条 deal_flag=0。跑的过程中新进入的留给下一班。
中途崩溃会停在 deal_flag=3。改回 0 再跑。系统故障不能靠订单中心重推同一 oms_id(接口 1 幂等),同样把 deal_flag 改回 0。
模块
| 文件 | 职责 |
|---|---|
main.py |
登录编排 |
job.py |
班次:领取 → 按行判定 → 落表 |
persist.py |
判定结果 → 表 2 行 + 表 1 处理标志 |
repo.py |
Oracle / 内存仓库 |
rules.py |
选品规则,两平台共用 |
pipeline.py |
单行两平台统一判定 |
search_yaoex.py / search_ybm.py |
搜索接口;查询键是条形码 |
auth_login.py |
Playwright 登录 |
本期不做
加购、接口 2 推送、支付回传、批准文号搜索、商家名模糊匹配。