# 洁达商城选品 班次作业:从表 1 捞 `deal_flag=0`,按**条形码**搜 1 号药城 / 药帮忙,规则选出仓,结果写入表 2。不加购,不推订单中心。 口径:`资料/RPA订单中心接口开发口径_20260930.md` 第 3 节。 ## 数据流 ```text 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` 不重跑。 ## 规则 硬过滤三项,再按仓序拆量(同一平台同一仓只留低价那条): 1. 自营仓(商家名去 `[自营]` 后必须等于四级名单全称) 2. 毛利 `(销售价格 - 平台价) / 销售价格 >= 4%` 3. 效期 ≥ 12 个月 4. 仓序(级内由近到远):药帮忙杭州/长沙/湖北小药药 → 1 药城广东/昆山/湖北亿昊 → 济南小药药、天津壹号、重庆亿昊 → 辽宁亿昊、陕西壹号、河南壹号、重庆壹号、重庆小药药 5. 按序贪心拆量。凑齐则每个仓一行,`purchase_qty` 为该仓件数;凑不齐整单失败 `multi_platform_flag=1` 仅当成功行出现两个 `platform_type`。湖南壹号、甘肃壹号云不在自营集合。口径见 `docs/superpowers/specs/2026-10-02-selection-split-allocation-design.md`。 ## 环境 ```bash cd 选品流程 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`。 ## 运行 ```bash cd 选品流程 uv run pytest -v uv run python main.py --limit 5 uv run python main.py --platform yaoex ``` Windows: ```powershell cd 选品流程 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 推送、支付回传、批准文号搜索、商家名模糊匹配。