All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m4s
150 lines
6.6 KiB
SQL
150 lines
6.6 KiB
SQL
-- 创建统一导出主任务表与分片任务表
|
|
|
|
CREATE TABLE IF NOT EXISTS tb_export_task (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
deleted_at TIMESTAMP,
|
|
|
|
creator BIGINT NOT NULL DEFAULT 0,
|
|
updater BIGINT NOT NULL DEFAULT 0,
|
|
|
|
task_no VARCHAR(50) NOT NULL,
|
|
scene VARCHAR(50) NOT NULL,
|
|
format VARCHAR(20) NOT NULL,
|
|
status INT NOT NULL DEFAULT 1,
|
|
progress INT NOT NULL DEFAULT 0,
|
|
|
|
total_rows INT NOT NULL DEFAULT 0,
|
|
processed_rows INT NOT NULL DEFAULT 0,
|
|
total_shards INT NOT NULL DEFAULT 0,
|
|
success_shards INT NOT NULL DEFAULT 0,
|
|
failed_shards INT NOT NULL DEFAULT 0,
|
|
|
|
cancel_requested BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
query_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
scope_shop_ids JSONB NOT NULL DEFAULT '[]'::jsonb,
|
|
|
|
creator_user_id BIGINT NOT NULL,
|
|
creator_user_type INT NOT NULL,
|
|
creator_shop_id BIGINT,
|
|
creator_enterprise_id BIGINT,
|
|
|
|
file_key VARCHAR(500) NOT NULL DEFAULT '',
|
|
file_size BIGINT NOT NULL DEFAULT 0,
|
|
error_message TEXT,
|
|
|
|
started_at TIMESTAMP,
|
|
completed_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tb_export_shard_task (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
deleted_at TIMESTAMP,
|
|
|
|
creator BIGINT NOT NULL DEFAULT 0,
|
|
updater BIGINT NOT NULL DEFAULT 0,
|
|
|
|
task_id BIGINT NOT NULL,
|
|
shard_no INT NOT NULL,
|
|
status INT NOT NULL DEFAULT 1,
|
|
|
|
cursor_start BIGINT NOT NULL DEFAULT 0,
|
|
cursor_end BIGINT NOT NULL DEFAULT 0,
|
|
|
|
row_count INT NOT NULL DEFAULT 0,
|
|
processed_rows INT NOT NULL DEFAULT 0,
|
|
|
|
file_key VARCHAR(500) NOT NULL DEFAULT '',
|
|
file_size BIGINT NOT NULL DEFAULT 0,
|
|
error_message TEXT,
|
|
|
|
started_at TIMESTAMP,
|
|
completed_at TIMESTAMP
|
|
);
|
|
|
|
-- 主任务索引
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_export_task_no
|
|
ON tb_export_task(task_no)
|
|
WHERE deleted_at IS NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_scene_status_created_at
|
|
ON tb_export_task(scene, status, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_creator_user_id
|
|
ON tb_export_task(creator_user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_creator_shop_id
|
|
ON tb_export_task(creator_shop_id);
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_creator_enterprise_id
|
|
ON tb_export_task(creator_enterprise_id);
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_cancel_requested
|
|
ON tb_export_task(cancel_requested);
|
|
CREATE INDEX IF NOT EXISTS idx_export_task_deleted_at
|
|
ON tb_export_task(deleted_at);
|
|
|
|
-- 分片任务索引
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_export_shard_task_task_shard_no
|
|
ON tb_export_shard_task(task_id, shard_no)
|
|
WHERE deleted_at IS NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_export_shard_task_task_status
|
|
ON tb_export_shard_task(task_id, status);
|
|
CREATE INDEX IF NOT EXISTS idx_export_shard_task_deleted_at
|
|
ON tb_export_shard_task(deleted_at);
|
|
CREATE INDEX IF NOT EXISTS idx_export_shard_task_created_at
|
|
ON tb_export_shard_task(created_at DESC);
|
|
|
|
-- 表注释
|
|
COMMENT ON TABLE tb_export_task IS '统一导出主任务表';
|
|
COMMENT ON TABLE tb_export_shard_task IS '统一导出分片任务表';
|
|
|
|
-- 主任务字段注释
|
|
COMMENT ON COLUMN tb_export_task.id IS '主键ID';
|
|
COMMENT ON COLUMN tb_export_task.created_at IS '创建时间';
|
|
COMMENT ON COLUMN tb_export_task.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN tb_export_task.deleted_at IS '删除时间(软删除)';
|
|
COMMENT ON COLUMN tb_export_task.creator IS '创建人ID';
|
|
COMMENT ON COLUMN tb_export_task.updater IS '更新人ID';
|
|
COMMENT ON COLUMN tb_export_task.task_no IS '任务编号(EXP-YYYYMMDD-XXXXXX)';
|
|
COMMENT ON COLUMN tb_export_task.scene IS '导出场景(device/iot_card)';
|
|
COMMENT ON COLUMN tb_export_task.format IS '导出格式(xlsx/csv)';
|
|
COMMENT ON COLUMN tb_export_task.status IS '任务状态 1-待处理 2-处理中 3-已完成 4-已失败 5-已取消';
|
|
COMMENT ON COLUMN tb_export_task.progress IS '任务进度(0-100)';
|
|
COMMENT ON COLUMN tb_export_task.total_rows IS '总行数';
|
|
COMMENT ON COLUMN tb_export_task.processed_rows IS '已处理行数';
|
|
COMMENT ON COLUMN tb_export_task.total_shards IS '总分片数';
|
|
COMMENT ON COLUMN tb_export_task.success_shards IS '成功分片数';
|
|
COMMENT ON COLUMN tb_export_task.failed_shards IS '失败分片数';
|
|
COMMENT ON COLUMN tb_export_task.cancel_requested IS '是否请求取消';
|
|
COMMENT ON COLUMN tb_export_task.query_json IS '导出查询参数(JSON)';
|
|
COMMENT ON COLUMN tb_export_task.scope_shop_ids IS '导出时的数据权限店铺范围快照';
|
|
COMMENT ON COLUMN tb_export_task.creator_user_id IS '创建人用户ID';
|
|
COMMENT ON COLUMN tb_export_task.creator_user_type IS '创建人用户类型 2-平台 3-代理 4-企业';
|
|
COMMENT ON COLUMN tb_export_task.creator_shop_id IS '创建人店铺ID快照';
|
|
COMMENT ON COLUMN tb_export_task.creator_enterprise_id IS '创建人企业ID快照';
|
|
COMMENT ON COLUMN tb_export_task.file_key IS '最终产物文件Key';
|
|
COMMENT ON COLUMN tb_export_task.file_size IS '最终产物文件大小(字节)';
|
|
COMMENT ON COLUMN tb_export_task.error_message IS '错误信息';
|
|
COMMENT ON COLUMN tb_export_task.started_at IS '开始处理时间';
|
|
COMMENT ON COLUMN tb_export_task.completed_at IS '完成时间';
|
|
|
|
-- 分片任务字段注释
|
|
COMMENT ON COLUMN tb_export_shard_task.id IS '主键ID';
|
|
COMMENT ON COLUMN tb_export_shard_task.created_at IS '创建时间';
|
|
COMMENT ON COLUMN tb_export_shard_task.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN tb_export_shard_task.deleted_at IS '删除时间(软删除)';
|
|
COMMENT ON COLUMN tb_export_shard_task.creator IS '创建人ID';
|
|
COMMENT ON COLUMN tb_export_shard_task.updater IS '更新人ID';
|
|
COMMENT ON COLUMN tb_export_shard_task.task_id IS '主任务ID';
|
|
COMMENT ON COLUMN tb_export_shard_task.shard_no IS '分片序号(从1开始)';
|
|
COMMENT ON COLUMN tb_export_shard_task.status IS '分片状态 1-待处理 2-处理中 3-已成功 4-已失败 5-已取消';
|
|
COMMENT ON COLUMN tb_export_shard_task.cursor_start IS '分片游标起点(不含)';
|
|
COMMENT ON COLUMN tb_export_shard_task.cursor_end IS '分片游标终点(含)';
|
|
COMMENT ON COLUMN tb_export_shard_task.row_count IS '分片行数';
|
|
COMMENT ON COLUMN tb_export_shard_task.processed_rows IS '分片已处理行数';
|
|
COMMENT ON COLUMN tb_export_shard_task.file_key IS '分片产物文件Key';
|
|
COMMENT ON COLUMN tb_export_shard_task.file_size IS '分片产物文件大小(字节)';
|
|
COMMENT ON COLUMN tb_export_shard_task.error_message IS '分片错误信息';
|
|
COMMENT ON COLUMN tb_export_shard_task.started_at IS '开始处理时间';
|
|
COMMENT ON COLUMN tb_export_shard_task.completed_at IS '完成时间';
|