# one 运行时配置 — 与可执行文件同目录
#
# 设备路径示例（117 / civicpp）:
#   cwd  = /civi/algs
#   exe  = /civi/algs/main/one
#   conf = /civi/algs/main/one.conf
#
# 规则:
#   - KEY=VALUE，# 开头为注释；被注释的项不生效
#   - 优先级: 配置文件 > 环境变量 > 程序默认值
#   - 无此文件时: 使用环境变量 / 程序默认值
#   - 也可: export CIVI_CONFIG=/path/to/other.conf
#
# 加载机制:
#   - 程序启动最开头（main_all.cpp 的 loadAppConfig()）读取本文件，
#     每条非注释 KEY=VALUE 都会 setenv 进进程环境，供各模块 getenv() 读取
#   - 因此本文件只能控制"程序确实读取"的 key；各 key 的生效范围见下方注释
#   - 注意: 部分开关不是环境变量（如 g_llm_check 是启动参数 argv[3]），无法在本文配置
#
# 改完配置后需重启 civicpp（设备上 dr / docker restart civicpp）

# ---------- 日志 (CLOG) ----------
# 日志由 common/logger/log_info.h 统一读取，级别从低到高:
#   TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
# 注意:
#   - 文件输出默认关闭（CLOG_FILE_ENABLE 默认 0），控制台默认开启
#   - DEBUG 级别日志固定不进文件（代码硬编码），不受本文件控制
#   - 设置后重启程序才生效

# 日志级别阈值；低于该级别的日志（控制台+文件）都不输出。默认 TRACE（全量）。
#   TRACE / DEBUG / INFO / WARN / ERROR / FATAL / OFF
#CLOG_LEVEL=INFO

# 日志文件路径。仅当 CLOG_FILE_ENABLE=1 时生效；不设则写 cwd 下 app.log（117 上即 /civi/algs/app.log）
#CLOG_FILE=/civi/algs/app.log

# 文件输出总开关：1/on/true=写文件，0/off/false=不写（默认不写）
# 2026-08 起行为反转：此前默认写文件，现在默认不写；需要文件日志的部署必须显式设为 1
#CLOG_FILE_ENABLE=1

# 控制台是否带 ANSI 颜色：1=开 0=关（默认开）
#CLOG_COLOR=1

# 控制台输出：1=开 0=关（默认开）。只影响控制台，不影响文件输出
#CLOG_CONSOLE=1

# ---------- 大模型 (LLM) ----------
# 大模型二次识别由三层开关共同控制（注意: 全局开关 g_llm_check 是启动参数，不在本文件）:
#   1) 全局开关 g_llm_check：./one <ip> <alg> <llm_check>（argv[3]），0=关 1=开；
#      也可由服务端 open 接口动态改；关闭时所有算法都不做 LLM 校验
#   2) 单相机开关：相机配置 config.llm_check，默认 true，可显式设 false 关掉单台
#   3) 算法级开关：见 LLM_TRACKING_ALGS（人脸/车牌 tracking 专用，默认关）
# 本文件只能控制第 3 层（环境变量）。

# LLM 服务地址；不设用代码默认
#LLM_URL=https://newapi.cvvii.com

# LLM 模型名
#LLM_MODEL=Qwen/Qwen3.5-9B

# LLM API Key
#OPENAI_API_KEY=

# 人脸跟踪/车牌跟踪是否参与大模型二次识别：
#   1=开 0=关（默认关）。关闭时这两个算法直接下发原始告警（alarm=1），不进 LLM 校验；
#   仅作用于 face_tracking / license_plate_tracking 两个算法，其它算法不受影响。
#   logEffectiveConfig 启动时会打印当前值。
#LLM_TRACKING_ALGS=1

# ---------- 解码 ----------
# 解码相关 key 由 app_x86/app_rk 的 prefer/get_videoffmpeg.cpp 与
# runtime/decode/video_decoder.cpp 读取。

# 相机路数 > 该值时只解关键帧（I 帧），降低解码负载；帧率≈GOP 率
# 无 one.conf / 未配置时默认 16
#DECODE_KEYFRAME_CAMS=16

# getframe 连续无帧等待上限（毫秒）。不设时：全帧 15000 / 关键帧模式 60000
# 关键帧 GOP 较长时（如 4s）务必保证该值 > 2~3 个 GOP
#DECODE_FRAME_WAIT_MS=60000

# 每秒 FPS 解码日志开关；1=开 0=关（默认关）
#DECODE_FPS_LOG=0

# 解码后输出帧率上限（fps）：按源流实际 fps 动态换算抽帧步长，保证输出帧率不超过该值
# 0=不控制（默认，全帧）；推理跟不上解码时可设为目标值（如 10=输出帧率控制在 10fps 以内）
# 源流本身 fps 已 <= 该值时不丢帧；包仍全量送硬解保证参考帧完整
# >16 路关键帧模式（DECODE_KEYFRAME_CAMS）不叠加本开关
# 注意: 仅 x86 生效，RK 端（app_rk）当前未读取该 key
#DECODE_FRAME_STEP=0

# 过滤解码出的坏帧（绿屏/损坏帧）；1=开 0=关（默认开）
#DECODE_BADFRAME_FILTER=1

# ---------- 其它 ----------
# 相机状态检查：1/0。注意: 程序当前未读取该 key，配置无效（待实现或已废弃）
#CAMERA_STATUS_CHECK=1

# 可见 GPU（x86）；不设=全部。由 CUDA 运行时读取，非程序 getenv
#CUDA_VISIBLE_DEVICES=0

# ---------- 吸烟检测降级 ----------
# 头部未命中时是否允许仅凭吸烟框自身高置信度报警；1=开 0=关（默认关）
#SMOKING_FALLBACK_ENABLE=0

# 降级路径下吸烟框最低置信度，默认0.6
#SMOKING_FALLBACK_MIN_SCORE=0.6
