196 lines
11 KiB
SQL
196 lines
11 KiB
SQL
-- =============================================================================
|
||||
|
|
-- 域 6:CR-02 新增业务表 T-01~T-08(8 张)
|
|||
|
|
-- 列级定义来源:CR-02 表 3-27(T-01~T-03)、表 3-28(T-04/T-05/T-08)、
|
|||
|
|
-- 表 3-29(T-06/T-07);§12 表 10-6 的补列已合并进 T-04
|
|||
|
|
-- 迁移顺序:按 CR-02 表 3-33,本域在存量 44 张之后执行;DDL 与回填分离。
|
|||
|
|
-- =============================================================================
|
|||
|
|
|
|||
|
|
-- 52 T-01 平板设备
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_tablet_device (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
device_code VARCHAR(64) NOT NULL COMMENT '设备编码,入库大写',
|
|||
|
|
room_id VARCHAR(64) NULL,
|
|||
|
|
activation_code_ref VARCHAR(128) NULL COMMENT '激活码只存引用,不存明文',
|
|||
|
|
register_status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT 'ACTIVE/DISABLED/PENDING',
|
|||
|
|
app_version VARCHAR(32) NULL,
|
|||
|
|
last_seen_at DATETIME(3) NULL,
|
|||
|
|
last_cursor VARCHAR(128) NULL,
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_tabletdev_gyid_code (gyid, device_code),
|
|||
|
|
CONSTRAINT ck_tabletdev_status CHECK (register_status IN ('ACTIVE','DISABLED','PENDING'))
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-01 平板设备';
|
|||
|
|
|
|||
|
|
-- 53 T-02 平板任务(按 jcsj 顺序派发,dispatch_seq 单调递增)
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_tablet_task (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
task_id VARCHAR(64) NOT NULL,
|
|||
|
|
jcid VARCHAR(64) NOT NULL,
|
|||
|
|
dispatch_seq BIGINT NOT NULL,
|
|||
|
|
call_mode VARCHAR(20) NOT NULL DEFAULT 'TABLET',
|
|||
|
|
jcsj DATETIME(3) NULL COMMENT '叫乘基准时刻(本地复算值)',
|
|||
|
|
device_code VARCHAR(64) NULL,
|
|||
|
|
pull_state VARCHAR(20) NOT NULL DEFAULT 'WAITING' COMMENT 'WAITING/PULLED/EXPIRED/DONE',
|
|||
|
|
pulled_at DATETIME(3) NULL,
|
|||
|
|
pulled_by VARCHAR(64) NULL,
|
|||
|
|
expire_at DATETIME(3) NULL,
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_tablettask_gyid_task (gyid, task_id),
|
|||
|
|
KEY idx_tablettask_gyid_seq (gyid, dispatch_seq),
|
|||
|
|
KEY idx_tablettask_gyid_time (gyid, jcsj),
|
|||
|
|
CONSTRAINT ck_tablettask_pull CHECK (pull_state IN ('WAITING','PULLED','EXPIRED','DONE'))
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-02 平板派发任务';
|
|||
|
|
|
|||
|
|
-- 54 T-03 平板叫乘结果(result_id 幂等;平板链路不发 #24)
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_tablet_call_result (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
result_id VARCHAR(64) NOT NULL COMMENT '幂等键',
|
|||
|
|
task_id VARCHAR(64) NOT NULL,
|
|||
|
|
jcid VARCHAR(64) NOT NULL,
|
|||
|
|
face_verify_state VARCHAR(20) NOT NULL COMMENT 'VERIFIED/UNVERIFIED/SKIPPED',
|
|||
|
|
verified_ryid VARCHAR(64) NULL,
|
|||
|
|
result_type VARCHAR(20) NOT NULL COMMENT 'ANSWERED/NO_ANSWER/FAILED/CANCELLED',
|
|||
|
|
person_count INT NOT NULL DEFAULT 0,
|
|||
|
|
device_code VARCHAR(64) NOT NULL,
|
|||
|
|
occurred_at DATETIME(3) NOT NULL,
|
|||
|
|
received_at DATETIME(3) NOT NULL,
|
|||
|
|
applied_state VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/APPLIED/IGNORED',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_tabletresult_gyid_id (gyid, result_id),
|
|||
|
|
KEY idx_tabletresult_gyid_task (gyid, task_id),
|
|||
|
|
KEY idx_tabletresult_gyid_state (gyid, applied_state, occurred_at),
|
|||
|
|
CONSTRAINT ck_tabletresult_face CHECK (face_verify_state IN ('VERIFIED','UNVERIFIED','SKIPPED')),
|
|||
|
|
CONSTRAINT ck_tabletresult_type CHECK (result_type IN ('ANSWERED','NO_ANSWER','FAILED','CANCELLED')),
|
|||
|
|
CONSTRAINT ck_tabletresult_applied CHECK (applied_state IN ('PENDING','APPLIED','IGNORED'))
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-03 平板叫乘结果';
|
|||
|
|
|
|||
|
|
-- 55 T-04 人脸注册申请(生效点在公寓;平台回执不决定本地生效)
|
|||
|
|
-- 合并 公寓端/10 表 10-6 补列:双路状态链、媒体引用、person_category
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_person_face_reg (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
reg_id VARCHAR(64) NOT NULL,
|
|||
|
|
work_no VARCHAR(64) NULL,
|
|||
|
|
name VARCHAR(64) NOT NULL,
|
|||
|
|
face_feature_ref VARCHAR(256) NOT NULL COMMENT '不存特征大对象',
|
|||
|
|
photo_ref VARCHAR(512) NULL COMMENT '不存原图二进制',
|
|||
|
|
photo_checksum VARCHAR(128) NULL,
|
|||
|
|
feature_checksum VARCHAR(128) NULL,
|
|||
|
|
feature_algo VARCHAR(32) NULL,
|
|||
|
|
feature_version BIGINT NOT NULL DEFAULT 1,
|
|||
|
|
person_category VARCHAR(20) NOT NULL DEFAULT 'TRANSIENT' COMMENT 'TRANSIENT / LONG_TERM',
|
|||
|
|
reg_state VARCHAR(20) NOT NULL DEFAULT 'APPLIED' COMMENT 'APPLIED/CONFIRMED/REJECTED/ARCHIVED',
|
|||
|
|
local_only TINYINT(1) NOT NULL DEFAULT 1,
|
|||
|
|
verdict VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '平台同步回执 ACCEPTED/REJECTED',
|
|||
|
|
confirmed_ryid VARCHAR(64) NULL,
|
|||
|
|
reject_reason VARCHAR(256) NULL,
|
|||
|
|
verdict_version BIGINT NULL,
|
|||
|
|
apply_device_code VARCHAR(64) NULL,
|
|||
|
|
applied_at DATETIME(3) NULL,
|
|||
|
|
confirmed_by VARCHAR(64) NULL,
|
|||
|
|
confirmed_at DATETIME(3) NULL,
|
|||
|
|
upload_state VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '上传平台状态链(独立)',
|
|||
|
|
dispatch_state VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '下发设备状态链(独立)',
|
|||
|
|
face_sync_state VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|||
|
|
registered_by VARCHAR(64) NULL,
|
|||
|
|
device_code VARCHAR(64) NULL,
|
|||
|
|
occurred_at DATETIME(3) NOT NULL,
|
|||
|
|
report_state VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/SENT/FAILED/DEAD/RETRIED',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_facereg_gyid_reg (gyid, reg_id),
|
|||
|
|
KEY idx_facereg_gyid_state (gyid, reg_state, occurred_at),
|
|||
|
|
KEY idx_facereg_gyid_workno (gyid, work_no),
|
|||
|
|
CONSTRAINT ck_facereg_state CHECK (reg_state IN ('APPLIED','CONFIRMED','REJECTED','ARCHIVED')),
|
|||
|
|
CONSTRAINT ck_facereg_verdict CHECK (verdict IN ('PENDING','ACCEPTED','REJECTED')),
|
|||
|
|
CONSTRAINT ck_facereg_category CHECK (person_category IN ('TRANSIENT','LONG_TERM')),
|
|||
|
|
CONSTRAINT ck_facereg_upload CHECK (upload_state IN ('PENDING','SENT','FAILED','DEAD','ACKED')),
|
|||
|
|
CONSTRAINT ck_facereg_dispatch CHECK (dispatch_state IN ('PENDING','ISSUED','FAILED','DEAD','ACKED')),
|
|||
|
|
CONSTRAINT ck_facereg_report CHECK (report_state IN ('PENDING','SENT','FAILED','DEAD','RETRIED'))
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-04 人脸注册申请(§12 补列已合并)';
|
|||
|
|
|
|||
|
|
-- 56 T-05 换乘单(CR-02 表 3-28)
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_transfer_order (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
transfer_id VARCHAR(64) NOT NULL,
|
|||
|
|
jcid VARCHAR(64) NOT NULL,
|
|||
|
|
jlid VARCHAR(64) NOT NULL,
|
|||
|
|
old_room_id VARCHAR(64) NULL,
|
|||
|
|
new_room_id VARCHAR(64) NULL,
|
|||
|
|
new_dep_time DATETIME(3) NOT NULL,
|
|||
|
|
new_call_time DATETIME(3) NOT NULL,
|
|||
|
|
recomputed_call_time DATETIME(3) NOT NULL COMMENT '与 new_call_time 不等时告警,不静默覆盖',
|
|||
|
|
state VARCHAR(20) NOT NULL DEFAULT 'DRAFT',
|
|||
|
|
command_id VARCHAR(64) NULL,
|
|||
|
|
reason VARCHAR(256) NULL,
|
|||
|
|
biz_version BIGINT NOT NULL DEFAULT 1,
|
|||
|
|
applied_at DATETIME(3) NULL,
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_transfer_gyid_id (gyid, transfer_id),
|
|||
|
|
KEY idx_transfer_gyid_jcid (gyid, jcid)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-05 换乘单';
|
|||
|
|
|
|||
|
|
-- 57 T-06 保洁人员
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_clean_staff (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
staff_id VARCHAR(64) NOT NULL,
|
|||
|
|
name VARCHAR(64) NOT NULL,
|
|||
|
|
state VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
|||
|
|
phone_ref VARCHAR(128) NULL COMMENT '联系方式只存引用',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_cleanstaff_gyid_id (gyid, staff_id)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-06 保洁人员';
|
|||
|
|
|
|||
|
|
-- 58 T-07 保洁记录
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_clean_record (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
record_id VARCHAR(64) NOT NULL,
|
|||
|
|
staff_id VARCHAR(64) NOT NULL,
|
|||
|
|
room_id VARCHAR(64) NOT NULL,
|
|||
|
|
clean_type VARCHAR(20) NOT NULL,
|
|||
|
|
state VARCHAR(20) NOT NULL,
|
|||
|
|
task_id VARCHAR(64) NULL,
|
|||
|
|
started_at DATETIME(3) NULL,
|
|||
|
|
finished_at DATETIME(3) NULL,
|
|||
|
|
remark VARCHAR(256) NULL,
|
|||
|
|
report_state VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_cleanrecord_gyid_id (gyid, record_id),
|
|||
|
|
KEY idx_cleanrecord_gyid_room (gyid, room_id, started_at)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-07 保洁记录';
|
|||
|
|
|
|||
|
|
-- 59 T-08 设备报警(CR-02 表 3-28;alarm_event_key 与 /ws/duty 去重一致)
|
|||
|
|
CREATE TABLE IF NOT EXISTS apt_device_alarm (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|||
|
|
gyid VARCHAR(32) NOT NULL,
|
|||
|
|
alarm_id VARCHAR(64) NOT NULL,
|
|||
|
|
device_code VARCHAR(64) NOT NULL,
|
|||
|
|
alarm_source VARCHAR(20) NOT NULL DEFAULT 'DEVICE',
|
|||
|
|
alarm_type VARCHAR(20) NOT NULL,
|
|||
|
|
severity VARCHAR(20) NOT NULL DEFAULT 'WARN',
|
|||
|
|
alarm_event_key VARCHAR(128) NOT NULL,
|
|||
|
|
occurred_at DATETIME(3) NOT NULL,
|
|||
|
|
handled_at DATETIME(3) NULL,
|
|||
|
|
handled_by VARCHAR(64) NULL,
|
|||
|
|
handled_result VARCHAR(256) NULL,
|
|||
|
|
biz_version BIGINT NOT NULL DEFAULT 1,
|
|||
|
|
report_state VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|||
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_devalarm_gyid_id (gyid, alarm_id),
|
|||
|
|
UNIQUE KEY uk_devalarm_gyid_key (gyid, alarm_event_key),
|
|||
|
|
KEY idx_devalarm_gyid_state (gyid, alarm_type, occurred_at)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='T-08 设备报警';
|