cangku/backend/database/create_desktop_client_presence.sql

21 lines
1.4 KiB
SQL

CREATE TABLE IF NOT EXISTS desktop_client_presence (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 'Presence record ID',
user_id BIGINT NOT NULL COMMENT 'Authenticated user ID',
client_id CHAR(36) NOT NULL COMMENT 'Persistent desktop installation ID',
client_name VARCHAR(100) NOT NULL DEFAULT 'PDD Operations Automation' COMMENT 'Desktop application name',
client_version VARCHAR(32) NULL COMMENT 'Desktop application version',
platform VARCHAR(32) NULL COMMENT 'Operating system platform',
platform_version VARCHAR(128) NULL COMMENT 'Operating system version',
device_name VARCHAR(255) NULL COMMENT 'Device hostname',
ip_address VARCHAR(64) NULL COMMENT 'Latest client IP address',
user_agent VARCHAR(500) NULL COMMENT 'Latest HTTP user agent',
online_since_at DATETIME(3) NOT NULL COMMENT 'Current online session start time',
last_seen_at DATETIME(3) NOT NULL COMMENT 'Latest heartbeat time',
offline_at DATETIME(3) NULL COMMENT 'Explicit offline time',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'Created time',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT 'Updated time',
UNIQUE KEY uk_desktop_presence_user_client (user_id, client_id),
INDEX idx_desktop_presence_last_seen (last_seen_at),
INDEX idx_desktop_presence_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Desktop client online presence';