真实 / 演示双模式切换模式
模式
import os
USE_REAL = os.getenv("USE_REAL_DB", "0") == "1"
def _real_or_mock(real_fn, mock_fn, *args):
if not USE_REAL:
return mock_fn(*args)
try:
return real_fn(*args)
except Exception as e:
# 真实库不可达 / 报错 → 兜底 Mock,提示清晰
return {"ok": False, "message": f"真实库查询失败,已回退演示:{e}", **mock_fn(*args)}
def query_order(order_id):
return _real_or_mock(_query_order_real, _query_order_mock, order_id)
要点
- 环境变量 gating,启动命令控制(
USE_REAL_DB=1 python main.py)。 - Mock 占位文案统一为"演示模式,置 USE_REAL_DB=1 接入真实库",不要写假数据谎称正常。
- 异常兜底要带真实错误信息,便于定位(网络 / 权限 / 表不存在)。
- 连接懒加载(首次调用才连),避免启动即崩。
- 只读账号配置放在配置区,用户自行修改,不要写死;连接串加
TrustServerCertificate=yes;Login Timeout=10等兼容参数。
配套:路由与工具名一致
真实 / Mock 两套函数返回的 tool 名、字段结构需保持一致,验收脚本才能用同一套断言覆盖两种模式。
适用
- 演示环境无内网库、但生产环境要接真实 MES/ERP
- 自测用 Mock,交付切真实
- 云端 API 与本地小模型同理可切换(
BASE_URL/MODEL_NAME用变量)