CREATE DATABASE IF NOT EXISTS `zcloud-gbs-personnel-position`
  DEFAULT CHARACTER SET utf8mb4;

USE `zcloud-gbs-personnel-position`;

-- 实时位置、轨迹点不落 MySQL；页面实时查询直接走 FindS，必要时使用 Redis 短缓存。
-- MySQL 只保存 GBS 侧业务配置、三方映射、告警闭环和同步审计。
-- 人员和组织主数据来自 `jjb-saas-zcloud-basic-info` 基础信息库，本库不重复建人员/组织表。
-- 人员关联优先使用身份证号 `id_card_no`，展示姓名、单位、岗位等信息时实时查询基础信息库视图。
-- tenant_id 是框架租户字段；公司/子公司维度的数据隔离使用 corpinfo_id。

CREATE TABLE IF NOT EXISTS `openapi_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `config_code` varchar(64) NOT NULL COMMENT '配置编码',
  `config_name` varchar(128) NOT NULL COMMENT '配置名称',
  `vendor_name` varchar(64) NOT NULL DEFAULT 'FindS' COMMENT '厂商名称',
  `host_url` varchar(255) NOT NULL COMMENT '接口服务地址',
  `external_prefix` varchar(64) DEFAULT '/rest/' COMMENT '外部接口前缀',
  `internal_prefix` varchar(64) DEFAULT '/openapi/' COMMENT '内部接口前缀',
  `sik` varchar(128) DEFAULT NULL COMMENT '应用SIK',
  `sis_cipher_text` varchar(512) DEFAULT NULL COMMENT '应用SIS密文',
  `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用 1是 0否',
  `last_check_status` varchar(32) DEFAULT NULL COMMENT '最近检测状态',
  `last_check_time` datetime DEFAULT NULL COMMENT '最近检测时间',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_config_code_delete` (`config_code`, `delete_enum`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位第三方接口配置';

CREATE TABLE IF NOT EXISTS `area` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `area_code` varchar(64) NOT NULL COMMENT '区域编码',
  `area_name` varchar(255) NOT NULL COMMENT '区域名称',
  `area_type` varchar(32) NOT NULL COMMENT '区域类型 PORT港区 COMPANY_AREA公司区域 WORK_AREA作业区 BUFFER缓冲区',
  `parent_id` bigint DEFAULT NULL COMMENT '上级区域id',
  `parent_code` varchar(64) DEFAULT NULL COMMENT '上级区域编码',
  `org_code` varchar(64) DEFAULT NULL COMMENT '所属组织编码',
  `org_name` varchar(255) DEFAULT NULL COMMENT '所属组织名称',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `area_level` int DEFAULT 1 COMMENT '区域层级',
  `sort_no` int DEFAULT 0 COMMENT '排序号',
  `center_lon` decimal(18,10) DEFAULT NULL COMMENT '中心点经度',
  `center_lat` decimal(18,10) DEFAULT NULL COMMENT '中心点纬度',
  `polygon_json` json DEFAULT NULL COMMENT '区域边界坐标JSON',
  `status` varchar(32) NOT NULL DEFAULT 'ENABLED' COMMENT '状态 ENABLED启用 DISABLED停用',
  `bind_fence_id` bigint DEFAULT NULL COMMENT '绑定围栏id',
  `finds_fence_id` bigint DEFAULT NULL COMMENT 'FindS围栏id',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_area_code_delete` (`area_code`, `delete_enum`),
  KEY `idx_parent_code` (`parent_code`),
  KEY `idx_org_code` (`org_code`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_area_type` (`area_type`),
  KEY `idx_finds_fence_id` (`finds_fence_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位区域';

CREATE TABLE IF NOT EXISTS `terminal` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `terminal_no` varchar(64) NOT NULL COMMENT '终端号',
  `terminal_name` varchar(128) DEFAULT NULL COMMENT '终端名称',
  `terminal_model` varchar(128) DEFAULT NULL COMMENT '终端型号',
  `device_type` varchar(32) NOT NULL COMMENT '设备类型 CARD定位卡 APP手机APP TERMINAL终端 OTHER其他',
  `app_account` varchar(128) DEFAULT NULL COMMENT 'APP账号或手机号',
  `sim_card_no` varchar(64) DEFAULT NULL COMMENT 'SIM卡号',
  `check_code` varchar(64) DEFAULT NULL COMMENT '校验码',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `org_code` varchar(64) DEFAULT NULL COMMENT '归属组织编码',
  `org_name` varchar(255) DEFAULT NULL COMMENT '归属组织名称',
  `enable` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
  `device_status` varchar(32) DEFAULT NULL COMMENT '第三方设备在线状态',
  `last_location_time` datetime DEFAULT NULL COMMENT '最后定位时间',
  `last_location_name` varchar(255) DEFAULT NULL COMMENT '最后定位位置',
  `bind_id_card_no` varchar(64) DEFAULT NULL COMMENT '当前绑定人员身份证号，关联资质库人员视图',
  `finds_terminal_id` bigint DEFAULT NULL COMMENT 'FindS终端id',
  `sync_status` varchar(32) DEFAULT NULL COMMENT '同步状态 SUCCESS/FAIL/WAIT/DELETE_WAIT/DELETE_FAIL',
  `sync_token` varchar(64) DEFAULT NULL COMMENT '本地同步版本令牌',
  `last_sync_time` datetime DEFAULT NULL COMMENT '最后同步时间',
  `raw_json` json DEFAULT NULL COMMENT '第三方原始数据',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_terminal_no_delete` (`terminal_no`, `delete_enum`),
  KEY `idx_device_type` (`device_type`),
  KEY `idx_app_account` (`app_account`),
  KEY `idx_bind_id_card_no` (`bind_id_card_no`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_org_code` (`org_code`),
  KEY `idx_last_location_time` (`last_location_time`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位终端设备';

CREATE TABLE IF NOT EXISTS `terminal_bind` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `id_card_no` varchar(64) DEFAULT NULL COMMENT '人员身份证号，关联资质库人员视图',
  `staff_no_snapshot` varchar(64) DEFAULT NULL COMMENT '员工号快照',
  `staff_name_snapshot` varchar(128) DEFAULT NULL COMMENT '人员姓名快照',
  `terminal_id` bigint DEFAULT NULL COMMENT '终端id',
  `terminal_no` varchar(64) NOT NULL COMMENT '终端号',
  `device_type` varchar(32) NOT NULL COMMENT '设备类型 CARD定位卡 APP手机APP TERMINAL终端 OTHER其他',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `track_type` varchar(32) NOT NULL DEFAULT 'STAFF' COMMENT '追踪对象类型 STAFF人员 CAR车辆',
  `check_code` varchar(64) DEFAULT NULL COMMENT '校验码',
  `bind_status` varchar(32) NOT NULL DEFAULT 'BOUND' COMMENT '绑定状态 BOUND已绑定 UNBOUND已解绑',
  `bind_time` datetime DEFAULT NULL COMMENT '绑定时间',
  `unbind_time` datetime DEFAULT NULL COMMENT '解绑时间',
  `finds_track_id` bigint DEFAULT NULL COMMENT 'FindS追踪对象id',
  `finds_terminal_id` bigint DEFAULT NULL COMMENT 'FindS终端id',
  `sync_status` varchar(32) DEFAULT NULL COMMENT '同步状态 SUCCESS/FAIL/WAIT/DELETE_WAIT/DELETE_FAIL',
  `sync_token` varchar(64) DEFAULT NULL COMMENT '本地同步版本令牌',
  `last_sync_time` datetime DEFAULT NULL COMMENT '最后同步时间',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_id_card_no` (`id_card_no`),
  KEY `idx_staff_no_snapshot` (`staff_no_snapshot`),
  KEY `idx_terminal_no` (`terminal_no`),
  KEY `idx_bind_status` (`bind_status`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位终端绑定记录';

-- FindS staff to local platform user mapping. This is a mapping cache, not a personnel master table.
CREATE TABLE IF NOT EXISTS `personnel_match` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'primary key',
  `source_system` varchar(32) NOT NULL DEFAULT 'FINDS' COMMENT 'external source system',
  `source_config_code` varchar(64) NOT NULL DEFAULT 'FINDS' COMMENT 'FindS config scope',
  `finds_staff_no` varchar(64) NOT NULL COMMENT 'FindS business staff/track number',
  `finds_staff_no_type` varchar(32) NOT NULL DEFAULT 'TRACK_NO' COMMENT 'TRACK_NO/WORK_NO/STAFF_NO',
  `finds_track_id` bigint DEFAULT NULL COMMENT 'FindS track object id',
  `finds_id_card_no` varchar(64) DEFAULT NULL COMMENT 'FindS id card number',
  `finds_staff_name` varchar(128) DEFAULT NULL COMMENT 'FindS staff name snapshot',
  `finds_corpinfo_id` varchar(64) DEFAULT NULL COMMENT 'FindS company id snapshot',
  `finds_corpinfo_name` varchar(255) DEFAULT NULL COMMENT 'FindS company name snapshot',
  `finds_department_name` varchar(255) DEFAULT NULL COMMENT 'FindS department name snapshot',
  `finds_terminal_no` varchar(64) DEFAULT NULL COMMENT 'FindS terminal number snapshot',
  `local_user_id` bigint DEFAULT NULL COMMENT 'matched local platform user id',
  `local_mobile_no` varchar(64) DEFAULT NULL COMMENT 'local platform mobile snapshot used for matching',
  `local_id_card_no` varchar(64) DEFAULT NULL COMMENT 'matched local id card snapshot',
  `match_status` varchar(32) NOT NULL DEFAULT 'UNMATCHED' COMMENT 'MATCHED/UNMATCHED/AMBIGUOUS/DISABLED',
  `match_type` varchar(32) DEFAULT NULL COMMENT 'MOBILE/ID_CARD/MOBILE_AND_ID_CARD',
  `location_status` varchar(32) NOT NULL DEFAULT 'OFFLINE' COMMENT 'ONLINE/OFFLINE',
  `finds_device_status` varchar(32) DEFAULT NULL COMMENT 'FindS STATIC/MOVING/OFFLINE/UN_LOCATION/NONE',
  `location_status_time` datetime DEFAULT NULL COMMENT 'location status sync time',
  `last_seen_time` datetime DEFAULT NULL COMMENT 'last time observed from FindS',
  `last_sync_time` datetime DEFAULT NULL COMMENT 'last mapping synchronization time',
  `sync_status` varchar(32) NOT NULL DEFAULT 'SUCCESS' COMMENT 'SUCCESS/FAIL',
  `sync_error` varchar(1000) DEFAULT NULL COMMENT 'last synchronization error',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT 'soft delete flag',
  `remarks` varchar(500) DEFAULT NULL COMMENT 'remarks',
  `tenant_id` bigint DEFAULT NULL COMMENT 'tenant id',
  `org_id` bigint DEFAULT NULL COMMENT 'organization id',
  `env` varchar(32) DEFAULT NULL COMMENT 'environment',
  `version` int NOT NULL DEFAULT 0 COMMENT 'version',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'updated time',
  `create_id` bigint DEFAULT NULL COMMENT 'creator id',
  `update_id` bigint DEFAULT NULL COMMENT 'updater id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_personnel_match_source_staff_delete` (`source_config_code`, `finds_staff_no`, `delete_enum`),
  KEY `idx_personnel_match_local_user` (`local_user_id`, `match_status`),
  KEY `idx_personnel_match_local_mobile` (`local_mobile_no`),
  KEY `idx_personnel_match_find_id_card` (`finds_id_card_no`),
  KEY `idx_personnel_match_terminal_no` (`finds_terminal_no`),
  KEY `idx_personnel_match_local_id_card` (`local_id_card_no`),
  KEY `idx_personnel_match_scope_status` (`finds_corpinfo_id`, `match_status`),
  KEY `idx_personnel_match_location_status` (`location_status`, `match_status`),
  KEY `idx_personnel_match_last_seen` (`last_seen_time`),
  KEY `idx_personnel_match_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='FindS to local personnel mapping';

CREATE TABLE IF NOT EXISTS `fence` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `fence_code` varchar(64) NOT NULL COMMENT '围栏编码',
  `fence_name` varchar(255) NOT NULL COMMENT '围栏名称',
  `fence_scope` varchar(32) NOT NULL COMMENT '围栏范围 COMPANY_AREA公司区域 ELECTRONIC电子围栏 WORK_AREA作业区 SILENCE静默区',
  `fence_biz_name` varchar(64) NOT NULL DEFAULT '区域' COMMENT 'FindS围栏业务类型',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `org_code` varchar(64) DEFAULT NULL COMMENT '所属公司编码',
  `org_name` varchar(255) DEFAULT NULL COMMENT '所属公司名称',
  `area_id` bigint DEFAULT NULL COMMENT '关联区域id',
  `area_name` varchar(255) DEFAULT NULL COMMENT '关联区域名称',
  `coor` varchar(32) NOT NULL DEFAULT 'WGS84' COMMENT '坐标系',
  `space_type` varchar(32) DEFAULT 'OUTDOOR' COMMENT '空间类型 INDOOR室内 OUTDOOR室外',
  `building_id` bigint DEFAULT NULL COMMENT '建筑id',
  `floor` int DEFAULT NULL COMMENT '楼层',
  `polygon_json` json NOT NULL COMMENT '围栏多边形坐标',
  `center_lon` decimal(18,10) DEFAULT NULL COMMENT '中心点经度',
  `center_lat` decimal(18,10) DEFAULT NULL COMMENT '中心点纬度',
  `silence` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否静默区',
  `effect_start` datetime DEFAULT NULL COMMENT '生效开始时间',
  `effect_end` datetime DEFAULT NULL COMMENT '生效结束时间',
  `effect_period_json` json DEFAULT NULL COMMENT '生效周期配置',
  `status` varchar(32) NOT NULL DEFAULT 'ENABLED' COMMENT '状态 ENABLED启用 DISABLED停用',
  `finds_fence_id` bigint DEFAULT NULL COMMENT 'FindS围栏id',
  `finds_fence_code` varchar(64) DEFAULT NULL COMMENT 'FindS围栏编码',
  `sync_status` varchar(32) DEFAULT NULL COMMENT '同步状态 SUCCESS/FAIL/WAIT/DELETE_WAIT/DELETE_FAIL',
  `sync_token` varchar(64) DEFAULT NULL COMMENT '本地同步版本令牌',
  `last_sync_time` datetime DEFAULT NULL COMMENT '最后同步时间',
  `raw_json` json DEFAULT NULL COMMENT '第三方原始数据',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_fence_code_delete` (`fence_code`, `delete_enum`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_org_code` (`org_code`),
  KEY `idx_area_id` (`area_id`),
  KEY `idx_finds_fence_id` (`finds_fence_id`),
  KEY `idx_scope_status` (`fence_scope`, `status`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位电子围栏';

CREATE TABLE IF NOT EXISTS `fence_point` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `fence_id` bigint NOT NULL COMMENT '围栏id',
  `ring_index` int NOT NULL DEFAULT 0 COMMENT '环序号',
  `point_index` int NOT NULL COMMENT '点序号',
  `lon` decimal(18,10) NOT NULL COMMENT '经度',
  `lat` decimal(18,10) NOT NULL COMMENT '纬度',
  `alt` decimal(12,4) DEFAULT NULL COMMENT '高度',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_fence_point` (`fence_id`, `ring_index`, `point_index`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位围栏坐标点';

CREATE TABLE IF NOT EXISTS `alarm_rule` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `rule_code` varchar(64) NOT NULL COMMENT '规则编码',
  `rule_name` varchar(255) NOT NULL COMMENT '规则名称',
  `alarm_attr` varchar(32) NOT NULL COMMENT '告警属性 COMPANY_AREA公司区域告警 FENCE电子围栏告警',
  `alarm_code` varchar(64) NOT NULL COMMENT 'FindS告警类型编码 CROSS_IN/CROSS_OUT/RETENTION/STAY等',
  `alarm_name` varchar(128) DEFAULT NULL COMMENT '告警类型名称',
  `enable` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
  `rule_status` varchar(32) NOT NULL DEFAULT 'ENABLED' COMMENT '状态 ENABLED启用 DISABLED停用',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `org_code` varchar(64) DEFAULT NULL COMMENT '所属公司编码',
  `org_name` varchar(255) DEFAULT NULL COMMENT '所属公司名称',
  `fence_effect_strategy` varchar(32) DEFAULT 'SPECIFIED' COMMENT '围栏生效策略 WHOLE全部 SPECIFIED指定 NULL无',
  `track_types` varchar(255) DEFAULT 'STAFF' COMMENT '应用对象类型 多个逗号分隔',
  `crash_type` varchar(32) DEFAULT NULL COMMENT '碰撞对象类型',
  `finds_rule_id` bigint DEFAULT NULL COMMENT 'FindS告警规则id',
  `sync_status` varchar(32) DEFAULT NULL COMMENT '同步状态 SUCCESS/FAIL/WAIT/DELETE_WAIT/DELETE_FAIL',
  `sync_token` varchar(64) DEFAULT NULL COMMENT '本地同步版本令牌',
  `last_sync_time` datetime DEFAULT NULL COMMENT '最后同步时间',
  `raw_json` json DEFAULT NULL COMMENT '第三方原始数据',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_rule_code_delete` (`rule_code`, `delete_enum`),
  KEY `idx_alarm_code` (`alarm_code`),
  KEY `idx_org_code` (`org_code`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_finds_rule_id` (`finds_rule_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位告警规则';

CREATE TABLE IF NOT EXISTS `alarm_rule_fence_rel` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `rule_id` bigint NOT NULL COMMENT '告警规则id',
  `fence_id` bigint NOT NULL COMMENT '围栏id',
  `fence_name` varchar(255) DEFAULT NULL COMMENT '围栏名称',
  `finds_fence_id` bigint DEFAULT NULL COMMENT 'FindS围栏id',
  `rel_type` varchar(32) NOT NULL DEFAULT 'EFFECTIVE' COMMENT '关联类型 EFFECTIVE生效 IGNORE忽略',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_rule_id` (`rule_id`),
  KEY `idx_fence_id` (`fence_id`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警规则围栏关联';

CREATE TABLE IF NOT EXISTS `alarm_rule_item` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `rule_id` bigint NOT NULL COMMENT '告警规则id',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `level` int DEFAULT 1 COMMENT '告警等级',
  `enable` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
  `cross_duration` bigint DEFAULT NULL COMMENT '进入/离开持续时间 秒',
  `retention_min` decimal(10,2) DEFAULT NULL COMMENT '滞留时长 分钟',
  `stay_min` int DEFAULT NULL COMMENT '静止时间 分钟',
  `static_duration` int DEFAULT NULL COMMENT '静止时间 秒',
  `over_speed` decimal(10,2) DEFAULT NULL COMMENT '速度上限 km/h',
  `global_over_speed` decimal(10,2) DEFAULT NULL COMMENT '全局速度上限 km/h',
  `low_battery` decimal(10,2) DEFAULT NULL COMMENT '低电量百分比',
  `crowded_num` int DEFAULT NULL COMMENT '超员人数',
  `lacked_num` int DEFAULT NULL COMMENT '缺员人数',
  `cluster_duration` int DEFAULT NULL COMMENT '聚集持续时间 秒',
  `cluster_quantity` int DEFAULT NULL COMMENT '聚集数量',
  `cluster_radius` decimal(10,2) DEFAULT NULL COMMENT '聚集半径 米',
  `crash_distance` decimal(10,2) DEFAULT NULL COMMENT '碰撞距离 米',
  `crash_speed` decimal(10,2) DEFAULT NULL COMMENT '碰撞车速 km/h',
  `alarm_param_json` json DEFAULT NULL COMMENT '告警参数JSON',
  `alarm_action_json` json DEFAULT NULL COMMENT '告警动作JSON',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_rule_id` (`rule_id`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警规则项';

CREATE TABLE IF NOT EXISTS `alarm_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `alarm_no` varchar(128) DEFAULT NULL COMMENT '告警编号',
  `finds_alarm_id` bigint DEFAULT NULL COMMENT 'FindS告警id',
  `alarm_code` varchar(64) DEFAULT NULL COMMENT '告警类型编码',
  `alarm_name` varchar(255) DEFAULT NULL COMMENT '告警名称',
  `level` int DEFAULT NULL COMMENT '告警等级',
  `description` varchar(1000) DEFAULT NULL COMMENT '告警说明',
  `dispose_status` varchar(32) DEFAULT 'INIT' COMMENT '处置状态 INIT未处置 CLOSE已处置',
  `dispose_description` varchar(1000) DEFAULT NULL COMMENT '处理结果说明',
  `duration` bigint DEFAULT NULL COMMENT '持续时长 秒',
  `start_time` datetime DEFAULT NULL COMMENT '告警开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '告警结束时间',
  `start_fences_json` json DEFAULT NULL COMMENT '报警开始所在围栏',
  `end_fences_json` json DEFAULT NULL COMMENT '报警结束所在围栏',
  `lon` decimal(18,10) DEFAULT NULL COMMENT '经度',
  `lat` decimal(18,10) DEFAULT NULL COMMENT '纬度',
  `alt` decimal(12,4) DEFAULT NULL COMMENT '高度',
  `speed` decimal(12,4) DEFAULT NULL COMMENT '速度',
  `direction` decimal(12,4) DEFAULT NULL COMMENT '方向',
  `gt` datetime DEFAULT NULL COMMENT '历元时间',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `first_id_card_no` varchar(64) DEFAULT NULL COMMENT '首个告警人员身份证号，关联资质库人员视图',
  `first_staff_no_snapshot` varchar(64) DEFAULT NULL COMMENT '首个告警人员工号快照',
  `first_staff_name_snapshot` varchar(128) DEFAULT NULL COMMENT '首个告警人员姓名快照',
  `terminal_no_list_json` json DEFAULT NULL COMMENT '告警关联终端号列表',
  `sync_time` datetime DEFAULT NULL COMMENT '同步时间',
  `raw_json` json DEFAULT NULL COMMENT '第三方原始数据',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_alarm_no` (`alarm_no`),
  UNIQUE KEY `uk_corpinfo_finds_alarm` (`corpinfo_id`, `finds_alarm_id`),
  KEY `idx_alarm_code` (`alarm_code`),
  KEY `idx_id_card_time` (`first_id_card_no`, `start_time`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_corpinfo_time` (`corpinfo_id`, `start_time`),
  KEY `idx_dispose_status` (`dispose_status`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位告警记录';

CREATE TABLE IF NOT EXISTS `alarm_record_target` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `alarm_record_id` bigint NOT NULL COMMENT '告警记录id',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `track_id` bigint DEFAULT NULL COMMENT 'FindS追踪对象id',
  `track_type` varchar(32) DEFAULT NULL COMMENT '对象类型 STAFF人员 CAR车辆 INSTALLATION设施',
  `track_no` varchar(64) DEFAULT NULL COMMENT '对象编号',
  `track_name` varchar(128) DEFAULT NULL COMMENT '对象名称',
  `terminal_no` varchar(64) DEFAULT NULL COMMENT '终端号',
  `id_card_no` varchar(64) DEFAULT NULL COMMENT '人员身份证号，关联资质库人员视图',
  `staff_no_snapshot` varchar(64) DEFAULT NULL COMMENT '员工号快照',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_alarm_record_id` (`alarm_record_id`),
  KEY `idx_track_no` (`track_no`),
  KEY `idx_id_card_no` (`id_card_no`),
  KEY `idx_terminal_no` (`terminal_no`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警主体明细';

CREATE TABLE IF NOT EXISTS `alarm_dispose_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `alarm_record_id` bigint NOT NULL COMMENT '告警记录id',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `dispose_status` varchar(32) NOT NULL COMMENT '处置状态 INIT未处置 CLOSE已处置',
  `dispose_result` varchar(1000) DEFAULT NULL COMMENT '处置结果',
  `dispose_user_id` bigint DEFAULT NULL COMMENT '处置人id',
  `dispose_user_name` varchar(128) DEFAULT NULL COMMENT '处置人姓名',
  `dispose_time` datetime DEFAULT NULL COMMENT '处置时间',
  `attachment_json` json DEFAULT NULL COMMENT '附件JSON',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_alarm_record_id` (`alarm_record_id`),
  KEY `idx_dispose_time` (`dispose_time`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警处置记录';

CREATE TABLE IF NOT EXISTS `sync_task` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `task_code` varchar(64) NOT NULL COMMENT '任务编码',
  `task_name` varchar(128) NOT NULL COMMENT '任务名称',
  `biz_type` varchar(64) NOT NULL COMMENT '业务类型 ORG/STAFF/TERMINAL/FENCE/ALARM_RULE/ALARM/CALLBACK',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `sync_direction` varchar(32) NOT NULL DEFAULT 'PULL' COMMENT '同步方向 PUSH推送 PULL拉取',
  `cron_expr` varchar(128) DEFAULT NULL COMMENT '定时表达式',
  `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
  `last_execute_time` datetime DEFAULT NULL COMMENT '上次执行时间',
  `next_execute_time` datetime DEFAULT NULL COMMENT '下次执行时间',
  `last_status` varchar(32) DEFAULT NULL COMMENT '上次执行状态',
  `last_message` varchar(1000) DEFAULT NULL COMMENT '上次执行信息',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_code_delete` (`task_code`, `delete_enum`),
  KEY `idx_biz_type` (`biz_type`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位同步任务';

CREATE TABLE IF NOT EXISTS `sync_log` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `trace_id` varchar(64) DEFAULT NULL COMMENT '链路追踪id',
  `task_id` bigint DEFAULT NULL COMMENT '同步任务id',
  `biz_type` varchar(64) NOT NULL COMMENT '业务类型',
  `biz_id` varchar(64) DEFAULT NULL COMMENT '业务id',
  `corpinfo_id` varchar(64) DEFAULT NULL COMMENT '企业id/公司id（公司及子公司数据隔离）',
  `corpinfo_name` varchar(255) DEFAULT NULL COMMENT '企业名称/公司名称',
  `api_name` varchar(128) DEFAULT NULL COMMENT '接口名称',
  `api_path` varchar(255) DEFAULT NULL COMMENT '接口路径',
  `request_json` json DEFAULT NULL COMMENT '请求报文',
  `response_json` json DEFAULT NULL COMMENT '响应报文',
  `http_status` int DEFAULT NULL COMMENT 'HTTP状态',
  `sync_status` varchar(32) NOT NULL COMMENT '同步状态 SUCCESS/FAIL/WAIT',
  `error_msg` varchar(2000) DEFAULT NULL COMMENT '错误信息',
  `execute_time` datetime DEFAULT NULL COMMENT '执行时间',
  `cost_ms` bigint DEFAULT NULL COMMENT '耗时毫秒',
  `retry_times` int DEFAULT 0 COMMENT '重试次数',
  `operator_id` bigint DEFAULT NULL COMMENT '操作人id',
  `operator_name` varchar(128) DEFAULT NULL COMMENT '操作人姓名',
  `delete_enum` varchar(32) NOT NULL DEFAULT 'FALSE' COMMENT '删除标识 TRUE/FALSE',
  `remarks` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_name` varchar(255) DEFAULT NULL COMMENT '创建人姓名',
  `update_name` varchar(255) DEFAULT NULL COMMENT '更新人姓名',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
  `org_id` bigint DEFAULT NULL COMMENT '单位id',
  `env` varchar(32) DEFAULT NULL COMMENT '环境',
  `version` int DEFAULT 0 COMMENT '版本',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  KEY `idx_trace_id` (`trace_id`),
  KEY `idx_task_id` (`task_id`),
  KEY `idx_biz` (`biz_type`, `biz_id`),
  KEY `idx_api_name` (`api_name`),
  KEY `idx_execute_time` (`execute_time`),
  KEY `idx_corpinfo_id` (`corpinfo_id`),
  KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员定位同步日志';

-- 基础信息库主数据代理视图：人员定位服务只查本库视图，实际数据仍由基础信息库维护。
CREATE OR REPLACE VIEW `corp_info` AS
SELECT * FROM `jjb-saas-zcloud-basic-info`.`corp_info` WHERE `delete_enum` = 'FALSE';

CREATE OR REPLACE VIEW `department` AS
SELECT * FROM `jjb-saas-zcloud-basic-info`.`department` WHERE `delete_enum` = 'FALSE';

CREATE OR REPLACE VIEW `post` AS
SELECT * FROM `jjb-saas-zcloud-basic-info`.`post` WHERE `delete_enum` = 'FALSE';

CREATE OR REPLACE VIEW `user` AS
SELECT * FROM `jjb-saas-zcloud-basic-info`.`user` WHERE `delete_enum` = 'FALSE';

CREATE OR REPLACE VIEW `user_scope_v` AS
SELECT
  `u`.`id` AS `id`,
  `u`.`id` AS `user_id`,
  `u`.`username` AS `username`,
  `u`.`name` AS `name`,
  `u`.`corpinfo_id` AS `corpinfo_id`,
  `u`.`main_corp_flag` AS `main_corp_flag`,
  `u`.`user_type` AS `user_type`,
  `u`.`department_id` AS `department_id`,
  `u`.`post_id` AS `post_id`,
  `u`.`post_name` AS `post_name`,
  `u`.`role_id` AS `role_id`,
  `u`.`email` AS `email`,
  `u`.`phone` AS `phone`,
  `u`.`personnel_type` AS `personnel_type`,
  `u`.`personnel_type_name` AS `personnel_type_name`,
  `u`.`nation` AS `nation`,
  `u`.`nation_name` AS `nation_name`,
  `u`.`user_id_card` AS `user_id_card`,
  `u`.`user_avatar_url` AS `user_avatar_url`,
  `u`.`current_address` AS `current_address`,
  `u`.`location_address` AS `location_address`,
  `u`.`rank_level` AS `rank_level`,
  `u`.`rank_level_name` AS `rank_level_name`,
  `u`.`sort` AS `sort`,
  `u`.`version` AS `version`,
  `u`.`user_id` AS `create_id`,
  `u`.`create_name` AS `create_name`,
  `u`.`create_time` AS `create_time`,
  `u`.`update_id` AS `update_id`,
  `u`.`update_name` AS `update_name`,
  `u`.`update_time` AS `update_time`,
  `u`.`remarks` AS `remarks`,
  `u`.`delete_enum` AS `delete_enum`,
  `u`.`tenant_id` AS `tenant_id`,
  `u`.`org_id` AS `org_id`,
  `u`.`env` AS `env`,
  `u`.`department_leader_flag` AS `department_leader_flag`,
  `u`.`deputy_leader_flag` AS `deputy_leader_flag`,
  `u`.`cultural_level` AS `cultural_level`,
  `u`.`cultural_level_name` AS `cultural_level_name`,
  `u`.`marital_status` AS `marital_status`,
  `u`.`marital_status_name` AS `marital_status_name`,
  `u`.`political_affiliation` AS `political_affiliation`,
  `u`.`political_affiliation_name` AS `political_affiliation_name`,
  `u`.`employment_flag` AS `employment_flag`,
  `u`.`flow_flag` AS `flow_flag`,
  `u`.`rz_flag` AS `rz_flag`
FROM `jjb-saas-zcloud-basic-info`.`user` `u`
WHERE `u`.`delete_enum` = 'FALSE';
