AutoRpa/docs/superpowers/specs/2026-09-14-jieda-procure-cr...

137 lines
6.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.

# 洁达选品:改造商城查价工程(概要)
| 文档属性 | 内容 |
| --- | --- |
| 版本 | V1.0 |
| 日期 | 2026-09-14 |
| 状态 | 本期实施依据;Windows 机按本文和详细方案改同事原工程 |
| 基线工程 | 同事「1号药城与药帮忙货品价格库存下载」`isa-rpa` Python 应用(`main.py`) |
| 详细方案 | [2026-09-14-jieda-procure-crawler-detail.md](./2026-09-14-jieda-procure-crawler-detail.md) |
| 业务口径 | [洁达四流程概要 V3.1](./2026-09-13-jieda-rpa-overview-design.md) 的 **BR-02 / BR-03 / 第 3.2 节** |
| 选品条件原文 | [采购平台选品条件优先项 20260902](/Users/yuuuu/Documents/AutoRpa/资料/采购平台选品条件优先项_20260902.txt) |
本期只做 **PROCURE 选品加购的第一刀**:在原查价工程上改,不接状态中心、不接 Oracle、不改合同/返利。先跑通「登录搜品 → 按行判定 → 合格加购」。
---
## 1. 要做成什么
一次脚本运行:
1. 读入待选品行(批准文号、销售价格、采购数量)。
2. 浏览器登录 1 号药城、药帮忙各一次,拿 cookie/token。
3. 按批准文号打现有搜索接口,拉候选(商家、价、效期、库存)。
4. 用洁达选品规则,每个平台每行最多选出 **1 家仓**。
5. 合格则加入该平台购物车;不合格记跳过;查询失败记失败。
6. 写出结果表。人工付款仍由业务在平台做,脚本不等、不点支付。
完成标准:Windows 机用 5~20 个品种能稳定跑完;结果表能看出每行 `ADDED / SKIPPED / FAILED`;合格行购物车里能看到对应商品和数量。默认 `--dry-run` 只判定不加购,确认规则后再关。
## 2. 为什么改原工程,不另起
原工程已经有:双平台登录、搜索 API、1 号药城价格解密、按文号缓存、接口重试。缺的是选品决策和加购。合同那套 Studio 逐步点击不适合一千个品种。
原工程里必须删掉的:
- `filter_rows_by_purchase_price_band`(采购价 ±10%)
- 把所有命中行倒进 Excel 当最终答案
- 用「采购价格」做是否合格的依据
保留的:登录、`query_yaoex_products`、`query_ybm_products`、`decrypt_yaoex_price`、密码箱、重试。
## 3. 架构
```text
Excel 输入(本期)
→ 登录一次 / 平台
→ 搜索接口(按批准文号,带缓存)
→ 选品规则引擎(纯 Python,两平台同一套)
→ 加购适配器(先接口,抓不到再点页面;仅合格行)
→ 结果 Excel(每行一个平台一个结论)
```
平台只负责登录、搜索、读商品、执行加购。**不能改规则优先级。**
本期输入仍用桌面 Excel,是为了在 Windows 上先试,不堵在 Oracle。列必须有 **销售价格**,不能再用采购价冒充。下一期再把输入/回报换成状态中心领取。
## 4. 按行怎么跑
一行输入 × 一个平台 = 一条结论。一次脚本把两个平台都跑完。
```text
登录两个商城(各一次)
for 每一行输入:
for 平台 in [1号药城, 药帮忙]:
搜批准文号
规则选出 0 或 1 个仓
合格 → 加购(dry-run 则跳过动作)→ ADDED
无合格仓 → SKIPPED + 原因
接口/登录级错误 → FAILED + 原因(不是 SKIPPED)
写结果表,退出
```
**两边都合格就两边都加购。** 同一销售行可能进两个购物车。若业务要互斥,只改这一条策略,不要改规则引擎。
登录失败整批中止。单个文号查询失败只失败该平台该行,继续后面的行。
## 5. 合格标准(两平台同一套)
按批准文号查询,不配规格、厂家、包装。前 4 项必须同时过,再按仓库名单取第一家。
| 顺序 | 条件 | 判定 |
| --- | --- | --- |
| 1 | 自营仓 | 商家名规范化后,必须落在下列 11 家里 |
| 2 | 价格 | `(销售价格 - 平台价) / 销售价格 >= 0.05`,即平台价 ≤ 销售价 × 0.95。基准是输入里的**销售价格** |
| 3 | 效期 | ≥ 12 个月 |
| 4 | 库存 | 平台库存 ≥ 本行采购数量 |
| 5 | 仓库距离 | 在 1~4 都过的候选里,按下列顺序取第一家 |
仓库顺序(不可改、不可按页面默认排序):
1. 广东壹号药业有限公司
2. 昆山亿方药业有限公司
3. 湖北亿昊药业有限公司
4. 天津壹号药业有限公司
5. 重庆亿昊药业有限公司
6. 重庆壹号医药有限公司
7. 湖南壹号药业股份有限公司
8. 辽宁亿昊药业有限公司
9. 河南壹号医药有限公司
10. 甘肃壹号云医药有限责任公司企业店
11. 陕西壹号药业有限公司
商家名先去掉 `[自营]`、首尾空格再比。对不上名单 = 本候选淘汰,不是整行失败。对不上的原始商家名写入结果,方便以后补别名。本期不做模糊匹配。
效期:接口已带「12 个月」过滤,代码仍要再验。解析不了的效期,该候选淘汰。
查询失败、登录失败、加购后不确定是否进车,记 `FAILED` / `UNKNOWN`,**禁止记成 SKIPPED**。
## 6. 加购
原工程没有购物车代码。合格之后才加购,数量 = 本行采购数量。
1. 用 F12 抓「加入购物车」请求(详细方案有步骤)。
2. 抓到则复用登录态打接口。
3. 抓不到则只对合格行点页面,禁止一千条都去点搜索。
4. `--dry-run` 默认开启:只写「将加购」不真正加。Windows 先用 dry-run 对规则,再用 1~2 行关 dry-run 验车。
脚本不打开结算、不点支付。
## 7. 本期不做
- 状态中心领取 / start / complete / fail
- Oracle 接口表、行 job
- 平台订单导出、合同、返利
- 人工付款、待复核清单替代加购(新方案是合格就加购)
- 把查价 ±10% 留作并行规则
## 8. Windows 交付物
- 改过的 `isa-rpa` 工程(可运行)
- 输入模板(含销售价格、采购数量、批准文号)
- 结果表(每行每平台:结论、原因、选中商家、平台价、效期、库存、是否 dry-run)
- 加购接口记录(URL、方法、关键字段;或「改用页面点击」的说明)
- 用 5 个品种跑通的截图或结果文件
详细到函数、表头、命令、测试步骤,见详细方案。