补齐统一数据库中文注释

This commit is contained in:
2026-09-02 17:36:37 +08:00
parent 3bdaba2c60
commit 5099a46581
6 changed files with 286 additions and 128 deletions
@@ -14636,12 +14636,9 @@ CALL queue_column_comment('baiyue_warehouse', 'wh_warehouse_address', 'version',
CALL queue_column_comment('baiyue_warehouse', 'wh_warehouse_address', 'warehouse_id', '所属仓库ID');
-- END GENERATED NINE-SCHEMA COMMENT UPGRADE CALLS
CALL apply_queued_comments();
DROP PROCEDURE IF EXISTS apply_queued_comments;
DROP PROCEDURE IF EXISTS apply_one_table_comments;
DROP PROCEDURE IF EXISTS queue_column_comment;
DROP PROCEDURE IF EXISTS queue_table_comment;
DROP TEMPORARY TABLE IF EXISTS tmp_column_comment_target;
DROP TEMPORARY TABLE IF EXISTS tmp_table_comment_target;
-- 后续还会创建整柜报关和同柜组最新基线,保留本会话内的结构保真注释升级器并清空首批队列。
TRUNCATE TABLE tmp_column_comment_target;
TRUNCATE TABLE tmp_table_comment_target;
-- 三期统一最终总断言:稳定箱号、单箱测量、墨家收件箱、客户尺寸和装柜权限。
USE baiyue_firstleg;
@@ -16514,6 +16511,167 @@ CREATE TABLE IF NOT EXISTS fl_coload_command (
CONSTRAINT chk_coload_command_status CHECK(command_status IN('PROCESSING','SUCCESS'))
)ENGINE=InnoDB COMMENT='同柜不可拆组幂等写命令';
-- 最新追加基线在首轮注释升级之后创建;统一在最终断言前使用同一结构保真升级器收敛存量库注释。
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','action_type','命令动作类型');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','idempotency_key','幂等键');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','request_hash','请求摘要');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','command_status','命令状态:PROCESSING处理中、SUCCESS成功');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','result_group_id','命令结果组ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','created_at','命令创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_command','completed_at','命令完成时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','group_status','组状态:ACTIVE有效、LOCKED锁定、CONSUMED已消费、CANCELLED已取消');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','created_at','创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','updated_at','更新时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_by','锁定操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_by_name','锁定操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_at','锁定时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_by','消费操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_by_name','消费操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_at','消费完成时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_by','取消操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_by_name','取消操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_at','取消时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','group_id','同柜不可拆组ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','action_type','操作类型:CREATE创建、CANCEL取消、LOCK锁定、UNLOCK解锁、CONSUME消费');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','from_status','变更前组状态');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','to_status','变更后组状态');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','plan_id','关联装柜计划ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','remark','操作原因或备注');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','operator_id','操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','operator_name','操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','created_at','历史记录时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_member','created_at','成员创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_coload_group_member','closed_at','成员约束关闭时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','id','报关幂等命令ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','actor_id','命令操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','action','命令动作类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','idempotency_key','客户端幂等键');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','request_hash','规范化请求SHA-256摘要');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','status','命令状态:PROCESSING处理中、SUCCESS成功');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','result_id','命令结果业务记录ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','created_at','命令创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_command','completed_at','命令完成时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','id','报关完成文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_id','File服务文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_name','完成文件名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_hash','完成文件SHA-256摘要');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','content_type','完成文件媒体类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','size_bytes','完成文件大小(字节)');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_by','上传操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_by_name','上传操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_at','上传时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','version','完成文件版本号');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','created_at','完成文件创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','updated_at','完成文件更新时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','id','完成文件版本记录ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','completion_document_id','报关完成文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','document_version','完成文件版本号');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_id','本版本File服务文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_name','本版本文件名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_hash','本版本文件SHA-256摘要');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','content_type','本版本文件媒体类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','size_bytes','本版本文件大小(字节)');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','operator_id','操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','operator_name','操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','created_at','版本创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','id','整柜报关聚合ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','status','报关状态:WAITING_CUSTOMER_DOCUMENTS待资料、READY_TO_START可开始、DECLARING申报中、COMPLETED已完成');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_by','开始报关操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_by_name','开始报关操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_at','开始报关时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_by','完成报关操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_by_name','完成报关操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_at','报关完成时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','created_at','聚合创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','updated_at','聚合更新时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container','version','乐观锁版本号');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','id','报关历史记录ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','customs_container_id','所属整柜报关聚合ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','action','报关操作类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','from_status','变更前报关状态');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','to_status','变更后报关状态');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','remark','操作备注');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','operator_id','操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','operator_name','操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','created_at','历史创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','id','客户报送资料ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','customs_container_id','所属整柜报关聚合ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_id','File服务文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_name','文件名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_hash','文件SHA-256摘要');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','content_type','文件媒体类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','size_bytes','文件大小(字节)');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','status','资料状态:ACTIVE有效、DELETED已删除');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','uploaded_by','上传操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','uploaded_at','上传时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','frozen_version','开始报关时冻结的资料版本');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','frozen_at','资料冻结时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','deleted_by','删除操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','deleted_at','删除时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','version','资料版本号');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','created_at','资料创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','updated_at','资料更新时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','document_id','客户报送资料ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','inbound_id','覆盖入仓单ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','tenant_id','覆盖入仓单客户ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','order_id','覆盖订单ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','inbound_code','覆盖入仓码快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','created_at','关联创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','id','资料版本记录ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','document_id','客户报送资料ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','document_version','资料版本号');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_id','本版本File服务文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_name','本版本文件名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_hash','本版本文件SHA-256摘要');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','content_type','本版本文件媒体类型');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','size_bytes','本版本文件大小(字节)');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','scope_snapshot_json','本版本覆盖入仓码范围快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','action','版本动作:UPLOAD上传、REPLACE替换、SCOPE_CHANGE范围变化、DELETE删除');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','operator_id','操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','created_at','版本创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','document_id','冻结的客户报送资料ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','inbound_id','冻结覆盖入仓单ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','tenant_id','冻结覆盖客户ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','order_id','冻结覆盖订单ID');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','inbound_code','冻结覆盖入仓码快照');
CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','created_at','冻结关联创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','id','柜次证据记录ID');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','file_id','File服务文件ID');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','file_name','文件名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','seal_no','带锁码照对应锁码');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','remark','证据备注');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','status','证据状态:ACTIVE有效、VOID作废');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','void_reason','作废原因');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_by','作废操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_by_name','作废操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_at','作废时间');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','version','乐观锁版本号');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_by','创建操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_by_name','创建操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_by','最后修改操作人ID');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_by_name','最后修改操作人名称快照');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_at','创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_at','最后更新时间');
CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_event','consumed_at','事件消费完成时间');
CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_snapshot','created_at','快照创建时间');
CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_snapshot','updated_at','快照更新时间');
CALL queue_column_comment('baiyue_order','ord_customer_address','created_by','创建人ID');
CALL queue_column_comment('baiyue_order','ord_customer_address','created_at','创建时间');
CALL queue_column_comment('baiyue_order','ord_customer_address','updated_by','最后修改人ID');
CALL queue_column_comment('baiyue_order','ord_customer_address','updated_at','更新时间');
CALL queue_column_comment('baiyue_order','ord_customer_address','deleted','逻辑删除标记:0未删除、1已删除');
CALL queue_column_comment('baiyue_order','ord_customer_address','version','乐观锁版本号');
CALL apply_queued_comments();
DROP PROCEDURE IF EXISTS apply_queued_comments;
DROP PROCEDURE IF EXISTS apply_one_table_comments;
DROP PROCEDURE IF EXISTS queue_column_comment;
DROP PROCEDURE IF EXISTS queue_table_comment;
DROP TEMPORARY TABLE IF EXISTS tmp_column_comment_target;
DROP TEMPORARY TABLE IF EXISTS tmp_table_comment_target;
CALL baiyue_firstleg.assert_unified_final_schema();
DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema;
SELECT 'PASS' AS migration_status,
@@ -832,8 +832,8 @@ CREATE TABLE IF NOT EXISTS fl_order_declaration_snapshot (
cargoes_json JSON NOT NULL COMMENT '客户申报货物行完整快照,不覆盖实测事实',
changes_json JSON NULL COMMENT '本版本申报字段变化摘要',
occurred_at DATETIME(3) NOT NULL COMMENT 'Order事件发生时间',
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),
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '快照创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '快照更新时间',
PRIMARY KEY (tenant_id, order_id),
UNIQUE KEY uk_order_declaration_event (tenant_id, event_id),
KEY idx_order_declaration_version (tenant_id, order_id, order_version)
@@ -845,7 +845,7 @@ CREATE TABLE IF NOT EXISTS fl_order_declaration_event (
order_id BIGINT UNSIGNED NOT NULL COMMENT 'Order订单ID',
order_version INT NOT NULL COMMENT '事件携带的Order聚合版本',
request_hash CHAR(64) NOT NULL COMMENT '完整事件SHA-256,用于异参重放拒绝',
consumed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
consumed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '事件消费完成时间',
PRIMARY KEY (tenant_id, event_id),
KEY idx_order_declaration_event_order (tenant_id, order_id, order_version)
) ENGINE=InnoDB COMMENT='Order客户申报事件永久幂等账本';
@@ -2,19 +2,19 @@ SET NAMES utf8mb4;
USE baiyue_firstleg;
CREATE TABLE IF NOT EXISTS fl_customs_container (
id BIGINT UNSIGNED NOT NULL,
id BIGINT UNSIGNED NOT NULL COMMENT '整柜报关聚合ID',
loading_plan_id BIGINT UNSIGNED NOT NULL COMMENT '已完成装柜计划ID;报关柜级聚合唯一键',
container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID',
status VARCHAR(40) NOT NULL COMMENT 'WAITING_CUSTOMER_DOCUMENTS、READY_TO_START、DECLARING、COMPLETED',
started_by BIGINT UNSIGNED NULL,
started_by_name VARCHAR(64) NULL,
started_at DATETIME(3) NULL,
completed_by BIGINT UNSIGNED NULL,
completed_by_name VARCHAR(64) NULL,
completed_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),
version INT UNSIGNED NOT NULL DEFAULT 0,
status VARCHAR(40) NOT NULL COMMENT '报关状态:WAITING_CUSTOMER_DOCUMENTS待资料、READY_TO_START可开始、DECLARING申报中、COMPLETED已完成',
started_by BIGINT UNSIGNED NULL COMMENT '开始报关操作人ID',
started_by_name VARCHAR(64) NULL COMMENT '开始报关操作人名称快照',
started_at DATETIME(3) NULL COMMENT '开始报关时间',
completed_by BIGINT UNSIGNED NULL COMMENT '完成报关操作人ID',
completed_by_name VARCHAR(64) NULL COMMENT '完成报关操作人名称快照',
completed_at DATETIME(3) NULL COMMENT '报关完成时间',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '聚合创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '聚合更新时间',
version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
PRIMARY KEY(id),
UNIQUE KEY uk_customs_container_plan(loading_plan_id),
UNIQUE KEY uk_customs_container_booking(container_booking_id),
@@ -24,24 +24,24 @@ CREATE TABLE IF NOT EXISTS fl_customs_container (
) ENGINE=InnoDB COMMENT='装柜完成后的整柜出口报关聚合';
CREATE TABLE IF NOT EXISTS fl_customs_customer_document (
id BIGINT UNSIGNED NOT NULL,
customs_container_id BIGINT UNSIGNED NOT NULL,
id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID',
customs_container_id BIGINT UNSIGNED NOT NULL COMMENT '所属整柜报关聚合ID',
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户隔离键;只允许关联同客户退税票',
file_id BIGINT UNSIGNED NOT NULL,
file_name VARCHAR(255) NOT NULL,
file_hash CHAR(64) NOT NULL,
content_type VARCHAR(128) NULL,
size_bytes BIGINT UNSIGNED NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE',
uploaded_by BIGINT UNSIGNED NOT NULL,
uploaded_at DATETIME(3) NOT NULL,
frozen_version INT UNSIGNED NULL,
frozen_at DATETIME(3) NULL,
deleted_by BIGINT UNSIGNED NULL,
deleted_at DATETIME(3) NULL,
version INT UNSIGNED NOT NULL DEFAULT 1,
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),
file_id BIGINT UNSIGNED NOT NULL COMMENT 'File服务文件ID',
file_name VARCHAR(255) NOT NULL COMMENT '文件名称快照',
file_hash CHAR(64) NOT NULL COMMENT '文件SHA-256摘要',
content_type VARCHAR(128) NULL COMMENT '文件媒体类型',
size_bytes BIGINT UNSIGNED NOT NULL COMMENT '文件大小(字节)',
status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '资料状态:ACTIVE有效、DELETED已删除',
uploaded_by BIGINT UNSIGNED NOT NULL COMMENT '上传操作人ID',
uploaded_at DATETIME(3) NOT NULL COMMENT '上传时间',
frozen_version INT UNSIGNED NULL COMMENT '开始报关时冻结的资料版本',
frozen_at DATETIME(3) NULL COMMENT '资料冻结时间',
deleted_by BIGINT UNSIGNED NULL COMMENT '删除操作人ID',
deleted_at DATETIME(3) NULL COMMENT '删除时间',
version INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '资料版本号',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '资料创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '资料更新时间',
PRIMARY KEY(id),
KEY idx_customs_customer_document_container(customs_container_id,status,tenant_id),
CONSTRAINT fk_customs_customer_document_container FOREIGN KEY(customs_container_id) REFERENCES fl_customs_container(id),
@@ -51,30 +51,30 @@ CREATE TABLE IF NOT EXISTS fl_customs_customer_document (
) ENGINE=InnoDB COMMENT='客户整份退税报送资料逻辑根';
CREATE TABLE IF NOT EXISTS fl_customs_customer_document_inbound (
document_id BIGINT UNSIGNED NOT NULL,
inbound_id BIGINT UNSIGNED NOT NULL,
tenant_id BIGINT UNSIGNED NOT NULL,
order_id BIGINT UNSIGNED NOT NULL,
inbound_code VARCHAR(40) NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
document_id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID',
inbound_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖入仓单ID',
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖入仓单客户ID',
order_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖订单ID',
inbound_code VARCHAR(40) NOT NULL COMMENT '覆盖入仓码快照',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关联创建时间',
PRIMARY KEY(document_id,inbound_id),
KEY idx_customs_document_inbound(inbound_id,tenant_id),
CONSTRAINT fk_customs_document_inbound_document FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id)
) ENGINE=InnoDB COMMENT='客户报送资料与当前柜退税入仓码多对多关系';
CREATE TABLE IF NOT EXISTS fl_customs_customer_document_version (
id BIGINT UNSIGNED NOT NULL,
document_id BIGINT UNSIGNED NOT NULL,
document_version INT UNSIGNED NOT NULL,
file_id BIGINT UNSIGNED NOT NULL,
file_name VARCHAR(255) NOT NULL,
file_hash CHAR(64) NOT NULL,
content_type VARCHAR(128) NULL,
size_bytes BIGINT UNSIGNED NOT NULL,
scope_snapshot_json JSON NOT NULL,
action VARCHAR(24) NOT NULL COMMENT 'UPLOAD、REPLACE、SCOPE_CHANGE、DELETE',
operator_id BIGINT UNSIGNED NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
id BIGINT UNSIGNED NOT NULL COMMENT '资料版本记录ID',
document_id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID',
document_version INT UNSIGNED NOT NULL COMMENT '资料版本号',
file_id BIGINT UNSIGNED NOT NULL COMMENT '本版本File服务文件ID',
file_name VARCHAR(255) NOT NULL COMMENT '本版本文件名称快照',
file_hash CHAR(64) NOT NULL COMMENT '本版本文件SHA-256摘要',
content_type VARCHAR(128) NULL COMMENT '本版本文件媒体类型',
size_bytes BIGINT UNSIGNED NOT NULL COMMENT '本版本文件大小(字节)',
scope_snapshot_json JSON NOT NULL COMMENT '本版本覆盖入仓码范围快照',
action VARCHAR(24) NOT NULL COMMENT '版本动作:UPLOAD上传、REPLACE替换、SCOPE_CHANGE范围变化、DELETE删除',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本创建时间',
PRIMARY KEY(id),
UNIQUE KEY uk_customs_customer_document_version(document_id,document_version),
CONSTRAINT fk_customs_customer_document_version FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id),
@@ -82,77 +82,77 @@ CREATE TABLE IF NOT EXISTS fl_customs_customer_document_version (
) ENGINE=InnoDB COMMENT='客户报送资料文件与覆盖范围不可变版本';
CREATE TABLE IF NOT EXISTS fl_customs_frozen_document_inbound (
document_id BIGINT UNSIGNED NOT NULL,
inbound_id BIGINT UNSIGNED NOT NULL,
tenant_id BIGINT UNSIGNED NOT NULL,
order_id BIGINT UNSIGNED NOT NULL,
inbound_code VARCHAR(40) NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
document_id BIGINT UNSIGNED NOT NULL COMMENT '冻结的客户报送资料ID',
inbound_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖入仓单ID',
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖客户ID',
order_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖订单ID',
inbound_code VARCHAR(40) NOT NULL COMMENT '冻结覆盖入仓码快照',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '冻结关联创建时间',
PRIMARY KEY(document_id,inbound_id),
CONSTRAINT fk_customs_frozen_document FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id)
) ENGINE=InnoDB COMMENT='开始报关时冻结的客户资料覆盖范围';
CREATE TABLE IF NOT EXISTS fl_customs_completion_document (
id BIGINT UNSIGNED NOT NULL,
id BIGINT UNSIGNED NOT NULL COMMENT '报关完成文件ID',
source_document_id BIGINT UNSIGNED NOT NULL COMMENT '一份冻结客户资料严格对应一份完成文件逻辑根',
file_id BIGINT UNSIGNED NOT NULL,
file_name VARCHAR(255) NOT NULL,
file_hash CHAR(64) NOT NULL,
content_type VARCHAR(128) NULL,
size_bytes BIGINT UNSIGNED NOT NULL,
uploaded_by BIGINT UNSIGNED NOT NULL,
uploaded_by_name VARCHAR(64) NULL,
uploaded_at DATETIME(3) NOT NULL,
version INT UNSIGNED NOT NULL DEFAULT 1,
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),
file_id BIGINT UNSIGNED NOT NULL COMMENT 'File服务文件ID',
file_name VARCHAR(255) NOT NULL COMMENT '完成文件名称快照',
file_hash CHAR(64) NOT NULL COMMENT '完成文件SHA-256摘要',
content_type VARCHAR(128) NULL COMMENT '完成文件媒体类型',
size_bytes BIGINT UNSIGNED NOT NULL COMMENT '完成文件大小(字节)',
uploaded_by BIGINT UNSIGNED NOT NULL COMMENT '上传操作人ID',
uploaded_by_name VARCHAR(64) NULL COMMENT '上传操作人名称快照',
uploaded_at DATETIME(3) NOT NULL COMMENT '上传时间',
version INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '完成文件版本号',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '完成文件创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '完成文件更新时间',
PRIMARY KEY(id),
UNIQUE KEY uk_customs_completion_source(source_document_id),
CONSTRAINT fk_customs_completion_source FOREIGN KEY(source_document_id) REFERENCES fl_customs_customer_document(id)
) ENGINE=InnoDB COMMENT='报关完成文件当前版本';
CREATE TABLE IF NOT EXISTS fl_customs_completion_document_version (
id BIGINT UNSIGNED NOT NULL,
completion_document_id BIGINT UNSIGNED NOT NULL,
document_version INT UNSIGNED NOT NULL,
file_id BIGINT UNSIGNED NOT NULL,
file_name VARCHAR(255) NOT NULL,
file_hash CHAR(64) NOT NULL,
content_type VARCHAR(128) NULL,
size_bytes BIGINT UNSIGNED NOT NULL,
operator_id BIGINT UNSIGNED NOT NULL,
operator_name VARCHAR(64) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
id BIGINT UNSIGNED NOT NULL COMMENT '完成文件版本记录ID',
completion_document_id BIGINT UNSIGNED NOT NULL COMMENT '报关完成文件ID',
document_version INT UNSIGNED NOT NULL COMMENT '完成文件版本号',
file_id BIGINT UNSIGNED NOT NULL COMMENT '本版本File服务文件ID',
file_name VARCHAR(255) NOT NULL COMMENT '本版本文件名称快照',
file_hash CHAR(64) NOT NULL COMMENT '本版本文件SHA-256摘要',
content_type VARCHAR(128) NULL COMMENT '本版本文件媒体类型',
size_bytes BIGINT UNSIGNED NOT NULL COMMENT '本版本文件大小(字节)',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
operator_name VARCHAR(64) NULL COMMENT '操作人名称快照',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本创建时间',
PRIMARY KEY(id),
UNIQUE KEY uk_customs_completion_version(completion_document_id,document_version),
CONSTRAINT fk_customs_completion_version FOREIGN KEY(completion_document_id) REFERENCES fl_customs_completion_document(id)
) ENGINE=InnoDB COMMENT='报关完成文件不可变覆盖版本';
CREATE TABLE IF NOT EXISTS fl_customs_container_history (
id BIGINT UNSIGNED NOT NULL,
customs_container_id BIGINT UNSIGNED NOT NULL,
action VARCHAR(40) NOT NULL,
from_status VARCHAR(40) NULL,
to_status VARCHAR(40) NULL,
remark VARCHAR(500) NULL,
operator_id BIGINT UNSIGNED NOT NULL,
operator_name VARCHAR(64) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
id BIGINT UNSIGNED NOT NULL COMMENT '报关历史记录ID',
customs_container_id BIGINT UNSIGNED NOT NULL COMMENT '所属整柜报关聚合ID',
action VARCHAR(40) NOT NULL COMMENT '报关操作类型',
from_status VARCHAR(40) NULL COMMENT '变更前报关状态',
to_status VARCHAR(40) NULL COMMENT '变更后报关状态',
remark VARCHAR(500) NULL COMMENT '操作备注',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
operator_name VARCHAR(64) NULL COMMENT '操作人名称快照',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史创建时间',
PRIMARY KEY(id),
KEY idx_customs_container_history(customs_container_id,created_at,id),
CONSTRAINT fk_customs_container_history FOREIGN KEY(customs_container_id) REFERENCES fl_customs_container(id)
) ENGINE=InnoDB COMMENT='整柜报关状态与系统触发历史';
CREATE TABLE IF NOT EXISTS fl_customs_command (
id BIGINT UNSIGNED NOT NULL,
actor_id BIGINT UNSIGNED NOT NULL,
action VARCHAR(80) NOT NULL,
idempotency_key VARCHAR(128) NOT NULL,
request_hash CHAR(64) NOT NULL,
status VARCHAR(16) NOT NULL,
result_id BIGINT UNSIGNED NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
completed_at DATETIME(3) NULL,
id BIGINT UNSIGNED NOT NULL COMMENT '报关幂等命令ID',
actor_id BIGINT UNSIGNED NOT NULL COMMENT '命令操作人ID',
action VARCHAR(80) NOT NULL COMMENT '命令动作类型',
idempotency_key VARCHAR(128) NOT NULL COMMENT '客户端幂等键',
request_hash CHAR(64) NOT NULL COMMENT '规范化请求SHA-256摘要',
status VARCHAR(16) NOT NULL COMMENT '命令状态:PROCESSING处理中、SUCCESS成功',
result_id BIGINT UNSIGNED NULL COMMENT '命令结果业务记录ID',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '命令创建时间',
completed_at DATETIME(3) NULL COMMENT '命令完成时间',
PRIMARY KEY(id),
UNIQUE KEY uk_customs_command(actor_id,action,idempotency_key),
CONSTRAINT chk_customs_command_status CHECK(status IN('PROCESSING','SUCCESS'))
@@ -1,10 +1,10 @@
USE baiyue_firstleg;
CREATE TABLE IF NOT EXISTS fl_container_exception_history (
id BIGINT UNSIGNED NOT NULL, container_booking_id BIGINT UNSIGNED NOT NULL,
action VARCHAR(16) NOT NULL COMMENT 'MARK/CANCEL', reason VARCHAR(500) NOT NULL,
operator_id BIGINT UNSIGNED NOT NULL, operator_name VARCHAR(64),
id BIGINT UNSIGNED NOT NULL COMMENT '货柜异常历史ID', container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID',
action VARCHAR(16) NOT NULL COMMENT '操作类型:MARK标记异常、CANCEL取消异常', reason VARCHAR(500) NOT NULL COMMENT '异常原因',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', operator_name VARCHAR(64) COMMENT '操作人名称快照',
operation_id VARCHAR(128) NOT NULL COMMENT '同一操作人幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要',
occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作发生时间',
PRIMARY KEY(id), UNIQUE KEY uk_container_exception_operation(container_booking_id,operator_id,operation_id),
KEY idx_container_exception_history(container_booking_id,occurred_at,id),
CONSTRAINT fk_container_exception_booking FOREIGN KEY(container_booking_id) REFERENCES fl_container_booking(id),
@@ -344,11 +344,11 @@ CREATE TABLE IF NOT EXISTS fl_container_document (
) ENGINE=InnoDB COMMENT='平台货柜清关、DO与PU文件关联';
CREATE TABLE IF NOT EXISTS fl_container_exception_history (
id BIGINT UNSIGNED NOT NULL, container_booking_id BIGINT UNSIGNED NOT NULL,
action VARCHAR(16) NOT NULL, reason VARCHAR(500) NOT NULL,
operator_id BIGINT UNSIGNED NOT NULL, operator_name VARCHAR(64) NULL,
operation_id VARCHAR(128) NOT NULL, request_hash CHAR(64) NOT NULL,
occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id),
id BIGINT UNSIGNED NOT NULL COMMENT '货柜异常历史ID', container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID',
action VARCHAR(16) NOT NULL COMMENT '操作类型:MARK标记异常、CANCEL取消异常', reason VARCHAR(500) NOT NULL COMMENT '异常原因',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', operator_name VARCHAR(64) NULL COMMENT '操作人名称快照',
operation_id VARCHAR(128) NOT NULL COMMENT '同一操作人幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要',
occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作发生时间', PRIMARY KEY(id),
UNIQUE KEY uk_container_exception_operation(container_booking_id,operator_id,operation_id),
KEY idx_container_exception_history(container_booking_id,occurred_at,id),
CONSTRAINT fk_container_exception_booking FOREIGN KEY(container_booking_id) REFERENCES fl_container_booking(id),
@@ -587,7 +587,7 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command (
pick_task_id BIGINT UNSIGNED NOT NULL COMMENT 'PDA任务ID',
operation_id VARCHAR(128) NOT NULL COMMENT '客户端全局幂等操作ID',
request_hash CHAR(64) NOT NULL COMMENT '规范化请求摘要',
command_status VARCHAR(16) NOT NULL COMMENT 'PROCESSING、RETRYABLE、FAILED、COMPLETED',
command_status VARCHAR(16) NOT NULL COMMENT '命令状态:PROCESSING处理中、RETRYABLE可重试、FAILED失败、COMPLETED已完成',
expected_task_version INT UNSIGNED NOT NULL COMMENT '受理时客户端任务版本',
remark VARCHAR(500) NULL COMMENT '完成备注',
operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
@@ -600,9 +600,9 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command (
failure_code VARCHAR(32) NULL COMMENT '下游或业务错误码',
failure_request_id VARCHAR(64) NULL COMMENT '下游请求ID',
failure_trace_id VARCHAR(64) NULL COMMENT '下游链路ID',
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),
completed_at DATETIME(3) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '命令创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '命令更新时间',
completed_at DATETIME(3) NULL COMMENT '命令完成时间',
PRIMARY KEY (id),
UNIQUE KEY uk_loading_completion_operation (operation_id),
KEY idx_loading_completion_dispatch (command_status,next_retry_at,lease_until),
@@ -611,13 +611,13 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command (
) ENGINE=InnoDB COMMENT='PDA装柜完成可靠异步命令';
CREATE TABLE IF NOT EXISTS fl_loading_completion_checkpoint (
command_id BIGINT UNSIGNED NOT NULL,
tenant_id BIGINT UNSIGNED NOT NULL,
inbound_id BIGINT UNSIGNED NOT NULL,
owner_sequence INT UNSIGNED NOT NULL,
checkpoint_stage VARCHAR(24) NOT NULL COMMENT 'READY、SETTLED、INBOUND_COMPLETED',
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),
command_id BIGINT UNSIGNED NOT NULL COMMENT '可靠装柜完成命令ID',
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '入仓单客户ID',
inbound_id BIGINT UNSIGNED NOT NULL COMMENT '入仓单ID',
owner_sequence INT UNSIGNED NOT NULL COMMENT '稳定处理顺序',
checkpoint_stage VARCHAR(24) NOT NULL COMMENT '处理阶段:READY待处理、SETTLED资源已结算、INBOUND_COMPLETED入仓已完成',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '检查点创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '检查点更新时间',
PRIMARY KEY (command_id,tenant_id,inbound_id),
KEY idx_loading_completion_owner (command_id,owner_sequence),
CONSTRAINT fk_loading_completion_checkpoint_command FOREIGN KEY (command_id)
+6 -6
View File
@@ -255,12 +255,12 @@ CREATE TABLE IF NOT EXISTS ord_customer_address (
postal_code VARCHAR(20) NULL COMMENT '邮政编码',
default_address TINYINT(1) NOT NULL DEFAULT 0 COMMENT '同类型默认地址',
active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否可选',
created_by BIGINT UNSIGNED NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_by BIGINT UNSIGNED NOT NULL,
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
deleted TINYINT(1) NOT NULL DEFAULT 0,
version INT NOT NULL DEFAULT 0,
created_by BIGINT UNSIGNED NOT NULL COMMENT '创建人ID',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
updated_by BIGINT UNSIGNED NOT NULL COMMENT '最后修改人ID',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除',
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
PRIMARY KEY (id),
KEY idx_customer_address_scope (tenant_id, address_type, active, updated_at)
) ENGINE=InnoDB COMMENT='客户自有下单地址簿;不承载平台仓库主档';