diff --git a/docs/device-session-management-design.html b/docs/device-session-management-design.html index 731b14f..98712f5 100644 --- a/docs/device-session-management-design.html +++ b/docs/device-session-management-design.html @@ -204,12 +204,22 @@ UNIQUE INDEX (dp_uuid) -- 000015(NULL 不冲突,存量待回填)
(user_id, devices.uuid)。uuid 由客户端生成、持久化在 flutter_secure_storage,同一台机器重装 app 内仍稳定 → 一台真实设备恒等于一行 devices,不会因重登重复计数。(user_id, devices.uuid)。uuid 是客户端首启生成的随机 UUID v4,持久化在 flutter_secure_storage;同一安装内跨重启/更新恒定 → 一台真机恒等一行 devices,不因重登重复计数(生成方式见下 ④)。RegisterIfAbsent(userID, deviceUUID, name, platform, maxDevices) 在注册新设备时已会按套餐上限校验设备数(maxDevices 来自计划:免费 1 / PRO 5,对应 Me.devicesMax)。超限时拒绝注册新设备(返回「设备数已达上限」),即「按设备控制用户能登录的设备数」。sessions(未撤销)或 last_seen 在线数为准,限「并发」而非「累计」。sessions 表 + devices.id 同时支持这两种统计。uuid 怎么生成(替换现有硬编码 _kDeviceId='mac-001'):
+uuid 包的 Uuid().v4(),128 位随机),立即写入 flutter_secure_storage(key 如 device_id);之后每次启动先读,读到就复用。ANDROID_ID、桌面 MAC 地址易变/隐私敏感——「随机 UUID + 安全存储持久化」是跨五端唯一可靠且合规的做法。usage_device_daily(已存在,本方案使其真正写入)usage_device_daily(user_id, device_id, date, bytes_up, bytes_down, minutes_used)