diff --git a/docker-compose.yml b/docker-compose.yml index f1f13a2..c981bbe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,6 +41,16 @@ services: TRACK_API_URL: ${TRACK_API_URL:-} # Track 出库 webhook(发货出库时通知 Track 标记"已出库") TRACK_OUTBOUND_WEBHOOK_URL: ${TRACK_OUTBOUND_WEBHOOK_URL:-} + # ★ 多 Track 实例路由表:按 material_base.company_name 决定走哪个实例。 + # 上面三个扁平变量保留为「未命中路由表」时的回落默认值(向后兼容)。 + # ★ 用容器名互访(同属 projects_default 网络),不走宿主机端口。 + TRACK_ROUTES: >- + {"IRIS":{"api":"http://track_backend:8000", + "inbound":"http://track_backend:8000/api/v1/external/webhooks/mom-inbound", + "outbound":"http://track_backend:8000/api/v1/external/webhooks/mom-outbound"}, + "LICA":{"api":"http://lica_backend:8000", + "inbound":"http://lica_backend:8000/api/v1/external/webhooks/mom-inbound", + "outbound":"http://lica_backend:8000/api/v1/external/webhooks/mom-outbound"}} depends_on: - db diff --git a/inventory-backend/config.py b/inventory-backend/config.py index b23cd7c..8f6d5cd 100644 --- a/inventory-backend/config.py +++ b/inventory-backend/config.py @@ -1,3 +1,4 @@ +import json import os from datetime import timedelta @@ -85,3 +86,17 @@ class Config: TRACK_API_URL = os.getenv('TRACK_API_URL', 'http://track_backend:8000') # Track 出库 webhook 接收地址(发货出库时通知 Track 标记"已出库") TRACK_OUTBOUND_WEBHOOK_URL = os.getenv('TRACK_OUTBOUND_WEBHOOK_URL', '') + + # ========================================================= + # 9. 多 Track 实例路由表 (IRIS / LICA) + # ========================================================= + # JSON 结构: {"IRIS": {"api": "...", "inbound": "...", "outbound": "..."}, "LICA": {...}} + # 由 material_base.company_name 决定业务落到哪个 Track 实例。 + # 缺省为空字典 → 全部回落到上面第 7/8 节的扁平变量,行为与改造前一致。 + # + # ⚠️ 解析失败直接让进程起不来(fail fast)——路由表写坏却静默回落, + # 会造成"某些公司悄悄断链",比启动报错难排查得多。 + try: + TRACK_ROUTES = json.loads(os.getenv('TRACK_ROUTES', '{}') or '{}') + except ValueError as e: + raise RuntimeError(f'TRACK_ROUTES 不是合法 JSON,请检查环境变量: {e}')