PayrollManagementSystem/db/migration/V16__tplus_workbench.sql
liuwenxin 108bf87225 feat(核算)!: 添加 T+ 正式核算与采集托管
补齐源快照、资料预演、正式导入及工资核算的依赖链路。
新增版本化输入、逐段 FIFO、生成锁和结构化当月调整,
并提供默认关闭的周期采集、有限重试及 Windows 托管。

原始客户资料、私有配置及首页改动不纳入本次提交。

BREAKING CHANGE: 升级前需应用新增迁移,并通过
PAYROLL_MAKER_USER_ID 绑定实际工资制作人,否则业务只读。
旧单批次核算默认关闭;历史兼容需显式启用
PAYROLL_ALLOW_LEGACY_CALCULATION。生产启用和真实金额待验收。
2026-11-02 09:42:53 +08:00

79 lines
4.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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;