Dish_Recognition/dao/settings.py

98 lines
4.6 KiB
Python
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.

# coding=utf-8
import os
import time
CAIHUI_DATABASE = {
'name': os.environ.get('DISH_DB_NAME', 'goods'),
'host': os.environ.get('CARC_CRAWLER_DB_HOST', '127.0.0.1'),
'port': int(os.environ.get('CARC_CRAWLER_DB_PORT', 3306)),
'user': os.environ.get('CARC_CRAWLER_DB_USER', 'root'),
'password': os.environ.get('CARC_CRAWLER_DB_PASSWORD', '123456'),
}
# SQLite 本地临时缓存(识别读此库;变更后从 MySQL 拉取刷新)
DISH_SQLITE_PATH = os.environ.get(
'DISH_SQLITE_PATH',
os.path.join(os.path.dirname(__file__), 'dish_templates.db'),
)
# 本机基地编码(学菜写入 source_base_id;结果 API 的 base_id 默认也用它)
# 建议填管理系统返回的 code,例如「上海路基地-1788059884828-e55vu」
DISH_BASE_CODE = os.environ.get('DISH_BASE_CODE', 'BASE_LOCAL_01')
DISH_BASE_NAME = os.environ.get('DISH_BASE_NAME', '奥体基地')
DISH_BASE_REGION = os.environ.get('DISH_BASE_REGION', '')
# 管理系统:公开接口(X-API-Key)
# 完整 Key 见 docs/第三方接口文档_mgmt.md(含 dish_ 前缀)
DISH_MGMT_API_ORIGIN = os.environ.get(
'DISH_MGMT_API_ORIGIN',
'https://cpsb.ruimeida.cc',
).rstrip('/')
DISH_MGMT_API_URL = os.environ.get(
'DISH_MGMT_API_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/bases',
)
DISH_MGMT_RESULT_API_URL = os.environ.get(
'DISH_MGMT_RESULT_API_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/recognition-orders',
)
DISH_MGMT_MEAL_API_URL = os.environ.get(
'DISH_MGMT_MEAL_API_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/meal-schedules/today',
)
DISH_MGMT_DEVICE_STATUS_URL = os.environ.get(
'DISH_MGMT_DEVICE_STATUS_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/devices/status',
)
DISH_MGMT_DISHES_API_URL = os.environ.get(
'DISH_MGMT_DISHES_API_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/dishes',
)
DISH_MGMT_DISH_LEARNING_STATUS_URL = os.environ.get(
'DISH_MGMT_DISH_LEARNING_STATUS_URL',
f'{DISH_MGMT_API_ORIGIN}/api/public/dishes/learning-status',
)
DISH_MGMT_API_KEY = os.environ.get(
'DISH_MGMT_API_KEY',
'dish_a4f7a1287198179fdc6a6571aa14064c2afc6338c6730e2b668ac5be15bdf769',
)
DISH_MGMT_API_TIMEOUT = float(os.environ.get('DISH_MGMT_API_TIMEOUT', '10'))
DISH_MGMT_SYNC_ON_START = os.environ.get('DISH_MGMT_SYNC_ON_START', '1') == '1'
DISH_MGMT_MEAL_ON_START = os.environ.get('DISH_MGMT_MEAL_ON_START', '1') == '1'
# 本机设备(上报设备状态)
DISH_DEVICE_CODE = os.environ.get('DISH_DEVICE_CODE', '') or os.environ.get('DISH_BASE_CODE', DISH_BASE_CODE)
DISH_DEVICE_NAME = os.environ.get('DISH_DEVICE_NAME', '') or os.environ.get('DISH_BASE_NAME', DISH_BASE_NAME)
DISH_DEVICE_STATUS_INTERVAL = int(os.environ.get('DISH_DEVICE_STATUS_INTERVAL', '60')) # 秒
DISH_DEVICE_STATUS_ENABLED = os.environ.get('DISH_DEVICE_STATUS_ENABLED', '1') == '1'
# 启动时是否从 MySQL 拉取;后台定时同步间隔(秒,含上传队列 flush + 拉取)
DISH_SYNC_ON_START = os.environ.get('DISH_SYNC_ON_START', '1') == '1'
DISH_SYNC_INTERVAL = int(os.environ.get('DISH_SYNC_INTERVAL', 300)) # 默认 5 分钟
# 识别框是否显示「似xx 检xx」(默认关;需要时 set DISH_SHOW_BOX_SCORES=1)
DISH_SHOW_BOX_SCORES = os.environ.get('DISH_SHOW_BOX_SCORES', '0') == '1'
# 排餐小模版库:当前餐段菜品优先匹配
# 1) 最高分 ≥ 0.80 → 认定;2) 未达 0.80 但最高分 > 0.75 → 仍认定;否则回退大库
DISH_MEAL_SMALL_LIB_THRESHOLD = float(os.environ.get('DISH_MEAL_SMALL_LIB_THRESHOLD', '0.80'))
DISH_MEAL_SMALL_LIB_SOFT_THRESHOLD = float(os.environ.get('DISH_MEAL_SMALL_LIB_SOFT_THRESHOLD', '0.75'))
# 早于该时刻且尚无当日排餐 → 不做小模版库规则,直接走大库
DISH_MEAL_CUTOFF_HOUR = int(os.environ.get('DISH_MEAL_CUTOFF_HOUR', '7'))
# 每餐开始前多少分钟拉取排餐(默认 60 = 开餐前 1 小时)
DISH_MEAL_PREFETCH_MINUTES = int(os.environ.get('DISH_MEAL_PREFETCH_MINUTES', '60'))
# 尚无餐段信息时的兜底拉取时刻(启动后第一次排餐未到位时用)
DISH_MEAL_REFRESH_HOUR = int(os.environ.get('DISH_MEAL_REFRESH_HOUR', '6'))
DISH_MEAL_REFRESH_MINUTE = int(os.environ.get('DISH_MEAL_REFRESH_MINUTE', '0'))
# 实时扫描:未知菜写入待学习前的最短稳定秒数(客人放盘短,默认 1 秒)
# 盘子移走时不刷入,避免移盘过程中的误检未知
DISH_LIVE_PENDING_STABLE_SECONDS = float(os.environ.get('DISH_LIVE_PENDING_STABLE_SECONDS', '1.0'))
DEBUG = True
LOG_DIR = os.path.join(os.getcwd(), f'log/{time.strftime("%Y-%m-%d")}.log')
LOG_FORMAT = '<level>{level: <8}</level> <green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> - <cyan>{name}</cyan>:<cyan>{function}</cyan> - <level>{message}</level>'