AutoRpa/rpa_oms/README.md

75 lines
2.7 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.

# 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`)
- 请求里不跑选品
运行时只落 Oracle。单测用内存替身,不连库:`uv run pytest -v`。
## 真库
Oracle 11.2 需要 Instant Client(thick)。密码只放环境变量。
```bash
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:
```powershell
cd rpa_oms
uv sync --python 3.12
$env:OMS_INBOUND_TOKEN = "dev-oms-token"
$env:RPA_ORACLE_HOST = "192.168.12.244"
$env:RPA_ORACLE_PORT = "1521"
$env:RPA_ORACLE_SERVICE = "rpa"
$env:RPA_ORACLE_USER = "rpainit"
$env:RPA_ORACLE_PASSWORD = "这里填密码"
$env:RPA_ORACLE_THICK = "1"
$env:RPA_ORACLE_CLIENT_LIB = "C:\oracle\instantclient"
uv run uvicorn app.main:app --host 0.0.0.0 --port 8001
```
先 `GET http://127.0.0.1:8001/health`,再把 `examples/sales_goods_batch.json` POST 两次:
1. 第一次:两条 `ACCEPTED`,表里各一行 `deal_flag=0`
2. 第二次:两条 `DUPLICATE`,表行数不变
```powershell
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"
```