AutoRpa/rpa_selection/README.md

79 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 洁达商城选品
班次作业:从表 1 捞 `deal_flag=0`,按**条形码**搜 1 号药城 / 药帮忙,规则选出仓,结果写入表 2。不加购,不推订单中心。
口径:`docs/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 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。
商城账号(任选其一,不要提交真实密码):
- 复制 `.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 rpa_selection
uv run pytest -v
uv run python main.py --limit 5
uv run python main.py --platform yaoex
```
`--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 推送、支付回传、批准文号搜索、商家名模糊匹配。