2.7 KiB
2.7 KiB
rpa_oms
订单中心四个 HTTP 口,一个 FastAPI。HTTP 收件不同步跑作业。作业在 rpa_selection / rpa_cart / rpa_contract / rpa_rebate。
口径:docs/RPA订单中心接口开发口径_20260930.md。DDL:docs/ddl/rpa_oms_staging_tables.sql。
| 口 | 方向 | 底表 | 代码 |
|---|---|---|---|
| 1 | 订单中心 → 本方 | rpa_sales_goods_mapping_data |
已有 app/inbound/sales_goods.py,POST /api/oms/v1/sales-goods |
| 2 | 本方 → 订单中心 | rpa_cart_settlement_goods_data |
未做。将来 app/outbound/,由 rpa_cart 调用 |
| 3 | 订单中心 → 本方 | rpa_purchase_contract_data |
未做。将来 app/inbound/,复用接口 1 信封/鉴权 |
| 4 | 本方 → 订单中心 | rpa_contract_agreement_result |
未做。将来 app/outbound/,由合同/返利班调用 |
本期只开放接口 1:
- 路径:
POST /api/oms/v1/sales-goods - 鉴权:header
X-Oms-Token,环境变量OMS_INBOUND_TOKEN - 落表:
rpa_sales_goods_mapping_data(deal_flag=0) - 请求里不跑选品。选品班次在
rpa_selection/,按条形码搜两平台、四级仓序拆量后写rpa_cart_settlement_goods_data
运行时只落 Oracle。单测用内存替身,不连库:uv run pytest -v。
真库
Oracle 11.2 需要 Instant Client(thick)。密码只放本机 rpa_oms/.env(已 gitignore),不要写进仓库、README、命令行历史。
cd rpa_oms
uv sync --python 3.12
export OMS_INBOUND_TOKEN=dev-oms-token
export RPA_ORACLE_HOST=192.168.12.244
export RPA_ORACLE_PORT=1521
export RPA_ORACLE_SERVICE=rpa
export RPA_ORACLE_USER=rpainit
export RPA_ORACLE_PASSWORD=...
export RPA_ORACLE_THICK=1
# 如需指定 Instant Client 目录:
# export RPA_ORACLE_CLIENT_LIB=/path/to/instantclient
uv run uvicorn app.main:app --reload --port 8001
缺 RPA_ORACLE_HOST / 用户 / 密码时,收件接口回 503。
Windows 真库
本机 Mac 打不到 192.168.12.244,连库测试在 Windows 上做。Python 3.12 + Instant Client(位数一致),密码不要写进仓库。
PowerShell:
cd rpa_oms
uv sync --python 3.12
Copy-Item -LiteralPath .env.example -Destination .env
# 只编辑本机 .env 的 RPA_ORACLE_PASSWORD,不要 git add .env
.\start.ps1
先 GET http://127.0.0.1:8001/health,再把 examples/sales_goods_batch.json POST 两次:
- 第一次:两条
ACCEPTED,表里各一行deal_flag=0 - 第二次:两条
DUPLICATE,表行数不变
curl.exe -sS http://127.0.0.1:8001/api/oms/v1/sales-goods `
-H "Content-Type: application/json" `
-H "X-Oms-Token: dev-oms-token" `
--data-binary "@examples/sales_goods_batch.json"