-- ============================================================
-- 智能终端数据表 (ai_smart_terminal)
-- 场景：云端孪生镜像 — 模型训练完成后发布到云端孪生设备，
--       边缘端定期检测云端版本并下载更新，实现动态模型更新。
-- 来源：Oracle SD_AIBOX_B_H（AI边缘计算盒子基本属性表）
-- 更新日期：2026-07-09
-- ============================================================

-- public.ai_smart_terminal 定义

-- Drop table
-- DROP TABLE public.ai_smart_terminal;

CREATE TABLE public.ai_smart_terminal (
    -- ======== 基本信息 ========
    id varchar(40) NOT NULL,                -- 主键ID
    stcd varchar(40) NOT NULL,              -- 终端编码（与边缘实体设备一一对应）
    stnm varchar(255) NOT NULL,             -- 终端名称
    sttp varchar(2) NOT NULL,               -- 终端分类：01=鱼类识别AI盒子 02=鸟类识别AI盒子 03=野生动物识别AI盒子 04=鱼类分拣装置
    order_index int4 NULL,                  -- 排序

    -- ======== 位置信息 ========
    lgtd numeric(10,6) NULL,                -- 经度（单位：°）
    lttd numeric(10,6) NULL,                -- 纬度（单位：°）
    elev numeric(10,6) NULL,                -- 高程（单位：m）
    rstcd varchar(64) NULL,                 -- 所属电站编码
    base_id varchar(64) NULL,               -- 所属水电基地编码
    hbrvcd varchar(64) NULL,                -- 所属水电基地流域编码
    rvcd varchar(64) NULL,                  -- 所属流域编码

    -- ======== 设备配置 ========
    aipz varchar(1000) NULL,                -- AI盒子硬件/软件配置信息
    ipaddr varchar(512) NULL,               -- 设备IP地址
    siminfo varchar(512) NULL,              -- SIM卡信息
    lxr varchar(512) NULL,                  -- 联系人及联系电话
    purpose varchar(512) NULL,              -- 用途说明

    -- ======== 监测配置 ========
    stindx varchar(1000) NULL,              -- 监测指标列表
    dtfrqcy int4 NULL,                      -- 数据采集频次（单位：min）
    mway int2 NULL,                         -- 监测方式：0=人工监测 1=自动监测 2=混合监测

    -- ======== 启用与接入状态 ========
    usfl int2 NULL,                         -- 是否启用：0=否 1=是
    dtin int2 NULL,                         -- 数据是否接入：0=未接入 1=已接入
    dtin_tm timestamptz NULL,               -- 数据首次接入时间

    -- ======== 云端孪生 — 模型发布 ========
    model_id varchar(40) NULL,              -- 已部署模型ID（关联训练产出的模型记录）
    model_version varchar(64) NULL,         -- 已部署模型版本号
    model_path varchar(600) NULL,           -- 模型文件存储路径（MinIO对象路径）
    model_publish_time timestamptz NULL,    -- 模型发布时间（发布到云端孪生设备的时间）
    model_publish_user varchar(36) NULL,    -- 模型发布人

    -- ======== 边缘端 — 同步状态 ========
    edge_model_version varchar(64) NULL,    -- 边缘端当前运行的模型版本
    edge_update_time timestamptz NULL,      -- 边缘端最后一次模型更新时间
    last_heartbeat_time timestamptz NULL,   -- 边缘端最后心跳时间
    online_status int2 NULL,                -- 在线状态：0=离线 1=在线
    sync_check_interval int4 NULL,          -- 同步检测间隔（单位：min，边缘端轮询云端孪生设备版本的时间间隔）

    -- ======== 运维记录 ========
    remark varchar(512) NULL,               -- 备注
    record_user varchar(36) NULL,           -- 创建人
    record_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
    is_deleted int2 NOT NULL DEFAULT 0,     -- 是否已删除：0=未删除 1=已删除

    CONSTRAINT ai_smart_terminal_pkey PRIMARY KEY (id)
);

CREATE INDEX ai_smart_terminal_id_idx ON public.ai_smart_terminal USING btree (id varchar_pattern_ops);
CREATE INDEX ai_smart_terminal_stcd_idx ON public.ai_smart_terminal USING btree (stcd);

-- Column comments

COMMENT ON TABLE public.ai_smart_terminal IS '智能终端数据表（云端孪生镜像）';
COMMENT ON COLUMN public.ai_smart_terminal.id IS '主键ID';
COMMENT ON COLUMN public.ai_smart_terminal.stcd IS '终端编码（与边缘实体设备一一对应）';
COMMENT ON COLUMN public.ai_smart_terminal.stnm IS '终端名称';
COMMENT ON COLUMN public.ai_smart_terminal.sttp IS '终端分类：01=鱼类识别AI盒子 02=鸟类识别AI盒子 03=野生动物识别AI盒子 04=鱼类分拣装置';
COMMENT ON COLUMN public.ai_smart_terminal.order_index IS '排序';
COMMENT ON COLUMN public.ai_smart_terminal.lgtd IS '经度（单位：°）';
COMMENT ON COLUMN public.ai_smart_terminal.lttd IS '纬度（单位：°）';
COMMENT ON COLUMN public.ai_smart_terminal.elev IS '高程（单位：m）';
COMMENT ON COLUMN public.ai_smart_terminal.rstcd IS '所属电站编码';
COMMENT ON COLUMN public.ai_smart_terminal.base_id IS '所属水电基地编码';
COMMENT ON COLUMN public.ai_smart_terminal.hbrvcd IS '所属水电基地流域编码';
COMMENT ON COLUMN public.ai_smart_terminal.rvcd IS '所属流域编码';
COMMENT ON COLUMN public.ai_smart_terminal.aipz IS 'AI盒子硬件/软件配置信息';
COMMENT ON COLUMN public.ai_smart_terminal.ipaddr IS '设备IP地址';
COMMENT ON COLUMN public.ai_smart_terminal.siminfo IS 'SIM卡信息';
COMMENT ON COLUMN public.ai_smart_terminal.lxr IS '联系人及联系电话';
COMMENT ON COLUMN public.ai_smart_terminal.purpose IS '用途说明';
COMMENT ON COLUMN public.ai_smart_terminal.stindx IS '监测指标列表';
COMMENT ON COLUMN public.ai_smart_terminal.dtfrqcy IS '数据采集频次（单位：min）';
COMMENT ON COLUMN public.ai_smart_terminal.mway IS '监测方式：0=人工监测 1=自动监测 2=混合监测';
COMMENT ON COLUMN public.ai_smart_terminal.usfl IS '是否启用：0=否 1=是';
COMMENT ON COLUMN public.ai_smart_terminal.dtin IS '数据是否接入：0=未接入 1=已接入';
COMMENT ON COLUMN public.ai_smart_terminal.dtin_tm IS '数据首次接入时间';
COMMENT ON COLUMN public.ai_smart_terminal.model_id IS '已部署模型ID（关联训练产出的模型记录）';
COMMENT ON COLUMN public.ai_smart_terminal.model_version IS '已部署模型版本号';
COMMENT ON COLUMN public.ai_smart_terminal.model_path IS '模型文件存储路径（MinIO对象路径）';
COMMENT ON COLUMN public.ai_smart_terminal.model_publish_time IS '模型发布时间（发布到云端孪生设备的时间）';
COMMENT ON COLUMN public.ai_smart_terminal.model_publish_user IS '模型发布人';
COMMENT ON COLUMN public.ai_smart_terminal.edge_model_version IS '边缘端当前运行的模型版本';
COMMENT ON COLUMN public.ai_smart_terminal.edge_update_time IS '边缘端最后一次模型更新时间';
COMMENT ON COLUMN public.ai_smart_terminal.last_heartbeat_time IS '边缘端最后心跳时间';
COMMENT ON COLUMN public.ai_smart_terminal.online_status IS '在线状态：0=离线 1=在线';
COMMENT ON COLUMN public.ai_smart_terminal.sync_check_interval IS '同步检测间隔（单位：min，边缘端轮询云端孪生设备版本的时间间隔）';
COMMENT ON COLUMN public.ai_smart_terminal.remark IS '备注';
COMMENT ON COLUMN public.ai_smart_terminal.record_user IS '创建人';
COMMENT ON COLUMN public.ai_smart_terminal.record_time IS '创建时间';
COMMENT ON COLUMN public.ai_smart_terminal.is_deleted IS '是否已删除：0=未删除 1=已删除';
