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