-- 每设备归因 + GB 综合配额(todo #5 Phase 2) -- -- ① devices.dp_uuid:每设备独立的数据面凭证(替代账户级 users.dp_uuid 作为出网凭证)。 -- SQLite ADD COLUMN 不支持 UNIQUE 约束 → 列加完再建唯一索引(NULL 视为相异,存量设备 -- NULL 不冲突,待回填)。 -- ② usage_device_daily:按设备的每日用量;usage_daily 仍作账户综合 rollup。 -- ③ plans.daily_mb:每日综合流量配额(MB,与 daily_minutes 并存,按账户综合卡)。 -- 用 MB 而非 GB 以支持免费版 500MB。free 500 / pro 100GB / team 200GB(可调)。 ALTER TABLE devices ADD COLUMN dp_uuid TEXT NULL; CREATE UNIQUE INDEX idx_devices_dp_uuid ON devices (dp_uuid); CREATE TABLE usage_device_daily ( user_id INTEGER NOT NULL, device_id INTEGER NOT NULL, date DATE NOT NULL, bytes_up INTEGER NOT NULL DEFAULT 0, bytes_down INTEGER NOT NULL DEFAULT 0, minutes_used INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (device_id, date) ); CREATE INDEX idx_usage_device_user_date ON usage_device_daily (user_id, date); ALTER TABLE plans ADD COLUMN daily_mb INTEGER NULL; UPDATE plans SET daily_mb = 500 WHERE code = 'free'; UPDATE plans SET daily_mb = 102400 WHERE code = 'pro'; UPDATE plans SET daily_mb = 204800 WHERE code = 'team';