Dish_Recognition/dao/settings.py

105 lines
5.3 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'))
# 运动判定:从动到静后需保持静止的秒数,达到后 YOLO 识别一次;持续静止不再识别,
# 须再经历「静→动→静」才触发下一次
DISH_LIVE_STILL_HOLD_SECONDS = float(os.environ.get('DISH_LIVE_STILL_HOLD_SECONDS', '0.1'))
# 已有订单时,菜品区域相似度阈值(更低=更宽松,手在中间晃仍算静止,减少误触发)
DISH_LIVE_MOTION_SIM_WITH_ORDER = float(os.environ.get('DISH_LIVE_MOTION_SIM_WITH_ORDER', '0.970'))
# 同一批菜品订单防抖:菜名未变不重复存图/统计;短间隔内亦抑制重复落单
DISH_LIVE_ORDER_DEBOUNCE_SECONDS = float(os.environ.get('DISH_LIVE_ORDER_DEBOUNCE_SECONDS', '0.5'))
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>'