-- V16:基础导入与核算预演的隔离工作区;无正式工资写入。 CREATE TABLE tplus_source_heads ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, source_database VARCHAR(128) NOT NULL COMMENT '源账套', entity_type VARCHAR(32) NOT NULL COMMENT '实体类型', source_id VARCHAR(64) NOT NULL COMMENT '源内部ID', record_id BIGINT UNSIGNED NOT NULL COMMENT '原始快照ID', batch_no VARCHAR(32) NOT NULL COMMENT '最后观察批次', CONSTRAINT pk_tplus_source_heads PRIMARY KEY (id), CONSTRAINT uk_tplus_heads_source_entity_id UNIQUE (source_database, entity_type, source_id) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 源当前快照指针(按成功全量批次读取,删除不自动回写业务表)' COLLATE utf8mb4_general_ci; CREATE INDEX idx_tplus_heads_batch_entity ON tplus_source_heads (batch_no, entity_type); CREATE TABLE tplus_facts ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, source_database VARCHAR(128) NOT NULL COMMENT '源账套', kind VARCHAR(32) NOT NULL COMMENT '事实类别', fact_key VARCHAR(128) NOT NULL COMMENT '事实业务键', version INTEGER NOT NULL COMMENT '版本号', data_json JSON NOT NULL COMMENT '经校验的事实内容', evidence VARCHAR(500) NOT NULL COMMENT '依据和修改原因', requested_by BIGINT UNSIGNED NOT NULL COMMENT '操作者ID', create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT pk_tplus_facts PRIMARY KEY (id), CONSTRAINT uk_tplus_facts_source_kind_key_version UNIQUE (source_database, kind, fact_key, version) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 人工补充事实版本表' COLLATE utf8mb4_general_ci; CREATE TABLE tplus_source_links ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, source_database VARCHAR(128) NOT NULL COMMENT '源账套', entity_type VARCHAR(32) NOT NULL COMMENT '实体类型', source_id VARCHAR(64) NOT NULL COMMENT '源内部ID', target_id BIGINT UNSIGNED NOT NULL COMMENT '业务目标ID', create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT pk_tplus_source_links PRIMARY KEY (id), CONSTRAINT uk_tplus_links_source_entity_id UNIQUE (source_database, entity_type, source_id), CONSTRAINT uk_tplus_links_entity_target UNIQUE (entity_type, target_id) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 基础数据源目标关联' COLLATE utf8mb4_general_ci; CREATE TABLE tplus_work_runs ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, run_no VARCHAR(32) NOT NULL COMMENT '运行编号', request_key VARCHAR(36) NOT NULL COMMENT '请求幂等键', kind VARCHAR(32) NOT NULL COMMENT 'MASTER_PREVIEW/MASTER_APPLY/CALC_PREVIEW', status VARCHAR(16) NOT NULL COMMENT '运行状态', source_database VARCHAR(128) NOT NULL COMMENT '固定源账套', requested_by BIGINT UNSIGNED NOT NULL COMMENT '操作者ID', input_json JSON NOT NULL COMMENT '请求输入', snapshot_json JSON COMMENT '规则和补充资料的固定快照', snapshot_hash VARCHAR(64) COMMENT '输入指纹', summary_json JSON COMMENT '结果汇总', error_code VARCHAR(64) COMMENT '固定错误编码', started_at DATETIME COMMENT '开始时间', finished_at DATETIME COMMENT '结束时间', create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT pk_tplus_work_runs PRIMARY KEY (id), CONSTRAINT uk_tplus_work_runs_run_no UNIQUE (run_no), CONSTRAINT uk_tplus_work_runs_request_key UNIQUE (request_key) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 导入与预演运行表' COLLATE utf8mb4_general_ci; CREATE INDEX idx_tplus_work_runs_status_id ON tplus_work_runs (status, id); CREATE TABLE tplus_work_lines ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, run_no VARCHAR(32) NOT NULL COMMENT '运行编号', line_no INTEGER NOT NULL COMMENT '稳定行序号', entity_type VARCHAR(32) NOT NULL COMMENT '实体或分组类型', source_id VARCHAR(128) NOT NULL COMMENT '源ID或平账组', action VARCHAR(32) NOT NULL COMMENT '新增/更新/跳过/待补/冲突/分配', reason VARCHAR(128) COMMENT '固定原因编码', data_json JSON NOT NULL COMMENT '最小必要的业务明细', CONSTRAINT pk_tplus_work_lines PRIMARY KEY (id), CONSTRAINT uk_tplus_work_lines_run_line UNIQUE (run_no, line_no) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+ 导入预览与核算预演明细' COLLATE utf8mb4_general_ci;