-- =============================================================================
-- 设备基本信息表（sys_sn_system_info）
-- 说明：仅存放设备【基本信息】面板数据；
--       硬件信息 / 网络信息 / 安全信息 / 其他信息 已拆分至下列独立表。
-- 脚本遵循项目规范：不直连库，由 DBA 执行。
--
-- 重要：部署环境中若已存在【旧结构】的 sys_sn_system_info（列名为 sn_model、
-- sn_brand 等），CREATE TABLE IF NOT EXISTS 不会重建，会导致实体查询报
-- "Unknown column 'device_name'"。因此此处先 DROP 再 CREATE，确保表结构与
-- 实体（SnDeviceSystemInfo）完全一致。
-- 注意：DROP 会清空该表历史数据，设备数据可由端上重新上报补齐。
-- =============================================================================

DROP TABLE IF EXISTS `sys_sn_system_info`;

CREATE TABLE `sys_sn_system_info`
(
    `id`                 BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `serialno`           VARCHAR(64)   NOT NULL COMMENT '设备序列号（关联 sys_sn.serialno）',

    -- ===================== 基本信息面板 =====================
    `device_name`        VARCHAR(128)  DEFAULT NULL COMMENT '设备名称',
    `device_brand`       VARCHAR(64)   DEFAULT NULL COMMENT '设备品牌',
    `device_model`       VARCHAR(64)   DEFAULT NULL COMMENT '设备型号',
    `device_board`       VARCHAR(64)   DEFAULT NULL COMMENT '主板名称',
    `device_manufacturer` VARCHAR(64)  DEFAULT NULL COMMENT '制造商',
    `hardware`           VARCHAR(64)   DEFAULT NULL COMMENT '硬件信息',
    `host`               VARCHAR(64)   DEFAULT NULL COMMENT '主机名',
    `android_version`    VARCHAR(32)   DEFAULT NULL COMMENT 'Android 版本',
    `android_api`        INT           DEFAULT NULL COMMENT 'Android API 级别',
    `android_id`         VARCHAR(64)   DEFAULT NULL COMMENT 'Android ID',
    `build_id`           VARCHAR(64)   DEFAULT NULL COMMENT 'Build ID',
    `build_display_id`   VARCHAR(128)  DEFAULT NULL COMMENT 'Build Display ID',
    `build_fingerprint`  VARCHAR(255)  DEFAULT NULL COMMENT 'Build 指纹',
    `build_type`         VARCHAR(32)   DEFAULT NULL COMMENT 'Build 类型（user/userdebug/eng）',
    `build_user`         VARCHAR(64)   DEFAULT NULL COMMENT 'Build 用户',
    `build_host`         VARCHAR(64)   DEFAULT NULL COMMENT 'Build 主机',
    `build_tags`         VARCHAR(64)   DEFAULT NULL COMMENT 'Build 标签',
    `build_time`         DATETIME      DEFAULT NULL COMMENT 'Build 时间',
    `language`           VARCHAR(32)   DEFAULT NULL COMMENT '系统语言',
    `timezone`           VARCHAR(64)   DEFAULT NULL COMMENT '时区',
    `boot_time`          DATETIME      DEFAULT NULL COMMENT '开机时间',
    `screen_resolution`  VARCHAR(32)   DEFAULT NULL COMMENT '屏幕分辨率',
    `screen_density`     INT           DEFAULT NULL COMMENT '屏幕密度',
    `kernel_version`     VARCHAR(128)  DEFAULT NULL COMMENT '内核版本',
    `rom_version`        VARCHAR(128)  DEFAULT NULL COMMENT 'ROM 版本',

    -- ===================== 补充基本信息字段 =====================
    `product_name`       VARCHAR(128)  DEFAULT NULL COMMENT '产品名称',
    `product_model`      VARCHAR(64)   DEFAULT NULL COMMENT '产品型号',
    `product_device`     VARCHAR(64)   DEFAULT NULL COMMENT '产品设备名',
    `board_platform`     VARCHAR(64)   DEFAULT NULL COMMENT '主板平台',
    `device_type`        VARCHAR(32)   DEFAULT NULL COMMENT '设备类型（phone/tablet/tv等）',
    `is_tablet`          TINYINT       DEFAULT 0 COMMENT '是否平板（0否 1是）',
    `release_version`    VARCHAR(32)   DEFAULT NULL COMMENT 'Android 发布版本号',
    `display_version`    VARCHAR(64)   DEFAULT NULL COMMENT '显示版本号',
    `bootloader`         VARCHAR(64)   DEFAULT NULL COMMENT 'Bootloader 版本',
    `baseband_version`   VARCHAR(64)   DEFAULT NULL COMMENT '基带版本',
    `radio_version`      VARCHAR(64)   DEFAULT NULL COMMENT 'Radio 版本',
    `screen_size`        VARCHAR(16)   DEFAULT NULL COMMENT '屏幕尺寸（英寸，文本）',
    `screen_inch`        DECIMAL(4,2)  DEFAULT NULL COMMENT '屏幕尺寸（数值，英寸）',
    `refresh_rate`       INT           DEFAULT NULL COMMENT '屏幕刷新率（Hz）',
    `os_type`            VARCHAR(32)   DEFAULT NULL COMMENT '操作系统类型',
    `os_version`         VARCHAR(32)   DEFAULT NULL COMMENT '操作系统版本',
    `firmware_version`   VARCHAR(64)   DEFAULT NULL COMMENT '固件版本',

    -- ===================== 通用字段 =====================
    `create_time`        DATETIME      DEFAULT NULL COMMENT '创建时间',
    `update_time`        DATETIME      DEFAULT NULL COMMENT '更新时间',
    `is_deleted`         TINYINT       DEFAULT 0 COMMENT '逻辑删除（0未删 1已删）',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_serialno` (`serialno`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4
  COMMENT = '设备基本信息表';
