docs: 合同班合单与接口4组包已接
This commit is contained in:
parent
554f8d57b8
commit
7ea4010bfd
13
AGENTS.md
13
AGENTS.md
|
|
@ -1,6 +1,6 @@
|
||||||
# AutoRpa
|
# AutoRpa
|
||||||
|
|
||||||
洁达 RPA。当前主线是**订单中心入站**(`rpa_oms`)、**选品班次**(`rpa_selection/`)和**加购班次**(`rpa_cart/`):收件落 Oracle,请求里不跑选品;选品作业另起进程捞 `deal_flag=0`;加购另起进程领表 2 成功行。合同页面在 `rpa_contract/`;返利 `rpa_rebate/` 仍是占位。根上不再有 `选品流程/`、`state_center/`、`rpa_yisaiqi/`。
|
洁达 RPA。当前主线是**订单中心入站**(`rpa_oms`)、**选品班次**(`rpa_selection/`)、**加购班次**(`rpa_cart/`)和**合同班次**(`rpa_contract/`):收件落 Oracle,请求里不跑选品、不录合同;选品另起进程捞 `deal_flag=0`;加购另起进程领表 2 成功行;合同另起进程领表 3。返利 `rpa_rebate/` 仍是占位。根上不再有 `选品流程/`、`state_center/`、`rpa_yisaiqi/`。
|
||||||
|
|
||||||
智力用在**定落点、想清楚对错**;速度和 token 靠下面这张地图定点打开,禁止用扫仓代替思考。改对应了,反工和消耗都会少。
|
智力用在**定落点、想清楚对错**;速度和 token 靠下面这张地图定点打开,禁止用扫仓代替思考。改对应了,反工和消耗都会少。
|
||||||
|
|
||||||
|
|
@ -22,10 +22,12 @@
|
||||||
| 接口1 Oracle 落表 | `rpa_oms/app/inbound/oracle_repo.py` | `rpa_oms/tests/test_oracle_repo.py::点名` |
|
| 接口1 Oracle 落表 | `rpa_oms/app/inbound/oracle_repo.py` | `rpa_oms/tests/test_oracle_repo.py::点名` |
|
||||||
| 接口1 入口 / 鉴权 | `rpa_oms/app/main.py`、`auth.py` | 同上;真库见 `rpa_oms/README.md` Windows 段 |
|
| 接口1 入口 / 鉴权 | `rpa_oms/app/main.py`、`auth.py` | 同上;真库见 `rpa_oms/README.md` Windows 段 |
|
||||||
| 接口2 取数组装 | `rpa_oms/app/outbound/cart_settlement.py` | `rpa_oms/tests/test_cart_settlement_outbound.py::test_assembles_unpushed_rows_as_document_envelope` |
|
| 接口2 取数组装 | `rpa_oms/app/outbound/cart_settlement.py` | `rpa_oms/tests/test_cart_settlement_outbound.py::test_assembles_unpushed_rows_as_document_envelope` |
|
||||||
|
| 接口4 取数组装 | `rpa_oms/app/outbound/contract_agreement.py` | `rpa_oms/tests/test_contract_agreement_outbound.py::test_assembles_unpushed_rows_as_document_envelope` |
|
||||||
| 接口3 收件契约 | `rpa_oms/app/inbound/purchase_contract.py` | `rpa_oms/tests/test_purchase_contract_receive.py::点名` |
|
| 接口3 收件契约 | `rpa_oms/app/inbound/purchase_contract.py` | `rpa_oms/tests/test_purchase_contract_receive.py::点名` |
|
||||||
| 接口3 Oracle 落表 | `rpa_oms/app/inbound/oracle_contract_repo.py` | `rpa_oms/tests/test_oracle_contract_repo.py::点名` |
|
| 接口3 Oracle 落表 | `rpa_oms/app/inbound/oracle_contract_repo.py` | `rpa_oms/tests/test_oracle_contract_repo.py::点名` |
|
||||||
| 选品规则 / 拆量 | `rpa_selection/rules.py`、`pipeline.py` | `rpa_selection/tests/test_pipeline.py::test_split_across_malls_is_success` |
|
| 选品规则 / 拆量 | `rpa_selection/rules.py`、`pipeline.py` | `rpa_selection/tests/test_pipeline.py::test_split_across_malls_is_success` |
|
||||||
| 选品班次落表 | `rpa_selection/job.py`、`persist.py`、`repo.py` | `rpa_selection/tests/test_job.py::test_job_searches_barcode_not_approval_no` |
|
| 选品班次落表 | `rpa_selection/job.py`、`persist.py`、`repo.py` | `rpa_selection/tests/test_job.py::test_job_searches_barcode_not_approval_no` |
|
||||||
|
| 合同班合单落表 | `rpa_contract/job.py`、`group.py`、`persist.py`、`repo.py` | `rpa_contract/tests/test_job.py::test_job_merges_same_supplier_and_writes_table4` |
|
||||||
| 合同页面步骤 | `rpa_contract/contract_flow_steps.py` 里对应函数 | `ACCEPT SUMMARY` 或 `rpa_contract/screenshots/` 下 `ACCEPT.txt` |
|
| 合同页面步骤 | `rpa_contract/contract_flow_steps.py` 里对应函数 | `ACCEPT SUMMARY` 或 `rpa_contract/screenshots/` 下 `ACCEPT.txt` |
|
||||||
| 合同入参 / 客商草稿 | `rpa_contract/contract_draft.py` | `rpa_contract` 点名用例 |
|
| 合同入参 / 客商草稿 | `rpa_contract/contract_draft.py` | `rpa_contract` 点名用例 |
|
||||||
| 节点入口 | `rpa_contract/contract_create_node.py`、`main.py` | 读到正式合同号 |
|
| 节点入口 | `rpa_contract/contract_create_node.py`、`main.py` | 读到正式合同号 |
|
||||||
|
|
@ -64,7 +66,7 @@
|
||||||
|
|
||||||
验收(内存、不连库):`cd rpa_oms` → `uv run pytest tests/test_sales_goods_receive.py::点名 -q`。真库:`GET /health` 后把 `examples/sales_goods_batch.json` POST 两次(第一次两条 `ACCEPTED`,第二次两条 `DUPLICATE`)。接口 3 点名 `tests/test_purchase_contract_receive.py`;真库 POST `examples/purchase_contract_batch.json` 两次。接口 2 点名 `tests/test_cart_settlement_outbound.py::test_assembles_unpushed_rows_as_document_envelope`。
|
验收(内存、不连库):`cd rpa_oms` → `uv run pytest tests/test_sales_goods_receive.py::点名 -q`。真库:`GET /health` 后把 `examples/sales_goods_batch.json` POST 两次(第一次两条 `ACCEPTED`,第二次两条 `DUPLICATE`)。接口 3 点名 `tests/test_purchase_contract_receive.py`;真库 POST `examples/purchase_contract_batch.json` 两次。接口 2 点名 `tests/test_cart_settlement_outbound.py::test_assembles_unpushed_rows_as_document_envelope`。
|
||||||
|
|
||||||
修接口1不要顺手改 `rpa_selection/`、`rpa_cart/`、`rpa_contract/`、`rpa_rebate/`。接口 4 未开放;接口 2 只组装不推送。
|
修接口1不要顺手改 `rpa_selection/`、`rpa_cart/`、`rpa_contract/`、`rpa_rebate/`。接口 2、4 只组装不推送。
|
||||||
|
|
||||||
## 选品落点
|
## 选品落点
|
||||||
|
|
||||||
|
|
@ -102,7 +104,7 @@
|
||||||
|
|
||||||
## CONTRACT_CREATE 落点
|
## CONTRACT_CREATE 落点
|
||||||
|
|
||||||
页面脚本在 `rpa_contract/`。`run_contract_create_flow` 串起来;修一步只打开对应函数。从表 3 合单、写表 4 尚未接。
|
班次作业在 `rpa_contract/`,不在接口 3 请求里跑。领表 3 `process_status=0`(跳过协议重录行),按 `supplierId` 合单,调页面流,写表 4。`run_contract_create_flow` 串页面;修一步只打开对应函数。
|
||||||
|
|
||||||
| 步 | 函数 | 要点 |
|
| 步 | 函数 | 要点 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
|
|
@ -110,8 +112,9 @@
|
||||||
| S03 登录 | `login_contract_system` | `test002` / `1` |
|
| S03 登录 | `login_contract_system` | `test002` / `1` |
|
||||||
| S04–S05 起草 | `enter_contract_create`、`select_contract_template` | 直达 `FORM_PAGE_URL`,不要点 SPA 菜单 |
|
| S04–S05 起草 | `enter_contract_create`、`select_contract_template` | 直达 `FORM_PAGE_URL`,不要点 SPA 菜单 |
|
||||||
| S06 签约方 | `fill_contract_signatory_info` | 客商 `DW0100046361` / `重庆亿昊药业有限公司` |
|
| S06 签约方 | `fill_contract_signatory_info` | 客商 `DW0100046361` / `重庆亿昊药业有限公司` |
|
||||||
|
| 尽调 | `check_customer_diligence` | 正文含「未尽调」则失败,不提交 |
|
||||||
| S07 基础 | `fill_contract_basic_info` | 标题 `_expected_title` |
|
| S07 基础 | `fill_contract_basic_info` | 标题 `_expected_title` |
|
||||||
| S08 金额日期 | `fill_contract_amount_and_dates` | 签约日=订单日 |
|
| S08 金额日期 | `fill_contract_amount_and_dates` | 签订日/开始日用接口 3 三日期,缺则回退 `order_date` |
|
||||||
| S09 货品 | `fill_contract_goods_lines` | 弹窗按操作码搜 |
|
| S09 货品 | `fill_contract_goods_lines` | 弹窗按操作码搜 |
|
||||||
| S10 付款 | `fill_contract_payment_info` | |
|
| S10 付款 | `fill_contract_payment_info` | |
|
||||||
| S11 PDF | `upload_contract_document_if_needed` | 仅 YYC 传合并 PDF |
|
| S11 PDF | `upload_contract_document_if_needed` | 仅 YYC 传合并 PDF |
|
||||||
|
|
@ -142,6 +145,8 @@
|
||||||
- 接口3:点名 `rpa_oms/tests/test_purchase_contract_receive.py` 或 `test_oracle_contract_repo.py`。
|
- 接口3:点名 `rpa_oms/tests/test_purchase_contract_receive.py` 或 `test_oracle_contract_repo.py`。
|
||||||
- 选品:点名 `rpa_selection/tests/test_pipeline.py::test_split_across_malls_is_success` 或 `test_rules.py::test_margin_exactly_4_percent_passes`。
|
- 选品:点名 `rpa_selection/tests/test_pipeline.py::test_split_across_malls_is_success` 或 `test_rules.py::test_margin_exactly_4_percent_passes`。
|
||||||
- 加购:点名 `rpa_cart/tests/test_cart_job.py::test_job_adds_split_rows_without_insert` 或 `test_job_marks_out_of_stock`。
|
- 加购:点名 `rpa_cart/tests/test_cart_job.py::test_job_adds_split_rows_without_insert` 或 `test_job_marks_out_of_stock`。
|
||||||
|
- 合同班:点名 `rpa_contract/tests/test_job.py::test_job_merges_same_supplier_and_writes_table4` 或 `test_job_marks_diligence_fail`。
|
||||||
|
- 接口4:点名 `rpa_oms/tests/test_contract_agreement_outbound.py::test_assembles_unpushed_rows_as_document_envelope`。
|
||||||
- 合同页:只读控制台 `ACCEPT` 或 `rpa_contract/screenshots/` 下 `ACCEPT.txt`。
|
- 合同页:只读控制台 `ACCEPT` 或 `rpa_contract/screenshots/` 下 `ACCEPT.txt`。
|
||||||
- 单测只跑点名用例。禁止跑整份带页面等待的套件当回归。
|
- 单测只跑点名用例。禁止跑整份带页面等待的套件当回归。
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
| 1 | 订单中心 → 本方 | `rpa_sales_goods_mapping_data` | `POST /api/oms/v1/sales-goods` |
|
| 1 | 订单中心 → 本方 | `rpa_sales_goods_mapping_data` | `POST /api/oms/v1/sales-goods` |
|
||||||
| 2 | 本方 → 订单中心 | `rpa_cart_settlement_goods_data` | 取 `push_status=0` 组装报文;路径仍空,不发 HTTP |
|
| 2 | 本方 → 订单中心 | `rpa_cart_settlement_goods_data` | 取 `push_status=0` 组装报文;路径仍空,不发 HTTP |
|
||||||
| 3 | 订单中心 → 本方 | `rpa_purchase_contract_data` | `POST /api/oms/v1/purchase-contracts` |
|
| 3 | 订单中心 → 本方 | `rpa_purchase_contract_data` | `POST /api/oms/v1/purchase-contracts` |
|
||||||
| 4 | 本方 → 订单中心 | `rpa_contract_agreement_result` | 路径空,先造数 |
|
| 4 | 本方 → 订单中心 | `rpa_contract_agreement_result` | 取 `push_status=0` 组装报文;路径仍空,不发 HTTP |
|
||||||
|
|
||||||
作业互不串联:选品读表 1,合同/返利读表 3。HTTP 收件不同步跑 RPA。
|
作业互不串联:选品读表 1,合同/返利读表 3。HTTP 收件不同步跑 RPA。
|
||||||
|
|
||||||
|
|
@ -19,10 +19,10 @@
|
||||||
|
|
||||||
| 目录 | 身份 |
|
| 目录 | 身份 |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `rpa_oms/` | 四个 HTTP 口,一个 FastAPI。接口 1、3 收件;接口 2 组装报文 |
|
| `rpa_oms/` | 四个 HTTP 口,一个 FastAPI。接口 1、3 收件;接口 2、4 组装报文 |
|
||||||
| `rpa_selection/` | 选品班。读表 1 `deal_flag=0`,双平台选品,写表 2 |
|
| `rpa_selection/` | 选品班。读表 1 `deal_flag=0`,双平台选品,写表 2 |
|
||||||
| `rpa_cart/` | 加购(未做)+ 1 号药城支付落表。表 2 → 口 2 仍未推 |
|
| `rpa_cart/` | 加购(未做)+ 1 号药城支付落表。表 2 → 口 2 仍未推 |
|
||||||
| `rpa_contract/` | 合同班。页面录入在本包;表 3 合单、接口 4 尚未接 |
|
| `rpa_contract/` | 合同班。表 3 合单录入 → 表 4;接口 4 组包在 oms,path 空 |
|
||||||
| `rpa_rebate/` | 返利班(占位)。查号、录协议 → 表 4 |
|
| `rpa_rebate/` | 返利班(占位)。查号、录协议 → 表 4 |
|
||||||
|
|
||||||
| 包 | 读 | 写 | 口 |
|
| 包 | 读 | 写 | 口 |
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
# rpa_contract
|
# rpa_contract
|
||||||
|
|
||||||
合同班。页面录入脚本在本包;从表 3 合单、写表 4、推接口 4 尚未接。
|
合同班。从表 3 领取、按 `supplierId` 合单、调页面录入、写表 4。接口 4 组包在 `rpa_oms`,本班不推、不改 `push_status`。
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| 读 | 表 3 `rpa_purchase_contract_data`(`process_status=0`) |
|
| 读 | 表 3 `rpa_purchase_contract_data`(`process_status=0`;跳过 `contractEntryStatus=0` 且已有 `contractNo` 的协议重录行) |
|
||||||
| 写 | 表 4 `rpa_contract_agreement_result`(接口 4 `actionCode=1`,`contractStatus=1` 起草) |
|
| 写 | 表 4 `rpa_contract_agreement_result`(`actionCode=1`,提交成功 `contractStatus=1` 起草) |
|
||||||
| 口 | 口 3 收件在 `rpa_oms`;口 4 回写做到时由本班调用 |
|
| 口 | 口 3 收件在 `rpa_oms`;口 4 组包在 oms,path 空 |
|
||||||
|
|
||||||
一天两班(中午、下午)。启动瞬间冻结本班名单。按 `supplierId` 合单;头字段取该班该供应商第一行。下午同一供应商另开一份。
|
一天两班(中午、下午)。启动瞬间冻结本班名单(`process_status` 0→3)。按 `supplierId` 合单;头字段取该班该供应商第一行。下午同一供应商另开一份。
|
||||||
|
|
||||||
口径:`docs/RPA订单中心接口开发口径_20260930.md` 第 4 节;合单细节见 `docs/合同系统录入流程.md`。
|
口径:`docs/RPA订单中心接口开发口径_20260930.md` 第 4 节;合单细节见 `docs/合同系统录入流程.md`。
|
||||||
|
|
||||||
|
|
@ -25,25 +25,33 @@
|
||||||
1. 打开合同系统并登录
|
1. 打开合同系统并登录
|
||||||
2. 进起草,套非格式采购协议模板
|
2. 进起草,套非格式采购协议模板
|
||||||
3. 签约方:客户编码、客户名称
|
3. 签约方:客户编码、客户名称
|
||||||
4. 基础信息:合同版本类型、合同类别、结算类型、合同背景概述、合同性质=主合同
|
4. 尽调:页面正文含「未尽调」则本单失败,不提交
|
||||||
5. 金额与日期:签订日 / 开始日 / 结束日
|
5. 基础信息:合同版本类型、合同类别、结算类型、合同背景概述、合同性质=主合同
|
||||||
6. 货品明细
|
6. 金额与日期:签订日 / 开始日 / 结束日用接口 3 第一行三日期(JSON 干跑未给则回退 `orderDate`)
|
||||||
7. 付款与标志:这期一律账期,不勾预付款;页面「账期支付」对应选项「电汇」
|
7. 货品明细
|
||||||
8. 尽调:口径有,脚本尚未加这一闸
|
8. 付款与标志:这期一律账期,不勾预付款;页面「账期支付」对应选项「电汇」
|
||||||
9. 点提交,不要点暂存
|
9. 点提交,不要点暂存
|
||||||
10. 从「我的合同」读正式合同号
|
10. 从「我的合同」读正式合同号
|
||||||
|
|
||||||
## 运行
|
## 运行
|
||||||
|
|
||||||
|
JSON 干跑(不领表):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd rpa_contract
|
cd rpa_contract
|
||||||
uv sync --python 3.12
|
uv sync --python 3.12
|
||||||
uv run pytest -v
|
uv run pytest tests/test_job.py::test_job_merges_same_supplier_and_writes_table4 -q
|
||||||
uv run python main.py --input-json examples/contract_create_input_dry_run.json
|
uv run python main.py --input-json examples/contract_create_input_dry_run.json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
班次(领表 3):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv run python run_batch.py
|
||||||
|
```
|
||||||
|
|
||||||
`submitMode=dry_run` 跑到提交前,不点提交。真起草用 `examples/contract_draft_yyc.json` / `examples/contract_draft_xyy.json`。
|
`submitMode=dry_run` 跑到提交前,不点提交。真起草用 `examples/contract_draft_yyc.json` / `examples/contract_draft_xyy.json`。
|
||||||
|
|
||||||
## 本期不做
|
## 本期不做
|
||||||
|
|
||||||
从表 3 按班次合单、尽调闸、接口 4 回写。
|
返利班、向订单中心发 HTTP、改 `push_status`。
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = "rpa-contract"
|
name = "rpa-contract"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "洁达合同班。表 3 合单录入 → 表 4。页面脚本已在本包;合单与接口 4 尚未接。"
|
description = "洁达合同班。表 3 合单录入 → 表 4。接口 4 组包在 rpa_oms。"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue