设备列表 视频流服务器

This commit is contained in:
yuhaiming
2026-09-17 17:09:49 +08:00
parent 1cfb071dfb
commit 7bdc5c846d
40 changed files with 1283 additions and 78 deletions

View File

@@ -140,3 +140,62 @@ ALTER TABLE sys_user MODIFY COLUMN phone_number varchar(11) DEFAULT NULL COMMENT
-- 步骤 2:邮箱列默认值改为 NULL
ALTER TABLE sys_user MODIFY COLUMN email varchar(50) DEFAULT NULL COMMENT '用户邮箱';
-- ----------------------------------------------------------------------------
-- 补丁 4:为 bm_device 增加「设备级低电告警阈值」两列
-- (hood_battery_threshold / ring_battery_threshold)
-- ----------------------------------------------------------------------------
-- 背景:
-- 低电告警阈值原先是**全局配置**(application.yml 的 device.mqtt.low-battery-threshold=20),
-- 全平台共用一个数。但 PRD Q9「头套/脚环低电阈值」至今未决,且不同型号设备的电池容量与
-- 放电特性并不相同,单一全局值无法覆盖,故改为按设备配置。
--
-- ★ 口径说明(重要)
-- 1) 本列 = **触发阈值**;**恢复阈值不落库**,由应用层派生:
-- recover = trigger + (low-battery-recover-threshold - low-battery-threshold)
-- 工程默认即 20 / 25 ⇒ 回差 5。不把恢复阈值也暴露给用户,
-- 是为了从根上杜绝「恢复 ≤ 触发」这种会让设备卡死在告警态、再也恢复不了的配置。
-- 2) 取值语义:电量 ≤ 该值即触发低电告警。**0 表示不触发**(等同对该设备关闭低电保护),
-- 因为「电量 ≤ 0」实际不可能成立。同一取值**同时**作用于「低电拒绝遮盖指令」的拦截判定——
-- 两者刻意共用同一阈值,避免出现「已经告警了却还能遮盖」的口径撕裂。
-- 3) 头套与脚环**各自独立**取值,互不影响。
--
-- ★ 为什么是 NOT NULL DEFAULT 20,而不是可空(NULL = 未配置)
-- a) ALTER 时一次性把存量行回填为 20,与改造前的全局行为**逐字一致**,升级零行为变化;
-- b) 前端列表要按行判定「电量是否低于阈值并标红」(PRD §7.1),若列可空,
-- 前端还得再知道一次全局默认值 —— 又变成「两处真相」;后端也得额外输出 effective 字段
-- 并遍历列表回填。NOT NULL 直接把这个问题消灭在 DDL 层;
-- c) 与本表 status / hood_connected / signal_level 等列的既有风格一致(均 NOT NULL 带默认值)。
-- 注:新增设备时若请求体不带该字段,MP 全局 insertStrategy=NOT_NULL 会**省略该列**,
-- 此时生效的正是本处的列默认值 20,符合预期。
--
-- ★ 执行前必读 · 前置检查(确认列尚不存在,避免重复执行报 1060)
-- SELECT column_name, column_type, is_nullable, column_default
-- FROM information_schema.columns
-- WHERE table_schema = 'bird_monitoring' AND table_name = 'bm_device'
-- AND column_name IN ('hood_battery_threshold', 'ring_battery_threshold');
-- → 期望返回 0 行。
--
-- ★ 重复执行本文件时的预期报错(可忽略)
-- ERROR 1060 (42S21): Duplicate column name 'hood_battery_threshold'
--
-- ★ 影响面提示
-- 两列为 tinyint(有符号,范围 -128~127),取值域由应用层 @Min(0)/@Max(100) 校验;
-- 本补丁只做「加列 + 回填默认值」,不改动任何既有业务数据。
--
-- ★ 回滚
-- ALTER TABLE bm_device
-- DROP COLUMN hood_battery_threshold,
-- DROP COLUMN ring_battery_threshold;
-- ----------------------------------------------------------------------------
-- 步骤 1:头套低电告警阈值(存量行回填 20,与改造前的全局默认一致)
ALTER TABLE bm_device
ADD COLUMN hood_battery_threshold tinyint NOT NULL DEFAULT 20
COMMENT '头套低电告警阈值0-100(≤该值触发,0=不触发)';
-- 步骤 2:脚环低电告警阈值(存量行同样回填 20)
ALTER TABLE bm_device
ADD COLUMN ring_battery_threshold tinyint NOT NULL DEFAULT 20
COMMENT '脚环低电告警阈值0-100(≤该值触发,0=不触发)';