/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `baiyue_lastleg` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; USE `baiyue_lastleg`; DROP TABLE IF EXISTS `backup_fba_appointment_item_20261013`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `backup_fba_appointment_item_20261013` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绉熸埛/瀹㈡埛璐﹀彿鏍囪瘑', `appointment_id` bigint NOT NULL, `plan_id` bigint NOT NULL, `line_id` bigint NOT NULL, `order_id` bigint NOT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '取消或失败后释放货源占用', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_fba_appointment_item_line` (`appointment_id`,`line_id`), KEY `idx_ll_fba_appointment_item_plan` (`plan_id`), KEY `idx_ll_fba_appointment_item_order` (`order_id`), KEY `idx_ll_fba_item_tenant_appointment` (`customer_id`,`appointment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='FBA appointment line snapshot'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `event_delivery_attempt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `event_delivery_attempt` ( `attempt_id` varchar(36) NOT NULL COMMENT '本次投递租约UUID和审计主键', `service_name` varchar(32) NOT NULL COMMENT '本库所属生产服务', `event_type` varchar(96) NOT NULL COMMENT '白名单业务事件类型', `entry_id` varchar(128) NOT NULL COMMENT '生产者发件箱主键', `event_id` varchar(128) DEFAULT NULL COMMENT '合法原事件UUID或ULID;格式错误时为空', `target_name` varchar(64) NOT NULL COMMENT '固定目标业务服务', `started_at` datetime(3) NOT NULL COMMENT '领取及审计事务提交前的开始时间', `finished_at` datetime(3) DEFAULT NULL COMMENT '尝试完成或租约过期恢复时间', `duration_ms` bigint DEFAULT NULL COMMENT '尝试耗时毫秒', `outcome` varchar(24) NOT NULL COMMENT 'STARTED/APPLIED/DUPLICATE/STALE/RETRY/DEAD/LEASE_EXPIRED', `error_code` varchar(64) DEFAULT NULL COMMENT '有限错误类别或HTTP状态;不含载荷与令牌', `next_retry_at` datetime(3) DEFAULT NULL COMMENT '本次失败后下次计划投递时间', PRIMARY KEY (`attempt_id`), KEY `idx_delivery_attempt_entry` (`service_name`,`entry_id`,`started_at`), KEY `idx_delivery_attempt_outcome` (`outcome`,`started_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='本服务业务事件逐次投递审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `event_delivery_retry_audit`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `event_delivery_retry_audit` ( `request_id` varchar(36) NOT NULL COMMENT '人工重试请求UUID和幂等键', `producer_table` varchar(64) NOT NULL COMMENT '本服务发件箱表名', `entry_id` varchar(64) NOT NULL COMMENT '发件箱记录主键', `event_id` varchar(128) NOT NULL COMMENT '原事件全局标识', `event_type` varchar(64) NOT NULL COMMENT '原事件类型', `payload_hash` varchar(71) NOT NULL COMMENT '原事件不可变负载摘要', `operator_name` varchar(128) NOT NULL COMMENT '持有运维凭据的操作人标识', `reason` varchar(500) NOT NULL COMMENT '人工重试原因', `previous_failures` int NOT NULL COMMENT '重试前累计失败次数', `previous_error` varchar(1000) DEFAULT NULL COMMENT '重试前最后一次脱敏错误', `requested_at` datetime(3) NOT NULL COMMENT '重试申请提交时间', PRIMARY KEY (`request_id`), KEY `idx_event_retry_entry` (`producer_table`,`entry_id`,`requested_at`), KEY `idx_event_retry_event` (`event_id`,`requested_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='业务事件人工重试审计,与恢复待发送状态同事务提交'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_cargo_verification`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_cargo_verification` ( `id` bigint NOT NULL COMMENT '核实记录主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原货源所属客户', `source_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定ORDER或BOOKING原来源键', `destination_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '核实时的原目的地', `source_version` varchar(160) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '核实时的原来源版本', `source_packages` int DEFAULT NULL COMMENT '核实时的原来源箱数,未知为空', `version` int NOT NULL COMMENT '同一来源的核实版本,从一递增', `package_count` int DEFAULT NULL COMMENT '独立核实箱数,不回写原订单', `shipment_references_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本票货件号或追踪号列表,不回写原订单', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '核实说明', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '登录操作人', `operator_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人名称快照', `command_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源内幂等命令键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源、操作人及请求摘要', `created_at` datetime(3) NOT NULL COMMENT '核实UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_cargo_verification_version` (`customer_id`,`source_key`,`version`), UNIQUE KEY `uk_ll_cargo_verification_command` (`customer_id`,`source_key`,`command_key`), CONSTRAINT `chk_ll_cargo_verification_quantity` CHECK (((`package_count` is null) or (`package_count` > 0))), CONSTRAINT `chk_ll_cargo_verification_version` CHECK ((`version` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约货物核实资料及不可覆盖的版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_followup`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_followup` ( `id` bigint NOT NULL COMMENT '预约筹划跟进记录ID', `source_key` varchar(160) NOT NULL COMMENT '稳定ORDER、BOOKING或CONTAINER及接仓点来源键', `customer_id` varchar(128) NOT NULL COMMENT '货源客户;整柜共享记录由服务端固定为平台作用域0', `source_order_id` bigint DEFAULT NULL COMMENT '已形成的真实尾程货源ID,尚未生成时为空', `stage` varchar(32) NOT NULL COMMENT '跟进对象:DRAYAGE_CONTACT/TERMINAL_APPOINTMENT/WAREHOUSE_RECEIVING/FBA_RECEIVING', `version` int NOT NULL COMMENT '同一货源及跟进对象的记录版本', `contacted_party` varchar(200) DEFAULT NULL COMMENT '本次联系对象,不替代承运主档', `result` varchar(1000) NOT NULL COMMENT '本次反馈事实,不自动确认预约或推进实物作业', `next_action` varchar(500) DEFAULT NULL COMMENT '下一步安排', `followup_date` date DEFAULT NULL COMMENT '按业务地点当地日期记录的下次跟进日', `operator_id` varchar(128) NOT NULL COMMENT '登录平台操作者ID', `operator_name` varchar(200) DEFAULT NULL COMMENT '操作人姓名快照', `command_key` varchar(64) NOT NULL COMMENT '持久幂等键', `request_hash` char(64) NOT NULL COMMENT '含操作者身份的请求SHA256摘要', `created_at` datetime(3) NOT NULL COMMENT 'UTC记录时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_appointment_followup_version` (`source_key`,`stage`,`version`), UNIQUE KEY `uk_appointment_followup_command` (`source_key`,`stage`,`command_key`), KEY `idx_appointment_followup_date` (`followup_date`,`source_order_id`), KEY `fk_appointment_followup_order` (`source_order_id`), CONSTRAINT `fk_appointment_followup_order` FOREIGN KEY (`source_order_id`) REFERENCES `ll_order` (`id`), CONSTRAINT `chk_appointment_followup_stage` CHECK ((`stage` in (_utf8mb4'DRAYAGE_CONTACT',_utf8mb4'TERMINAL_APPOINTMENT',_utf8mb4'WAREHOUSE_RECEIVING',_utf8mb4'FBA_RECEIVING'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='真实在途货源的预约筹划联系记录,追加留痕'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_impact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_impact` ( `container_booking_id` varchar(64) NOT NULL COMMENT '稳定柜次关联键,不作业务编号展示', `impact_no` varchar(40) NOT NULL COMMENT '船期核对事项业务号', `baseline_json` longtext NOT NULL COMMENT '已核对基准或首次变化前观察,原来源时间口径', `latest_json` longtext NOT NULL COMMENT '最新已读取观察,未知可为JSON null', `forecast_token` char(64) NOT NULL COMMENT '最新观察摘要,处理时防止旧预测结案', `status` varchar(20) NOT NULL COMMENT '事项状态:MONITORING监测/OPEN待处理/RESOLVED已完成', `reason` varchar(64) DEFAULT NULL COMMENT '预测变化或资料待核实原因', `owner_id` varchar(128) DEFAULT NULL COMMENT '认领平台人员ID', `owner_name` varchar(200) DEFAULT NULL COMMENT '负责人姓名快照', `version` int NOT NULL COMMENT '观察及人工处理共同版本', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', PRIMARY KEY (`container_booking_id`), UNIQUE KEY `uk_appointment_impact_no` (`impact_no`), KEY `idx_appointment_impact_work` (`status`,`updated_at`), CONSTRAINT `chk_appointment_impact_status` CHECK ((`status` in (_utf8mb4'MONITORING',_utf8mb4'OPEN',_utf8mb4'RESOLVED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一柜一个稳定船期变化核对事项,不改写预约或运输'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_impact_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_impact_history` ( `id` bigint NOT NULL COMMENT '历史记录标识', `container_booking_id` varchar(64) NOT NULL COMMENT '关联柜次标识', `version` int NOT NULL COMMENT '记录版本', `action` varchar(20) NOT NULL COMMENT '操作类型:OBSERVED观察/CLAIM认领/RECORD记录/RESOLVE完成', `operator_id` varchar(128) NOT NULL COMMENT '操作人标识', `operator_name` varchar(200) DEFAULT NULL COMMENT '操作人姓名', `result` varchar(1000) DEFAULT NULL COMMENT '人工处理结果;观察记录为空', `next_action` varchar(500) DEFAULT NULL COMMENT '下一步处理事项', `followup_date` date DEFAULT NULL COMMENT '业务跟进日期', `command_key` varchar(64) DEFAULT NULL COMMENT '人工命令幂等键;观察记录为空', `request_hash` char(64) DEFAULT NULL COMMENT '请求内容摘要', `response_json` longtext NOT NULL COMMENT '该版本完整响应快照,支持精确重放', `created_at` datetime(3) NOT NULL COMMENT 'UTC记录时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_appointment_impact_version` (`container_booking_id`,`version`), UNIQUE KEY `uk_appointment_impact_command` (`container_booking_id`,`operator_id`,`command_key`), CONSTRAINT `fk_appointment_impact_history` FOREIGN KEY (`container_booking_id`) REFERENCES `ll_appointment_impact` (`container_booking_id`), CONSTRAINT `chk_appointment_impact_action` CHECK ((`action` in (_utf8mb4'OBSERVED',_utf8mb4'CLAIM',_utf8mb4'RECORD',_utf8mb4'RESOLVE'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船期观察及人工处理追加历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_work`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_work` ( `work_item_key` varchar(96) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '不可变事项键,业务身份确定性生成', `container_booking_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源柜次内部关联标识,不作展示编号', `version` int NOT NULL DEFAULT '0' COMMENT '工作命令乐观锁版本', `retired` tinyint(1) NOT NULL DEFAULT '0' COMMENT '已替代或已完成路线需求,不计活动工作', `state_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '工作关系责任跟进及影响基线,不保存可编辑业务执行事实', PRIMARY KEY (`work_item_key`), KEY `idx_appointment_work_container` (`container_booking_id`,`retired`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约工作事项需求与关系'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_work_commitment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_work_commitment` ( `entity_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原业务实体稳定键', `state_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原业务命令产生的只读语义影响基线,不是第二份可编辑计划', `impact_version` bigint NOT NULL DEFAULT '0' COMMENT '承诺影响单调递增版本', PRIMARY KEY (`entity_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作事项承诺影响审计基线'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_work_guard`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_work_guard` ( `id` int NOT NULL COMMENT '工作事项协调锁,固定1', `scan_cursor` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '已开船来源同步游标', `initialized` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否完成首次完整来源扫描', `scope_version` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '完整同步已确认的权威来源集合版本', `scan_scope_version` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前扫描来源集合版本,防跨页漂移', `completed_at` datetime(3) DEFAULT NULL COMMENT '最近完整同步UTC时间', `requirement_version` bigint NOT NULL DEFAULT '0' COMMENT '原域命令在同一事务推进的需求版本', `synchronized_requirement_version` bigint NOT NULL DEFAULT '0' COMMENT '完整扫描已消费需求版本', `scan_requirement_version` bigint NOT NULL DEFAULT '0' COMMENT '当前扫描需求版本,防跨页漂移', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约工作事项同步与命令串行守卫'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_appointment_work_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_appointment_work_history` ( `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '历史记录标识', `work_item_key` varchar(96) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事项稳定键', `operator_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实操作人员标识', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人显示名称', `action` varchar(48) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '工作命令或观察动作', `summary` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '处理或责任变更依据', `command_key` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求幂等键,观察记录为空', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '包含操作者的规范请求摘要', `response_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '原命令响应快照,重放不随当前状态改变', `occurred_at` datetime(3) NOT NULL COMMENT '历史发生UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_appointment_work_command` (`work_item_key`,`command_key`), KEY `idx_appointment_work_history` (`work_item_key`,`occurred_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约工作事项历史与幂等命令'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_cargo_discard_application`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_cargo_discard_application` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `discard_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `outbound_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '废弃出库单号', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_codes` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL, `total_packages` int NOT NULL, `fee_per_package` decimal(18,2) NOT NULL, `total_fee` decimal(18,2) NOT NULL, `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USD', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_REVIEW', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `review_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核幂等键', `review_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核请求内容哈希', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `reviewed_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `review_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `reviewed_at` datetime(3) DEFAULT NULL, `completed_at` datetime(3) DEFAULT NULL COMMENT '废弃完成时间', `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), `customer_confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_cargo_discard_no` (`customer_id`,`discard_no`), UNIQUE KEY `uk_ll_cargo_discard_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_cargo_discard_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_cargo_discard_warehouse` (`customer_id`,`overseas_warehouse_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Cargo discard application requiring warehouse approval'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_cargo_discard_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_cargo_discard_carton` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `application_id` bigint NOT NULL, `item_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `carton_id` bigint NOT NULL, `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `source_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DROPSHIP' COMMENT '箱子来源:一件代发DROPSHIP、入仓箱INBOUND、转运箱TRANSFER', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_cargo_discard_carton` (`application_id`,`carton_id`), KEY `idx_ll_cargo_discard_carton_application` (`customer_id`,`application_id`,`item_id`), KEY `idx_ll_cargo_discard_carton_identity` (`customer_id`,`carton_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Cartons reserved while a cargo discard application awaits review'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_cargo_discard_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_cargo_discard_item` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `application_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_id` bigint DEFAULT NULL COMMENT '一件代发订单ID', `source_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DROPSHIP' COMMENT '库存来源:一件代发DROPSHIP、退货箱RETURN_CARTON', `return_carton_id` bigint DEFAULT NULL COMMENT '退货库存箱ID', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `profile_id` bigint DEFAULT NULL COMMENT '托盘档案ID', `sku_inventory_id` bigint DEFAULT NULL COMMENT 'SKU库存记录ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `available_packages_snapshot` int NOT NULL, `discard_packages` int NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `actual_discard_packages` int DEFAULT NULL, `pda_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `pda_operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pda_completed_at` datetime(3) DEFAULT NULL, `completion_photo_file_ids` text COLLATE utf8mb4_unicode_ci COMMENT 'PDA完工照片文件ID JSON数组', `inventory_position_id` bigint DEFAULT NULL COMMENT '废弃来源库存仓位ID', `carton_marks_json` text COLLATE utf8mb4_unicode_ci COMMENT '本次废弃所选真实箱唛快照JSON数组', `carton_scan_required` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要逐箱核对本次所选箱子', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_cargo_discard_item` (`application_id`,`profile_id`,`sku_code`), UNIQUE KEY `uk_ll_discard_position_sku` (`application_id`,`inventory_position_id`,`sku_code`), KEY `idx_ll_cargo_discard_item_list` (`customer_id`,`application_id`), KEY `idx_ll_cargo_discard_item_inbound` (`customer_id`,`inbound_code`,`sku_code`), KEY `idx_ll_cargo_discard_return_carton` (`customer_id`,`return_carton_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Frozen SKU quantities in a cargo discard application'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_cargo_discard_photo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_cargo_discard_photo` ( `id` bigint NOT NULL, `customer_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `application_id` bigint NOT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `file_id` bigint NOT NULL, `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `content_type` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `size_bytes` bigint NOT NULL, `operator_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(6) NOT NULL, `submitted_at` datetime(6) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_cargo_discard_photo_file` (`file_id`), KEY `idx_cargo_discard_photo_application` (`customer_id`,`application_id`,`pallet_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_cargo_discard_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_cargo_discard_status_history` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `application_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), KEY `idx_ll_cargo_discard_history` (`customer_id`,`application_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable cargo discard approval history'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_compact_number_clock`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_compact_number_clock` ( `number_key` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '业务前缀和客户名称缩写', `last_second` bigint NOT NULL COMMENT '最后分配的Unix逻辑秒', PRIMARY KEY (`number_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外业务短单号分配时钟'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_container_arrival_time_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_container_arrival_time_operation` ( `id` bigint NOT NULL COMMENT '柜级预计到仓时间修改操作ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定来源柜预订ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台请求幂等键', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化修改请求SHA-256摘要', `result_version` int NOT NULL COMMENT '修改成功后的柜级时间版本', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台操作人名称', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '预计到仓时间修改备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_container_arrival_time_idempotency` (`idempotency_key`), KEY `idx_ll_container_arrival_time_container` (`source_container_booking_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜级预计到仓时间修改幂等审计记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_container_loading_evidence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_container_loading_evidence` ( `id` bigint NOT NULL COMMENT '海外整柜装柜照片投影ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国内稳定来源柜预订ID', `evidence_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PHOTO_STEP_1至PHOTO_STEP_4或SEAL', `source_file_id` bigint NOT NULL COMMENT '国内File服务文件ID', `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国内文件名快照', `created_at` datetime(3) NOT NULL COMMENT '投影创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_container_loading_evidence_type` (`source_container_booking_id`,`evidence_type`), UNIQUE KEY `uk_ll_container_loading_evidence_file` (`source_container_booking_id`,`source_file_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外拆柜只读国内装柜照片引用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_container_plan_conversion_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_container_plan_conversion_command` ( `id` bigint NOT NULL COMMENT '柜级转换命令ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定来源柜预订ID', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '调用方幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '确认请求SHA-256摘要', `snapshot_version` bigint NOT NULL COMMENT '确认的柜级快照版本', `snapshot_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '确认的柜级快照SHA-256', `warehouse_id` bigint NOT NULL COMMENT '海外接柜仓ID', `batch_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外仓托盘批次幂等键', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '命令状态:PREPARED/APPLYING/FAILED/LOCAL_COMMITTED/COMPLETED', `lease_token` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前执行租约令牌,用于陈旧执行者隔离', `preparation_json` json NOT NULL COMMENT '稳定计划号与托盘业务键快照', `result_json` json DEFAULT NULL COMMENT '本地计划提交结果', `last_error` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT 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 '命令状态或租约更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_container_conversion_command` (`source_container_booking_id`), UNIQUE KEY `uk_ll_container_conversion_batch` (`warehouse_id`,`batch_key`), KEY `idx_ll_container_conversion_status` (`status`,`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜级入库计划转换Saga与幂等命令'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_container_shipping_gate`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_container_shipping_gate` ( `container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源头程柜预订ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户标识', `ocean_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源海运订舱ID', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际集装箱号', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'AWAITING_PICKUP_READY' COMMENT '海外收货门禁状态:AWAITING_PICKUP_READY、RECEIVING_AVAILABLE', `standard_node` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最新有效标准船节点', `node_sequence` int NOT NULL DEFAULT '0' COMMENT '最新有效节点单调序号', `observed_at` datetime(3) DEFAULT NULL COMMENT '供应商节点观测时间', `actual_at` datetime(3) DEFAULT NULL COMMENT '节点实际发生时间', `location_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '节点地点编码', `location_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '节点地点名称', `provider_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '船节点供应商编码', `provider_event_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商事件ID', `provider_node_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商原始节点编码', `source_reference` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商来源引用', `raw_payload_hash` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商原始负载SHA-256', `aggregate_version` bigint NOT NULL DEFAULT '0' COMMENT '来源查询聚合版本', `handover_version` bigint NOT NULL DEFAULT '1' COMMENT '跨区交接版本', `last_event_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近采纳的跨区事件ID', `payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci DEFAULT 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 '更新时间', PRIMARY KEY (`container_booking_id`), KEY `idx_ll_shipping_gate_candidate` (`customer_id`,`container_no`,`status`), KEY `idx_ll_shipping_gate_version` (`container_booking_id`,`aggregate_version`,`node_sequence`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA柜号船节点收货资格快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_customer_visit`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_customer_visit` ( `id` bigint NOT NULL COMMENT '客户回访记录ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `delivery_order_id` bigint NOT NULL COMMENT '关联派送单ID', `delivery_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关联派送单号', `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户名称快照', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户联系人姓名快照', `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户联系人电话快照', `destination` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送目的仓编码汇总快照', `delivery_completed_at` datetime(3) NOT NULL COMMENT '派送完成时间', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING' COMMENT '回访状态:PENDING待回访或COMPLETED已回访', `selected_last_mile_order_id` bigint DEFAULT NULL COMMENT '本次回访选择的尾程订单ID', `selected_last_mile_order_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本次回访选择的尾程订单号', `selected_inbound_order_id` bigint DEFAULT NULL COMMENT '本次回访选择的入仓单ID', `selected_inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本次回访选择的入仓码', `visit_result` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近一次回访结果', `customer_feedback` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近一次客户反馈', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近一次回访备注', `attachment_json` json DEFAULT NULL COMMENT '当前回访资料文件元数据列表', `visited_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近一次回访操作人ID', `visited_at` datetime(3) DEFAULT NULL COMMENT '最近一次回访时间', `visit_count` int NOT NULL DEFAULT '0' 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_ll_customer_visit_delivery` (`customer_id`,`delivery_order_id`), KEY `idx_ll_customer_visit_list` (`customer_id`,`status`,`delivery_completed_at`), KEY `idx_ll_customer_visit_delivery_no` (`customer_id`,`delivery_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='派送单维度客户回访记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_delivery_document_revision`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_delivery_document_revision` ( `id` bigint NOT NULL COMMENT '派送资料历史ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '派送所属客户隔离键', `delivery_order_id` bigint NOT NULL COMMENT '派送单ID', `version` bigint NOT NULL COMMENT '保存成功时派送单版本', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资料保存幂等键', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '完整保存请求哈希', `snapshot_json` json NOT NULL COMMENT '不可变三类资料及BOL号结果快照', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '保存操作人ID', `created_at` datetime(3) NOT NULL COMMENT '资料保存时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_delivery_document_command` (`customer_id`,`delivery_order_id`,`idempotency_key`), UNIQUE KEY `uk_delivery_document_version` (`customer_id`,`delivery_order_id`,`version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='派送资料版本历史与幂等保存记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_delivery_facts_changed`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_delivery_facts_changed` ( `id` bigint NOT NULL COMMENT '持久信号内部主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实签收货物客户ID', `dispatch_id` bigint NOT NULL COMMENT '整车排车主单ID', `dispatch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实排车业务号', `delivery_id` bigint NOT NULL COMMENT '本客户派送单ID', `delivery_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实派送业务号', `delivery_version` bigint NOT NULL COMMENT '触发信号的真实派送版本', `facts_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '该版本真实签收事实摘要', `occurred_at` datetime(3) NOT NULL COMMENT '签收事实实际发生时间', `state` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING' COMMENT '待核对PENDING或已核对PROCESSED', `attempt_count` int NOT NULL DEFAULT '0' COMMENT '已记录的汇总失败次数', `next_attempt_at` datetime(3) NOT NULL COMMENT '下次可重试时间', `last_error_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近失败诊断码不保存敏感异常正文', `processed_at` datetime(3) DEFAULT NULL COMMENT '与主阶段汇总同事务确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_delivery_fact_version` (`customer_id`,`delivery_id`,`delivery_version`), KEY `idx_delivery_fact_due` (`state`,`next_attempt_at`,`id`), KEY `idx_delivery_fact_dispatch` (`dispatch_id`,`state`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='正常签收事实变化的本地持久待汇总信号'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_delivery_fee`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_delivery_fee` ( `id` bigint NOT NULL COMMENT '派送费用主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `delivery_order_id` bigint NOT NULL COMMENT '派送单ID', `fee_direction` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PAYABLE' COMMENT '应收应付方向', `fee_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用类型', `currency` varchar(8) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '币种', `amount` decimal(18,2) NOT NULL COMMENT '费用金额', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用备注', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_delivery_fee_order` (`customer_id`,`delivery_order_id`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='派送单费用明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_delivery_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_delivery_operation` ( `id` bigint NOT NULL COMMENT '派送操作主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `delivery_order_id` bigint NOT NULL COMMENT '派送单ID', `operation_node` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作节点', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人ID', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人名称', `result` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '处理结果', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_ll_delivery_operation_order` (`customer_id`,`delivery_order_id`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='派送单操作记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_delivery_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_delivery_order` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `delivery_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `outbound_order_id` bigint NOT NULL, `outbound_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `dispatch_order_id` bigint DEFAULT NULL COMMENT '关联派车单ID,仓储转运直接出库时为空', `dispatch_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '关联派车单号,仓储转运直接出库时为空', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外仓名称快照', `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户名称快照', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本派送单目的FBA仓ID快照', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本派送单目的FBA仓编码快照,私人仓为空', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本派送单目的FBA仓名称快照', `destination_type` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地类型:FBA或PRIVATE', `delivery_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓派送地址', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系人', `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系电话', `delivery_group_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '同一出库单内按目的FBA仓拆单的稳定分组键', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAIT_DELIVERY', `seller_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '卖家姓名', `package_count` int NOT NULL DEFAULT '0', `pallet_count` int NOT NULL DEFAULT '0', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送备注', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `version` bigint NOT NULL DEFAULT '0' COMMENT '派送单乐观锁版本', `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), `waybill_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '承运运单号', `delivery_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送方式', `carrier_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送承运商', `pickup_method` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提货方式', `loading_type` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '装车类型', `vehicle_type` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车辆类型', `vehicle_size` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车辆大小', `vehicle_plate` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车牌号', `driver_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '司机或车队名称', `driver_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车队联系电话', `appointment_account` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '预约账号', `total_weight_kg` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '总重量(千克)', `total_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积(立方米),来源未确认时为空', `planned_delivery_at` datetime(3) DEFAULT NULL COMMENT '预计派送时间', `dispatched_at` datetime(3) DEFAULT NULL COMMENT '实际派送时间', `expected_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到达时间', `signed_at` datetime(3) DEFAULT NULL COMMENT '签收时间', `bol_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送资料BOL号,不作为文件归属标识', `documents_json` json DEFAULT NULL COMMENT '娲鹃�佷笁绫昏祫鏂欏綋鍓嶇粦瀹氬強鏉冨▉鏂囦欢鍏冩暟鎹揩鐓�', `postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓邮编', `signed_packages` int DEFAULT NULL COMMENT '保存签收资料时冻结的实际签收箱数,不含此前已退回量', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_delivery_no` (`customer_id`,`delivery_no`), UNIQUE KEY `uk_ll_delivery_idempotency` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_delivery_outbound_destination` (`customer_id`,`outbound_order_id`,`delivery_group_key`), KEY `idx_ll_delivery_list` (`customer_id`,`status`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Delivery document linked to an outbound document'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_destuff_pallet_cost`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_destuff_pallet_cost` ( `id` bigint NOT NULL COMMENT '主键ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源柜次业务ID', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '集装箱号', `warehouse_id` bigint DEFAULT NULL COMMENT '海外仓ID', `pallet_count` int NOT NULL COMMENT '实际打托数', `total_actual_volume_cbm` decimal(20,6) NOT NULL COMMENT '客户实收总体积', `total_cost` decimal(20,2) NOT NULL COMMENT '打托总成本', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '成本币种', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '生成状态', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_destuff_cost_booking` (`source_container_booking_id`), CONSTRAINT `chk_ll_destuff_cost` CHECK (((`pallet_count` > 0) and (`total_actual_volume_cbm` > 0) and (`total_cost` > 0) and (`currency` = _utf8mb4'CNY'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='拆柜打托实际成本汇总'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_destuff_pallet_cost_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_destuff_pallet_cost_allocation` ( `id` bigint NOT NULL COMMENT '主键ID', `cost_id` bigint NOT NULL COMMENT '打托成本汇总ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID', `actual_volume_cbm` decimal(20,6) NOT NULL COMMENT '客户实收体积', `allocated_amount` decimal(20,2) NOT NULL COMMENT '客户分摊金额', `fee_source_id` bigint NOT NULL COMMENT '海外费用来源ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_destuff_customer` (`cost_id`,`customer_id`), UNIQUE KEY `uk_ll_destuff_fee_source` (`fee_source_id`), CONSTRAINT `chk_ll_destuff_allocation` CHECK (((`actual_volume_cbm` > 0) and (`allocated_amount` >= 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='拆柜打托成本按客户实收体积分摊'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_appointment_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_appointment_allocation` ( `dispatch_id` bigint NOT NULL COMMENT '排车单标识', `dispatch_item_id` bigint NOT NULL COMMENT '排车明细标识', `plan_pallet_id` bigint NOT NULL COMMENT '入仓计划托盘标识', `batch_key` varchar(96) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '预约稳定批次键', `customer_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属客户标识', `source_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '货物来源稳定键', `destination_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目的地稳定键', `package_count` int NOT NULL COMMENT '本票分配实物箱数', PRIMARY KEY (`dispatch_item_id`,`batch_key`,`source_key`,`destination_key`), KEY `idx_dispatch_appointment_batch` (`batch_key`,`customer_id`), KEY `idx_dispatch_appointment_dispatch` (`dispatch_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='排车实物与预约批次逐票分配,原执行域事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_command` ( `id` bigint NOT NULL COMMENT '持久命令内部主键', `dispatch_id` bigint NOT NULL COMMENT '命令所属整车排车主单ID', `dispatch_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '命令所属真实排车业务号', `action` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次整车作业动作', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原始可信操作主体ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '跨操作主体全局唯一的原始请求键', `record_version` bigint NOT NULL COMMENT '原请求明确提交的排车版本,零为合法首版', `command_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绑定原主体动作业务号版本和完整载荷的严格摘要', `result_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '按动作类型恢复的不可变成功结果JSON', `created_at` datetime(3) NOT NULL COMMENT '成功命令记录时间,使用UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_dispatch_command_key` (`idempotency_key`), KEY `idx_dispatch_command_history` (`dispatch_id`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='整车排车公共持久命令账本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_delivery_arrangement`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_delivery_arrangement` ( `id` bigint NOT NULL COMMENT '安排事实内部主键', `dispatch_order_id` bigint NOT NULL COMMENT '唯一整车排车主单ID', `dispatch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实排车业务号', `arrangement_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次唯一安排业务事实标识', `business_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '排除操作者及纯并发版本的安排业务摘要', `cargo_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本车实际拣货来源摘要', `loading_completion_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '装车完成事实摘要', `original_command_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '首次安排的全局请求键', `original_operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '首次安排操作主体', `result_json` json NOT NULL COMMENT '全部客户出库及客户目的地派送不可变结果', `cargo_json` json NOT NULL COMMENT '逐客户逐拣货归属的不可变真实来源', `created_at` datetime(3) NOT NULL COMMENT '本次安排实际创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dispatch_arrangement_dispatch` (`dispatch_order_id`), UNIQUE KEY `uk_dispatch_arrangement_key` (`arrangement_key`), UNIQUE KEY `uk_dispatch_arrangement_command` (`original_command_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='整车排车唯一派送安排事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_draft`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_draft` ( `id` bigint NOT NULL, `draft_token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `plan_ids_json` varchar(4000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `containers_json` longtext COLLATE utf8mb4_unicode_ci, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE', `expires_at` datetime(3) DEFAULT NULL, `released_at` datetime(3) DEFAULT 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), `warehouse_id` bigint DEFAULT NULL COMMENT '本草稿唯一起运公共仓库引用', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '草稿并发版本,显式零版本合法', `sources_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '服务端核验的真实来源及客户版本快照数组', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_draft_token` (`draft_token`), KEY `idx_ll_dispatch_draft_operator` (`operator_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能排车草稿'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_draft_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_draft_command` ( `id` bigint NOT NULL COMMENT '草稿命令内部主键', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '草稿操作全局唯一幂等键', `operator_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原命令操作主体,恢复必须为本人', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '草稿创建、维护、选货、释放或转换动作', `target_token` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '命令目标草稿标识或创建范围标识', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原动作、主体、版本及完整载荷摘要', `result_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '本事务完成后保存的不可变原结果,不提交空结果', `created_at` datetime(3) NOT NULL COMMENT '命令创建UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_draft_command_key` (`idempotency_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能排车草稿持久命令及原结果'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_draft_container`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_draft_container` ( `id` bigint NOT NULL, `draft_id` bigint NOT NULL, `draft_token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `sequence_no` int NOT NULL, `capacity` int NOT 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), `source_keys_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '本装车容器已取得本草稿占用的来源键数组', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_draft_container_sequence` (`draft_id`,`sequence_no`), KEY `idx_ll_dispatch_draft_container_token` (`draft_token`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能排车草稿装车托盘'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_history` ( `id` bigint NOT NULL COMMENT '排车历史内部主键', `dispatch_id` bigint NOT NULL COMMENT '本次历史所属整车主单ID', `record_version` bigint NOT NULL COMMENT '操作完成后的整车公共版本', `action` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次真实业务动作', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '可信操作主体ID', `reason` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核驳回或变更原因', `snapshot_json` json NOT NULL COMMENT '动作完成当时的完整主单事实快照', `occurred_at` datetime(3) NOT NULL COMMENT '真实操作发生时间', PRIMARY KEY (`id`), KEY `idx_dispatch_history_version` (`dispatch_id`,`record_version`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='整车排车版本与审核轮次的追加历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_item` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `dispatch_order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `plan_id` bigint DEFAULT NULL, `plan_pallet_id` bigint DEFAULT NULL, `warehouse_pallet_id` bigint DEFAULT NULL, `order_id` bigint DEFAULT NULL, `order_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `order_refs` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `package_count` int NOT NULL DEFAULT '0', `gross_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '毛重(千克)', `volume_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '材积重(千克)', `volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000', `source_stage` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PLAN or RECEIVED', `carton_marks` varchar(4000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标箱唛映射快照', `source_business_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源业务类型', `source_business_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源业务单号', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `destination_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的类型:FBA或PRIVATE', `delivery_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓目的地址快照', `postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓邮编快照', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系人快照', `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系电话快照', `return_receipt_id` bigint DEFAULT NULL COMMENT '明确选用的真实退回入仓来源', `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本条真实客户名称快照', `source_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本条货物稳定权威来源键', `source_version` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '选货时核对的真实来源版本摘要', `source_snapshot_json` json DEFAULT NULL COMMENT '本条货物不可变来源及关联事实快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_item_source` (`dispatch_order_id`,`plan_pallet_id`,`warehouse_pallet_id`), KEY `idx_ll_dispatch_item_order` (`customer_id`,`order_id`), KEY `idx_ll_dispatch_item_inbound` (`customer_id`,`inbound_code`), KEY `idx_ll_dispatch_item_pallet` (`customer_id`,`plan_pallet_id`,`warehouse_pallet_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Frozen pallet and cargo snapshot for a dispatch order'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_order` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `dispatch_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Dispatch order number', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `vehicle_plate` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Editable vehicle plate; required before PDA picking', `driver_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `driver_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `carrier_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `route` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `depart_at` datetime(3) DEFAULT NULL, `fba_appointment_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `fba_appointment_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `vehicle_appointment_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `estimated_arrival_at` datetime(3) DEFAULT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_DEPARTURE', `item_count` int NOT NULL DEFAULT '0', `pallet_count` int NOT NULL DEFAULT '0', `package_count` int NOT NULL DEFAULT '0', `picked_package_count` int NOT NULL DEFAULT '0', `shipped_package_count` int NOT NULL DEFAULT '0', `partial_completion_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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), `trip_id` bigint DEFAULT NULL COMMENT '本趟唯一车辆资源记录ID', `overseas_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运海外仓编码快照', `stage` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BEFORE_LOADING' COMMENT '作业阶段:BEFORE_LOADING装车前、LOADING装车中、AFTER_LOADING装车后、DELIVERING派送中、DELIVERED派送完成', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '整车公共并发版本,首版为零', `cargo_revision` bigint NOT NULL DEFAULT '0' COMMENT '本趟货物修订版本', `cargo_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前整车真实货物及来源摘要', `review_state` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DRAFT' COMMENT '审核子流程当前状态', `review_round` bigint NOT NULL DEFAULT '0' COMMENT '当前审核轮次', `review_basis_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本审核轮次核对的货物和资源依据摘要', `dispatch_review_json` json DEFAULT NULL COMMENT '当前调度审核事实快照', `loading_review_json` json DEFAULT NULL COMMENT '当前理货审核事实快照', `resources_json` json DEFAULT NULL COMMENT '本趟主档或临时车辆司机的真实资源快照', `planned_departure_at` datetime(3) DEFAULT NULL COMMENT '计划发车时间,草稿未知时为空', `loading_completed_at` datetime(3) DEFAULT NULL COMMENT '实际确认装车完成时间', `loading_completion_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际装车完成事实摘要', `loading_confirmation_json` json DEFAULT NULL COMMENT '装车确认时逐实托真实实载完整快照', `arrangement_key` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本车唯一派送安排事实标识', `arrangement_business_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本车派送安排业务内容摘要', `departed_at` datetime(3) DEFAULT NULL COMMENT '本趟实际发车时间', `delivery_completed_at` datetime(3) DEFAULT NULL COMMENT '全部派送正常签收后的整车完成时间', `remark` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '排车业务备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_order_no` (`customer_id`,`dispatch_no`), UNIQUE KEY `uk_dispatch_trip` (`trip_id`), KEY `idx_ll_dispatch_order_list` (`customer_id`,`status`,`depart_at`), KEY `idx_ll_dispatch_order_vehicle` (`customer_id`,`vehicle_plate`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Last-leg pre-dispatch order'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_pallet_lock`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_pallet_lock` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `source_pallet_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PLAN:{planPalletId} or RECEIVED:{warehousePalletId}', `active_key` varchar(160) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Equals source key only while lock is active', `plan_id` bigint DEFAULT NULL, `plan_pallet_id` bigint DEFAULT NULL, `warehouse_pallet_id` bigint DEFAULT NULL, `dispatch_order_id` bigint DEFAULT NULL COMMENT '正式派车单ID,草稿锁阶段为空', `draft_container_id` bigint DEFAULT NULL COMMENT '智能排车草稿装车托盘ID', `draft_token` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '智能排车草稿随机标识', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '草稿锁操作人ID', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE', `locked_at` datetime(3) NOT NULL, `expires_at` datetime(3) DEFAULT NULL COMMENT '草稿锁失效时间,正式派车锁为空', `released_at` datetime(3) DEFAULT 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), `return_receipt_id` bigint DEFAULT NULL COMMENT '明确选用的真实退回入仓来源', `active_warehouse_pallet_id` bigint DEFAULT NULL COMMENT '活动占用的真实仓库托盘,释放后为空,跨客户及来源别名唯一', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_active_pallet` (`customer_id`,`active_key`), UNIQUE KEY `uk_ll_dispatch_active_warehouse_pallet` (`active_warehouse_pallet_id`), KEY `idx_ll_dispatch_pallet_lock_order` (`customer_id`,`dispatch_order_id`,`status`), KEY `idx_ll_dispatch_pallet_lock_source` (`customer_id`,`source_pallet_key`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Active dispatch pallet exclusion lock'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_pda_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_pda_operation` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `task_id` bigint DEFAULT NULL, `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `result_json` longtext COLLATE utf8mb4_unicode_ci, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT 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_ll_dispatch_pda_operation_key` (`customer_id`,`idempotency_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Idempotent dispatch PDA operations'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_pda_pick`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_pda_pick` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `task_id` bigint NOT NULL, `dispatch_item_id` bigint NOT NULL, `inventory_position_id` bigint DEFAULT NULL COMMENT '普通库存仓位记录ID', `packages` bigint NOT NULL, `product_quantity` bigint NOT NULL DEFAULT '0', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `picked_at` datetime(3) NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `return_carton_id` bigint DEFAULT NULL COMMENT '独立退货库存箱ID,与普通仓位互斥', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dispatch_pda_pick_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_dispatch_pda_pick_item` (`customer_id`,`task_id`,`dispatch_item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable dispatch PDA pallet package picks'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_pda_pick_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_pda_pick_order` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `pick_id` bigint NOT NULL, `receipt_id` bigint DEFAULT NULL COMMENT '原入仓实收来源,与退回来源或原生退货箱互斥', `order_id` bigint NOT NULL, `packages` bigint NOT NULL, `product_quantity` bigint NOT NULL DEFAULT '0', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `return_carton_id` bigint DEFAULT NULL COMMENT '原生退货箱来源ID,与实收来源互斥', `return_receipt_id` bigint DEFAULT NULL COMMENT '明确选用的真实退回入仓来源', PRIMARY KEY (`id`), KEY `idx_ll_dispatch_pick_order_pick` (`customer_id`,`pick_id`), KEY `idx_ll_dispatch_pick_order_receipt` (`customer_id`,`receipt_id`), KEY `idx_dispatch_pick_return_receipt` (`customer_id`,`return_receipt_id`), CONSTRAINT `chk_dispatch_pick_receipt_source` CHECK (((((`receipt_id` is not null) + (`return_receipt_id` is not null)) + (`return_carton_id` is not null)) = 1)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PDA pick attribution to frozen inbound receipt and tail order'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dispatch_pda_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dispatch_pda_task` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `dispatch_order_id` bigint NOT NULL, `task_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pushed_at` datetime(3) NOT NULL, `completed_at` datetime(3) DEFAULT 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_ll_dispatch_pda_task_dispatch` (`customer_id`,`dispatch_order_id`), UNIQUE KEY `uk_ll_dispatch_pda_task_no` (`customer_id`,`task_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PDA task for a pre-arranged dispatch'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dropship_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dropship_carton` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_id` bigint NOT NULL, `profile_id` bigint NOT NULL, `warehouse_pallet_id` bigint DEFAULT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `carton_sequence` int NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'AVAILABLE', `outbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `version` bigint NOT NULL DEFAULT '0', `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), `product_quantity` bigint DEFAULT NULL COMMENT '该箱实收商品件数', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dropship_carton` (`customer_id`,`order_id`,`carton_mark`), KEY `idx_ll_dropship_carton_status` (`customer_id`,`status`), KEY `idx_ll_dropship_carton_sku` (`customer_id`,`sku_code`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dropship_carton_ledger`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dropship_carton_ledger` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_id` bigint NOT NULL, `carton_id` bigint NOT NULL, `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `before_packages` bigint NOT NULL, `delta_packages` bigint NOT NULL, `after_packages` bigint NOT NULL, `business_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `occurred_at` datetime(3) NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dropship_ledger_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_dropship_ledger_sku` (`customer_id`,`sku_code`,`carton_mark`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dropship_carton_sku`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dropship_carton_sku` ( `id` bigint NOT NULL COMMENT '主键ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `profile_id` bigint NOT NULL COMMENT '一件代发托盘档案ID', `carton_id` bigint NOT NULL COMMENT '一件代发物理箱ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '箱内SKU编码', `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品名称快照', `product_quantity` bigint NOT NULL COMMENT '该物理箱内此SKU实收件数', `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_ll_dropship_carton_sku` (`carton_id`,`sku_code`), KEY `idx_ll_dropship_carton_sku_order` (`customer_id`,`order_id`,`sku_code`), KEY `idx_ll_dropship_carton_sku_profile` (`customer_id`,`profile_id`,`sku_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='一件代发物理箱内SKU明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dropship_order_profile`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dropship_order_profile` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_id` bigint NOT NULL, `warehouse_pallet_id` bigint DEFAULT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Pallet number snapshot supplied by first-leg handover', `inventory_position_id` bigint DEFAULT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RECEIVED', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `version` bigint NOT NULL DEFAULT '0', `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), `manifest_version` int DEFAULT NULL COMMENT '整托清单版本', `manifest_package_count` int DEFAULT NULL COMMENT '整托总箱数', `manifest_fragment_count` int DEFAULT NULL COMMENT '整托客户分片总数', `manifest_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '整托完整清单摘要', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_dropship_profile_key` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_dropship_profile_order_pallet` (`customer_id`,`order_id`,`source_pallet_no`), KEY `idx_ll_dropship_profile_order` (`customer_id`,`order_id`), KEY `idx_ll_dropship_profile_manifest` (`source_pallet_no`,`manifest_hash`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_dropship_sku_inventory`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_dropship_sku_inventory` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_id` bigint NOT NULL, `profile_id` bigint NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `package_count` bigint NOT NULL, `product_quantity` bigint NOT 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_ll_dropship_sku_profile` (`profile_id`,`sku_code`), UNIQUE KEY `uk_ll_dropship_sku_inventory` (`profile_id`,`sku_code`), KEY `idx_ll_dropship_sku_order` (`customer_id`,`order_id`,`sku_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_event_conflict`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_event_conflict` ( `id` bigint NOT NULL COMMENT '冲突记录主键', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '冲突事件 ID', `customer_id` bigint NOT NULL COMMENT '租户 ID', `conflict_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '冲突类型', `conflict_message` varchar(512) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '冲突说明', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_conflict_event` (`event_id`,`customer_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='事件冲突记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_event_inbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_event_inbox` ( `id` bigint NOT NULL COMMENT '事件接收记录主键', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件全局唯一 ID', `customer_id` bigint NOT NULL COMMENT '租户 ID', `event_type` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件类型', `aggregate_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '聚合类型', `aggregate_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '聚合 ID', `aggregate_version` bigint NOT NULL COMMENT '聚合版本', `payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '负载摘要', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消费状态', `error_message` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '错误信息', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbox_event` (`event_id`), KEY `idx_ll_inbox_source` (`customer_id`,`aggregate_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通用事件接收幂等箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_event_outbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_event_outbox` ( `id` bigint NOT NULL COMMENT '事件主键ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `aggregate_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '聚合类型', `aggregate_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '聚合标识', `event_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件类型', `event_version` int NOT NULL COMMENT '事件版本', `event_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '业务幂等键', `payload_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件载荷JSON', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING' COMMENT '发布状态', `retry_count` int NOT NULL DEFAULT '0' COMMENT '重试次数', `next_retry_at` datetime(3) DEFAULT NULL COMMENT '下次重试时间', `published_at` datetime(3) DEFAULT NULL COMMENT '发布时间', `locked_at` datetime(3) DEFAULT NULL COMMENT '投递租约获取时间', `locked_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '投递租约持有者', `last_error` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后一次发布错误', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_event_outbox_key` (`event_key`), KEY `idx_ll_event_outbox_publish` (`status`,`next_retry_at`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程跨区业务事件发件箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_exception_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_exception_order` ( `id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `exception_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `exception_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL, `last_mile_order_id` bigint DEFAULT NULL, `last_mile_order_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_order_id` bigint DEFAULT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `delivery_order_id` bigint DEFAULT NULL, `delivery_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `outbound_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `package_count` int DEFAULT NULL, `return_direction` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `return_logistics_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `handling_action` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `handling_result` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '异常处理结果', `evidence_file_ids_json` json DEFAULT NULL COMMENT '异常处理证据文件ID列表', `inventory_adjustment_id` bigint DEFAULT NULL COMMENT '退回库存恢复操作ID', `handler_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `handler_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'MANUAL', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `exception_at` datetime(3) NOT NULL, `completed_at` datetime(3) DEFAULT NULL COMMENT '异常处理完成时间', `version` bigint NOT NULL DEFAULT '0' COMMENT '异常订单乐观锁版本', `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), `return_context_json` json DEFAULT NULL COMMENT '退回异常创建前的派送及尾程状态快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_exception_no` (`customer_id`,`exception_no`), UNIQUE KEY `uk_ll_exception_delivery_return` (`customer_id`,`delivery_order_id`,`exception_type`), KEY `idx_ll_exception_list` (`customer_id`,`status`,`exception_at`), KEY `idx_ll_exception_tail` (`customer_id`,`last_mile_order_no`), KEY `idx_ll_exception_inbound` (`customer_id`,`inbound_code`), KEY `idx_ll_exception_delivery_return` (`customer_id`,`delivery_order_id`,`exception_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外仓异常订单'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_exception_order_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_exception_order_command` ( `id` bigint NOT NULL COMMENT '异常处理命令ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `exception_order_id` bigint NOT NULL COMMENT '异常订单ID', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '异常处理动作', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '幂等键', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容SHA256哈希', `result_json` json NOT NULL COMMENT '命令结果快照', `created_at` datetime(3) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_exception_command_key` (`customer_id`,`action`,`idempotency_key`), KEY `idx_ll_exception_command_order` (`customer_id`,`exception_order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常处理命令幂等审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_exception_return_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_exception_return_item` ( `id` bigint NOT NULL COMMENT '异常退回明细ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `exception_order_id` bigint NOT NULL COMMENT '异常订单ID', `outbound_pallet_item_id` bigint NOT NULL COMMENT '原出库托盘明细ID', `inventory_position_id` bigint NOT NULL COMMENT '原出库库存位置ID', `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原出库托盘码快照', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原出库SKU快照', `max_return_packages` bigint NOT NULL COMMENT '原出库可退箱数上限', `approved_return_packages` bigint NOT NULL COMMENT '批准退回箱数', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `return_carton_id` bigint DEFAULT NULL COMMENT '原生退货箱标识;与普通库存位置互斥', `return_carton_mark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原生退货箱业务箱码快照', `received_packages` bigint NOT NULL DEFAULT '0' COMMENT '已实际退回入仓的累计箱数', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_exception_return_source` (`customer_id`,`exception_order_id`,`outbound_pallet_item_id`,`inventory_position_id`), UNIQUE KEY `uk_ll_exception_return_carton` (`customer_id`,`exception_order_id`,`outbound_pallet_item_id`,`return_carton_id`), KEY `idx_ll_exception_return_order` (`customer_id`,`exception_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常退回原出库库存冻结明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_appointment_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_appointment_command` ( `command_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '持久化幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作、操作者和请求摘要', `operation` varchar(96) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型及目标业务号', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '登录操作人', `appointment_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '系统预约业务单号', `response_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '原命令返回快照,与业务写入同事务', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建UTC时间', PRIMARY KEY (`command_key`), KEY `idx_ll_fba_command_appointment` (`appointment_no`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约命令与变更历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_receiving_agreement`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_receiving_agreement` ( `agreement_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收货预约独立业务键', `version` int NOT NULL COMMENT '预约覆盖范围与确认资料版本', `status` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '有效、取消或已替代状态', `destination_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权威目的仓关联键', `confirmation_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前有效外部约号,失效后清空以释放覆盖', `snapshot_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户逐来源覆盖、确认时区及仓库依据快照', PRIMARY KEY (`agreement_key`), UNIQUE KEY `uk_fba_receiving_confirmation` (`destination_key`,`confirmation_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='独立于送货批次的收货预约'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_receiving_change`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_receiving_change` ( `change_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户预约变化业务键', `version` int NOT NULL COMMENT '变化续办版本', `status` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '待仓库确认、已应用或已撤回状态', `batch_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '受影响原送货批次键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次变化所属客户', `snapshot_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原覆盖快照、逐来源拟保留量、负责人及跟进资料', `result_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '确认后的实际批次去向及逐步骤结果', `active_ref` varchar(260) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '同批同客户唯一未解决变化引用', PRIMARY KEY (`change_key`), UNIQUE KEY `uk_fba_receiving_pending` (`active_ref`), KEY `idx_fba_receiving_pending_batch` (`batch_key`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保留原安排且阻止误发车的客户变化'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_receiving_member`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_receiving_member` ( `agreement_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属收货预约业务键', `batch_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定送货批次键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '货物所属客户标识', `active_ref` varchar(260) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '有效批次与客户唯一引用,退出后清空且历史保留', PRIMARY KEY (`agreement_key`,`batch_key`,`customer_id`), UNIQUE KEY `uk_fba_receiving_active_member` (`active_ref`), KEY `idx_fba_receiving_batch` (`batch_key`,`customer_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收货预约当前覆盖关联及退出历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_receiving_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_receiving_plan` ( `batch_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定送货批次键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计划所属客户标识', `snapshot_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本客户未确认计划、目标窗口及业务时区,不含有效预约确认', PRIMARY KEY (`batch_key`,`customer_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='按批次及客户保存的未确认收货计划'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fba_receiving_revision`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fba_receiving_revision` ( `agreement_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收货预约业务键', `version` int NOT NULL COMMENT '不可变覆盖与确认版本', `snapshot_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '该版本完整客户覆盖、确认时段及回复依据', PRIMARY KEY (`agreement_key`,`version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收货预约覆盖与确认不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_finance_fee_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_finance_fee_command` ( `id` bigint NOT NULL COMMENT '幂等命令ID', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人ID', `action` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'CREATE、SUBMIT、REVIEW、ADJUST或VOID', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容SHA-256', `source_fee_id` bigint NOT NULL COMMENT '稳定费用来源ID', `source_version` int NOT NULL COMMENT '命令结果版本', `created_at` datetime(3) NOT NULL COMMENT '命令创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_finance_fee_command` (`operator_id`,`action`,`idempotency_key`), KEY `idx_ll_finance_fee_command_source` (`source_fee_id`,`source_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外费用来源写操作幂等审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_finance_fee_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_finance_fee_source` ( `id` bigint NOT NULL COMMENT '费用版本记录ID', `source_fee_id` bigint NOT NULL COMMENT '跨版本稳定费用来源ID', `source_version` int NOT NULL COMMENT '费用来源版本,从1递增', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `customer_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户名称快照', `source_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外费用来源类型', `source_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源业务编号或入仓码快照', `business_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源业务类型', `business_id` bigint DEFAULT NULL COMMENT '来源业务记录ID', `business_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源业务编号', `order_id` bigint DEFAULT NULL COMMENT '关联订单ID', `inbound_id` bigint DEFAULT NULL COMMENT '关联海外入仓计划或入仓记录ID', `inbound_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '关联入仓码;并非所有费用必填', `container_id` bigint DEFAULT NULL COMMENT '关联柜次ID', `container_booking_id` bigint DEFAULT NULL COMMENT '来源订舱柜ID', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实集装箱号快照', `warehouse_id` bigint DEFAULT NULL COMMENT '关联海外仓ID', `fee_item_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项目编码快照', `fee_item_name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项目名称快照', `direction` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RECEIVABLE应收或PAYABLE应付', `supplier_id` bigint DEFAULT NULL COMMENT '应付供应商ID', `supplier_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应付供应商名称快照', `supplier_category` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应付供应商类别约束', `settlement_mode` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'ON_ACCOUNT账期应付或DIRECT_PAID业务已付', `paid_at` datetime(3) DEFAULT NULL COMMENT '直接已付时间', `payment_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '直接已付方式', `payment_reference_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '直接已付流水号', `payment_voucher_file_ids` json DEFAULT NULL COMMENT '直接已付凭证文件ID快照', `wallet_settlement` json DEFAULT NULL COMMENT '已实扣应收的Finance资金命令、冻结和消费流水引用', `business_date` date NOT NULL COMMENT '费用业务日期', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '财务结算币种,当前固定CNY', `amount` decimal(20,6) NOT NULL COMMENT '费用金额', `review_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'DRAFT、PENDING、APPROVED或REJECTED', `publication_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'UNPUBLISHED或PUBLISHED', `source_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ACTIVE、SUPERSEDED或VOIDED', `review_reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核或作废原因', `reviewer_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核人ID', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人ID', `updated_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '最后更新人ID', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', `original_currency` varchar(8) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '原币币种', `original_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '原币金额', `exchange_rate` decimal(18,8) NOT NULL DEFAULT '1.00000000' COMMENT '原币折算CNY汇率', `exchange_rate_month` char(7) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '汇率月份YYYY-MM', `chargeable_quantity` decimal(18,4) DEFAULT NULL COMMENT '计费数量', `quantity_unit` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计费单位', `unit_price` decimal(18,4) DEFAULT NULL COMMENT '原币单价', `period_start` date DEFAULT NULL COMMENT '周期费用开始日期', `period_end` date DEFAULT NULL COMMENT '周期费用结束日期', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_finance_fee_version` (`source_fee_id`,`source_version`), KEY `idx_ll_finance_fee_customer` (`customer_id`,`source_status`,`created_at`), KEY `idx_ll_finance_fee_business` (`business_type`,`business_no`,`created_at`), KEY `idx_ll_finance_fee_container_customer` (`container_booking_id`,`customer_id`,`source_status`,`created_at`), CONSTRAINT `chk_ll_finance_fee_amount` CHECK ((`amount` > 0)), CONSTRAINT `chk_ll_finance_fee_currency` CHECK ((`currency` = _utf8mb4'CNY')), CONSTRAINT `chk_ll_finance_fee_direction` CHECK ((`direction` in (_utf8mb4'RECEIVABLE',_utf8mb4'PAYABLE'))), CONSTRAINT `chk_ll_finance_fee_publication` CHECK ((`publication_status` in (_utf8mb4'UNPUBLISHED',_utf8mb4'PUBLISHED'))), CONSTRAINT `chk_ll_finance_fee_review` CHECK ((`review_status` in (_utf8mb4'DRAFT',_utf8mb4'PENDING',_utf8mb4'APPROVED',_utf8mb4'REJECTED'))), CONSTRAINT `chk_ll_finance_fee_status` CHECK ((`source_status` in (_utf8mb4'ACTIVE',_utf8mb4'SUPERSEDED',_utf8mb4'VOIDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外业务不可变费用来源版本;发布后经跨区事件进入Finance'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_capacity_offer`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_capacity_offer` ( `id` bigint NOT NULL COMMENT '内部主键', `offer_no` varchar(64) NOT NULL COMMENT '拼车运力发布业务编号', `trip_id` bigint NOT NULL COMMENT '唯一所属车次', `trip_no` varchar(64) NOT NULL COMMENT '车次业务编号', `status` varchar(16) NOT NULL COMMENT '发布状态:草稿、开放、暂停、关闭', `cutoff_at` datetime(3) NOT NULL COMMENT '最晚交货及新询价截止UTC时间', `contact_name` varchar(128) DEFAULT NULL COMMENT '对内部销售公开的调度联系人', `contact_phone` varchar(128) DEFAULT NULL COMMENT '对内部销售公开的调度联系电话', `remark` varchar(1000) DEFAULT NULL COMMENT '公开承运说明', `published_fingerprint` char(64) DEFAULT NULL COMMENT '已核对路线车辆及容量计划事实摘要', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` varchar(64) NOT NULL COMMENT '创建人', `created_at` datetime(3) NOT NULL COMMENT '创建UTC时间', `updated_by` varchar(64) NOT NULL COMMENT '修改人', `updated_at` datetime(3) NOT NULL COMMENT '修改UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_capacity_offer_no` (`offer_no`), UNIQUE KEY `uk_fleet_capacity_offer_trip` (`trip_id`), KEY `idx_fleet_capacity_offer_status` (`status`,`cutoff_at`,`id`), CONSTRAINT `fk_fleet_capacity_offer_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`), CONSTRAINT `chk_fleet_capacity_offer_status` CHECK ((`status` in (_utf8mb4'DRAFT',_utf8mb4'OPEN',_utf8mb4'PAUSED',_utf8mb4'CLOSED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='内部拼车车次余位发布;容量实时计算不在此另存'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_capacity_offer_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_capacity_offer_command` ( `id` bigint NOT NULL COMMENT '内部主键', `trip_id` bigint NOT NULL COMMENT '所属车次锁作用域', `operator_id` varchar(64) NOT NULL COMMENT '原请求操作者', `action` varchar(32) NOT NULL COMMENT '业务命令类型', `scope_no` varchar(64) NOT NULL COMMENT '发布或预订业务编号作用域', `idempotency_key` varchar(128) NOT NULL COMMENT '原请求幂等键', `request_hash` char(64) NOT NULL COMMENT '原请求业务内容摘要', `result_json` json NOT NULL COMMENT '成功命令原始结果用于精确重放', `created_at` datetime(3) NOT NULL COMMENT '命令完成UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_capacity_offer_command` (`trip_id`,`operator_id`,`action`,`scope_no`,`idempotency_key`), CONSTRAINT `fk_fleet_capacity_command_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拼车发布及销售意向持久幂等结果'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_driver`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_driver` ( `id` bigint NOT NULL COMMENT '内部主键', `driver_no` varchar(32) NOT NULL COMMENT '司机业务编号', `warehouse_id` bigint DEFAULT NULL COMMENT '所属公共仓库引用', `warehouse_code` varchar(64) DEFAULT NULL COMMENT '所属仓库编码快照', `warehouse_name` varchar(256) DEFAULT NULL COMMENT '所属仓库名称快照', `vehicle_models` varchar(128) DEFAULT NULL COMMENT '可驾驶车型描述', `languages_and_area` varchar(256) DEFAULT NULL COMMENT '语言及服务区域', `medical_expires_on` date DEFAULT NULL COMMENT '体检到期日,当前不作为必需资质', `training_expires_on` date DEFAULT NULL COMMENT '培训安全到期日,当前不作为必需资质', `insurance_expires_on` date DEFAULT NULL COMMENT '保险到期日,当前不作为必需资质', `name` varchar(128) NOT NULL COMMENT '姓名', `phone` varchar(64) NOT NULL COMMENT '联系电话', `ownership` varchar(16) NOT NULL COMMENT '归属 OWNED自有 DISPATCHED外派', `region` varchar(16) NOT NULL COMMENT '区域 DOMESTIC国内 OVERSEAS海外', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用', `review_status` varchar(16) NOT NULL DEFAULT 'PENDING' COMMENT '证照审核 PENDING待审 APPROVED通过 REJECTED打回', `license_number` varchar(128) DEFAULT NULL COMMENT '驾驶证编号', `license_type` varchar(64) DEFAULT NULL COMMENT '驾驶证类型', `license_issued_on` date DEFAULT NULL COMMENT '驾驶证签发日期', `license_expires_on` date DEFAULT NULL COMMENT '驾驶证有效截止日', `license_zone` varchar(64) NOT NULL COMMENT '证照有效日期的IANA时区', `license_file_id` bigint DEFAULT NULL COMMENT '平台驾驶证文件引用', `remark` varchar(1000) DEFAULT NULL COMMENT '备注', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '并发版本', `created_by` varchar(64) NOT NULL COMMENT '创建人', `created_at` datetime(3) NOT NULL COMMENT '创建时间UTC', `updated_by` varchar(64) NOT NULL COMMENT '修改人', `updated_at` datetime(3) NOT NULL COMMENT '修改时间UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_driver_no` (`driver_no`), KEY `idx_fleet_driver_page` (`active`,`review_status`,`updated_at`,`id`), KEY `idx_fleet_driver_expiry` (`license_expires_on`), CONSTRAINT `chk_fleet_driver_dates` CHECK (((`license_issued_on` is null) or (`license_expires_on` is null) or (`license_issued_on` <= `license_expires_on`))), CONSTRAINT `chk_fleet_driver_ownership` CHECK ((`ownership` in (_utf8mb4'OWNED',_utf8mb4'DISPATCHED'))), CONSTRAINT `chk_fleet_driver_region` CHECK ((`region` in (_utf8mb4'DOMESTIC',_utf8mb4'OVERSEAS'))), CONSTRAINT `chk_fleet_driver_review` CHECK ((`review_status` in (_utf8mb4'PENDING',_utf8mb4'APPROVED',_utf8mb4'REJECTED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台司机档案'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_driver_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_driver_history` ( `id` bigint NOT NULL COMMENT '内部主键', `driver_id` bigint NOT NULL COMMENT '司机内部引用', `record_version` bigint NOT NULL COMMENT '操作后的档案版本', `action` varchar(32) NOT NULL COMMENT '创建编辑启停证照上传及审核动作', `reason` varchar(1000) DEFAULT NULL COMMENT '操作原因或审核意见', `license_file_id` bigint DEFAULT NULL COMMENT '当时驾驶证文件引用', `snapshot_json` json NOT NULL COMMENT '操作后不可变档案快照', `operator_id` varchar(64) NOT NULL COMMENT '操作人', `occurred_at` datetime(3) NOT NULL COMMENT '操作时间UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_driver_history_version` (`driver_id`,`record_version`), KEY `idx_fleet_driver_history_file` (`driver_id`,`license_file_id`), CONSTRAINT `fk_fleet_driver_history_driver` FOREIGN KEY (`driver_id`) REFERENCES `ll_fleet_driver` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='司机档案及审核历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_external_booking`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_external_booking` ( `id` bigint NOT NULL COMMENT '内部主键', `booking_no` varchar(32) NOT NULL COMMENT '外接预订业务编号', `trip_id` bigint NOT NULL COMMENT '所属车次', `trip_no` varchar(32) NOT NULL COMMENT '车次业务编号', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '委托客户及付款归属', `customer_code` varchar(64) NOT NULL COMMENT '客户编号快照', `customer_name` varchar(255) NOT NULL COMMENT '客户名称快照', `status` varchar(16) NOT NULL COMMENT 'DRAFT询价/CONFIRMED占位/RECEIVED确认实收/BOUND关联发运/CANCELLED取消', `cargo_json` json NOT NULL COMMENT '货物、计划载荷、联系人及约定报价快照', `quote_source_json` json DEFAULT NULL COMMENT '选用销售报价的可信版本快照,与实际成交金额分开保存', `destination_key` varchar(160) NOT NULL COMMENT '已有路线卸货站匹配键', `destination_label` varchar(255) NOT NULL COMMENT '约定卸货站名称', `agreed_amount` decimal(16,2) DEFAULT NULL COMMENT '约定金额,非已入账应收或实收', `idempotency_key` varchar(128) NOT NULL COMMENT '登记请求键', `request_hash` char(64) NOT NULL COMMENT '登记内容摘要', `confirm_key` varchar(128) DEFAULT NULL COMMENT '承运确认请求键', `confirm_hash` char(64) DEFAULT NULL COMMENT '承运确认摘要', `cancel_key` varchar(128) DEFAULT NULL COMMENT '取消请求键', `cancel_hash` char(64) DEFAULT NULL COMMENT '取消摘要', `incoming_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '正式来货单业务编号', `dispatch_no` varchar(64) DEFAULT NULL COMMENT '已关联客户排车业务编号', `receipt_json` json DEFAULT NULL COMMENT '实测来源及运营确认的托位和运费依据', `incoming_key` varchar(128) DEFAULT NULL COMMENT '来货登记请求键', `incoming_hash` char(64) DEFAULT NULL COMMENT '来货登记摘要', `receipt_key` varchar(128) DEFAULT NULL COMMENT '实收确认请求键', `receipt_hash` char(64) DEFAULT NULL COMMENT '实收确认摘要', `binding_key` varchar(128) DEFAULT NULL COMMENT '关联发运请求键', `binding_hash` char(64) DEFAULT NULL COMMENT '关联发运摘要', `offer_id` bigint DEFAULT NULL COMMENT '来源运力发布,普通车次预订为空', `sales_owner_user_id` varchar(64) DEFAULT NULL COMMENT '登录身份冻结的销售负责人', `business_type` varchar(32) DEFAULT NULL COMMENT '本土商业类型LOCAL_LOOSEBOARD或US_TRUCK', `delivery_mode` varchar(32) DEFAULT NULL COMMENT '客户送仓或人工安排提货回仓', `estimated_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计实际到我仓UTC时间', `expected_pallet_count` int DEFAULT NULL COMMENT '预计实托数,与托位分开且未知为空', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '记录版本', `created_by` varchar(64) NOT NULL COMMENT '登记人', `created_at` datetime(3) NOT NULL COMMENT '登记UTC时间', `updated_by` varchar(64) NOT NULL COMMENT '修改人', `updated_at` datetime(3) NOT NULL COMMENT '修改UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_booking_no` (`booking_no`), UNIQUE KEY `uk_fleet_booking_create` (`trip_id`,`created_by`,`idempotency_key`), UNIQUE KEY `uk_fleet_booking_incoming` (`incoming_no`), KEY `idx_fleet_booking_offer` (`offer_id`,`status`,`id`), KEY `idx_fleet_booking_sales` (`sales_owner_user_id`,`offer_id`,`id`), KEY `idx_fleet_booking_trip` (`trip_id`,`status`,`id`), KEY `idx_fleet_booking_dispatch` (`dispatch_no`), CONSTRAINT `fk_fleet_booking_offer` FOREIGN KEY (`offer_id`) REFERENCES `ll_fleet_capacity_offer` (`id`), CONSTRAINT `fk_fleet_booking_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`), CONSTRAINT `chk_fleet_booking_expected_pallet` CHECK (((`expected_pallet_count` is null) or (`expected_pallet_count` > 0))), CONSTRAINT `chk_fleet_booking_status` CHECK ((`status` in (_utf8mb4'DRAFT',_utf8mb4'CONFIRMED',_utf8mb4'RECEIVED',_utf8mb4'BOUND',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='外接询价及确认承运占位;货物收发和费用入账分别引用正式事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_finance_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_finance_source` ( `id` bigint unsigned NOT NULL COMMENT '来源提交主键', `record_id` bigint unsigned NOT NULL COMMENT '车辆运维记录主键', `source_version` bigint unsigned NOT NULL COMMENT '独立财务来源版本,从1递增', `record_version` bigint unsigned NOT NULL COMMENT '提交时运维记录版本', `operator_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '提交操作人标识', `request_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原请求幂等键', `request_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范请求摘要,含sha256前缀', `event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关联公共Outbox事件ID', `payload_json` json NOT NULL COMMENT '不可变公司成本来源快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '提交时间UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_finance_source_version` (`record_id`,`source_version`), UNIQUE KEY `uk_fleet_finance_source_request` (`record_id`,`operator_id`,`request_key`), UNIQUE KEY `uk_fleet_finance_source_event` (`event_id`), CONSTRAINT `chk_fleet_finance_source_version` CHECK ((`source_version` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='维修救援公司成本提交来源,不保存付款推定'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pickup_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pickup_command` ( `trip_no` varchar(64) NOT NULL COMMENT '取货车次号', `request_key` varchar(128) NOT NULL COMMENT '成功命令幂等键', `request_hash` varchar(64) NOT NULL COMMENT '命令动作与内容摘要', PRIMARY KEY (`trip_no`,`request_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='取货命令幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pickup_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pickup_history` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '操作流水', `customer_id` varchar(64) NOT NULL COMMENT '客户隔离键', `transfer_no` varchar(64) NOT NULL COMMENT '原转运单号', `trip_no` varchar(64) NOT NULL COMMENT '当时取货车次号', `action` varchar(32) NOT NULL COMMENT '安排解除取货到仓动作', `operator_id` varchar(64) NOT NULL COMMENT '操作人', `occurred_at` datetime NOT NULL COMMENT '操作UTC时间', `detail` varchar(2000) DEFAULT NULL COMMENT '操作说明', PRIMARY KEY (`id`), KEY `idx_pickup_history_source` (`customer_id`,`transfer_no`,`id`), KEY `idx_pickup_history_trip` (`trip_no`,`id`) ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='取货不可变操作历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pickup_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pickup_plan` ( `trip_no` varchar(64) NOT NULL COMMENT '现有车辆车次号', `request_hash` varchar(64) NOT NULL COMMENT '创建来源与计划摘要', PRIMARY KEY (`trip_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='仓储转运取货计划'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pickup_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pickup_task` ( `transfer_order_id` bigint NOT NULL COMMENT '原仓储转运单ID,一票唯一', `customer_id` varchar(64) NOT NULL COMMENT '客户隔离键', `transfer_no` varchar(64) NOT NULL COMMENT '原仓储转运单号', `trip_no` varchar(64) DEFAULT NULL COMMENT '当前取货车次,解除后为空', `status` varchar(32) NOT NULL COMMENT 'WAITING待安排 ASSIGNED已安排 PICKED已取货 ARRIVED已送仓', `actual_packages` int DEFAULT NULL COMMENT '司机实提箱数,非仓库实收', `picked_at` datetime DEFAULT NULL COMMENT '实际确认取货UTC时间', `arrived_at` datetime DEFAULT NULL COMMENT '实际确认送仓UTC时间', `evidence_json` longtext COMMENT '本票已确认凭证元数据', `remark` varchar(1000) DEFAULT NULL COMMENT '取货备注', `updated_at` datetime NOT NULL COMMENT '最近修改UTC时间', PRIMARY KEY (`transfer_order_id`), UNIQUE KEY `uk_pickup_source` (`customer_id`,`transfer_no`), KEY `idx_pickup_trip` (`trip_no`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='仓储转运逐票取货执行'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pickup_upload`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pickup_upload` ( `transfer_order_id` bigint NOT NULL COMMENT '凭证所属原单', `trip_no` varchar(64) NOT NULL COMMENT '凭证所属车次', `file_id` bigint NOT NULL COMMENT '平台归属文件ID', PRIMARY KEY (`file_id`), KEY `idx_pickup_upload_source` (`transfer_order_id`,`trip_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='取货上传凭证精确单据归属'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_pool_order_link`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_pool_order_link` ( `id` bigint NOT NULL COMMENT '内部主键', `booking_id` bigint NOT NULL COMMENT '唯一外接预订', `booking_no` varchar(64) NOT NULL COMMENT '预订业务编号', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商业客户隔离范围', `business_type` varchar(32) NOT NULL COMMENT '本土散板或本土卡车商业类型', `business_order_id` bigint NOT NULL COMMENT '对应商业订单内部关联', `business_order_no` varchar(64) NOT NULL COMMENT '本土商业订单业务编号', `warehouse_id` varchar(128) NOT NULL COMMENT '真实我仓上车仓库', `destination_key` varchar(160) NOT NULL COMMENT '冻结卸货站匹配键', `delivery_mode` varchar(32) NOT NULL COMMENT '客户送仓或人工提货回仓', `delivery_instructions` varchar(1000) DEFAULT NULL COMMENT '实际到仓交货说明', `incoming_no` varchar(64) DEFAULT NULL COMMENT '真实来货业务编号,未登记为空', `lastleg_order_id` bigint DEFAULT NULL COMMENT '唯一真实尾程来源,未发生为空', `dispatch_no` varchar(64) DEFAULT NULL COMMENT '已关联客户排车编号', `fulfillment_stage` varchar(32) NOT NULL COMMENT '实际履约阶段,不能手工冒充完成', `stage_occurred_at` datetime(3) NOT NULL COMMENT '实际阶段发生UTC时间', `actual_pallet_count` int DEFAULT NULL COMMENT '实际去重托盘数,未知为空', `actual_package_count` int DEFAULT NULL COMMENT '实际箱数,未知为空', `actual_pallet_spaces` int DEFAULT NULL COMMENT '实际核准占用托位,未知为空', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '桥记录版本', `creation_request_hash` char(64) NOT NULL COMMENT '商业单创建身份和预报事实摘要', `created_by` varchar(64) NOT NULL COMMENT '确认承运操作者', `created_at` datetime(3) NOT NULL COMMENT '创建UTC时间', `updated_at` datetime(3) NOT NULL COMMENT '修改UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_pool_order_booking` (`booking_id`), UNIQUE KEY `uk_fleet_pool_order_booking_no` (`booking_no`), UNIQUE KEY `uk_fleet_pool_order_business` (`business_type`,`business_order_id`), UNIQUE KEY `uk_fleet_pool_order_incoming` (`incoming_no`), UNIQUE KEY `uk_fleet_pool_order_lastleg` (`lastleg_order_id`), KEY `idx_fleet_pool_order_customer` (`customer_id`,`business_type`,`business_order_no`), KEY `idx_fleet_pool_order_dispatch` (`customer_id`,`dispatch_no`), CONSTRAINT `fk_fleet_pool_order_booking` FOREIGN KEY (`booking_id`) REFERENCES `ll_fleet_external_booking` (`id`), CONSTRAINT `chk_fleet_pool_order_actual` CHECK ((((`actual_pallet_count` is null) or (`actual_pallet_count` >= 0)) and ((`actual_package_count` is null) or (`actual_package_count` >= 0)) and ((`actual_pallet_spaces` is null) or (`actual_pallet_spaces` >= 0)))), CONSTRAINT `chk_fleet_pool_order_type` CHECK ((`business_type` in (_utf8mb4'LOCAL_LOOSEBOARD',_utf8mb4'US_TRUCK'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拼车预订与本土商业单唯一真实履约关联,不重复记运费'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_quote`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_quote` ( `id` bigint NOT NULL COMMENT '报价记录主键', `quote_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价业务编号', `kind` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价用途采购或销售', `party_id` bigint NOT NULL COMMENT '供应商或客户主档标识', `party_name` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '往来单位名称快照', `origin_city` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发货城市', `destination_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目的仓业务编码', `valid_from` date NOT NULL COMMENT '报价生效日期', `valid_to` date NOT NULL COMMENT '报价失效日期含当天', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价启停或删除状态', `natural_key` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价组合去重摘要', `details_json` json NOT NULL COMMENT '完整报价明细快照', `record_version` bigint NOT NULL COMMENT '报价记录版本', `create_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建幂等键', `create_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建请求含导入批次内容摘要', `created_by` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建操作人标识', `created_at` datetime(3) NOT NULL COMMENT '创建时间UTC', `updated_at` datetime(3) NOT NULL COMMENT '更新时间UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_quote_no` (`quote_no`), UNIQUE KEY `uk_fleet_quote_natural` (`natural_key`), UNIQUE KEY `uk_fleet_quote_create` (`created_by`,`create_key`), KEY `idx_fleet_quote_search` (`kind`,`status`,`valid_from`,`valid_to`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆采购与外接销售报价'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_quote_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_quote_history` ( `id` bigint NOT NULL COMMENT '报价历史主键', `quote_id` bigint NOT NULL COMMENT '报价记录标识', `record_version` bigint NOT NULL COMMENT '报价记录版本', `action` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价操作类型', `operator_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人标识', `occurred_at` datetime(3) NOT NULL COMMENT '操作时间UTC', `snapshot_json` json NOT NULL COMMENT '报价完整版本快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_quote_history_version` (`quote_id`,`record_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆报价不可变版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_resource_assignment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_resource_assignment` ( `resource_kind` varchar(16) NOT NULL COMMENT '资源种类 VEHICLE或DRIVER', `resource_id` bigint NOT NULL COMMENT '对应车辆或司机档案引用', `trip_id` bigint NOT NULL COMMENT '占用车次', `trip_no` varchar(32) NOT NULL COMMENT '占用车次业务编号', PRIMARY KEY (`resource_kind`,`resource_id`), KEY `idx_fleet_resource_trip` (`trip_id`), CONSTRAINT `fk_fleet_resource_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`), CONSTRAINT `chk_fleet_resource_kind` CHECK ((`resource_kind` in (_utf8mb4'VEHICLE',_utf8mb4'DRIVER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车辆及司机当前车次占用,释放后删除锁行,历史保留在车次'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip` ( `id` bigint NOT NULL COMMENT '内部主键', `trip_no` varchar(32) NOT NULL COMMENT '车次业务编号', `idempotency_key` varchar(128) NOT NULL COMMENT '创建请求幂等键', `request_hash` varchar(64) NOT NULL COMMENT '创建请求SHA256', `status` varchar(16) NOT NULL COMMENT '车次状态', `warehouse_id` bigint NOT NULL COMMENT '起运公共仓库引用', `warehouse_code` varchar(64) NOT NULL COMMENT '起运仓编码快照', `warehouse_name` varchar(256) NOT NULL COMMENT '起运仓名称快照', `vehicle_id` bigint DEFAULT NULL COMMENT '车辆档案引用', `vehicle_plate` varchar(64) DEFAULT NULL COMMENT '分配时车牌快照', `driver_id` bigint DEFAULT NULL COMMENT '司机档案引用', `driver_name` varchar(128) DEFAULT NULL COMMENT '分配时司机姓名', `driver_phone` varchar(64) DEFAULT NULL COMMENT '分配时司机电话', `max_pallet_spaces` int DEFAULT NULL COMMENT '分配时托位容量快照', `max_load_kg` decimal(12,3) DEFAULT NULL COMMENT '分配时载重千克', `max_volume_cbm` decimal(12,3) DEFAULT NULL COMMENT '分配时可用容积立方米', `planned_departure_at` datetime(3) NOT NULL COMMENT '计划发车UTC', `expected_driver_end_at` datetime(3) NOT NULL COMMENT '司机预计任务结束UTC,含承担的返程转场', `departed_at` datetime(3) DEFAULT NULL COMMENT '实际发车UTC', `completed_at` datetime(3) DEFAULT NULL COMMENT '实际运输完成UTC', `stops_json` json NOT NULL COMMENT '按顺序保存的路线站点', `planned_load_json` json DEFAULT NULL COMMENT '拣货前自有货计划载荷与逐段剩余容量', `load_json` json DEFAULT NULL COMMENT '已确认实物装载及客户货物来源快照', `loading_review_json` longtext COMMENT '整车理货审核快照,空值为待审核', `departure_key` varchar(128) DEFAULT NULL COMMENT '整车发车幂等标识', `departure_hash` char(64) DEFAULT NULL COMMENT '整车发车请求摘要', `departure_result_json` json DEFAULT NULL COMMENT '整车发车结果及各客户出库结果', `completion_json` json DEFAULT NULL COMMENT '货物结案来源及幂等结果快照', `vehicle_release_json` json DEFAULT NULL COMMENT '车辆任务结束地点状态与幂等记录', `driver_release_json` json DEFAULT NULL COMMENT '司机任务结束地点与幂等记录', `remark` varchar(1000) DEFAULT NULL COMMENT '备注', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '并发版本', `created_by` varchar(64) NOT NULL COMMENT '创建人', `created_at` datetime(3) NOT NULL COMMENT '创建UTC时间', `updated_by` varchar(64) NOT NULL COMMENT '更新人', `updated_at` datetime(3) NOT NULL COMMENT '更新UTC时间', `trip_purpose` varchar(16) NOT NULL DEFAULT 'DELIVERY' COMMENT 'DELIVERY出库派送 PICKUP上门取货入仓', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_trip_no` (`trip_no`), UNIQUE KEY `uk_fleet_trip_create` (`created_by`,`idempotency_key`), KEY `idx_fleet_trip_page` (`warehouse_id`,`status`,`updated_at`,`id`), KEY `fk_fleet_trip_vehicle` (`vehicle_id`), KEY `fk_fleet_trip_driver` (`driver_id`), CONSTRAINT `fk_fleet_trip_driver` FOREIGN KEY (`driver_id`) REFERENCES `ll_fleet_driver` (`id`), CONSTRAINT `fk_fleet_trip_vehicle` FOREIGN KEY (`vehicle_id`) REFERENCES `ll_vehicle` (`id`), CONSTRAINT `chk_fleet_trip_status` CHECK ((`status` in (_utf8mb4'PLANNED',_utf8mb4'DEPARTING',_utf8mb4'IN_TRANSIT',_utf8mb4'COMPLETED',_utf8mb4'CANCELLED'))), CONSTRAINT `chk_fleet_trip_time` CHECK ((`expected_driver_end_at` > `planned_departure_at`)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台运输车次'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_cost`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_cost` ( `id` bigint NOT NULL COMMENT '内部主键', `trip_id` bigint NOT NULL COMMENT '车次内部引用', `cost_no` varchar(32) NOT NULL COMMENT '车次成本业务编号', `category` varchar(16) NOT NULL COMMENT '直接成本类别FUEL/DRIVER/TOLL/PARKING/OTHER', `currency` varchar(3) NOT NULL COMMENT '原始成本币种CNY/USD,不混币汇总', `amount` decimal(14,2) NOT NULL COMMENT '运营登记金额,不代表付款', `incurred_at` datetime(3) NOT NULL COMMENT '实际费用发生UTC时间', `remark` varchar(1000) DEFAULT NULL COMMENT '费用备注', `record_version` bigint NOT NULL COMMENT '成本记录版本', `request_key` varchar(128) NOT NULL COMMENT '创建幂等键', `request_hash` char(64) NOT NULL COMMENT '创建请求摘要', `created_by` varchar(64) NOT NULL COMMENT '登记人', `updated_by` varchar(64) NOT NULL COMMENT '最近更正人', `created_at` datetime(3) NOT NULL COMMENT '登记UTC时间', `updated_at` datetime(3) NOT NULL COMMENT '更正UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_trip_cost_no` (`cost_no`), UNIQUE KEY `uk_fleet_trip_cost_request` (`trip_id`,`created_by`,`request_key`), KEY `idx_fleet_trip_cost_page` (`trip_id`,`incurred_at`,`id`), CONSTRAINT `fk_fleet_trip_cost_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`), CONSTRAINT `ck_fleet_trip_cost_amount` CHECK ((`amount` >= 0)), CONSTRAINT `ck_fleet_trip_cost_category` CHECK ((`category` in (_utf8mb4'FUEL',_utf8mb4'DRIVER',_utf8mb4'TOLL',_utf8mb4'PARKING',_utf8mb4'OTHER'))), CONSTRAINT `ck_fleet_trip_cost_currency` CHECK ((`currency` in (_utf8mb4'CNY',_utf8mb4'USD'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车次直接运营成本,不生成客户账单或付款'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_cost_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_cost_history` ( `id` bigint NOT NULL COMMENT '内部主键', `cost_id` bigint NOT NULL COMMENT '成本记录内部引用', `record_version` bigint NOT NULL COMMENT '成本更正后版本', `action` varchar(16) NOT NULL COMMENT '成本操作CREATE/UPDATE', `reason` varchar(1000) DEFAULT NULL COMMENT '登记或更正说明', `operator_id` varchar(64) NOT NULL COMMENT '操作人', `occurred_at` datetime(3) NOT NULL COMMENT '操作UTC时间', `snapshot_json` json NOT NULL COMMENT '成本与当时整趟汇总及分摊快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_trip_cost_history` (`cost_id`,`record_version`), CONSTRAINT `fk_fleet_trip_cost_history` FOREIGN KEY (`cost_id`) REFERENCES `ll_fleet_trip_cost` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车次成本不可变更正历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_dispatch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_dispatch` ( `dispatch_id` bigint NOT NULL COMMENT '客户排车单内部引用,唯一有效车次关联', `dispatch_no` varchar(64) NOT NULL COMMENT '客户排车业务单号', `customer_id` varchar(128) NOT NULL COMMENT '排车单自身客户归属', `trip_id` bigint NOT NULL COMMENT '共享运输车次内部引用', `trip_no` varchar(32) NOT NULL COMMENT '共享运输车次业务编号', `package_count` int NOT NULL COMMENT '关联时待发运箱数快照', `bound_by` varchar(64) NOT NULL COMMENT '关联操作人', `bound_at` datetime(3) NOT NULL COMMENT '关联UTC时间', `review_json` longtext COMMENT '客户排车调度审核快照,空值为待审核', PRIMARY KEY (`dispatch_id`), UNIQUE KEY `uk_fleet_trip_dispatch_no` (`dispatch_no`), UNIQUE KEY `uk_fleet_trip_dispatch_trip` (`trip_id`), KEY `idx_fleet_trip_dispatch_trip` (`trip_id`,`dispatch_id`), CONSTRAINT `fk_fleet_trip_dispatch_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车次与各客户排车单的有效关联,解除前快照保留在车次历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_handover`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_handover` ( `id` bigint NOT NULL COMMENT '内部主键', `trip_id` bigint NOT NULL COMMENT '所属车次', `trip_version` bigint NOT NULL COMMENT '交接对应车次历史版本', `trip_no` varchar(32) NOT NULL COMMENT '车次业务编号', `handover_no` varchar(32) NOT NULL COMMENT '交接业务编号', `request_key` varchar(128) NOT NULL COMMENT '交接请求幂等键', `request_hash` char(64) NOT NULL COMMENT '交接请求摘要', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '资源结束并发版本', `handed_over_at` datetime(3) NOT NULL COMMENT '实际交接UTC时间', `snapshot_json` json NOT NULL COMMENT '不可变资源及剩余货物交接快照', `vehicle_release_json` json DEFAULT NULL COMMENT '原车辆任务结束及幂等结果', `driver_release_json` json DEFAULT NULL COMMENT '原司机任务结束及幂等结果', `created_by` varchar(64) NOT NULL COMMENT '记录操作人', `created_at` datetime(3) NOT NULL COMMENT '记录UTC时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_handover_no` (`handover_no`), UNIQUE KEY `uk_fleet_handover_request` (`trip_id`,`request_key`), UNIQUE KEY `uk_fleet_handover_version` (`trip_id`,`trip_version`), KEY `idx_fleet_handover_page` (`trip_id`,`id`), CONSTRAINT `fk_fleet_handover_trip` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='在途车辆司机交接'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_history` ( `id` bigint NOT NULL COMMENT '内部主键', `trip_id` bigint NOT NULL COMMENT '车次内部引用', `record_version` bigint NOT NULL COMMENT '操作后版本', `action` varchar(32) NOT NULL COMMENT '车次操作', `reason` varchar(1000) DEFAULT NULL COMMENT '操作原因', `operator_id` varchar(64) NOT NULL COMMENT '操作人', `occurred_at` datetime(3) NOT NULL COMMENT '操作UTC时间', `snapshot_json` json NOT NULL COMMENT '操作后不可变车次快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_trip_history_version` (`trip_id`,`record_version`), CONSTRAINT `fk_fleet_trip_history` FOREIGN KEY (`trip_id`) REFERENCES `ll_fleet_trip` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='运输车次操作历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_trip_operations_record`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_trip_operations_record` ( `id` bigint NOT NULL COMMENT '出车实测历史主键', `trip_no` varchar(64) NOT NULL COMMENT '车次业务编号', `record_version` bigint NOT NULL COMMENT '实测记录版本从一递增', `details_json` json NOT NULL COMMENT '实际里程英里油耗升与备注快照', `reason` varchar(1000) NOT NULL COMMENT '实测更正说明', `operator_id` varchar(64) NOT NULL COMMENT '实测操作人标识', `request_key` varchar(128) NOT NULL COMMENT '实测保存幂等键', `request_hash` char(64) NOT NULL COMMENT '实测请求内容摘要', `occurred_at` datetime(3) NOT NULL COMMENT '实测保存时间UTC', PRIMARY KEY (`id`), UNIQUE KEY `uk_fleet_operations_version` (`trip_no`,`record_version`), UNIQUE KEY `uk_fleet_operations_request` (`trip_no`,`operator_id`,`request_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车次里程油耗不可变更正记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_vehicle_record`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_vehicle_record` ( `id` bigint NOT NULL COMMENT '记录内部主键', `record_no` varchar(32) NOT NULL COMMENT '车辆运维业务编号', `vehicle_id` bigint NOT NULL COMMENT '所属车辆主键', `vehicle_plate` varchar(64) NOT NULL COMMENT '建档时车牌快照', `record_type` varchar(32) NOT NULL COMMENT '运维类型:保养、加油、维修、故障、救援、异常', `occurred_at` datetime(3) NOT NULL COMMENT '记录发生时间(UTC)', `details_json` json NOT NULL COMMENT '带明确单位的业务字段快照', `files_json` json NOT NULL COMMENT '所属记录照片与上传幂等摘要', `idempotency_key` varchar(128) NOT NULL COMMENT '创建请求幂等键', `request_hash` char(64) NOT NULL COMMENT '原创建业务内容摘要', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` varchar(64) NOT NULL COMMENT '创建操作人', `updated_by` varchar(64) NOT NULL COMMENT '最后操作人', `created_at` datetime(3) NOT NULL COMMENT '创建时间(UTC)', `updated_at` datetime(3) NOT NULL COMMENT '更新时间(UTC)', PRIMARY KEY (`id`), UNIQUE KEY `uk_vehicle_record_no` (`record_no`), UNIQUE KEY `uk_vehicle_record_creation` (`vehicle_id`,`created_by`,`idempotency_key`), KEY `idx_vehicle_record_page` (`vehicle_id`,`record_type`,`occurred_at`,`id`), CONSTRAINT `fk_vehicle_record_vehicle` FOREIGN KEY (`vehicle_id`) REFERENCES `ll_vehicle` (`id`), CONSTRAINT `ck_vehicle_record_type` CHECK ((`record_type` in (_utf8mb4'MAINTENANCE',_utf8mb4'FUEL',_utf8mb4'REPAIR',_utf8mb4'BREAKDOWN',_utf8mb4'RESCUE',_utf8mb4'EXCEPTION'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车辆运维记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_fleet_vehicle_record_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_fleet_vehicle_record_history` ( `id` bigint NOT NULL COMMENT '历史内部主键', `record_id` bigint NOT NULL COMMENT '运维记录主键', `record_version` bigint NOT NULL COMMENT '对应业务版本', `action` varchar(32) NOT NULL COMMENT '操作类型', `reason` varchar(1000) DEFAULT NULL COMMENT '更正原因或附件名称', `operator_id` varchar(64) NOT NULL COMMENT '操作人', `occurred_at` datetime(3) NOT NULL COMMENT '操作时间(UTC)', `snapshot_json` json NOT NULL COMMENT '当时完整业务快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_vehicle_record_revision` (`record_id`,`record_version`), CONSTRAINT `fk_vehicle_record_history` FOREIGN KEY (`record_id`) REFERENCES `ll_fleet_vehicle_record` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='车辆运维记录不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_fba_appointment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_fba_appointment` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `appointment_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '预约单号', `appointment_at` datetime(3) NOT NULL COMMENT '预约时间', `appointment_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `appointment_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `selected_count` int NOT NULL DEFAULT '0', `replacement_nos_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '分批或合并后的新预约业务号列表,非空时原批次只读', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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), `expected_loading_at` datetime(3) NOT NULL, `appointment_end_at` datetime(3) DEFAULT NULL COMMENT '预约结束时间,未明确时为空', `version` int NOT NULL DEFAULT '0' COMMENT '并发版本', `confirmation_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收货方正式外部确认号', `planned_date` date DEFAULT NULL COMMENT '计划当地日期,可只有日期而无时段', `planned_at` datetime(3) DEFAULT NULL COMMENT '计划开始当地时间,待定可空', `planned_end_at` datetime(3) DEFAULT NULL COMMENT '计划结束当地时间', `appointment_start_utc` datetime(3) DEFAULT NULL COMMENT '确认开始UTC时间点', `appointment_end_utc` datetime(3) DEFAULT NULL COMMENT '确认结束UTC时间点', `timezone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓权威IANA时区,未维护不得确认', `origin_warehouse_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际起运仓', `replacement_keys_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '替代批次不可变键列表,只用于内部业务关联', `repartition_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分批或合并原因,原安排及来源明细保留', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_fba_appointment_no` (`customer_id`,`appointment_no`), KEY `idx_ll_fba_appointment_list` (`customer_id`,`appointment_status`,`fba_warehouse_code`,`created_at`), KEY `idx_ll_fba_appointment_planned` (`planned_at`,`appointment_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Batch FBA appointment'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_fba_appointment_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_fba_appointment_item` ( `id` bigint NOT NULL COMMENT '记录主键', `appointment_id` bigint NOT NULL COMMENT '预约主记录标识', `source_key` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定ORDER或BOOKING货源键', `source_version` varchar(160) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '保存时核实的来源版本', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本票所属客户', `order_id` bigint DEFAULT NULL COMMENT '尚未形成尾程订单时为空', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实入仓码,不伪造', `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目的FBA仓编码', `package_count` int DEFAULT NULL COMMENT '所选整票预报箱数,未知保持空', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '取消或失败后释放货源占用', `active_source_key` varchar(160) COLLATE utf8mb4_unicode_ci GENERATED ALWAYS AS ((case when (`active` = 1) then `source_key` else NULL end)) STORED COMMENT '有效货源唯一占用键', `active_order_id` bigint GENERATED ALWAYS AS ((case when (`active` = 1) then `order_id` else NULL end)) STORED COMMENT '有效订单唯一占用键', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建UTC时间', `cargo_verification_version` int DEFAULT NULL COMMENT '采用的预约货物核实版本,未核实时为空', `shipment_references_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '本次采用的货件或追踪号核实快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_fba_item_source` (`appointment_id`,`source_key`), UNIQUE KEY `uk_ll_fba_active_source` (`active_source_key`), UNIQUE KEY `uk_ll_fba_active_order` (`active_order_id`), KEY `idx_ll_fba_item_source_lookup` (`source_key`,`customer_id`), KEY `idx_ll_fba_item_customer_order` (`customer_id`,`order_id`), KEY `idx_ll_fba_active_source` (`customer_id`,`source_key`,`active`), KEY `idx_ll_fba_active_order` (`customer_id`,`order_id`,`active`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入仓前后共用的预约真实货源'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_order` ( `id` bigint NOT NULL COMMENT '入仓单主键', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` bigint NOT NULL COMMENT '租户 ID', `source_region` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源区域', `source_inbound_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源入仓分片 ID', `root_inbound_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '根入仓单 ID', `source_order_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单 ID', `source_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单号', `root_order_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '根订单 ID', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '入仓码', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓 ID', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称', `destination_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的类型:FBA按箱数接收、OVERSEAS逐箱扫码', `package_count` int NOT NULL DEFAULT '0' COMMENT '箱数', `product_quantity` int DEFAULT NULL COMMENT '数量', `pallet_count` int DEFAULT NULL COMMENT '托数', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '毛重(千克)', `net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '净重(千克)', `volume_cbm` decimal(18,6) DEFAULT NULL COMMENT '体积(立方米)', `source_event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源事件 ID', `source_loading_plan_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '装柜计划 ID', `source_loading_plan_version` bigint NOT NULL COMMENT '装柜计划版本', `handover_version` bigint NOT NULL COMMENT '交接版本', `payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '负载摘要', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入仓单状态', `exception_flag` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'NONE' COMMENT '异常标记', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `lx_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发领星入库单代码', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_source` (`customer_id`,`source_region`,`source_inbound_id`), UNIQUE KEY `uk_ll_order_event` (`source_event_id`,`source_inbound_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入仓单快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_order_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_order_item` ( `id` bigint NOT NULL COMMENT '入仓明细主键', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` bigint NOT NULL COMMENT '租户ID', `order_id` bigint NOT NULL COMMENT '入仓单ID', `source_inbound_detail_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源入仓明细ID', `package_count` int NOT NULL COMMENT '箱数', `product_quantity` int DEFAULT NULL COMMENT '数量', `pallet_count` int DEFAULT NULL COMMENT '托数', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '毛重(千克)', `net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '净重(千克)', `dimensional_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '体积重量(千克)', `volume_cbm` decimal(18,6) DEFAULT NULL COMMENT '体积(立方米)', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓ID', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称', `fba_tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA跟踪号', `shipment_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货件编号', `shipping_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '唛头', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU编码', `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名', `product_name_en` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '英文品名', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_item_order` (`customer_id`,`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入仓商品明细快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_pallet_merge`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_pallet_merge` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `task_id` bigint NOT NULL, `merge_group_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `source_pallet_id` bigint NOT NULL, `target_pallet_id` bigint NOT NULL, `source_allocation_id` bigint NOT NULL, `target_allocation_id` bigint NOT NULL, `source_line_id` bigint NOT NULL, `target_line_id` bigint NOT NULL, `source_order_id` bigint NOT NULL, `target_order_id` bigint NOT NULL, `moved_package_count` int NOT NULL, `moved_volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000', `source_pallet_scrapped` tinyint NOT NULL DEFAULT '0', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), KEY `idx_ll_inbound_merge_task` (`customer_id`,`task_id`), KEY `idx_ll_inbound_merge_group` (`merge_group_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_pda_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_pda_operation` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `task_id` bigint NOT NULL, `allocation_id` bigint DEFAULT NULL, `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `request_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `result_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_pda_operation_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_inbound_pda_operation_task` (`task_id`), KEY `idx_ll_inbound_pda_operation_allocation` (`allocation_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_pda_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_pda_task` ( `id` bigint NOT NULL, `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `plan_id` bigint NOT NULL, `task_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `operator_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pushed_at` datetime(3) DEFAULT NULL, `started_at` datetime(3) DEFAULT NULL, `completed_at` datetime(3) DEFAULT NULL, `unload_photo_file_ids` json DEFAULT NULL COMMENT '卸柜照片文件ID列表', `unload_photo_uploaded_at` datetime(3) DEFAULT NULL COMMENT '卸柜照片上传成功时间', `estimated_empty_return_at` datetime(3) DEFAULT NULL COMMENT '预计报空时间(卸柜照片上传成功后两天)', `version` int NOT NULL DEFAULT '0', `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_ll_inbound_pda_task_plan` (`customer_id`,`plan_id`), UNIQUE KEY `uk_ll_inbound_pda_task_no` (`task_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_plan` ( `id` bigint NOT NULL COMMENT '入库计划ID(雪花ID)', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `plan_no` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库单号', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户/客户账号标识', `source_order_id` bigint NOT NULL COMMENT '来源尾程订单ID,一张入仓单对应一张入库计划', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '集装箱号', `overseas_warehouse_id` bigint DEFAULT NULL COMMENT '海外实际收货共享物理仓ID,由PDA认领柜号时冻结', `planned_arrival_date` date DEFAULT NULL COMMENT '人工计划预计到仓日期', `pallet_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '人工计划托盘类型', `assigned_flag` tinyint NOT NULL DEFAULT '0' COMMENT '人工计划是否已分配:0否1是', `merge_required` tinyint NOT NULL DEFAULT '0' COMMENT '人工计划是否要求合托:0否1是', `urgent_flag` tinyint NOT NULL DEFAULT '0' COMMENT '人工计划是否加急:0否1是', `creation_mode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'AUTO' COMMENT '计划生成方式:AUTO柜级自动、MANUAL单票人工、WAREHOUSE_TRANSFER仓储转运', `plan_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '入仓计划备注', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_ASSIGNMENT' COMMENT '入库计划状态:PENDING_ASSIGNMENT待分配及后续正式状态', `line_count` int NOT NULL DEFAULT '0' COMMENT '入仓码明细数量', `pallet_count` int NOT NULL DEFAULT '0' COMMENT '系统自动分配托盘数量', `total_volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000' 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 NOT NULL DEFAULT '0' COMMENT '入库计划乐观锁版本', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_plan_no` (`plan_no`), KEY `idx_ll_inbound_plan_container` (`customer_id`,`container_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入库计划表:每张来源入仓单生成一张入库计划,同柜计划共享集装箱号'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_plan_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_plan_carton` ( `id` bigint NOT NULL COMMENT '箱唛作业主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `order_id` bigint DEFAULT NULL COMMENT '海外首扫确权后的尾程订单ID', `source_inbound_detail_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源入库明细ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU编码快照', `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国内冻结箱唛', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓ID快照', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称快照', `plan_id` bigint DEFAULT NULL COMMENT '海外入库计划ID', `line_id` bigint DEFAULT NULL COMMENT '入库计划明细ID', `plan_pallet_id` bigint DEFAULT NULL COMMENT '海外计划托盘ID', `warehouse_pallet_id` bigint DEFAULT NULL COMMENT '海外实物托盘ID', `warehouse_location_id` bigint DEFAULT NULL COMMENT '海外库位ID', `pda_task_id` bigint DEFAULT NULL COMMENT '首次扫码PDA任务ID', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '箱唛状态:UNASSIGNED、ON_PALLET、AVAILABLE', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `bound_at` datetime(3) DEFAULT NULL COMMENT '绑定托盘时间', `received_at` datetime(3) DEFAULT NULL COMMENT '完成入库时间', `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_carton_mark` (`customer_id`,`carton_mark`), KEY `idx_ll_inbound_carton_plan` (`plan_id`,`status`), KEY `idx_ll_inbound_carton_pallet` (`plan_pallet_id`,`status`), KEY `idx_ll_inbound_carton_order` (`order_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜次冻结箱唛及海外入库箱级作业账'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_plan_line`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_plan_line` ( `id` bigint NOT NULL COMMENT '入库计划明细ID(雪花ID)', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户账号标识', `plan_id` bigint NOT NULL COMMENT '入库计划ID', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '头程入仓码快照', `destination_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'OVERSEAS' COMMENT '目的类型:FBA按箱数接收、OVERSEAS逐箱扫码', `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA仓库编码', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓ID快照', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称快照', `volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '入仓码体积(立方米)', `planned_pallet_count` int NOT NULL DEFAULT '0' COMMENT '该明细分配的托盘数量', `required_package_count` int NOT NULL DEFAULT '0', `delivery_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓目的地址快照', `postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓邮编快照', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系人快照', `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系电话快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_line_order` (`plan_id`,`order_id`), KEY `idx_ll_inbound_line_plan` (`plan_id`), KEY `idx_ll_inbound_line_tenant_plan` (`customer_id`,`plan_id`), KEY `idx_ll_inbound_line_customer_plan` (`customer_id`,`plan_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入库计划明细表:按入仓码和尾程订单维度记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_plan_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_plan_pallet` ( `id` bigint NOT NULL COMMENT '计划托盘ID(雪花ID)', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户账号标识', `plan_id` bigint NOT NULL COMMENT '入库计划ID', `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外仓资源服务返回的真实托盘码', `source_pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发不可变来源托盘号快照', `pallet_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '人工计划托盘类型', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓ID快照', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称快照', `capacity_cbm` decimal(18,4) NOT NULL DEFAULT '2.0000' COMMENT '托盘容量,固定为2立方米', `allocated_volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '已分配体积(立方米)', `sequence_no` int NOT NULL COMMENT '计划内托盘序号', `warehouse_pallet_id` bigint DEFAULT NULL, `warehouse_location_id` bigint DEFAULT NULL, `warehouse_resource_lock_id` bigint DEFAULT NULL, `assignment_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'UNASSIGNED', `locked_at` datetime(3) DEFAULT NULL, `actual_volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000', `actual_package_count` int NOT NULL DEFAULT '0', `version` int NOT NULL DEFAULT '0' COMMENT '收货累计值乐观锁版本', `destination_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的类型:FBA或PRIVATE', `delivery_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓目的地址快照', `postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓邮编快照', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系人快照', `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系电话快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_pallet_sequence` (`plan_id`,`sequence_no`), UNIQUE KEY `uk_ll_inbound_pallet_no` (`customer_id`,`pallet_no`), KEY `idx_ll_inbound_pallet_plan` (`plan_id`), KEY `idx_ll_inbound_pallet_tenant_plan` (`customer_id`,`plan_id`), KEY `idx_ll_inbound_pallet_customer_plan` (`customer_id`,`plan_id`), KEY `idx_ll_inbound_pallet_no` (`pallet_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入库计划托盘表:按目的仓隔离合托'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_plan_pallet_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_plan_pallet_allocation` ( `id` bigint NOT NULL COMMENT '托盘分配记录ID(雪花ID)', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户账号标识', `plan_id` bigint NOT NULL COMMENT '入库计划ID', `line_id` bigint NOT NULL COMMENT '入库计划明细ID', `pallet_id` bigint NOT NULL COMMENT '计划托盘ID', `allocated_volume_cbm` decimal(18,4) NOT NULL COMMENT '该明细分配到托盘的体积(立方米)', `planned_package_count` int NOT NULL DEFAULT '0', `counted_package_count` int NOT NULL DEFAULT '0', `picked_package_count` int NOT NULL DEFAULT '0', `actual_volume_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_COUNT', `version` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inbound_allocation` (`line_id`,`pallet_id`), KEY `idx_ll_inbound_allocation_plan` (`plan_id`), KEY `idx_ll_inbound_allocation_pallet` (`pallet_id`), KEY `idx_ll_inbound_allocation_tenant_plan` (`customer_id`,`plan_id`), KEY `idx_ll_inbound_allocation_customer_plan` (`customer_id`,`plan_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程入库计划托盘分配表:记录入仓码明细与计划托盘的分配关系'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inbound_stock_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inbound_stock_receipt` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `plan_id` bigint NOT NULL, `task_id` bigint NOT NULL, `allocation_id` bigint NOT NULL, `line_id` bigint NOT NULL, `order_id` bigint NOT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名快照', `product_name_en` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '英文品名快照', `sku_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_detail_ids` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `warehouse_pallet_id` bigint NOT NULL, `pallet_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `source_pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发不可变来源托盘号快照', `warehouse_location_id` bigint DEFAULT NULL, `warehouse_location_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `batch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `received_packages` bigint NOT NULL, `received_quantity` bigint DEFAULT '0', `inventory_balance_id` bigint NOT NULL, `inventory_position_id` bigint NOT NULL, `inventory_operation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `received_at` datetime(3) NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_stock_receipt_task_allocation_sku` (`customer_id`,`task_id`,`allocation_id`,`sku_code`), KEY `idx_ll_stock_receipt_plan` (`customer_id`,`plan_id`,`line_id`), KEY `idx_ll_stock_receipt_inventory` (`inventory_balance_id`,`inventory_position_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable SKU-pallet PDA stock-in receipt snapshot'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inventory_balance`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inventory_balance` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Customer tenant', `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Customer name snapshot', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Actual overseas warehouse ID', `overseas_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Actual overseas warehouse code snapshot', `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Actual overseas warehouse name snapshot', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Customer destination warehouse ID snapshot', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Customer destination warehouse code snapshot', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Customer destination warehouse name snapshot', `inbound_order_id` bigint NOT NULL, `inbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `sku_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Chinese product name', `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名快照', `product_name_en` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '英文品名快照', `available_packages` bigint NOT NULL DEFAULT '0', `hold_packages` bigint NOT NULL DEFAULT '0', `allocated_packages` bigint NOT NULL DEFAULT '0', `picked_packages` bigint NOT NULL DEFAULT '0', `in_transit_packages` bigint NOT NULL DEFAULT '0', `receiving_packages` bigint NOT NULL DEFAULT '0', `procurement_packages` bigint NOT NULL DEFAULT '0', `available_quantity` bigint NOT NULL DEFAULT '0', `hold_quantity` bigint NOT NULL DEFAULT '0', `allocated_quantity` bigint NOT NULL DEFAULT '0', `picked_quantity` bigint NOT NULL DEFAULT '0', `in_transit_quantity` bigint NOT NULL DEFAULT '0', `receiving_quantity` bigint NOT NULL DEFAULT '0', `procurement_quantity` bigint NOT NULL DEFAULT '0', `version` bigint NOT NULL DEFAULT '0' COMMENT 'Optimistic lock version', `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_ll_inventory_dimension` (`customer_id`,`overseas_warehouse_id`,`destination_warehouse_code`,`inbound_order_id`,`inbound_code`), KEY `idx_ll_inventory_list` (`customer_id`,`overseas_warehouse_id`,`updated_at`), KEY `idx_ll_inventory_inbound` (`customer_id`,`inbound_code`), KEY `idx_ll_inventory_sku` (`customer_id`,`sku_code`,`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户入仓单与海外目的仓维度实时库存余额'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inventory_ledger`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inventory_ledger` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '瀹㈡埛鍚嶇О涓嶅彲鍙樺揩鐓�', `balance_id` bigint NOT NULL, `position_id` bigint DEFAULT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `inbound_order_id` bigint NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `carton_packages` bigint DEFAULT NULL, `pallet_id` bigint DEFAULT NULL, `pallet_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `batch_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `warehouse_location_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `business_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `business_order_id` bigint DEFAULT NULL, `business_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `outbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_event_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `status_from` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `status_to` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `before_packages` bigint NOT NULL, `delta_packages` bigint NOT NULL, `after_packages` bigint NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `occurred_at` datetime(3) NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_inventory_ledger_idempotency` (`customer_id`,`idempotency_key`), KEY `idx_ll_inventory_ledger_query` (`customer_id`,`overseas_warehouse_id`,`occurred_at`), KEY `idx_ll_inventory_ledger_business` (`customer_id`,`business_type`,`business_order_no`), KEY `idx_ll_inventory_ledger_inbound` (`customer_id`,`inbound_code`,`occurred_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable inventory package and quantity ledger'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inventory_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inventory_operation` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PROCESSING', `result_json` longtext COLLATE utf8mb4_unicode_ci, `last_error` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT 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_ll_inventory_operation_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_inventory_operation_status` (`customer_id`,`status`,`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Inventory command idempotency record'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_inventory_position`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_inventory_position` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `balance_id` bigint NOT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pallet_id` bigint NOT NULL, `pallet_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `batch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `warehouse_location_id` bigint DEFAULT NULL, `warehouse_location_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Informational default location code', `available_packages` bigint NOT NULL DEFAULT '0', `hold_packages` bigint NOT NULL DEFAULT '0', `allocated_packages` bigint NOT NULL DEFAULT '0', `picked_packages` bigint NOT NULL DEFAULT '0', `receiving_packages` bigint NOT NULL DEFAULT '0', `product_quantity` bigint NOT NULL DEFAULT '0', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE', `version` bigint NOT NULL DEFAULT '0', `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_ll_inventory_position` (`balance_id`,`pallet_id`,`batch_no`), KEY `idx_ll_inventory_position_pallet` (`customer_id`,`pallet_id`), KEY `idx_ll_inventory_position_location` (`customer_id`,`overseas_warehouse_id`,`warehouse_location_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='SKU package stock by pallet, default location and batch'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_loading_event_inbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_loading_event_inbox` ( `event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件全局唯一标识', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户/客户账号标识', `event_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件类型', `event_version` int NOT NULL COMMENT '事件契约版本', `payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化事件负载 SHA-256 摘要', `payload_json` json NOT NULL COMMENT '事件冻结负载 JSON', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RECEIVED' COMMENT '消费状态:RECEIVED/PROCESSED', `received_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '接收时间', `processed_at` datetime(3) DEFAULT NULL COMMENT '处理完成时间', `last_error` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近一次处理错误', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`event_id`), UNIQUE KEY `uk_ll_loading_inbox_tenant_key` (`customer_id`,`event_type`,`event_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='头程装柜完成事件接收幂等箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_loading_order_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_loading_order_status_history` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '状态历史主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单 ID', `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更前状态', `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '变更后状态', `event_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '触发事件 ID', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '状态变更备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录时间', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), KEY `idx_ll_loading_history_order` (`order_id`,`created_at`), KEY `idx_ll_loading_history_tenant_order` (`customer_id`,`order_id`), KEY `idx_ll_loading_history_customer_order` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB AUTO_INCREMENT=2104482219476070737 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单状态变更历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_local_looseboard_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_local_looseboard_history` ( `id` bigint NOT NULL COMMENT '主键ID', `order_id` bigint NOT NULL COMMENT '本土散板订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型:CREATE、UPDATE或STATUS', `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更前状态', `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '变更后状态', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作幂等键', `change_detail` json DEFAULT NULL COMMENT '字段变更前后值JSON', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_local_looseboard_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='本土散板操作流水'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_local_looseboard_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_local_looseboard_operation` ( `id` bigint NOT NULL COMMENT '操作记录ID', `order_id` bigint NOT NULL COMMENT '本土散板订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作请求内容哈希', `result_version` bigint NOT NULL COMMENT '操作完成后的订单版本', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_local_looseboard_operation_key` (`customer_id`,`order_id`,`idempotency_key`), KEY `idx_ll_local_looseboard_operation_order` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='本土散板订单幂等操作账'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_local_looseboard_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_local_looseboard_order` ( `id` bigint NOT NULL COMMENT '主键ID', `lastleg_order_id` bigint DEFAULT NULL COMMENT '关联尾程主订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本土散板订单号', `transport_mode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '运输方式:拼车或优先拼载', `pallet_required` varchar(8) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '是否需要打盘:YES或NO', `transport_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '运输类型', `origin` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '起运地', `origin_address` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运详细地址', `destination` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目的地', `destination_address` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的详细地址、码头或仓号', `container_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '柜型', `package_count` int NOT NULL DEFAULT '0' COMMENT '货物件数', `total_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '总重量(千克)', `total_volume_cbm` decimal(18,6) NOT NULL DEFAULT '0.000000' COMMENT '总体积(立方米)', `budget_amount` decimal(18,2) DEFAULT NULL COMMENT '预算总价', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USD' COMMENT '预算币种', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '联系人姓名', `contact_info` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '联系人联系方式', `requested_date` date DEFAULT NULL COMMENT '要求服务日期', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_ACCEPTANCE' COMMENT '本土散板订单状态', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建请求内容哈希', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人ID', `version` bigint NOT NULL DEFAULT '0' 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 '更新时间', `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品名称', `estimated_pallet_count` int DEFAULT NULL COMMENT '客户申报预计托数,不代表实际收货', `origin_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系人', `origin_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系电话', `destination_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系人', `destination_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系电话', `pickup_at` datetime(3) DEFAULT NULL COMMENT '取货时间(当地时间,不转换时区)', `delivery_at` datetime(3) DEFAULT NULL COMMENT '送货时间(当地时间,不转换时区)', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_local_looseboard_no` (`customer_id`,`order_no`), UNIQUE KEY `uk_ll_local_looseboard_key` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_local_looseboard_lastleg` (`lastleg_order_id`), KEY `idx_ll_local_looseboard_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_local_looseboard_date` (`customer_id`,`requested_date`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='本土散板订单'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_monthly_exchange_rate`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_monthly_exchange_rate` ( `id` bigint NOT NULL COMMENT '月度汇率ID', `rate_month` char(7) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '汇率月份,格式yyyy-MM', `base_currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USD' COMMENT '基准币种', `quote_currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '报价币种', `usd_to_cny_average` decimal(18,8) NOT NULL COMMENT '美元兑人民币月平均汇率', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/INACTIVE', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人', `updated_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更新人', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_exchange_rate_month` (`rate_month`), KEY `idx_ll_exchange_rate_page` (`status`,`rate_month`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='美元兑人民币月度平均汇率'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_monthly_exchange_rate_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_monthly_exchange_rate_history` ( `id` bigint NOT NULL COMMENT '汇率变更历史ID', `exchange_rate_id` bigint NOT NULL COMMENT '月度汇率ID', `before_rate` decimal(18,8) DEFAULT NULL COMMENT '变更前汇率', `after_rate` decimal(18,8) NOT NULL COMMENT '变更后汇率', `before_status` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更前状态', `after_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '变更后状态', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更说明', `created_at` datetime(3) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_exchange_rate_history` (`exchange_rate_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='月度汇率变更历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order` ( `id` bigint NOT NULL COMMENT '雪花 ID', `order_no` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '尾程单号', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户/客户账号标识', `order_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'FIRST_LEG' COMMENT '订单类型', `lx_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发领星入库单代码', `destination_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的类型:FBA按箱数接收、OVERSEAS逐箱扫码', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实来源入仓码;无入仓关系的海外本土业务为空', `source_region` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源区域/系统', `source_inbound_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '最终实装 LOADED 分片 ID,建单幂等键', `root_inbound_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '根入仓单 ID', `source_order_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单 ID', `source_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单号', `root_order_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '根订单 ID', `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货主名称', `source_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源国内装柜仓 ID 快照', `source_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源国内装柜仓名称快照', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外接柜仓ID;新建尾程订单由业务服务预分配', `overseas_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外接柜仓业务编码快照', `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外接柜仓名称快照', `receiving_warehouse_version` int NOT NULL DEFAULT '0' COMMENT '柜级接柜仓分配乐观锁版本', `transfer_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '转入目的仓ID', `transfer_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '转入目的仓编码', `transfer_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '转入目的仓名称', `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA 仓库编码', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '集装箱号', `container_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT '待转柜' COMMENT '货柜状态', `abnormal` tinyint NOT NULL DEFAULT '0' COMMENT '是否异常:0否1是', `detained` tinyint NOT NULL DEFAULT '0' COMMENT '是否暂扣:0否1是', `hold_chargeable` tinyint NOT NULL DEFAULT '0' COMMENT '当前暂扣是否计费:0否1是', `hold_reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前暂扣原因;解除后为空', `manual_node_override` tinyint NOT NULL DEFAULT '0' COMMENT '是否启用单票人工计划节点覆盖:0否1是', `version` int NOT NULL DEFAULT '0' COMMENT '尾程订单命令乐观锁版本', `pallet_count` int NOT NULL DEFAULT '0' COMMENT '托数', `package_count` int NOT NULL DEFAULT '0' COMMENT '箱数', `received_package_count` int DEFAULT NULL COMMENT 'PDA实际入库箱数', `picked_package_count` int NOT NULL DEFAULT '0', `shipped_package_count` int NOT NULL DEFAULT '0', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积(立方米)', `product_quantity` int DEFAULT NULL COMMENT '货物数量', `volume_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '体积重量(千克)', `estimated_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到港时间', `actual_arrival_at` datetime(3) DEFAULT NULL COMMENT '实际到港时间', `estimated_warehouse_at` datetime(3) DEFAULT NULL COMMENT '预计到仓时间', `arrival_time_version` int NOT NULL DEFAULT '0' COMMENT '柜级预计到仓时间乐观锁版本', `inbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '入库单号', `outbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '出库单号', `delivery_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送单号', `relabel_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标单号', `relabel_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标状态', `pallet_merge_flag` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '合托标记', `pallet_merge_batch_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '平台预标记合托分组号', `current_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_ASSIGNMENT' COMMENT '当前业务状态', `private_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注(仅自己)', `customer_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注(客户)', `warehouse_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注(仓库)', `source_event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源事件 ID', `source_loading_plan_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源装柜计划 ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源头程货柜预订ID', `source_loading_plan_version` bigint DEFAULT NULL COMMENT '来源装柜计划版本', `source_handover_version` bigint DEFAULT NULL COMMENT '交接版本', `source_payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT 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 '更新时间', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `sub_order_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '子单据状态汇总', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_source` (`customer_id`,`source_region`,`source_inbound_id`), KEY `idx_ll_order_list` (`customer_id`,`current_status`,`created_at`), KEY `idx_ll_order_group` (`customer_id`,`order_no`), KEY `idx_ll_order_container` (`customer_id`,`container_no`), KEY `idx_ll_order_container_progress` (`source_container_booking_id`,`estimated_warehouse_at`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单主表'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_command_record`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_command_record` ( `id` bigint NOT NULL COMMENT '尾程订单命令幂等记录ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '命令动作:MANUAL_PLAN、HOLD、MANUAL_NODES', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台操作人ID', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端幂等键', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化请求SHA-256摘要', `result_ref` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '结果业务引用', `result_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '首次成功响应JSON快照', `result_version` int NOT NULL COMMENT '命令成功后的订单版本', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '首次成功时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_command_key` (`customer_id`,`order_id`,`action`,`operator_id`,`idempotency_key`), KEY `idx_ll_order_command_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单写命令幂等与结果审计记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_detail`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_detail` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单明细主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单 ID', `source_inbound_detail_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源入仓明细 ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU 编码', `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名', `product_name_en` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '英文品名', `package_count` int NOT NULL DEFAULT '0' COMMENT '箱数', `product_quantity` int DEFAULT NULL COMMENT '数量', `pallet_count` int DEFAULT NULL COMMENT '托数', `gross_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '毛重(千克)', `net_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '净重(千克)', `dimensional_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '体积重量(千克)', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积(立方米)', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓 ID', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称', `fba_tracking_no` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA跟踪号', `shipment_no` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货件编号', `shipping_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '唛头', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_detail_source` (`order_id`,`source_inbound_detail_id`), KEY `idx_ll_detail_order` (`order_id`), KEY `idx_ll_detail_tenant_order` (`customer_id`,`order_id`), KEY `idx_ll_detail_customer_order` (`customer_id`,`order_id`,`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2291500000000010433 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单实装商品冻结明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_fee`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_fee` ( `id` bigint NOT NULL COMMENT '费用明细主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `fee_item` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项目', `currency` varchar(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '币种代码', `amount` decimal(18,2) NOT NULL COMMENT '费用金额', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_REVIEW' COMMENT '费用状态:PENDING_REVIEW待审核、APPROVED审核通过、REJECTED已驳回', `supplier_description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商或费用说明', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT 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 '更新时间', PRIMARY KEY (`id`), KEY `idx_ll_order_fee_customer_order` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单费用明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_hold_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_hold_history` ( `id` bigint NOT NULL COMMENT '尾程订单暂扣历史ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `held` tinyint NOT NULL COMMENT '操作后是否暂扣:0否1是', `chargeable` tinyint NOT NULL COMMENT '本次暂扣是否计费:0否1是', `reason` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '暂扣或解除原因', `order_version` int NOT NULL COMMENT '操作成功后的订单版本', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人ID', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人名称', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端幂等键', `created_at` datetime(3) NOT NULL COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_hold_key` (`customer_id`,`order_id`,`operator_id`,`idempotency_key`), KEY `idx_ll_order_hold_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单暂扣与解除不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_manual_node`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_manual_node` ( `id` bigint NOT NULL COMMENT '尾程订单人工节点ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `node_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '八行人工展示节点稳定代码,与Carrier标准节点隔离', `node_at` datetime(3) DEFAULT NULL COMMENT '人工填写节点时间,允许为空', `source` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'MANUAL' COMMENT '节点来源,固定MANUAL', `order_version` int NOT NULL COMMENT '最近编辑后的订单版本', `updated_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '最近操作人ID', `updated_at` datetime(3) NOT NULL COMMENT '最近编辑时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_manual_node` (`customer_id`,`order_id`,`node_code`), KEY `idx_ll_order_manual_node_order` (`customer_id`,`order_id`,`node_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单当前人工节点覆盖事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_manual_node_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_manual_node_history` ( `id` bigint NOT NULL COMMENT '尾程订单人工节点历史ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `nodes_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次全量人工节点JSON快照', `order_version` int NOT NULL COMMENT '操作成功后的订单版本', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人ID', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人名称', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端幂等键', `created_at` datetime(3) NOT NULL COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_order_manual_node_history_key` (`customer_id`,`order_id`,`operator_id`,`idempotency_key`), KEY `idx_ll_order_manual_node_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单人工节点覆盖不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_no_daily_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_no_daily_sequence` ( `business_date` date NOT NULL COMMENT '业务日期(Asia/Shanghai)', `last_sequence` int NOT NULL COMMENT '当日已分配尾程单流水号', PRIMARY KEY (`business_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程单号按日原子流水'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_operation_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_operation_log` ( `id` bigint NOT NULL COMMENT '操作记录主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `operation_node` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作节点', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作人名称', `result` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '处理结果', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_ll_order_operation_customer_order` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单操作记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_source_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_source_pallet` ( `id` bigint NOT NULL COMMENT '来源托盘快照ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `source_pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '头程冻结托盘码', `sequence_no` int NOT NULL COMMENT '订单内稳定顺序', `source_event_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源装柜完成事件ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_source_pallet_no` (`source_pallet_no`), UNIQUE KEY `uk_ll_source_pallet_sequence` (`customer_id`,`order_id`,`sequence_no`), KEY `idx_ll_source_pallet_order` (`customer_id`,`order_id`), KEY `fk_ll_source_pallet_order` (`order_id`), CONSTRAINT `fk_ll_source_pallet_order` FOREIGN KEY (`order_id`) REFERENCES `ll_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='头程交接的不可变托盘码快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_order_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_order_status_history` ( `id` bigint NOT NULL COMMENT '订单状态历史主键', `customer_id` bigint NOT NULL COMMENT '租户 ID', `order_id` bigint NOT NULL COMMENT '订单 ID', `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更前状态', `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '变更后状态', `reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变更原因', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间', `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='尾程订单状态历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_outbound_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_outbound_order` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `outbound_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `dispatch_order_id` bigint DEFAULT NULL COMMENT '派车单ID,一件代发为空', `dispatch_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派车单号,一件代发为空', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAIT_OUTBOUND', `outbound_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DISPATCH_DELIVERY' COMMENT '出库类型', `lx_codes` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '关联一件代发领星入库单代码汇总', `recipient_info` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发收件信息', `request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发创建请求摘要,其他出库类型为空', `package_count` int NOT NULL DEFAULT '0', `pallet_count` int NOT NULL DEFAULT '0', `gross_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '毛重(千克)', `volume_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '材积重(千克)', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积(立方米),来源未确认时为空', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `fee_coverage_json` json DEFAULT NULL COMMENT '发运原费用及服务覆盖确认快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_outbound_no` (`customer_id`,`outbound_no`), UNIQUE KEY `uk_ll_outbound_idempotency` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_outbound_dispatch` (`customer_id`,`dispatch_order_id`), KEY `idx_ll_outbound_list` (`customer_id`,`status`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Outbound document generated from a dispatch'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_outbound_pallet_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_outbound_pallet_item` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `outbound_order_id` bigint NOT NULL, `warehouse_pallet_id` bigint DEFAULT NULL COMMENT '浠撳簱瀹炵墿鎵樼洏ID', `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鎵樼洏鍙凤紝绠辩淮搴﹀嚭搴撲负绌�', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `package_count` int NOT NULL DEFAULT '0', `gross_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '毛重(千克)', `volume_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '材积重(千克)', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积(立方米),来源未确认时为空', `picked_package_count` int NOT NULL DEFAULT '0' COMMENT '已拣箱数', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAIT_PICK' COMMENT '拣货状态', `order_refs` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '一件代发SKU', `return_sku_quantity` bigint DEFAULT NULL COMMENT '退货单SKU本来源计划出库件数快照,NULL为历史整箱出库', `carton_marks` varchar(4000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `dispatch_item_id` bigint DEFAULT NULL COMMENT '本次整车排车作业明细ID', `source_attribution_id` bigint DEFAULT NULL COMMENT '不可变PDA真实拣货归属ID', `source_order_id` bigint DEFAULT NULL COMMENT '本行真实来源尾程订单ID', `source_inventory_position_id` bigint DEFAULT NULL COMMENT '本行实际拣货库存仓位ID', `source_return_receipt_id` bigint DEFAULT NULL COMMENT '本行实际退回再派实收记录ID', `source_return_carton_id` bigint DEFAULT NULL COMMENT '本行实际退货换标来源箱ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_outbound_pallet` (`customer_id`,`outbound_order_id`,`warehouse_pallet_id`), UNIQUE KEY `uk_outbound_source_attribution` (`customer_id`,`source_attribution_id`), KEY `idx_ll_outbound_pallet_list` (`customer_id`,`outbound_order_id`), KEY `idx_ll_outbound_pallet_destination` (`customer_id`,`destination_warehouse_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Pallet detail snapshot for an outbound document'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_outbound_pda_pick`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_outbound_pda_pick` ( `id` bigint NOT NULL COMMENT '主键ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `task_id` bigint NOT NULL COMMENT 'PDA任务ID', `outbound_pallet_item_id` bigint NOT NULL COMMENT '出库托盘明细ID', `inventory_position_id` bigint DEFAULT NULL COMMENT '库存仓位ID,退货箱唛出库为空', `packages` bigint NOT NULL COMMENT '拣货箱数', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `picked_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_outbound_pda_pick_key` (`customer_id`,`idempotency_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='一件代发出库PDA托盘拣货记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_outbound_pda_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_outbound_pda_task` ( `id` bigint NOT NULL COMMENT '主键ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `outbound_order_id` bigint NOT NULL COMMENT '出库单ID', `task_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA任务号', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING' COMMENT '任务状态:待拣货、拣货中、已完成', `completion_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '完成命令幂等键', `pushed_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '推送时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '完成时间', `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_ll_outbound_pda_task_order` (`customer_id`,`outbound_order_id`), UNIQUE KEY `uk_ll_outbound_pda_task_no` (`customer_id`,`task_no`), UNIQUE KEY `uk_ll_outbound_pda_complete_key` (`customer_id`,`completion_idempotency_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='一件代发出库PDA拣货任务'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_procurement_fee`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_procurement_fee` ( `id` bigint NOT NULL COMMENT '主键ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID', `fee_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用业务号', `fee_item_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项编码', `fee_item_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项名称', `amount` decimal(20,2) NOT NULL COMMENT 'CNY金额', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '费用币种', `voucher_file_id` bigint NOT NULL COMMENT '凭证文件ID', `voucher_file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '凭证文件名', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '说明', `wallet_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资金状态', `wallet_error_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误码', `wallet_error_message` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误说明', `wallet_command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前资金指令事件ID', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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 '更新时间', `purpose` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用业务用途;由履约节点确定', `confirmation_origin` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BUSINESS' COMMENT '核定入口:BUSINESS业务节点、FINANCIAL财务操作', `fee_version` int DEFAULT NULL COMMENT '同用途费用确认版本', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否当前有效版本', `determination` varchar(24) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'POSITIVE正额、ZERO零元、NOT_APPLICABLE不适用', `original_currency` char(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '核定原币CNY或USD', `original_amount` decimal(20,2) DEFAULT NULL COMMENT '核定原币金额', `exchange_rate` decimal(20,6) DEFAULT NULL COMMENT '已确认汇率快照', `exchange_rate_month` char(7) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '已确认汇率所属月份', `business_date` date DEFAULT NULL COMMENT '实际费用业务日期', `wallet_business_id` bigint DEFAULT NULL COMMENT '资金冻结对应采购费用记录', `wallet_business_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金冻结业务号;实际国际运费引用原预估', `wallet_hold_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance冻结引用', `wallet_ledger_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance实际处理流水引用', `settled_command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '成功实扣或退款的资金命令事件', `source_fee_id` bigint DEFAULT NULL COMMENT '已实扣费用来源ID', `parent_fee_id` bigint DEFAULT NULL COMMENT '原费用或预估引用', `request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '确认请求摘要', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_procurement_fee_no` (`fee_no`), UNIQUE KEY `uk_ll_procurement_fee_version` (`order_id`,`purpose`,`fee_item_code`,`fee_version`), KEY `idx_ll_procurement_fee_order` (`customer_id`,`order_id`,`created_at`), CONSTRAINT `chk_ll_procurement_fee_amount` CHECK ((`amount` > 0)), CONSTRAINT `chk_ll_procurement_fee_currency` CHECK ((`currency` = _utf8mb4'CNY')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外采购费用明细及资金生命周期'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_procurement_file`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_procurement_file` ( `id` bigint NOT NULL COMMENT '主键ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID', `category` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RECEIPT签收文件或VOUCHER费用凭证', `file_id` bigint NOT NULL COMMENT 'File服务文件ID', `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名快照', `content_type` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '媒体类型', `size_bytes` bigint NOT NULL DEFAULT '0' COMMENT '文件大小', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '上传人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_procurement_file` (`order_id`,`file_id`), KEY `idx_ll_procurement_file_order` (`customer_id`,`order_id`,`category`,`created_at`), CONSTRAINT `chk_ll_procurement_file_category` CHECK ((`category` in (_utf8mb4'RECEIPT',_utf8mb4'VOUCHER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外采购签收文件及费用凭证'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_procurement_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_procurement_order` ( `id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `purchase_category` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `product_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `product_specification` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `product_url` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `purchase_quantity` bigint NOT NULL, `budget_unit_price` decimal(18,2) DEFAULT NULL, `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USD', `receiving_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `purchase_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `purchase_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `inbound_quantity` bigint NOT NULL DEFAULT '0', `outbound_details` json DEFAULT NULL COMMENT '出库明细', `outbound_quantity` bigint NOT NULL DEFAULT '0', `domestic_carrier` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `domestic_tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_carrier` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `overseas_tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `estimated_arrival_at` datetime(3) DEFAULT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_REVIEW', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `reviewed_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `review_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `review_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核幂等键', `review_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核请求内容哈希', `reviewed_at` datetime(3) DEFAULT NULL, `version` bigint NOT NULL DEFAULT '0', `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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_overseas_procurement_order_no` (`customer_id`,`order_no`), UNIQUE KEY `uk_ll_overseas_procurement_order_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_overseas_procurement_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_overseas_procurement_warehouse` (`customer_id`,`purchase_warehouse_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Overseas procurement order awaiting business approval'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_procurement_outbound`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_procurement_outbound` ( `id` bigint NOT NULL, `order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `quantity` bigint NOT NULL, `outbound_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `carrier` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `outbound_at` datetime(3) NOT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_overseas_procurement_outbound_no` (`customer_id`,`order_id`,`outbound_no`), KEY `idx_ll_overseas_procurement_outbound_order` (`customer_id`,`order_id`,`outbound_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Manual outbound records for overseas procurement inventory'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_procurement_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_procurement_status_history` ( `id` bigint NOT NULL, `order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作幂等键', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `operation_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作类型:CREATE、REVIEW或UPDATE', `change_detail` json DEFAULT NULL COMMENT '字段变更前后值JSON', PRIMARY KEY (`id`), KEY `idx_ll_overseas_procurement_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable overseas procurement review history'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_quote`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_quote` ( `id` bigint NOT NULL COMMENT '报价ID', `name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价名称', `warehouse_id` bigint NOT NULL COMMENT '国内平台海外合作仓ID', `warehouse_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '合作仓编码快照', `warehouse_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '合作仓名称快照', `country_code` varchar(2) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国家二字码快照', `provider_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价方', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '币种', `effective_start` date NOT NULL COMMENT '生效开始日期', `effective_end` date NOT NULL COMMENT '生效结束日期', `version_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '业务版本号', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'INACTIVE' COMMENT '状态:ACTIVE/INACTIVE', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人', `updated_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更新人', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_quote_warehouse_provider_version` (`warehouse_id`,`provider_name`,`version_code`), KEY `idx_ll_quote_page` (`status`,`updated_at`,`id`), KEY `idx_ll_quote_effective` (`warehouse_id`,`provider_name`,`currency`,`effective_start`,`effective_end`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外仓报价主表'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_quote_fee`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_quote_fee` ( `id` bigint NOT NULL COMMENT '费用明细ID', `quote_id` bigint NOT NULL COMMENT '报价ID', `sequence_no` int NOT NULL COMMENT '显示顺序', `item` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项目', `billing_unit` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费单位', `unit_price` decimal(18,4) NOT NULL COMMENT '单价', `minimum_charge` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '最低收费', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_quote_fee_sequence` (`quote_id`,`sequence_no`), KEY `idx_ll_quote_fee_quote` (`quote_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外仓报价仓库费用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_overseas_quote_transit_price`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_overseas_quote_transit_price` ( `id` bigint NOT NULL COMMENT '中转价格ID', `quote_id` bigint NOT NULL COMMENT '报价ID', `sequence_no` int NOT NULL COMMENT '显示顺序', `fba_warehouse_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'FBA仓编码', `delivery_method` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报价运输方式', `estimated_miles` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '预估英里数', `price` decimal(18,4) NOT NULL COMMENT '报价金额', `minimum_charge` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '最低收费', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_quote_transit_sequence` (`quote_id`,`sequence_no`), KEY `idx_ll_quote_transit_quote` (`quote_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外仓报价中转价格明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_inventory_move`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_inventory_move` ( `id` bigint NOT NULL COMMENT '移库操作ID', `move_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '移库操作单号', `overseas_warehouse_id` bigint NOT NULL COMMENT 'Token冻结的海外实际仓ID', `pallet_id` bigint NOT NULL COMMENT '整托移库的实物托盘ID', `pallet_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实物托盘码快照', `source_location_id` bigint NOT NULL COMMENT '来源库位ID', `source_location_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源库位码快照', `target_location_id` bigint NOT NULL COMMENT '目标库位ID', `target_location_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目标库位码快照', `customer_count` int NOT NULL COMMENT '托盘涉及客户数', `position_count` int NOT NULL COMMENT '迁移库存位置数', `package_count` bigint NOT NULL COMMENT '迁移总箱数', `pallet_version_before` int NOT NULL COMMENT '迁移前托盘版本', `pallet_version_after` int DEFAULT NULL COMMENT '迁移后托盘版本', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作账号标识', `reason` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '移库原因', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '移库幂等键', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '移库请求哈希', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '移库处理状态', `result_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '成功响应JSON', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_inventory_move_no` (`move_no`), UNIQUE KEY `uk_ll_pda_inventory_move_key` (`overseas_warehouse_id`,`operator_key`,`idempotency_key`), KEY `idx_ll_pda_inventory_move_pallet` (`overseas_warehouse_id`,`pallet_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA同仓整托移库记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_operation_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_operation_history` ( `id` bigint NOT NULL COMMENT 'PDA作业历史ID', `overseas_warehouse_id` bigint NOT NULL COMMENT 'Token冻结的海外实际仓ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作业涉及的客户标识', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作账号标识', `operation_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '作业类型', `business_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '作业业务键', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '作业结果状态', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '写操作幂等键', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '写请求内容哈希', `summary` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作业结果摘要', `occurred_at` datetime(3) NOT NULL COMMENT '作业发生时间', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_history_idempotency` (`operator_key`,`idempotency_key`), KEY `idx_ll_pda_history_operator` (`overseas_warehouse_id`,`operator_key`,`occurred_at`), KEY `idx_ll_pda_history_business` (`overseas_warehouse_id`,`operation_type`,`business_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA真实作业历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_pallet_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_pallet_operation` ( `id` bigint NOT NULL COMMENT 'PDA托盘作业ID', `overseas_warehouse_id` bigint NOT NULL COMMENT 'Token冻结的海外实际仓ID', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作账号标识', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备幂等键', `operation_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '托盘作业类型', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容摘要', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '处理状态:PROCESSING、COMPLETED、FAILED_COMPENSATED、COMPENSATION_REQUIRED', `result_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '成功响应快照', `remote_transitions_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '实物托盘状态变更回执', `last_error` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT 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 '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_pallet_idempotency` (`operator_key`,`idempotency_key`), KEY `idx_ll_pda_pallet_warehouse` (`overseas_warehouse_id`,`status`,`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA托盘作业幂等、补偿与结果记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_stocktake_action`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_stocktake_action` ( `id` bigint NOT NULL COMMENT '盘点动作ID', `overseas_warehouse_id` bigint NOT NULL COMMENT 'Token冻结的海外实际仓ID', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作账号标识', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '动作幂等键', `action_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点动作类型', `task_id` bigint DEFAULT NULL COMMENT '盘点任务ID', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '动作请求哈希', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '动作处理状态', `result_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '成功响应JSON', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_stocktake_action` (`overseas_warehouse_id`,`operator_key`,`idempotency_key`), KEY `idx_ll_pda_stocktake_action_task` (`task_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA盘点动作幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_stocktake_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_stocktake_item` ( `id` bigint NOT NULL COMMENT '盘点明细ID', `task_id` bigint NOT NULL COMMENT '盘点任务ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '库存所属客户标识', `balance_id` bigint NOT NULL COMMENT '库存余额ID', `position_id` bigint NOT NULL COMMENT '库存位置ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU快照', `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '品名快照', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '入仓码快照', `pallet_id` bigint NOT NULL COMMENT '实物托盘ID', `pallet_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实物托盘码快照', `location_id` bigint NOT NULL COMMENT '库位ID快照', `location_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '库位码快照', `book_packages` bigint NOT NULL COMMENT '任务创建时账面总箱数', `actual_packages` bigint DEFAULT NULL COMMENT '现场实盘总箱数', `difference_packages` bigint DEFAULT NULL COMMENT '实盘与账面箱数差异', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点明细状态', `position_version` bigint NOT NULL COMMENT '任务创建时库存位置版本', `counted_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '盘点操作账号标识', `version` bigint NOT NULL DEFAULT '0' COMMENT '明细乐观锁版本', `counted_at` datetime(3) DEFAULT NULL COMMENT '盘点时间', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_stocktake_item` (`task_id`,`position_id`), KEY `idx_ll_pda_stocktake_item_task` (`task_id`,`status`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA库存盘点位置明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_pda_stocktake_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_pda_stocktake_task` ( `id` bigint NOT NULL COMMENT '盘点任务ID', `task_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点任务号', `overseas_warehouse_id` bigint NOT NULL COMMENT 'Token冻结的海外实际仓ID', `scope_type` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点范围类型LOCATION或PALLET', `scope_resource_id` bigint NOT NULL COMMENT '盘点库位或托盘资源ID', `scope_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点库位码或托盘码快照', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '盘点任务状态', `position_count` int NOT NULL COMMENT '库存位置总数', `counted_count` int NOT NULL DEFAULT '0' COMMENT '已盘库存位置数', `difference_count` int NOT NULL DEFAULT '0' COMMENT '存在差异的库存位置数', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建操作账号标识', `submitted_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提交操作账号标识', `submit_reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '盘点差异提交原因', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建幂等键', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建请求哈希', `version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', `submitted_at` datetime(3) DEFAULT NULL COMMENT '提交完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_pda_stocktake_no` (`task_no`), UNIQUE KEY `uk_ll_pda_stocktake_create` (`overseas_warehouse_id`,`created_by`,`idempotency_key`), KEY `idx_ll_pda_stocktake_list` (`overseas_warehouse_id`,`status`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA库存盘点任务'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_budget_authorization`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_budget_authorization` ( `id` bigint NOT NULL COMMENT '预算授权ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `previous_amount` decimal(20,2) DEFAULT NULL COMMENT '原货款预算总上限;未授权保持空', `previous_currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原预算币种', `authorized_amount` decimal(20,2) NOT NULL COMMENT '客户授权的新货款总上限', `currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户授权币种', `voucher_file_id` bigint NOT NULL COMMENT '客户确认书面或聊天凭证', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授权依据', `reviewed_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '核验人员', `reviewed_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核验时间', PRIMARY KEY (`id`), KEY `idx_procurement_budget_order` (`customer_id`,`order_id`,`id`), CONSTRAINT `chk_procurement_budget_amount` CHECK (((`authorized_amount` >= 0) and (`previous_amount` >= 0))), CONSTRAINT `chk_procurement_budget_currency` CHECK (((`currency` in (_utf8mb4'CNY',_utf8mb4'USD')) and (`previous_currency` in (_utf8mb4'CNY',_utf8mb4'USD')))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购货款预算授权核验历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_carton` ( `id` bigint NOT NULL COMMENT '版本内箱记录ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `manifest_id` bigint NOT NULL COMMENT '装箱清单版本', `carton_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购订单内业务箱号', `length_cm` decimal(12,2) NOT NULL COMMENT '外箱长厘米', `width_cm` decimal(12,2) NOT NULL COMMENT '外箱宽厘米', `height_cm` decimal(12,2) NOT NULL COMMENT '外箱高厘米', `gross_weight_kg` decimal(12,3) NOT NULL COMMENT '封箱毛重千克', `quantity` bigint NOT NULL COMMENT '本箱合格商品总件数', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_carton_version` (`manifest_id`,`carton_no`), KEY `idx_procurement_carton_order` (`order_id`,`manifest_id`), CONSTRAINT `chk_procurement_carton_measurement` CHECK (((`length_cm` > 0) and (`width_cm` > 0) and (`height_cm` > 0) and (`gross_weight_kg` > 0) and (`quantity` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购版本化逐箱实测与件数'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_carton_source`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_carton_source` ( `carton_id` bigint NOT NULL COMMENT '版本内箱ID', `receipt_id` bigint NOT NULL COMMENT '海外实收明细来源', `quantity` bigint NOT NULL COMMENT '从该实收装入本箱的件数', PRIMARY KEY (`carton_id`,`receipt_id`), KEY `idx_procurement_carton_receipt` (`receipt_id`), CONSTRAINT `chk_procurement_carton_source_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购箱内货物的实收来源与数量'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_closure`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_closure` ( `id` bigint NOT NULL COMMENT '采购异常关闭ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `closure_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '异常关闭业务号', `customer_voucher_file_id` bigint NOT NULL COMMENT '客户同意停止履约凭证', `financial_conclusion` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '已知费用及后续无需收费的处理结论,不改变资金事实', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '内部关闭原因', `client_summary` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '人工确认的对客关闭摘要', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购管理确认人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关闭确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_closure_order` (`order_id`), UNIQUE KEY `uk_procurement_closure_no` (`closure_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购实物资金收口后的异常关闭事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_closure_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_closure_item` ( `id` bigint NOT NULL COMMENT '关闭货物处置ID', `closure_id` bigint NOT NULL COMMENT '采购关闭ID', `source_kind` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '购买未达、在途未达、合格、破损或多货来源', `source_id` bigint DEFAULT NULL COMMENT '原实收或国际交寄箱,购买未达为空', `quantity` bigint NOT NULL COMMENT '本来源最终明确去向件数', `decision` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '供应商保管、退还、报失、客户授权保管或处置', `destination` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际去向及接收方说明', `voucher_file_id` bigint NOT NULL COMMENT '本单实物处置证明', PRIMARY KEY (`id`), KEY `idx_procurement_closure_source` (`closure_id`,`source_kind`,`source_id`), CONSTRAINT `chk_procurement_closure_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常关闭逐来源剩余货物最终去向,不产生新发运'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_command` ( `id` bigint NOT NULL COMMENT '操作记录ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `action` varchar(48) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购节点动作', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求摘要', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '执行人', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作依据', `detail_json` json NOT NULL COMMENT '内部操作及更正依据快照,不直接对客展示', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '执行时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_command` (`order_id`,`action`,`idempotency_key`), KEY `idx_procurement_command_customer` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购节点幂等与不可变审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_control_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_control_note` ( `id` bigint NOT NULL COMMENT '采购更正说明ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `note_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更正说明业务号', `target_type` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '购买、仓库、实收或交寄事实类型', `target_id` bigint DEFAULT NULL COMMENT '本单事实对象引用,购买为空', `blocking` tinyint(1) NOT NULL COMMENT '是否阻断后续计划履约', `voucher_file_id` bigint NOT NULL COMMENT '本单内部事实更正凭证', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '内部更正说明', `client_summary` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '人工确认的对客摘要,不复制内部原始内容', `original_value_json` json DEFAULT NULL COMMENT '服务端记录的原事实快照', `corrected_value_json` json DEFAULT NULL COMMENT '服务端记录的更正事实快照', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购管理操作人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间', `resolved_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '处理确认人', `resolved_at` datetime(3) DEFAULT NULL COMMENT '阻断解除时间', `resolution_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '内部处理结果', `resolution_voucher_id` bigint DEFAULT NULL COMMENT '本单处理凭证', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_note_no` (`note_no`), KEY `idx_procurement_note_block` (`order_id`,`blocking`,`resolved_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购不可覆盖事实的更正说明及阻断异常'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_daily_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_daily_sequence` ( `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID', `business_date` date NOT NULL COMMENT '北京时间业务日期', `sequence_value` int NOT NULL COMMENT '客户当日已分配最大序号', PRIMARY KEY (`customer_id`,`business_date`), CONSTRAINT `chk_ll_procurement_sequence` CHECK ((`sequence_value` between 1 and 9999)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外采购客户日序列'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_disposition`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_disposition` ( `id` bigint NOT NULL COMMENT '差异处理ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `leg` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内', `source_carton_id` bigint DEFAULT NULL COMMENT '国内原交寄箱来源', `receipt_id` bigint DEFAULT NULL COMMENT '破损或多货对应实收记录,短少为空', `kind` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SHORTAGE短少、DAMAGED破损、EXTRA多货', `quantity` bigint NOT NULL COMMENT '已批准处置件数', `decision` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ACCEPT_SHORTAGE确认短少、DISPOSE_DAMAGED拒收或处置、RETURN_EXTRA退回多货', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '当前有效处置;撤销只改变有效性并保留原事实', `voucher_file_id` bigint NOT NULL COMMENT '本单客户确认或实际处置凭证', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '处置依据', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购管理人员', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间', PRIMARY KEY (`id`), KEY `idx_procurement_disposition_source` (`order_id`,`leg`,`source_carton_id`,`receipt_id`,`kind`), CONSTRAINT `chk_procurement_disposition_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单内差异处置,不自动退款'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_estimate_review`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_estimate_review` ( `id` bigint NOT NULL COMMENT '预估核对ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `label_set_id` bigint NOT NULL COMMENT '已核对国际面单版本', `fee_id` bigint NOT NULL COMMENT '唯一有效预估费用版本', `reviewed_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '核价人员', `reviewed_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核对时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_estimate_review` (`label_set_id`,`fee_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='面单清单与预估冻结的显式核对关联'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_fee_correction`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_fee_correction` ( `id` bigint NOT NULL COMMENT '费用链更正ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `correction_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '财务更正业务号', `root_fee_id` bigint NOT NULL COMMENT '原实际费用链根', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本单更正请求幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更正目标及凭证请求摘要', `target_original_amount` decimal(20,2) NOT NULL COMMENT '本次正确原币总额', `original_currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '沿用原费用币种', `exchange_rate` decimal(20,6) NOT NULL COMMENT '沿用原费用汇率快照', `exchange_rate_month` char(7) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原汇率月份,不取本次操作月份', `target_amount` decimal(20,2) NOT NULL COMMENT '正确总额折算CNY', `previous_net_amount` decimal(20,2) NOT NULL COMMENT '确认前整链净实扣CNY', `difference_amount` decimal(20,2) NOT NULL COMMENT 'CNY正差额追加、负差额退款、零差额仅留核对记录', `voucher_file_id` bigint NOT NULL COMMENT '本订单财务更正凭证', `reason` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更正依据', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授权财务操作人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_correction_no` (`correction_no`), UNIQUE KEY `uk_procurement_correction_request` (`order_id`,`idempotency_key`), KEY `idx_procurement_correction_root` (`order_id`,`root_fee_id`,`id`), CONSTRAINT `chk_procurement_correction_amount` CHECK (((`target_original_amount` >= 0) and (`target_amount` >= 0) and (`previous_net_amount` >= 0) and (`exchange_rate` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用链更正目标与原汇率快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_fee_correction_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_fee_correction_item` ( `correction_id` bigint NOT NULL COMMENT '本次费用链更正ID', `fee_id` bigint NOT NULL COMMENT '本次产生的独立正差额或退款费用ID', PRIMARY KEY (`correction_id`,`fee_id`), UNIQUE KEY `uk_procurement_correction_fee` (`fee_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用目标更正与逐笔资金事实关联'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_flow`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_flow` ( `order_id` bigint NOT NULL COMMENT '采购订单ID,一单一个履约批次', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `purchased_at` datetime(3) DEFAULT NULL COMMENT '真实购买时间', `purchased_product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际购买商品', `purchased_specification` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际购买规格', `purchased_quantity` bigint DEFAULT NULL COMMENT '实际购买件数', `purchase_amount` decimal(20,2) DEFAULT NULL COMMENT '供应商实付原币金额', `purchase_currency` char(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '供应商实付原币CNY或USD', `purchase_voucher_id` bigint DEFAULT NULL COMMENT '购买凭证引用', `purchase_issue` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '购买未核定或异常说明', `purchase_confirmed_at` datetime(3) DEFAULT NULL COMMENT '货款核定时间,不代表扣费成功', `actual_warehouse_id` bigint DEFAULT NULL COMMENT '首次实际收货冻结的仓库ID', `actual_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际收货仓编码快照', `actual_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际收货仓名称快照', `overseas_received_at` datetime(3) DEFAULT NULL COMMENT '海外整批收货完成时间', `packing_version` int DEFAULT NULL COMMENT '当前确认装箱清单版本', `overseas_shipped_at` datetime(3) DEFAULT NULL COMMENT '国际段整批实际交寄时间', `domestic_received_at` datetime(3) DEFAULT NULL COMMENT '国内整批收货完成时间', `charges_confirmed_at` datetime(3) DEFAULT NULL COMMENT '国内整单费用核定时间', `customer_shipped_at` datetime(3) DEFAULT NULL COMMENT '国内寄客户实际交寄时间', `domestic_receiver_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国际段国内收件人', `domestic_receiver_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国际段国内收件电话', `domestic_receiver_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国际段国内接收地址', `cancelled_at` datetime(3) DEFAULT NULL COMMENT '购买前取消时间', `closed_at` datetime(3) DEFAULT NULL COMMENT '异常关闭时间', `control_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT 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 '更新时间', PRIMARY KEY (`order_id`), KEY `idx_procurement_flow_customer` (`customer_id`,`order_id`), CONSTRAINT `chk_procurement_purchase_amount` CHECK (((`purchase_amount` is null) or (`purchase_amount` >= 0))), CONSTRAINT `chk_procurement_purchase_quantity` CHECK (((`purchased_quantity` is null) or (`purchased_quantity` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单一批次履约事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_label_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_label_item` ( `label_set_id` bigint NOT NULL COMMENT '面单批版本ID', `carton_id` bigint NOT NULL COMMENT '原海外清单箱ID', `file_id` bigint NOT NULL COMMENT '本采购订单面单文件', `page_no` int NOT NULL COMMENT '该箱对应文件页码,从1开始', `carrier` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '承运商', `tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '箱主或子运单号', `applied_at` datetime(3) DEFAULT NULL COMMENT '真实贴单时间', `applied_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '贴单确认人', PRIMARY KEY (`label_set_id`,`carton_id`), CONSTRAINT `chk_procurement_label_page` CHECK ((`page_no` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购逐箱文件页关联及贴单事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_label_set`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_label_set` ( `id` bigint NOT NULL COMMENT '面单批版本ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `leg` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'OVERSEAS国际段或DOMESTIC寄客户段', `version` int NOT NULL COMMENT '订单段内面单版本', `manifest_id` bigint NOT NULL COMMENT '原海外确认装箱版本', `cargo_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '箱规及有效货物来源摘要', `sender_snapshot` json NOT NULL COMMENT '寄件人姓名电话地址快照', `receiver_snapshot` json NOT NULL COMMENT '收件人姓名电话地址快照', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '制单操作人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_label_version` (`order_id`,`leg`,`version`), CONSTRAINT `chk_procurement_label_leg` CHECK ((`leg` in (_utf8mb4'OVERSEAS',_utf8mb4'DOMESTIC'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段面单不可变版本和地址快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_manifest`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_manifest` ( `id` bigint NOT NULL COMMENT '装箱清单ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `version` int NOT NULL COMMENT '订单内装箱版本', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'DRAFT草稿、CONFIRMED已确认、SUPERSEDED已替代', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '确认时间', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '制单人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本保存时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_manifest_version` (`order_id`,`version`), CONSTRAINT `chk_procurement_manifest_status` CHECK ((`status` in (_utf8mb4'DRAFT',_utf8mb4'CONFIRMED',_utf8mb4'SUPERSEDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购装箱清单不可变版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_receipt` ( `id` bigint NOT NULL COMMENT '实收明细ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `receipt_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '采购收货业务编号', `leg` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内', `source_carton_id` bigint DEFAULT NULL COMMENT '国内实收关联原国际交寄箱,海外为空', `warehouse_id` bigint DEFAULT NULL COMMENT '海外实际收货仓', `good_quantity` bigint NOT NULL COMMENT '可发合格件数', `damaged_quantity` bigint NOT NULL COMMENT '破损待处置件数', `extra_quantity` bigint NOT NULL COMMENT '多到件数,不增加可发数量', `received_at` datetime(3) NOT NULL COMMENT '实际收货时间', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '当前有效实收事实', `supersedes_id` bigint DEFAULT NULL COMMENT '受控更正所替代的原实收记录', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '登记人员', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_receipt_no` (`receipt_no`), KEY `idx_procurement_receipt_source` (`order_id`,`leg`,`source_carton_id`,`active`), CONSTRAINT `chk_procurement_receipt_leg` CHECK ((((`leg` = _utf8mb4'OVERSEAS') and (`source_carton_id` is null)) or ((`leg` = _utf8mb4'DOMESTIC') and (`source_carton_id` is not null)))), CONSTRAINT `chk_procurement_receipt_quantity` CHECK (((`good_quantity` >= 0) and (`damaged_quantity` >= 0) and (`extra_quantity` >= 0) and (((`good_quantity` + `damaged_quantity`) + `extra_quantity`) > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购分次实收与受控更正事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_repack`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_repack` ( `id` bigint NOT NULL COMMENT '换包装版本ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `carton_id` bigint NOT NULL COMMENT '原国际交寄箱ID,保持一对一来源', `length_cm` decimal(12,2) NOT NULL COMMENT '新外箱长厘米', `width_cm` decimal(12,2) NOT NULL COMMENT '新外箱宽厘米', `height_cm` decimal(12,2) NOT NULL COMMENT '新外箱高厘米', `gross_weight_kg` decimal(12,3) NOT NULL COMMENT '新封箱毛重千克', `voucher_file_id` bigint NOT NULL COMMENT '本单换包装证据', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换包装依据', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国内作业人员', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间', PRIMARY KEY (`id`), KEY `idx_procurement_repack_carton` (`order_id`,`carton_id`,`id`), CONSTRAINT `chk_procurement_repack_measurement` CHECK (((`length_cm` > 0) and (`width_cm` > 0) and (`height_cm` > 0) and (`gross_weight_kg` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购国内原箱一对一换包装不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_shipment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_shipment` ( `id` bigint NOT NULL COMMENT '采购交寄ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `shipment_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '交寄业务编号', `leg` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'OVERSEAS国际交寄或DOMESTIC寄客户', `manifest_id` bigint NOT NULL COMMENT '原海外装箱清单版本', `shipped_at` datetime(3) NOT NULL COMMENT '整批真实交承运方时间', `address_snapshot` json NOT NULL COMMENT '本段交寄时的收寄姓名电话地址快照', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '交寄确认人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_shipment_leg` (`order_id`,`leg`), UNIQUE KEY `uk_procurement_shipment_no` (`shipment_no`), CONSTRAINT `chk_procurement_shipment_leg` CHECK ((`leg` in (_utf8mb4'OVERSEAS',_utf8mb4'DOMESTIC'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段各一次整批真实交寄'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_shipment_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_shipment_item` ( `shipment_id` bigint NOT NULL COMMENT '采购交寄ID', `carton_id` bigint NOT NULL COMMENT '原海外装箱版本内箱ID', `quantity` bigint NOT NULL COMMENT '本次实际交寄件数', `carrier` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '承运商快照', `tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '运单号快照', `label_snapshot` json NOT NULL COMMENT '当次箱规、面单及货物来源快照', PRIMARY KEY (`shipment_id`,`carton_id`), CONSTRAINT `chk_procurement_shipment_item_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购整批交寄逐箱事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_procurement_wallet_attempt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_procurement_wallet_attempt` ( `id` bigint NOT NULL COMMENT '请求尝试ID', `order_id` bigint NOT NULL COMMENT '采购订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `fee_id` bigint NOT NULL COMMENT '不可变费用版本ID', `attempt_no` bigint NOT NULL COMMENT '费用版本内请求序号', `operation` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资金操作:FREEZE冻结、SETTLE结算、SETTLE_ACTUAL实际结算、RELEASE释放、REFUND退款', `business_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Finance资金业务号', `amount` decimal(20,2) DEFAULT NULL COMMENT '请求金额;全额结算或释放可空', `command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资金指令事件唯一引用', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资金请求结果:PENDING未决、SUCCEEDED成功、FAILED明确失败', `result_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原业务回执摘要', `wallet_hold_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance冻结引用', `wallet_ledger_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance处理流水引用', `error_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '业务失败码', `error_message` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '内部失败诊断,不直接对客展示', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '请求时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '最终结果时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_procurement_attempt_event` (`command_event_id`), UNIQUE KEY `uk_procurement_attempt_number` (`fee_id`,`attempt_no`), KEY `idx_procurement_attempt_order` (`customer_id`,`order_id`,`status`), CONSTRAINT `chk_procurement_attempt_status` CHECK ((`status` in (_utf8mb4'PENDING',_utf8mb4'SUCCEEDED',_utf8mb4'FAILED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用资金命令尝试与不可变结果'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_receiving_container_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_receiving_container_operation` ( `id` bigint NOT NULL COMMENT '柜号收货操作ID', `session_id` bigint NOT NULL COMMENT '柜号签收会话ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户账号标识', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作账号唯一标识', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作动作', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端幂等键', `request_hash` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容哈希', `request_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容快照', `result_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '响应内容快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_receiving_operation` (`operator_key`,`idempotency_key`), KEY `idx_ll_receiving_operation_session` (`session_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA柜号收货幂等审计记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_receiving_container_session`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_receiving_container_session` ( `id` bigint NOT NULL COMMENT '柜号签收会话ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所选柜解析出的客户标识', `container_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '集装箱号', `overseas_warehouse_id` bigint NOT NULL COMMENT '操作员Token绑定并冻结的海外实际收货共享物理仓ID', `overseas_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '仓库服务校验后的海外实际收货共享物理仓名称快照', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作账号唯一标识', `operator_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作账号名称', `active_operator_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '未完成会话平台操作账号全局唯一锁键', `active_container_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '未完成会话柜号全局唯一锁键', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAIT_SIGN' COMMENT '会话状态:WAIT_SIGN、SIGNED、RECEIVING、COMPLETED', `sign_photos` json DEFAULT NULL COMMENT '签收卸柜照片角色与文件ID列表', `prepared_at` datetime(3) DEFAULT NULL COMMENT '选择柜号时间', `signed_at` datetime(3) DEFAULT NULL COMMENT '签收时间', `receiving_at` datetime(3) DEFAULT NULL COMMENT '首次收货时间', `completed_at` datetime(3) DEFAULT 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 NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `source_container_booking_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '稳定来源柜预订ID', `container_fact_hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '领取时整柜订单与计划事实摘要', `overseas_warehouse_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外接柜仓业务编码快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_receiving_active_operator` (`active_operator_key`), UNIQUE KEY `uk_ll_receiving_active_container` (`active_container_key`), KEY `idx_ll_receiving_container` (`customer_id`,`container_no`,`status`), KEY `idx_ll_receiving_operator` (`customer_id`,`operator_key`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA柜号签收收货会话'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_receiving_fba_pallet_count`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_receiving_fba_pallet_count` ( `id` bigint NOT NULL COMMENT 'FBA托盘现场累计箱数ID', `session_id` bigint NOT NULL COMMENT '柜号签收会话ID', `group_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '柜号与FBA仓组成的收货组键', `pallet_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '现有FBA托盘码', `actual_packages` int NOT 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 '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_receiving_fba_count` (`session_id`,`group_key`,`pallet_code`), KEY `idx_ll_receiving_fba_group` (`session_id`,`group_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA普通FBA托盘现场累计与超收标记'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_receiving_sku_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_receiving_sku_receipt` ( `id` bigint NOT NULL COMMENT 'FBA SKU实收进度ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户账号标识', `session_id` bigint NOT NULL COMMENT '柜号签收会话ID', `plan_id` bigint NOT NULL COMMENT '入仓计划ID', `line_id` bigint NOT NULL COMMENT '入仓计划明细ID', `pallet_id` bigint NOT NULL COMMENT '计划托盘ID', `order_id` bigint NOT NULL COMMENT '尾程订单ID', `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入仓码快照', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码快照', `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品名称快照', `received_packages` int NOT NULL COMMENT 'SKU实收箱数', `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 NOT NULL DEFAULT '0' COMMENT '乐观锁版本', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_receiving_sku_pallet` (`customer_id`,`line_id`,`pallet_id`,`sku_code`), KEY `idx_ll_receiving_sku_session` (`customer_id`,`session_id`,`line_id`), KEY `idx_ll_receiving_sku_plan` (`customer_id`,`plan_id`,`line_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA柜号FBA SKU实收进度'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_receiving_warehouse_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_receiving_warehouse_operation` ( `id` bigint NOT NULL COMMENT '柜级接柜仓修改操作ID', `source_container_booking_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '稳定来源柜预订ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台请求幂等键', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化修改请求SHA-256摘要', `result_version` int NOT NULL COMMENT '修改成功后的柜级分配版本', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台操作人名称', `remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '接柜仓修改备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_receiving_warehouse_idempotency` (`idempotency_key`), KEY `idx_ll_receiving_warehouse_container` (`source_container_booking_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜级海外接柜仓修改幂等审计记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_application`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_application` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `relabel_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `lastleg_order_id` bigint NOT NULL, `customer_order_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `label_deadline` datetime(3) NOT NULL, `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `delivery_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '派送方式:TRUCK卡车、PICKUP自提、EXPRESS快递;仅涉及箱唛换标时必填', `print_shipping_label` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要打印面单', `shipping_label_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户上传面单文件ID', `shipping_label_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户上传面单文件名', `shipping_label_file_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户上传面单下载地址', `fulfillment_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAIT_RELABEL' COMMENT '换标后履约状态', `outbound_order_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '自提或快递生成的换标出库单号', `customer_confirmation_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户确认完成幂等键', `customer_confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认换标完成时间', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `total_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '总换标PDF文件ID', `total_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '总换标PDF文件名', `total_file_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '总换标PDF预览地址', `carton_total_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱唛总文件ID', `carton_total_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱唛总文件名', `carton_total_file_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱唛总文件地址', `sku_total_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU总文件ID', `sku_total_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU总文件名', `sku_total_file_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU总文件地址', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_PROCESSING', `item_count` int NOT NULL DEFAULT '0', `total_package_count` int NOT NULL DEFAULT '0', `notified_package_count` int NOT NULL DEFAULT '0', `charge_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '换标费用CNY', `charge_currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '费用币种', `wallet_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'FREEZE_PENDING' COMMENT '资金状态', `wallet_error_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误码', `wallet_error_message` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误说明', `wallet_command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前资金指令事件ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_relabel_application_no` (`customer_id`,`relabel_no`), UNIQUE KEY `uk_ll_relabel_application_idempotency` (`customer_id`,`idempotency_key`), KEY `idx_ll_relabel_application_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_relabel_application_customer` (`customer_id`,`customer_order_no`), KEY `idx_ll_relabel_application_warehouse` (`customer_id`,`overseas_warehouse_id`), KEY `idx_ll_relabel_application_order` (`lastleg_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Customer relabel application header'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_item` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `application_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU编码(选填)', `product_image_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `product_image_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `product_image_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `total_package_count` int NOT NULL, `notified_package_count` int NOT NULL, `shipment_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货件编号(无FBA去向时为空)', `tracking_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `new_sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标后SKU编码', `label_requirement` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货物明细备注', `relabel_file_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `relabel_file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `relabel_file_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '瀹㈡埛鑷湁绠卞敍', `return_carton_id` bigint DEFAULT NULL COMMENT '閫�璐ф崲绠卞敍鏉ユ簮閫�璐у簱瀛樼ID', `source_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '閫�璐ф崲绠卞敍鍘熺鍞涘揩鐓�', `new_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '閫�璐ф崲绠卞敍鏂扮鍞�', `fba_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鍏宠仈FBA绠卞敍', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '该箱目的海外仓ID', `destination_fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可选FBA目的仓编码(与海外操作仓分离)', `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CARTON_LABEL' COMMENT '换标模式:箱唛、SKU或组合换标', `sku_relabel_items_json` json DEFAULT NULL COMMENT '同箱SKU换标子明细快照(数量按件)', `source_inventory_balance_id` bigint DEFAULT NULL COMMENT '原库存余额ID(预入仓换标任务可为空)', `source_inventory_position_id` bigint DEFAULT NULL COMMENT '原库存库位ID(预入仓换标任务可为空)', `source_inbound_order_id` bigint DEFAULT NULL COMMENT '原入仓单ID(预入仓换标任务可为空)', `source_inbound_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `source_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_ll_relabel_item_application` (`customer_id`,`application_id`), KEY `idx_ll_relabel_item_sku` (`customer_id`,`sku_code`), KEY `idx_ll_relabel_item_destination` (`customer_id`,`destination_warehouse_id`,`application_id`), KEY `idx_ll_relabel_item_source_position` (`customer_id`,`source_inventory_position_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Frozen customer relabel cargo items'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_pda_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_pda_history` ( `id` bigint NOT NULL COMMENT '换标PDA任务历史ID', `task_id` bigint NOT NULL COMMENT '换标PDA任务ID', `application_id` bigint NOT NULL COMMENT '换标申请单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '现场动作类型', `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '动作前任务状态', `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '动作后任务状态', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作账号标识', `operator_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作员名称快照', `detail_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '动作详情JSON', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_ll_relabel_pda_history_task` (`customer_id`,`task_id`,`created_at`,`id`), KEY `idx_ll_relabel_pda_history_application` (`customer_id`,`application_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA换标任务不可变操作历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_pda_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_pda_operation` ( `id` bigint NOT NULL COMMENT '换标PDA幂等操作ID', `task_id` bigint NOT NULL COMMENT '换标PDA任务ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求操作账号标识', `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '幂等操作动作', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备生成的幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容哈希', `result_json` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '成功响应快照JSON', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_relabel_pda_operation_key` (`operator_key`,`idempotency_key`), KEY `idx_ll_relabel_pda_operation_task` (`customer_id`,`task_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA换标写操作幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_pda_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_pda_task` ( `id` bigint NOT NULL COMMENT '换标PDA任务ID', `application_id` bigint NOT NULL COMMENT '换标申请单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `relabel_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标申请单号快照', `overseas_warehouse_id` bigint NOT NULL COMMENT 'PDA令牌冻结的海外实际作业仓ID', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '任务状态:PROCESSING、WAIT_REVIEW或COMPLETED', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '认领操作账号标识', `operator_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '认领操作员名称快照', `reviewer_key` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '复核账号标识', `reviewer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '复核员名称快照', `expected_packages` int NOT NULL COMMENT '申请单通知的应换标箱数', `relabelled_packages` int NOT NULL DEFAULT '0' COMMENT '已正常换标箱数', `skipped_packages` int NOT NULL DEFAULT '0' COMMENT '已说明原因跳过箱数', `exception_packages` int NOT NULL DEFAULT '0' COMMENT '已登记异常箱数', `completion_photo_file_ids` json DEFAULT NULL COMMENT '换标完成现场照片文件ID列表', `completion_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '完成提交备注', `review_decision` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近复核结论:APPROVE、REWORK或CUSTOMER_CONFIRMED', `review_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最近复核备注', `claimed_at` datetime(3) NOT NULL COMMENT '任务认领时间', `submitted_at` datetime(3) DEFAULT NULL COMMENT '提交复核时间', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '最近复核时间', `version` int NOT NULL DEFAULT '0' 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_ll_relabel_pda_task_application` (`customer_id`,`application_id`), UNIQUE KEY `uk_ll_relabel_pda_task_no` (`relabel_no`), KEY `idx_ll_relabel_pda_task_warehouse` (`overseas_warehouse_id`,`status`,`updated_at`), KEY `idx_ll_relabel_pda_task_operator` (`operator_key`,`status`,`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA换标现场作业任务'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_pda_unit_fact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_pda_unit_fact` ( `id` bigint NOT NULL COMMENT '逐件换标事实ID', `task_id` bigint NOT NULL COMMENT '换标PDA任务ID', `application_id` bigint NOT NULL COMMENT '换标申请单ID', `item_id` bigint NOT NULL COMMENT '换标申请明细ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `old_label` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '扫描的实物旧标签或箱标', `new_label` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '扫描的换标后新标签', `result` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '逐件结果:RELABELLED、SKIPPED或EXCEPTION', `exception_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '异常编码', `reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '跳过或异常原因', `quantity` int NOT NULL DEFAULT '1' COMMENT '本次事实处理件数,箱级作业固定为1', `operator_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作账号标识', `operator_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作员名称快照', `occurred_at` datetime(3) NOT NULL COMMENT '逐件事实发生时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_relabel_pda_old_label` (`old_label`), KEY `idx_ll_relabel_pda_unit_task` (`customer_id`,`task_id`,`occurred_at`,`id`), KEY `idx_ll_relabel_pda_unit_item` (`customer_id`,`application_id`,`item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外PDA逐件换标扫码与异常事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_relabel_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_relabel_status_history` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `application_id` bigint NOT NULL, `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), KEY `idx_ll_relabel_status_history_application` (`customer_id`,`application_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable customer relabel process history'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_carton_count_session`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_carton_count_session` ( `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台PDA操作员标识', `warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '认领时绑定海外仓标识', `receipt_id` bigint DEFAULT NULL COMMENT '正在清点的签收批次,完成后释放为NULL', `started_at` datetime(3) DEFAULT NULL COMMENT '本次开始清点时间', `created_at` datetime(3) NOT NULL COMMENT '会话创建时间', `updated_at` datetime(3) NOT NULL COMMENT '会话更新时间', PRIMARY KEY (`operator_id`), UNIQUE KEY `uk_ll_return_count_session_receipt` (`receipt_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货箱内清点单人单任务持久会话'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_carton_stock_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_carton_stock_receipt` ( `id` bigint NOT NULL COMMENT '原箱回仓凭据明细标识', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据隔离键', `receipt_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原箱回仓实收业务号', `exception_order_id` bigint NOT NULL COMMENT '本次异常退回订单', `exception_return_item_id` bigint NOT NULL COMMENT '本次冻结的原箱来源明细', `delivery_order_id` bigint NOT NULL COMMENT '原运输派送单', `source_pick_id` bigint NOT NULL COMMENT '原箱实际出库拣货凭据', `source_outbound_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原出库单业务号', `source_dispatch_item_id` bigint NOT NULL COMMENT '原排车货物明细', `source_outbound_pallet_item_id` bigint NOT NULL COMMENT '原出库托盘明细', `return_carton_id` bigint NOT NULL COMMENT '真实退货原箱标识', `carton_mark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原箱业务箱码快照', `overseas_warehouse_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际回仓海外仓标识', `target_pallet_id` bigint NOT NULL COMMENT '实际回仓目标实物托盘', `target_pallet_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际目标托盘业务码', `target_location_id` bigint NOT NULL COMMENT '实际回仓目标库位', `target_location_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际目标库位业务码', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原出库快照中的商品编码', `product_name_zh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原出库快照中的中文品名', `quantity` bigint NOT NULL COMMENT '本次原SKU实际恢复件数', `packages` bigint NOT NULL COMMENT '本箱仅首条SKU记录计一箱其余为零', `evidence_file_ids_json` json NOT NULL COMMENT '本次实收证据文件引用', `received_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次原箱实收确认操作人', `received_at` datetime(3) NOT NULL COMMENT '实际原箱回仓入账时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_return_carton_receipt_source` (`customer_id`,`source_pick_id`,`sku_code`), KEY `idx_return_carton_receipt_exception` (`customer_id`,`exception_order_id`,`received_at`), KEY `idx_return_carton_receipt_delivery` (`customer_id`,`delivery_order_id`), CONSTRAINT `chk_return_carton_receipt_quantity` CHECK (((`quantity` > 0) and (`packages` in (0,1)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='原生退货箱按原出库SKU实际回仓的不可变凭据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_inventory_balance`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_inventory_balance` ( `id` bigint NOT NULL COMMENT '退货库存余额ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外仓ID', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码', `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名', `total_quantity` bigint NOT NULL DEFAULT '0' COMMENT '实物总库存,仅实际出库扣减', `available_quantity` bigint NOT NULL COMMENT '可用上架数量', `carton_quantity` bigint NOT NULL COMMENT '包含该SKU的可用箱数', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_inventory_balance` (`customer_id`,`overseas_warehouse_id`,`sku_code`), CONSTRAINT `chk_ll_return_inventory_balance_quantity` CHECK (((`available_quantity` >= 0) and (`carton_quantity` >= 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货库存按客户海外仓SKU汇总余额'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_inventory_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_inventory_carton` ( `id` bigint NOT NULL COMMENT '退货库存箱ID', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `overseas_warehouse_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外仓ID', `source_receipt_id` bigint DEFAULT NULL COMMENT '来源PDA签收单ID', `source_batch_no` text COLLATE utf8mb4_unicode_ci COMMENT '实际消耗来源签收批次号,多个批次逗号分隔', `source_return_no` text COLLATE utf8mb4_unicode_ci COMMENT '实际消耗来源退货单号,多个单号逗号分隔', `source_unit_type` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源实物类型', `source_unit_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源实物编码', `pallet_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '签收时绑定的托盘码', `carton_mark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '退货箱号和箱唛编码', `fba_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA箱唛', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称', `relabel_application_id` bigint DEFAULT NULL COMMENT '绑定换标申请单ID', `relabel_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '绑定换标单号', `relabel_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标状态', `relabel_completed_at` datetime(3) DEFAULT NULL COMMENT '换标完成时间', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'AVAILABLE可用或MERGED已合箱', `sku_types` int NOT NULL COMMENT '箱内SKU种类数', `total_quantity` bigint NOT NULL COMMENT '箱内总件数', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', `merged_at` datetime(3) DEFAULT NULL COMMENT '合箱完成时间', `length` decimal(12,3) DEFAULT NULL COMMENT '绠遍暱CM', `width` decimal(12,3) DEFAULT NULL COMMENT '绠卞CM', `height` decimal(12,3) DEFAULT NULL COMMENT '绠遍珮CM', `weight` decimal(12,3) DEFAULT NULL COMMENT '绠遍噸KG', `original_packaging` tinyint(1) DEFAULT NULL COMMENT '是否使用原箱原包装', `new_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鎹㈡爣鍚庢柊绠卞敍', `location_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '退货箱当前库位', `putaway_at` datetime(3) DEFAULT NULL COMMENT '退货箱上架时间', `count_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CONFIRMED' COMMENT '箱内清点状态 PENDING待清点 CONFIRMED已确认', `counted_at` datetime(3) DEFAULT NULL COMMENT '箱内清点确认时间', `counted_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱内清点确认操作人', `label_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'WAIT_LABEL寰呰创鏍� CONFIRMED宸叉壂鐮佺‘璁ゆ爣绛�', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_inventory_carton_mark` (`carton_mark`), KEY `idx_ll_return_inventory_carton_customer` (`customer_id`,`overseas_warehouse_id`,`status`,`created_at`), KEY `idx_ll_return_inventory_carton_receipt` (`source_receipt_id`), KEY `idx_ll_return_count` (`overseas_warehouse_id`,`count_status`,`status`,`source_receipt_id`), CONSTRAINT `chk_ll_return_inventory_carton_quantity` CHECK ((((`status` in (_utf8mb4'AVAILABLE',_utf8mb4'PACKING_RESERVED',_utf8mb4'RELABEL_PENDING',_utf8mb4'OUTBOUND_PENDING',_utf8mb4'OUTBOUNDED',_utf8mb4'DISCARD_PENDING')) and (`sku_types` > 0) and (`total_quantity` > 0)) or ((`status` in (_utf8mb4'MERGED',_utf8mb4'DISCARDED')) and (`sku_types` = 0) and (`total_quantity` = 0)))), CONSTRAINT `chk_ll_return_inventory_carton_status` CHECK ((`status` in (_utf8mb4'AVAILABLE',_utf8mb4'PACKING_RESERVED',_utf8mb4'RELABEL_PENDING',_utf8mb4'OUTBOUND_PENDING',_utf8mb4'MERGED',_utf8mb4'OUTBOUNDED',_utf8mb4'DISCARD_PENDING',_utf8mb4'DISCARDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货实物库存箱及箱唛'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_inventory_carton_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_inventory_carton_item` ( `id` bigint NOT NULL COMMENT '退货库存箱SKU明细ID', `carton_id` bigint NOT NULL COMMENT '退货库存箱ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码', `product_name_zh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名', `quantity` bigint NOT NULL COMMENT '该SKU箱内数量', `packing_reserved_quantity` bigint NOT NULL DEFAULT '0' COMMENT '合箱计划预占件数', `relabelled_quantity` bigint NOT NULL DEFAULT '0' COMMENT '当前SKU已经换标的实物件数,不可二次换标', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_inventory_carton_item` (`carton_id`,`sku_code`), KEY `idx_ll_return_inventory_carton_item_customer` (`customer_id`,`sku_code`), CONSTRAINT `chk_ll_return_inventory_carton_item_quantity` CHECK ((`quantity` >= 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货库存箱内SKU和数量'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_inventory_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_inventory_operation` ( `id` bigint NOT NULL COMMENT '退货库存PDA操作ID', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作人ID', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求内容SHA-256', `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型,当前MERGE', `result_carton_id` bigint DEFAULT NULL COMMENT '合箱结果退货库存箱ID', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', `result_json` json DEFAULT NULL COMMENT '幂等操作不可变返回快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_inventory_operation_operator_key` (`operator_id`,`idempotency_key`), KEY `idx_ll_return_inventory_operation_result` (`result_carton_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货库存PDA合箱幂等操作审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_inventory_outbound_movement`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_inventory_outbound_movement` ( `id` bigint NOT NULL COMMENT '退货出库SKU流水ID', `outbound_pick_id` bigint NOT NULL COMMENT '同事务PDA出库拣货记录ID', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '库存所属客户ID和隔离键', `overseas_warehouse_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际出库海外仓ID', `carton_id` bigint NOT NULL COMMENT '真实退货库存箱ID', `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '冻结的真实退货箱业务码', `outbound_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次退货出库业务单号', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次出库SKU编码快照', `product_name_zh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名快照', `quantity` bigint NOT NULL COMMENT '本箱该SKU实际出库件数,始终为正', `total_before` bigint NOT NULL COMMENT '客户仓SKU出库前实物总数量', `total_after` bigint NOT NULL COMMENT '客户仓SKU出库后实物总数量', `available_before` bigint NOT NULL COMMENT '客户仓SKU出库前可用数量', `available_after` bigint NOT NULL COMMENT '客户仓SKU出库后可用数量', `cartons_before` bigint NOT NULL COMMENT '客户仓包含该SKU的出库前可用箱数', `cartons_after` bigint NOT NULL COMMENT '客户仓包含该SKU的出库后可用箱数', `occurred_at` datetime(3) NOT NULL COMMENT '出库记账时间', `return_sku_quantity` bigint DEFAULT NULL COMMENT '退货单SKU本来源计划出库件数快照,NULL为历史整箱出库', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_outbound_pick_sku` (`outbound_pick_id`,`sku_code`), KEY `idx_ll_return_outbound_movement_query` (`customer_id`,`overseas_warehouse_id`,`sku_code`,`occurred_at`), KEY `idx_ll_return_outbound_carton_sku` (`customer_id`,`carton_id`,`sku_code`), CONSTRAINT `chk_ll_return_outbound_movement_delta` CHECK (((`quantity` > 0) and (`total_after` >= 0) and (`available_after` >= 0) and ((`total_before` - `total_after`) = `quantity`) and ((`available_before` - `available_after`) = `quantity`) and (`cartons_after` >= 0) and ((`cartons_before` - `cartons_after`) in (0,1)) and (`total_after` >= `available_after`))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='不可变退货出库SKU库存流水'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_order` ( `id` bigint NOT NULL COMMENT '退货订单ID', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `return_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '退货订单号', `overseas_warehouse_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作海外仓ID', `warehouse_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中转仓联系人快照', `warehouse_contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中转仓联系电话快照', `customer_reference_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户参考号', `lastleg_order_id` bigint DEFAULT NULL COMMENT '鍏宠仈灏剧▼涓昏鍗旾D', `lastleg_order_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'linked lastleg order no', `need_relabel` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要换标', `relabel_application_id` bigint DEFAULT NULL COMMENT '绑定换标申请单ID', `relabel_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '绑定换标单号', `relabel_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标状态', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PENDING_RECEIPT、PARTIALLY_RECEIVED或COMPLETED', `expected_sku_types` int NOT NULL COMMENT '预报SKU种类数', `expected_quantity` bigint NOT NULL COMMENT '预报总数量', `received_quantity` bigint NOT NULL DEFAULT '0' COMMENT '累计实收总数量', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户备注', `discrepancy_reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手动完结差异原因', `manually_completed_at` datetime(3) DEFAULT NULL COMMENT '手动差异完结时间', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建请求SHA-256', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建操作人ID', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_order_customer_no` (`customer_id`,`return_no`), UNIQUE KEY `uk_ll_return_order_customer_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_return_order_warehouse_status` (`overseas_warehouse_id`,`status`,`created_at`), CONSTRAINT `chk_ll_return_order_quantity` CHECK (((`expected_sku_types` > 0) and (`expected_quantity` > 0) and (`received_quantity` >= 0) and (`received_quantity` <= `expected_quantity`))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户退货订单及SKU实收汇总'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_order_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_order_item` ( `id` bigint NOT NULL COMMENT '退货预报明细ID', `return_order_id` bigint NOT NULL COMMENT '退货订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码', `product_name_zh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名', `expected_quantity` bigint NOT NULL COMMENT '该快递单SKU预报数量', `received_quantity` bigint NOT NULL DEFAULT '0' COMMENT '该快递单SKU累计实收数量', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_item_order_sku` (`return_order_id`,`sku_code`), KEY `idx_ll_return_item_sku` (`sku_code`,`received_quantity`), CONSTRAINT `chk_ll_return_item_quantity` CHECK (((`expected_quantity` > 0) and (`received_quantity` >= 0) and (`received_quantity` <= `expected_quantity`))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户退货订单的快递单SKU预报与实收明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_packing_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_packing_plan` ( `id` bigint NOT NULL, `plan_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `return_nos_json` json NOT NULL, `boxes_json` json NOT NULL, `mode` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(3) NOT NULL, `updated_at` datetime(3) NOT NULL, `pushed_at` datetime(3) DEFAULT NULL, `completed_at` datetime(3) DEFAULT NULL, `source_items_json` json DEFAULT NULL COMMENT '精确来源箱和SKU锁定数量', `result_marks_json` json DEFAULT NULL COMMENT '完成生成或并入的目标箱唛', `request_hash` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建载荷摘要', `completion_hash` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '完成载荷摘要', `result_labels_json` json DEFAULT NULL COMMENT '计划完工标签快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_packing_plan_no` (`plan_no`), UNIQUE KEY `uk_ll_return_packing_plan_key` (`idempotency_key`), KEY `idx_ll_return_packing_plan_warehouse_status` (`overseas_warehouse_id`,`status`,`created_at`), KEY `idx_ll_return_packing_plan_warehouse` (`overseas_warehouse_id`,`status`,`pushed_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货合箱计划'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_packing_trace`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_packing_trace` ( `id` bigint NOT NULL COMMENT '合箱追溯ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原客户隔离键', `operation_id` bigint NOT NULL COMMENT '合箱操作ID', `source_carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源箱唛 空值表示目标箱原有库存快照', `target_carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '目标箱唛', `return_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原始退货单号', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品SKU编码', `quantity` bigint NOT NULL COMMENT '本次移动件数', `created_at` datetime(3) NOT NULL COMMENT '发生时间', PRIMARY KEY (`id`), KEY `idx_return_packing_trace_order` (`customer_id`,`return_no`,`created_at`), KEY `idx_return_packing_trace_target` (`customer_id`,`target_carton_mark`,`sku_code`), KEY `idx_return_packing_trace_source` (`customer_id`,`source_carton_mark`,`sku_code`), CONSTRAINT `chk_return_packing_trace_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货合箱逐SKU原始退货单不可变追溯'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_receipt` ( `id` bigint NOT NULL COMMENT 'PDA退货签收单ID', `return_order_id` bigint NOT NULL COMMENT '退货订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `receipt_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '签收单号', `receipt_batch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '签收批次号', `unit_type` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '签收实物类型 PALLET/BOX/PARCEL', `unit_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '签收实物编码', `total_box_count` bigint DEFAULT NULL COMMENT '本次实物总箱数,托盘独立于SKU箱数', `length` decimal(12,3) DEFAULT NULL COMMENT '托盘长度CM', `width` decimal(12,3) DEFAULT NULL COMMENT '托盘宽度CM', `height` decimal(12,3) DEFAULT NULL COMMENT '托盘高度CM', `weight` decimal(12,3) DEFAULT NULL COMMENT '托盘重量KG', `original_packaging` tinyint(1) DEFAULT NULL COMMENT '是否使用原箱原包装', `measurement_source` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '尺寸重量来源 PALLET_MEASURED托盘实测 UNIT_SUM子箱汇总', `pallet_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本次签收绑定的托盘码', `carton_mark` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '签收生成或绑定的退货箱号', `tracking_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本次签收包裹的可选快递单号', `bound_by` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '开始签收方式,RETURN_NO退货单号或SKU候选', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '签收状态,当前SIGNED', `received_quantity` bigint NOT NULL COMMENT '本次实收数量', `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA操作人ID', `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PDA操作人名称', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA确认幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'PDA确认请求SHA-256', `signed_at` datetime(3) NOT NULL COMMENT '签收时间', `created_at` datetime(3) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_receipt_no` (`receipt_no`), UNIQUE KEY `uk_ll_return_receipt_batch` (`receipt_batch_no`), UNIQUE KEY `uk_ll_return_receipt_operator_key` (`operator_id`,`idempotency_key`), KEY `idx_ll_return_receipt_order` (`return_order_id`,`signed_at`), CONSTRAINT `chk_ll_return_receipt_bound` CHECK ((`bound_by` in (_utf8mb4'RETURN_NO',_utf8mb4'SKU'))), CONSTRAINT `chk_ll_return_receipt_quantity` CHECK ((`received_quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PDA退货实收签收事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_receipt_batch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_receipt_batch` ( `id` bigint NOT NULL COMMENT '退货仓储计费批次ID', `return_order_id` bigint NOT NULL COMMENT '退货订单ID', `receipt_id` bigint NOT NULL COMMENT 'PDA退货签收单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `batch_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '签收批次号', `overseas_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作海外仓ID', `storage_billing_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '仓储计费状态,初始PENDING_PRICING', `storage_started_at` datetime(3) NOT NULL COMMENT '仓储计费起算时间', `created_at` datetime(3) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_return_batch_no` (`batch_no`), UNIQUE KEY `uk_ll_return_batch_receipt` (`receipt_id`), KEY `idx_ll_return_batch_billing` (`customer_id`,`overseas_warehouse_id`,`storage_billing_status`,`storage_started_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='每次退货签收生成的仓储费起算批次'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_receipt_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_receipt_item` ( `id` bigint NOT NULL COMMENT '签收SKU明细ID', `receipt_id` bigint NOT NULL COMMENT 'PDA退货签收单ID', `return_order_item_id` bigint NOT NULL COMMENT '退货预报明细ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码', `received_quantity` bigint NOT NULL COMMENT '本次SKU实收数量', `box_count` bigint DEFAULT NULL COMMENT '本次 SKU 对应箱数', PRIMARY KEY (`id`), KEY `idx_ll_return_receipt_item_receipt` (`receipt_id`), KEY `idx_ll_return_receipt_item_order_item` (`return_order_item_id`), CONSTRAINT `chk_ll_return_receipt_item_quantity` CHECK ((`received_quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='PDA退货签收SKU实际数量明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_sku_conversion`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_sku_conversion` ( `id` bigint NOT NULL COMMENT 'SKU库存转换记录ID', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键', `overseas_warehouse_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作海外仓ID', `application_id` bigint NOT NULL COMMENT '换标申请ID', `relabel_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标单号', `item_id` bigint NOT NULL COMMENT '换标箱级明细ID', `round_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '作业轮次,退回重做使用新轮次', `carton_id` bigint NOT NULL COMMENT '实物来源包裹或箱ID', `carton_mark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '完工时仓库识别码', `old_sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标前SKU', `new_sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标后SKU', `product_name_zh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '中文品名快照', `quantity` bigint NOT NULL COMMENT '实际完成转换件数', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'APPLIED待客户确认/CONFIRMED已确认/REVERSED退回冲回', `ownership_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本次转换件数的来源退货单快照,供精确冲回', `completed_at` datetime(3) NOT NULL COMMENT '实物SKU转换时间', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认时间', `reversed_at` datetime(3) DEFAULT NULL COMMENT '退回冲回时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_return_sku_conversion_round` (`item_id`,`round_key`,`old_sku_code`,`new_sku_code`), KEY `idx_return_sku_conversion_app` (`customer_id`,`application_id`,`status`), KEY `idx_return_sku_conversion_carton` (`customer_id`,`carton_id`), CONSTRAINT `chk_return_sku_conversion_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退货实物SKU换标库存转换和冲回记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_return_stock_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_return_stock_receipt` ( `id` bigint NOT NULL COMMENT '退回入仓实收凭据ID', `customer_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户数据归属', `receipt_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '退回实收业务编号', `inventory_ledger_id` bigint NOT NULL COMMENT '唯一实际退回入账流水', `exception_order_id` bigint NOT NULL COMMENT '退回异常订单', `order_id` bigint NOT NULL COMMENT '原尾程订单', `inbound_order_id` bigint NOT NULL COMMENT '原入仓单', `source_outbound_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原发运出库业务编号', `source_outbound_pallet_item_id` bigint NOT NULL COMMENT '原出库托盘明细', `source_inventory_position_id` bigint NOT NULL COMMENT '原拣货库存位置', `inventory_balance_id` bigint NOT NULL COMMENT '实际退回库存余额', `inventory_position_id` bigint NOT NULL COMMENT '实际退回库存位置', `received_packages` bigint NOT NULL COMMENT '实际退回箱数,不增加原订单箱数', `received_at` datetime(3) NOT NULL COMMENT '实际退回入账时间', `created_at` datetime(3) NOT NULL COMMENT '凭据记录时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_return_stock_receipt_no` (`customer_id`,`receipt_no`), UNIQUE KEY `uk_return_stock_receipt_ledger` (`customer_id`,`inventory_ledger_id`), KEY `idx_return_stock_receipt_order` (`customer_id`,`order_id`), KEY `idx_return_stock_receipt_position` (`customer_id`,`inventory_balance_id`,`inventory_position_id`), CONSTRAINT `chk_return_stock_receipt_packages` CHECK ((`received_packages` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='真实退回入仓及再次发运来源凭据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_security_event_inbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_security_event_inbox` ( `event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '跨区安全事件ID', `event_type` varchar(96) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'IAM安全事件类型', `payload_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化载荷SHA-256哈希', `payload_json` json NOT NULL COMMENT '冻结事件载荷JSON', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消费状态:RECEIVED或PROCESSED', `result` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '处理结果:APPLIED、STALE、DUPLICATE或DUPLICATE_VERSION', `received_at` datetime(3) NOT NULL COMMENT '接收时间', `processed_at` datetime(3) DEFAULT NULL COMMENT '处理完成时间', PRIMARY KEY (`event_id`), KEY `idx_security_inbox_type_time` (`event_type`,`received_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外IAM安全事件消费者收件箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_security_projection`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_security_projection` ( `aggregate_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '聚合类型:USER、TENANT或AUTHORIZATION', `aggregate_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户或客户聚合ID', `tenant_id` bigint NOT NULL COMMENT '平台0或客户ID', `security_status` varchar(24) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前安全状态:ACTIVE或DISABLED', `permission_version` bigint DEFAULT NULL COMMENT '当前单调权限版本', `roles_json` json NOT NULL COMMENT 'IAM投影的当前角色快照', `authorities_json` json NOT NULL COMMENT 'IAM投影的当前海外权限快照', `aggregate_version` bigint NOT NULL COMMENT '事件聚合单调版本', `payload_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '当前版本载荷哈希', `last_event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '最后应用的事件ID', `changed_at` datetime(3) NOT NULL COMMENT '国内IAM事实发生时间', `updated_at` datetime(3) NOT NULL COMMENT '投影更新时间', PRIMARY KEY (`aggregate_type`,`aggregate_id`), KEY `idx_security_projection_tenant` (`tenant_id`), KEY `idx_security_projection_permission` (`aggregate_id`,`permission_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外IAM安全状态与权限版本投影'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_inventory_daily`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_inventory_daily` ( `day_version_id` bigint NOT NULL COMMENT '所属历史日版本', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源货主编码', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '来源商品编码', `product_quality` int NOT NULL COMMENT '来源库存品质', `physical_quantity` decimal(20,6) DEFAULT NULL COMMENT '日末实物库存,未知为空,已确认零为零', `quality_status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '日末资格,有效或未知', `quality_reason` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缺覆盖或锚点等未知原因', `anchor_reference` bigint DEFAULT NULL COMMENT '独立库存锚点版本', `evidence_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '该日计算证据摘要', `source` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '库存来源标记,流水还原', PRIMARY KEY (`day_version_id`,`customer_code`,`sku_code`,`product_quality`), KEY `idx_selfop_daily_identity` (`customer_code`,`sku_code`,`day_version_id`), CONSTRAINT `chk_selfop_daily_quantity` CHECK ((((`quality_status` = _utf8mb4'VALID') and (`physical_quantity` is not null) and (`physical_quantity` >= 0)) or ((`quality_status` = _utf8mb4'UNKNOWN') and (`physical_quantity` is null)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='历史日末分货主商品品质实物库存'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_inventory_day_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_inventory_day_version` ( `id` bigint NOT NULL COMMENT '不可变历史日版本标识', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库编码', `business_date` date NOT NULL COMMENT '北京时间日末所属日期', `scope_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '业务范围摘要', `rule_version` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '日末库存还原规则版本', `build_run_id` bigint NOT NULL COMMENT '历史重建执行尝试', `publication_group_id` bigint NOT NULL COMMENT '必须一起切换的发布组标识', `sales_run_id` bigint DEFAULT NULL COMMENT '构建时固定的销量证据版本', `anchor_run_id` bigint NOT NULL COMMENT '固定的独立库存锚点版本', `input_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '冻结流水修订与覆盖及锚点输入摘要', `evidence_json` json NOT NULL COMMENT '固定输入清单及不可变证据引用', `status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '构建中、就绪、已发布、已替代或失败', `head_slot` tinyint DEFAULT NULL COMMENT '当前日头为一,非当前版本为空', `valid_sku_count` bigint NOT NULL DEFAULT '0' COMMENT '合格商品数', `unknown_sku_count` bigint NOT NULL DEFAULT '0' COMMENT '待核验商品数', `created_at` datetime(3) NOT NULL COMMENT '版本创建UTC时刻', `published_at` datetime(3) DEFAULT NULL COMMENT '发布组提交UTC时刻', `superseded_at` datetime(3) DEFAULT NULL COMMENT '被新组替代的UTC时刻', `invalidated_at` datetime(3) DEFAULT NULL COMMENT '已确认输入失效的UTC时刻', `invalidation_reason` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '旧版本失效原因', `rebuild_run_id` bigint DEFAULT NULL COMMENT '处理失效版本的重建尝试', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_history_build_day` (`build_run_id`,`business_date`), UNIQUE KEY `uk_selfop_history_head` (`source_account`,`warehouse_code`,`business_date`,`head_slot`), KEY `idx_selfop_history_group` (`publication_group_id`,`status`), CONSTRAINT `chk_selfop_history_head` CHECK (((`head_slot` is null) or ((`head_slot` = 1) and (`status` = _utf8mb4'PUBLISHED')))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='历史日库存不可变版本及原子发布日头'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_inventory_flow`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_inventory_flow` ( `id` bigint NOT NULL COMMENT '应用生成的流水记录标识', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库编码', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源货主编码', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '来源商品编码', `source_flow_id` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源流水字符串标识', `product_quality` int NOT NULL COMMENT '来源品质,零正品一次品,其他未知', `cell_no` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源库位编码', `inner_batch_no` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源内部批次号', `bill_no` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源业务单号', `source_no` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源关联单号', `bill_type` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源业务类型,未验证类型不得参与正式还原', `book_qty` decimal(20,6) DEFAULT NULL COMMENT '来源记账增减量,未知为空', `book_change_qty_raw` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源带符号变动量原文', `delta_quantity` decimal(20,6) DEFAULT NULL COMMENT '解析后的有符号实物变动量', `close_quantity` decimal(20,6) DEFAULT NULL COMMENT '对应库位批次品质链的结存', `source_create_time` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源北京时间原文', `event_at_utc` datetime(3) DEFAULT NULL COMMENT '流水发生UTC时刻,无法解析时为空', `business_date` date DEFAULT NULL COMMENT '北京时间业务日期', `quantity_unit` varchar(16) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '已确认数量单位,未知为空', `content_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '当前事实内容摘要', `revision_no` bigint NOT NULL COMMENT '同来源流水单调增加的修订号', `stage_id` bigint NOT NULL COMMENT '当前事实对应不可变暂存证据', `first_run_id` bigint NOT NULL COMMENT '首次观察执行尝试', `last_run_id` bigint NOT NULL COMMENT '最近确认执行尝试', `last_observed_at` datetime(3) NOT NULL COMMENT '最近观察UTC时刻', `validation_status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '字段资格,有效或未知', `validation_reason` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '数量或身份待核验原因', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_flow_source` (`source_account`,`warehouse_code`,`source_flow_id`), KEY `idx_selfop_flow_sku` (`source_account`,`warehouse_code`,`customer_code`,`sku_code`,`event_at_utc`), KEY `idx_selfop_flow_day` (`source_account`,`warehouse_code`,`business_date`), CONSTRAINT `chk_selfop_flow_revision` CHECK ((`revision_no` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='自营历史库存流水最新事实,旧版本保留于暂存证据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_inventory_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_inventory_snapshot` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `snapshot_run_id` bigint NOT NULL COMMENT 'INVENTORY 执行尝试;发布后该批明细不可修改', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主原始编码,不等同平台客户标识', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '原始产品 SKU', `product_quality` smallint NOT NULL COMMENT '来源品质,当前 0 正品、1 次品;全量均保存,不套用整箱库存', `product_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源名称', `physical_quantity` decimal(20,6) DEFAULT NULL COMMENT '来源stkQty实物库存,未知为空', `available_quantity` decimal(20,6) DEFAULT NULL COMMENT '来源useStkQty可用库存,未知为空,不再次扣冻结', `frozen_quantity` decimal(20,6) DEFAULT NULL COMMENT '来源freezeQty冻结库存,未知为空', `transit_quantity` decimal(20,6) DEFAULT NULL COMMENT '来源transitQty在途数量,未知为空,不计可售库存', `source_unique_key` varchar(512) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '原 uniqueKey4tenant,只作来源证据', `observed_at_utc` datetime(3) NOT NULL COMMENT '所在页实际采集时间;缺行占位取本批采集完成时间', `quality_status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT 'VALID、UNKNOWN、INVALID;STALE 按批次年龄实时派生', `quality_reason` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'SOURCE_ROW_MISSING、FIELD_MISSING、NEGATIVE_QUANTITY 等', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_stock_snapshot` (`snapshot_run_id`,`source_account`,`customer_code`,`warehouse_code`,`sku_code`,`product_quality`), KEY `idx_selfop_stock_lookup` (`source_account`,`customer_code`,`warehouse_code`,`sku_code`,`product_quality`,`snapshot_run_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='产品库存全量批次明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_outbound_discovery_scope`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_outbound_discovery_scope` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `catalog_from_utc` datetime(3) DEFAULT NULL COMMENT '账号完整目录连续覆盖UTC下界,不等同销量覆盖', `catalog_until_utc` datetime(3) DEFAULT NULL COMMENT '账号完整目录连续覆盖UTC上界,不等同销量覆盖', `next_sequence` bigint NOT NULL DEFAULT '1' COMMENT '新发现任务的单调调度序号;重试沿用,只安排任务,不判断对象内容的新旧', `next_observation_sequence` bigint NOT NULL DEFAULT '1' COMMENT '每次实际出库详情请求前分配的单调采集代次;与 task 调度序号独立,重试请求也分配新代次', `active_task_id` bigint DEFAULT NULL COMMENT '当前共享发现/详情补齐任务', `lease_owner` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号发现执行者', `lease_until_utc` datetime(3) DEFAULT NULL COMMENT '账号发现租约到期时刻', `fence_token` bigint NOT NULL DEFAULT '0' COMMENT '防止过期发现进程继续写共享暂存或派发任务', `request_budget` int NOT NULL COMMENT '一次调度允许的目录、详情请求总预算,必须为正', `time_budget_seconds` int NOT NULL COMMENT '一次调度允许占用的执行时长,必须为正', `min_request_interval_ms` int NOT NULL COMMENT '同账号请求最小间隔,按已核准配额配置', `api_budget_json` json DEFAULT NULL COMMENT '账号所有采集族共用的预算、统计日、保守预留及确认消耗、尝试许可和独占交接依据', `api_cooldown_until_utc` datetime(3) DEFAULT NULL COMMENT '账号全部真实请求共用冷却UTC截止,重启与跨日不清除', `api_pause_reason` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号停止或等待的固定原因码,不保存供应商原始错误或凭据', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_discovery_account` (`source_account`), CONSTRAINT `chk_selfop_outbound_discovery_scope` CHECK (((`request_budget` > 0) and (`time_budget_seconds` > 0) and (`min_request_interval_ms` > 0) and (`fence_token` >= 0) and (`next_sequence` > 0) and (`next_observation_sequence` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='账号共享出库目录与详情发现协调作用域'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_outbound_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_outbound_item` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `order_id` bigint NOT NULL COMMENT '对应外部出库事实', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '原始 productSku', `product_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源商品名称,仅作展示', `actual_quantity` decimal(20,6) NOT NULL COMMENT '详情 actualDeliveryQty,必须为非负有效数值', `quantity_unit` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '已核准业务单位;未确认单位不发布正式数量统计', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_order_sku` (`order_id`,`sku_code`), KEY `idx_selfop_item_sku` (`sku_code`,`order_id`), CONSTRAINT `chk_selfop_outbound_item` CHECK ((`actual_quantity` >= 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='整单替换的实际出库明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_outbound_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_outbound_order` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主原始编码,不等同平台客户标识', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `delivery_no` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT 'OMP 发货单号,采用列表及详情同一身份', `source_no` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'WMS 来源出库单号,缺失不以内部 ID 回退展示', `source_status` int NOT NULL COMMENT '原始状态,100 已出库、99 已取消;不改造成内部状态码', `source_created_time` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源创建时间原始字符串,不使用采集时间替代', `source_outbound_time` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源实际出库时间原始字符串,不使用采集时间替代', `source_timezone` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '解析采用的源时区', `outbound_at_utc` datetime(3) DEFAULT NULL COMMENT '已核准的实际出库时间点;非出库状态可空', `business_date` date DEFAULT NULL COMMENT '已核准业务时区下的出库日', `business_timezone` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '该事实当前归属仓所用业务时区,迁仓后重新确定业务日', `sales_eligible` tinyint NOT NULL DEFAULT '0' COMMENT '仅已出库、时间与全部数量有效时为 1', `revision_no` bigint NOT NULL DEFAULT '1' COMMENT '该单内容变更次数,不等于拉取次数', `content_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '订单头及完整 SKU 明细规范化摘要', `last_run_id` bigint NOT NULL COMMENT '最后一次确认或修订的执行尝试', `last_observation_sequence` bigint NOT NULL COMMENT '最后接受的完整详情采集代次;仅防旧观测重放,不按 task 调度序号拒绝较晚实际读取的事实,不冒充领星源版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_order` (`source_account`,`customer_code`,`delivery_no`), KEY `idx_selfop_order_daily` (`source_account`,`warehouse_code`,`sales_eligible`,`business_date`,`id`), KEY `idx_selfop_order_run` (`last_run_id`), CONSTRAINT `chk_selfop_outbound_order` CHECK (((`revision_no` > 0) and (`last_observation_sequence` > 0) and (`sales_eligible` in (0,1)) and ((`sales_eligible` = 0) or ((`source_status` = 100) and (`source_timezone` is not null) and (`outbound_at_utc` is not null) and (`business_date` is not null))))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='最后确认的单据事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_owner`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_owner` ( `id` bigint NOT NULL COMMENT '主键', `run_id` bigint NOT NULL COMMENT '完整资料采集版本', `source_account` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '来源账号', `customer_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主编码', `customer_name` varchar(255) DEFAULT NULL COMMENT '领星货主名称', `source_status` varchar(32) DEFAULT NULL COMMENT '来源启停状态', `observed_at_utc` datetime(6) NOT NULL COMMENT '资料观测时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_owner_version` (`run_id`,`source_account`,`customer_code`), KEY `idx_selfop_owner_lookup` (`source_account`,`customer_code`,`run_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='自营领星货主资料版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_product`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_product` ( `id` bigint NOT NULL COMMENT '主键', `run_id` bigint NOT NULL COMMENT '完整资料采集版本', `source_account` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '来源账号', `customer_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主编码', `sku_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '货主商品编码', `product_name` varchar(255) DEFAULT NULL COMMENT '商品名称', `declared_length` decimal(24,6) DEFAULT NULL COMMENT '商品资料长度', `declared_width` decimal(24,6) DEFAULT NULL COMMENT '商品资料宽度', `declared_height` decimal(24,6) DEFAULT NULL COMMENT '商品资料高度', `declared_size_unit` varchar(32) DEFAULT NULL COMMENT '商品资料尺寸单位', `measured_length` decimal(24,6) DEFAULT NULL COMMENT '仓库实测长度', `measured_width` decimal(24,6) DEFAULT NULL COMMENT '仓库实测宽度', `measured_height` decimal(24,6) DEFAULT NULL COMMENT '仓库实测高度', `measured_size_unit` varchar(32) DEFAULT NULL COMMENT '仓库实测尺寸单位', `observed_at_utc` datetime(6) NOT NULL COMMENT '资料观测时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_product_version` (`run_id`,`source_account`,`customer_code`,`sku_code`), KEY `idx_selfop_product_lookup` (`source_account`,`customer_code`,`sku_code`,`run_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='自营领星商品资料版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sku_daily_sales`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sku_daily_sales` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `sales_run_id` bigint NOT NULL COMMENT 'OUTBOUND 执行尝试,同时是计算版本', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主原始编码,不等同平台客户标识', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '原始产品 SKU', `business_date` date NOT NULL COMMENT '已核准业务日', `outbound_quantity` decimal(20,6) NOT NULL COMMENT '有效出库实际件数之和,非负', `outbound_order_count` bigint NOT NULL COMMENT '该维度去重发货单数,非负', `quantity_unit` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '同一统计维度内一致的业务单位', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_daily_version` (`sales_run_id`,`source_account`,`customer_code`,`warehouse_code`,`sku_code`,`business_date`), KEY `idx_selfop_daily_window_cover` (`sales_run_id`,`source_account`,`warehouse_code`,`business_date`,`customer_code`,`sku_code`,`outbound_quantity`,`outbound_order_count`,`quantity_unit`), KEY `idx_selfop_daily_sku_cover` (`sales_run_id`,`source_account`,`warehouse_code`,`customer_code`,`sku_code`,`business_date`,`outbound_quantity`,`outbound_order_count`,`quantity_unit`), CONSTRAINT `chk_selfop_sku_daily_sales` CHECK (((`outbound_quantity` >= 0) and (`outbound_order_count` >= 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='完整销量版本的稀疏日事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sku_profile`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sku_profile` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `profile_run_id` bigint NOT NULL COMMENT '本仓销量或库存候选版本;与对应 daily/snapshot 使用同一 run,发布后该版本全部维度行不可修改', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `customer_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '领星货主原始编码,不等同平台客户标识', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `sku_code` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '原始产品 SKU', `product_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '本版本确认的名称,不实时连接其他版本名称', `quantity_unit` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '本版本已核准单位;未知或两版本单位冲突时不计算混合指标', `first_seen_at_utc` datetime(3) DEFAULT NULL COMMENT '本证据族真实观测到本仓商品的最早接收时刻;缺行占位不能生成观察证据', `earliest_evidence_at_utc` datetime(3) DEFAULT NULL COMMENT '库存版取真实库存首次观察时刻;销量版从该版有效事实重新求最早已核准出库时间,可随改期、取消或迁仓撤回/后移', `evidence_type` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT 'INVENTORY_OBSERVATION、VALID_OUTBOUND、NONE;不得将销量证据复制成库存真实观察证据', `evidence_run_id` bigint DEFAULT NULL COMMENT '本证据族真实依据的采集批次,无证据占位为空', `last_seen_run_id` bigint DEFAULT NULL COMMENT '本证据族最近真实观测批次,无证据占位为空', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_profile_version` (`profile_run_id`,`source_account`,`customer_code`,`warehouse_code`,`sku_code`), KEY `idx_selfop_profile_evidence` (`profile_run_id`,`earliest_evidence_at_utc`,`customer_code`,`sku_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='随发布版本固定的 SKU 维度与观察依据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sync_run`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sync_run` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `task_id` bigint NOT NULL COMMENT '本次执行请求', `execution_purpose` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '从逻辑任务冻结继承,验证尝试不能作为正式统计版本', `scope_id` bigint DEFAULT NULL COMMENT '仅账号共享发现为空;分仓执行必须有作用域', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `warehouse_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源仓库原始编码,按仓独立统计', `run_role` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT 'ACCOUNT_DISCOVERY 或 WAREHOUSE_SYNC', `upstream_task_id` bigint DEFAULT NULL COMMENT '分仓出库计算引用的共享切片及其稳定暂存集合', `attempt_no` int NOT NULL COMMENT '同一请求从 1 起递增', `scope_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '本版本的业务范围摘要', `scope_snapshot_json` json NOT NULL COMMENT '分仓版只含本仓货主/品质、固定首采 [B,E0)、时区、调度与过期阈值;账号发现保存待路由仓集合,不冒充业务版', `observed_dimensions_json` json DEFAULT NULL COMMENT '本次实际出现的仓库/货主集合及数量摘要,仅作采集证据;例如已观测 70 货主不等于固定授权范围', `fence_token` bigint NOT NULL COMMENT '本尝试持有的栅栏版本', `base_published_run_id` bigint DEFAULT NULL COMMENT '执行开始时的上一可见版本', `reference_sales_run_id` bigint DEFAULT NULL COMMENT '库存构建开始时固定的本仓已发布销量版,用其不可变 SKU 维度生成出库已知商品占位;没有已发布销量版时为空,不读取半归并订单事实', `inventory_daily_sample_date` date DEFAULT NULL COMMENT '北京时间当日首个合格计划库存发布代表日期,非代表为空', `inventory_sample_rule_version` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '日库存代表选择规则 DAILY_SCHEDULED_FIRST_V1,与日标记原子保存', `status` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT 'FETCHING、VALIDATED、ROUTED、FACTS_APPLIED、BUILDING、READY、PUBLISHED、REUSED、YIELDED、FAILED、ABORTED、SAMPLE_DONE;复用和验证不是版本头', `last_phase` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT '失败/中止前所在阶段,支持判断是否已经归并事实', `fetch_started_at_utc` datetime(3) DEFAULT NULL COMMENT '实际采集开始UTC时间', `fetch_finished_at_utc` datetime(3) DEFAULT NULL COMMENT '实际采集完成UTC时间,未完成为空', `build_started_at_utc` datetime(3) DEFAULT NULL COMMENT '实际开始有界候选构建UTC时间,用于构建耗时及首采合并间隔', `warehouse_daily_ready` tinyint NOT NULL DEFAULT '0' COMMENT '仓库日汇总已完整构建并校验,含完整空版本', `finished_at_utc` datetime(3) DEFAULT NULL COMMENT '本次尝试终止UTC时间', `published_at_utc` datetime(3) DEFAULT NULL COMMENT '实际原子切换发布指针UTC时间', `superseded_at_utc` datetime(3) DEFAULT NULL COMMENT '被新发布版替代的首次UTC时间,同事务填写且重试不重置', `page_count` int NOT NULL DEFAULT '0' COMMENT '已完整获取页数', `source_total_count` bigint DEFAULT NULL COMMENT '上游可靠返回的总数;未返回则为空', `unique_object_count` bigint NOT NULL DEFAULT '0' COMMENT '规范化去重后对象数', `progress_snapshot_json` json DEFAULT NULL COMMENT '尝试终止时冻结的有界可靠进度摘要,历史尝试不随逻辑任务改写', `heartbeat_at_utc` datetime(3) DEFAULT NULL COMMENT '有效执行者最新UTC心跳,不代表业务检查点推进', `coverage_status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT 'UNKNOWN、PARTIAL、COMPLETE;分页完整与数值有效性分别判断', `covered_from_utc` datetime(3) DEFAULT NULL COMMENT '本仓销量版本实际连续覆盖UTC下界', `covered_until_utc` datetime(3) DEFAULT NULL COMMENT '本仓销量版本实际连续覆盖UTC上界,不含端点', `complete_day_from` date DEFAULT NULL COMMENT '本仓完整自然日区间首日,包含', `complete_day_until` date DEFAULT NULL COMMENT '本仓完整自然日区间末日,不含', `applied_fact_revision` bigint DEFAULT NULL COMMENT '本次尝试归并后的事实修订号,库存为空', `calculated_fact_revision` bigint DEFAULT NULL COMMENT '候选销量版本计算所依据的固定事实修订号', `error_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '内部可诊断错误分类,不保存认证信息', `error_message` varchar(500) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '脱敏后的固定错误摘要', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_run_attempt` (`task_id`,`attempt_no`), UNIQUE KEY `uk_selfop_inventory_daily` (`source_account`,`warehouse_code`,`inventory_daily_sample_date`), KEY `idx_selfop_run_scope` (`scope_id`,`id`), KEY `idx_selfop_run_status` (`status`,`updated_at`), CONSTRAINT `chk_selfop_inventory_daily` CHECK ((((`inventory_daily_sample_date` is null) and (`inventory_sample_rule_version` is null)) or ((`inventory_daily_sample_date` is not null) and (`inventory_sample_rule_version` is not null) and (`inventory_sample_rule_version` = _utf8mb4'DAILY_SCHEDULED_FIRST_V1') and (`execution_purpose` = _utf8mb4'BUSINESS') and (`run_role` = _utf8mb4'WAREHOUSE_SYNC') and (`status` = _utf8mb4'PUBLISHED') and (`coverage_status` = _utf8mb4'COMPLETE')))), CONSTRAINT `chk_selfop_sync_run` CHECK (((`attempt_no` > 0) and (`page_count` >= 0) and (`unique_object_count` >= 0) and (`execution_purpose` in (_utf8mb4'BUSINESS',_utf8mb4'VALIDATION')) and ((`execution_purpose` <> _utf8mb4'VALIDATION') or (`status` not in (_utf8mb4'PUBLISHED',_utf8mb4'REUSED'))) and ((`source_total_count` is null) or (`source_total_count` >= 0)) and (((`run_role` = _utf8mb4'ACCOUNT_DISCOVERY') and (`scope_id` is null) and (`warehouse_code` is null)) or ((`run_role` = _utf8mb4'WAREHOUSE_SYNC') and (`scope_id` is not null) and (`warehouse_code` is not null))))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='执行尝试、覆盖证明和版本头'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sync_scope`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sync_scope` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `data_family` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT 'OUTBOUND 或 INVENTORY;按账号+仓库+任务族互斥', `scope_json` json NOT NULL COMMENT '本仓范围规则,customerMode=ALL_AUTHORIZED,库存为全部品质;当前账号全部授权货主均自营,不将当天出现的货主列表当白名单', `scope_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '仓库、货主范围规则、品质、时区及单位口径的规范化摘要;不包含当天观测到的客户/SKU 集合', `business_timezone` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '本仓报表及调度时区,初始建议值为 Asia/Shanghai,各仓独立核准', `source_timezone` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '本仓已核准的出库源时间时区', `schedule_cron` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '本仓、本任务族的调度表达式,按 business_timezone 执行', `stale_after_seconds` int NOT NULL COMMENT '本仓、本任务族数据过期阈值,必须为正;库存初始可采用 26 小时,后续按仓调整', `warehouse_policy_ref` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '未来按仓告警/补货策略的稳定引用;一期为空,不建告警规则表', `initial_from_utc` datetime(3) DEFAULT NULL COMMENT '首采固定UTC下界,按本仓业务时区减一个月', `initial_until_utc` datetime(3) DEFAULT NULL COMMENT '首采固定UTC截止,重试不重新取当前时间', `discovery_from_utc` datetime(3) DEFAULT NULL COMMENT '本仓已发布的连续销量覆盖UTC下界', `discovery_until_utc` datetime(3) DEFAULT NULL COMMENT '本仓已发布的连续销量覆盖UTC上界,不含端点', `fact_revision` bigint NOT NULL DEFAULT '0' COMMENT '出库事实归并修订号;内容实际变化才增加', `published_fact_revision` bigint NOT NULL DEFAULT '0' COMMENT '本仓最后已发布销量版所使用的事实修订号', `rebuild_required` tinyint NOT NULL DEFAULT '0' COMMENT '事实变化待重建标记;跨仓修订同时置旧、新仓为 1', `invalidated_at_utc` datetime(3) DEFAULT NULL COMMENT '最近一次因事实修订使当前版待重建的时刻', `published_run_id` bigint DEFAULT NULL COMMENT '唯一对外可见版本,指向本任务族已发布执行批次', `lease_owner` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '当前执行者令牌,不使用仅进程内锁', `lease_until_utc` datetime(3) DEFAULT NULL COMMENT '租约到期时刻', `fence_token` bigint NOT NULL DEFAULT '0' COMMENT '每次取得租约递增,事实提交和发布均校验', `known_order_cursor_id` bigint DEFAULT NULL COMMENT '本仓已可靠处理的稳定订单内部标识游标', `known_order_round_max_id` bigint DEFAULT NULL COMMENT '本轮已知单复查固定最大内部标识', `known_order_round_started_at_utc` datetime(3) DEFAULT NULL COMMENT '本仓已知单复查轮次开始UTC时间', `known_order_round_finished_at_utc` datetime(3) DEFAULT NULL COMMENT '本仓已知单完整轮转完成UTC时间', `history_round_from_utc` datetime(3) DEFAULT NULL COMMENT '本仓历史核对固定UTC下界', `history_round_until_utc` datetime(3) DEFAULT NULL COMMENT '本仓历史核对固定UTC上界', `history_slice_cursor_utc` datetime(3) DEFAULT NULL COMMENT '本仓下一待核对历史切片UTC位置', `history_round_finished_at_utc` datetime(3) DEFAULT NULL COMMENT '上一轮历史时间片全部完成时刻', `review_request_budget` int NOT NULL COMMENT '本仓单次复查最大请求数,必须为正', `review_time_budget_seconds` int NOT NULL COMMENT '本仓单次复查最大执行秒数,必须为正', `review_target_days` int NOT NULL DEFAULT '7' COMMENT '建议每 7 天轮转一遍,属于待配额验证的目标,不保证首次大量详情在单次调度内完成', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_scope` (`source_account`,`warehouse_code`,`data_family`), KEY `idx_selfop_scope_lease` (`lease_until_utc`), CONSTRAINT `chk_selfop_sync_scope` CHECK (((`data_family` in (_utf8mb4'OUTBOUND',_utf8mb4'INVENTORY')) and (`stale_after_seconds` > 0) and (`review_request_budget` > 0) and (`review_time_budget_seconds` > 0) and (`review_target_days` > 0) and (`fact_revision` >= 0) and (`published_fact_revision` >= 0) and (`fence_token` >= 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='分仓任务族租约及发布指针'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sync_stage`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sync_stage` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `run_id` bigint NOT NULL COMMENT '首次写入该暂存对象的执行尝试', `stage_batch_id` bigint NOT NULL COMMENT '出库取共享发现 task.id,便于断点续取;库存取本次 run.id,严禁跨尝试混页', `last_fetch_run_id` bigint NOT NULL COMMENT '最后一次补齐该对象的执行尝试,保留重试来源', `observation_sequence` bigint DEFAULT NULL COMMENT '该完整出库详情实际请求的采集代次;有效出库对象必填,目录待补对象和库存为空;不能填 task 调度序号', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码,按仓独立统计', `previous_warehouse_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '路由时从已有单据识别的原仓库;归并前再校验,跨仓时通知两仓', `object_type` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT 'OUTBOUND_ORDER 或 PRODUCT_STOCK', `object_key_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '规范化业务键摘要;原业务键保留在载荷中并核对', `first_page_no` int NOT NULL COMMENT '首次发现页码', `observed_at_utc` datetime(3) NOT NULL COMMENT '实际接收该对象的时刻', `content_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '完整规范化对象摘要', `payload_json` json NOT NULL COMMENT '目录阶段可先存订单头,详情齐后补完整 SKU;VALID 后不再修改;库存保存产品库存字段', `before_payload_json` json DEFAULT NULL COMMENT '订单归并事务内记录归并前的完整规范化事实;新增单为空', `validation_status` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '暂存校验状态:PENDING待核验、VALID有效、INVALID异常', `validation_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段缺失、冲突、未知时区等原因', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_stage_object` (`stage_batch_id`,`object_type`,`object_key_hash`), KEY `idx_selfop_stage_history` (`object_type`,`object_key_hash`,`stage_batch_id`), KEY `idx_selfop_stage_observation` (`object_type`,`object_key_hash`,`validation_status`,`observation_sequence`), KEY `idx_selfop_stage_fact_observation` (`observation_sequence`,`warehouse_code`,`object_type`,`validation_status`,`run_id`,`observed_at_utc`), KEY `idx_selfop_stage_route` (`stage_batch_id`,`warehouse_code`,`validation_status`), CONSTRAINT `chk_selfop_sync_stage` CHECK (((`first_page_no` > 0) and ((`object_type` <> _utf8mb4'OUTBOUND_ORDER') or (`validation_status` <> _utf8mb4'VALID') or (`observation_sequence` is not null)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='待验证事实与修订证据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_sync_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_sync_task` ( `id` bigint NOT NULL COMMENT '应用生成的记录标识', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', `task_no` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '稳定采集业务任务号,重试沿用,不展示内部数据库标识', `execution_purpose` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT 'BUSINESS或VALIDATION;由服务端冻结用途,子任务继承', `validation_root_task_id` bigint DEFAULT NULL COMMENT '验证会话唯一预算根任务,根引用自身,正式任务为空', `validation_budget_json` json DEFAULT NULL COMMENT '验证根冻结硬预算、累计消耗、库存分仓页数、截止时刻及停止原因', `business_root_task_id` bigint DEFAULT NULL COMMENT '测试人工正式采集共享预算根任务;生产任务为空', `business_budget_json` json DEFAULT NULL COMMENT '仅测试正式采集根保存冻结请求上限、截止时间、消耗及停止原因', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `task_role` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT 'ACCOUNT_DISCOVERY 或 WAREHOUSE_SYNC', `scope_id` bigint DEFAULT NULL COMMENT '分仓任务必须引用分仓作用域;仅账号共享发现为空', `warehouse_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '来源仓库原始编码,按仓独立统计', `discovery_scope_id` bigint DEFAULT NULL COMMENT '共享发现必填,引用账号发现协调器', `upstream_task_id` bigint DEFAULT NULL COMMENT '出库分仓任务引用已持久化目录的共享发现切片;库存无此上游', `discovery_sequence` bigint DEFAULT NULL COMMENT '共享任务及分仓子任务继承的调度顺序;重试保持不变,不用于事实覆盖判定', `observation_baseline` bigint DEFAULT NULL COMMENT '共享任务建立时已分配的最大详情采集代次,分仓子任务继承;用于识别旧任务恢复期间出现的其他任务新观测', `request_key` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '共享发现包含切片/计划槽位;分仓任务包含仓库、任务族及切片或计划槽位;人工附请求幂等键', `request_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '请求类型、查询范围、范围摘要的指纹;同键不同请求拒绝', `task_type` varchar(24) COLLATE utf8mb4_bin NOT NULL COMMENT '计划、补采、复核、重建与验证;INVENTORY_FLOW_HISTORY为流水片,INVENTORY_HISTORY_BUILD为本地历史还原', `planned_at_utc` datetime(3) DEFAULT NULL COMMENT '计划时点;人工请求可空', `query_from_utc` datetime(3) DEFAULT NULL COMMENT '出库查询区间UTC下界,库存不填', `query_until_utc` datetime(3) DEFAULT NULL COMMENT '出库查询区间UTC上界,不含端点,库存不填', `query_scope_json` json NOT NULL COMMENT '不变的账号、货主、仓库、品质和查询条件快照;按单补查在此记录单号', `routing_manifest_json` json DEFAULT NULL COMMENT '共享切片目录完整标记、每仓对象键集合/数量和详情就绪状态;各对象记录 effectiveStageId,需新代次复查时记录 refreshTaskId,完成后指向新有效暂存;不改写旧载荷', `scope_hash` char(64) COLLATE utf8mb4_bin NOT NULL COMMENT '建任务时的业务范围摘要', `status` varchar(20) COLLATE utf8mb4_bin NOT NULL COMMENT 'WAITING_SOURCE、READY、RUNNING、RETRY_WAIT、SUCCEEDED、DEAD、SAMPLE_DONE;样本结束不等于正式成功', `apply_state` varchar(20) COLLATE utf8mb4_bin NOT NULL COMMENT '正式出库归并NOT_STARTED、APPLYING、BLOCKED、APPLIED;共享发现、库存、重建及验证为NOT_APPLICABLE', `affected_warehouse_codes_json` json DEFAULT NULL COMMENT '本次归并可能改变的仓集合,包含原仓与新仓;首段事实写入前登记,扩大集合须先取得新增仓租约并锁 scope,不能写完再补', `apply_started_at_utc` datetime(3) DEFAULT NULL COMMENT '首段事实提交UTC时间', `apply_completed_at_utc` datetime(3) DEFAULT NULL COMMENT '全部必需事实归并完成UTC时间,失败不填', `attempt_count` int NOT NULL DEFAULT '0' COMMENT '已创建的执行尝试数', `next_retry_at_utc` datetime(3) DEFAULT NULL COMMENT '有限退避后下一次可执行时刻', `requested_by` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '人工请求的平台操作人,仅内部审计', `result_published_run_id` bigint DEFAULT NULL COMMENT '正式成功任务实际发布或复用的版本;验证和共享发现为空', `progress_json` json DEFAULT NULL COMMENT '与可靠检查点一起提交的有界阶段、单位、尝试和质量进度,不保存单据集合', `progress_updated_at_utc` datetime(3) DEFAULT NULL COMMENT '最后可靠业务检查点UTC时间,与执行心跳分开', PRIMARY KEY (`id`), UNIQUE KEY `uk_selfop_task_no` (`task_no`), UNIQUE KEY `uk_selfop_task_request` (`source_account`,`request_key`), KEY `idx_selfop_task_poll` (`status`,`next_retry_at_utc`,`id`), KEY `idx_selfop_task_upstream` (`upstream_task_id`,`warehouse_code`), KEY `idx_selfop_task_apply` (`apply_state`,`id`), KEY `idx_selfop_task_scope_list` (`scope_id`,`created_at`,`id`), KEY `idx_selfop_task_account_list` (`source_account`,`task_role`,`created_at`,`id`), KEY `idx_selfop_task_business_root` (`business_root_task_id`,`status`,`id`), CONSTRAINT `chk_selfop_business_budget` CHECK ((((`business_root_task_id` is null) and (`business_budget_json` is null)) or ((`execution_purpose` = _utf8mb4'BUSINESS') and (`business_root_task_id` is not null) and (((`business_root_task_id` = `id`) and (`business_budget_json` is not null)) or ((`business_root_task_id` <> `id`) and (`business_budget_json` is null)))))), CONSTRAINT `chk_selfop_sync_task` CHECK (((`attempt_count` >= 0) and (`execution_purpose` in (_utf8mb4'BUSINESS',_utf8mb4'VALIDATION')) and (((`execution_purpose` = _utf8mb4'BUSINESS') and (`validation_root_task_id` is null) and (`validation_budget_json` is null)) or ((`execution_purpose` = _utf8mb4'VALIDATION') and (`validation_root_task_id` is not null) and (`apply_state` = _utf8mb4'NOT_APPLICABLE') and (`result_published_run_id` is null) and (`status` <> _utf8mb4'SUCCEEDED'))) and (((`task_role` = _utf8mb4'ACCOUNT_DISCOVERY') and (`scope_id` is null) and (`warehouse_code` is null) and (`discovery_scope_id` is not null)) or ((`task_role` = _utf8mb4'WAREHOUSE_SYNC') and (`scope_id` is not null) and (`warehouse_code` is not null))))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='一次计划或人工请求'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_selfop_warehouse_daily_sales`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_selfop_warehouse_daily_sales` ( `sales_run_id` bigint NOT NULL COMMENT '完整销量计算版本标识', `source_account` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '受控来源账号别名,不保存密钥', `warehouse_code` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '来源仓库原始编码', `business_date` date NOT NULL COMMENT '已核准业务日', `observed_quantity` decimal(38,6) DEFAULT NULL COMMENT '该日PCS非负有效出库量之和,无有效行时为空', `invalid_row_count` bigint NOT NULL COMMENT '该日数量为空或负数或单位非PCS的日事实行数', `source_row_count` bigint NOT NULL COMMENT '该日参与仓库汇总的SKU日事实总行数', `created_at` datetime(3) NOT NULL COMMENT 'UTC创建时间', `updated_at` datetime(3) NOT NULL COMMENT 'UTC更新时间', PRIMARY KEY (`sales_run_id`,`source_account`,`warehouse_code`,`business_date`), CONSTRAINT `chk_selfop_warehouse_daily_sales` CHECK (((`source_row_count` > 0) and (`invalid_row_count` >= 0) and (`invalid_row_count` <= `source_row_count`) and ((`observed_quantity` is null) or (`observed_quantity` >= 0)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='完整销量版本按仓按日汇总,随SKU日事实批次原子构建'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_us_truck_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_us_truck_order` ( `id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `transport_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `origin` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `origin_address` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `destination` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `destination_address` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `container_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `pallet_count` int NOT NULL DEFAULT '1', `package_count` int NOT NULL DEFAULT '0', `received_pallet_count` int NOT NULL DEFAULT '0', `allocated_pallet_count` int NOT NULL DEFAULT '0', `shipped_pallet_count` int NOT NULL DEFAULT '0', `total_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000', `total_volume_cbm` decimal(18,6) NOT NULL DEFAULT '0.000000', `budget_amount` decimal(18,2) DEFAULT NULL, `currency` varchar(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USD', `contact_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `contact_info` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `requested_date` date NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `receipt_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `receipt_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `version` bigint NOT NULL DEFAULT '0', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `vehicle_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车辆类型:PALLET_15为15拖,PALLET_30为30拖;拼车未提供时为空', `origin_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系人', `origin_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系电话', `destination_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系人', `destination_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系电话', `pickup_at` datetime DEFAULT NULL COMMENT '取货时间,按填写的日期时分保存,不转换时区', `delivery_at` datetime DEFAULT NULL COMMENT '送货时间,按填写的日期时分保存;拼车来源未提供时为空', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_us_truck_order_no` (`customer_id`,`order_no`), UNIQUE KEY `uk_ll_us_truck_order_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_us_truck_order_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_us_truck_order_date` (`customer_id`,`requested_date`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='US domestic trucking customer order'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_us_truck_order_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_us_truck_order_operation` ( `id` bigint NOT NULL COMMENT '操作记录ID', `order_id` bigint NOT NULL COMMENT '美国卡车订单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `operation_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '具名操作类型', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作请求内容哈希', `result_version` bigint NOT NULL COMMENT '操作完成后的订单版本', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_us_truck_operation_key` (`customer_id`,`order_id`,`idempotency_key`), KEY `idx_ll_us_truck_operation_order` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='美国卡车订单幂等操作账'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_us_truck_order_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_us_truck_order_pallet` ( `id` bigint NOT NULL, `order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sequence_no` int NOT NULL, `source` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `warehouse_pallet_id` bigint DEFAULT NULL, `package_count` int DEFAULT NULL, `received_at` datetime(3) DEFAULT 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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_us_truck_order_pallet_no` (`customer_id`,`order_id`,`pallet_no`), UNIQUE KEY `uk_ll_us_truck_order_pallet_seq` (`customer_id`,`order_id`,`sequence_no`), KEY `idx_ll_us_truck_order_pallet_list` (`customer_id`,`order_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_us_truck_order_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_us_truck_order_status_history` ( `id` bigint NOT NULL, `order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `operation_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'UPDATE' COMMENT '具名操作类型', `from_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `to_status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operator_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作幂等键', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), KEY `idx_ll_us_truck_history` (`customer_id`,`order_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Immutable US trucking order status history'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_vehicle`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_vehicle` ( `id` bigint NOT NULL COMMENT '车辆档案ID', `plate_number` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '车牌号', `model` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '车型', `fuel_consumption_per100_km` decimal(10,2) NOT NULL COMMENT '百公里油耗,单位升', `mileage_km` bigint NOT NULL COMMENT '当前公里码,单位公里', `driver_or_dispatch_company` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '司机姓名或外派单位', `phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '司机或外派单位联系电话', `region` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '区域:DOMESTIC/OVERSEAS', `ownership` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '车辆归属:OWNED/DISPATCHED', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '状态:IN_SERVICE/DISPATCHED/MAINTENANCE/INACTIVE/RETURNED', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `record_version` bigint NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人', `updated_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '更新人', `created_at` datetime(3) NOT NULL COMMENT '创建时间', `updated_at` datetime(3) NOT NULL COMMENT '更新时间', `max_pallet_spaces` int DEFAULT NULL COMMENT '最大标准托位,未知时为空', `max_load_kg` decimal(12,3) DEFAULT NULL COMMENT '最大载重,千克', `max_volume_cbm` decimal(12,3) DEFAULT NULL COMMENT '可用容积,立方米', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_vehicle_plate` (`plate_number`), KEY `idx_ll_vehicle_page` (`ownership`,`region`,`status`,`updated_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台车辆主数据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_wallet_event_inbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_wallet_event_inbox` ( `event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国内Finance资金结果事件ID', `command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原海外资金指令事件ID', `payload_hash` varchar(71) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规范化载荷SHA-256,包含sha256:前缀', `payload_json` json NOT NULL COMMENT '冻结事件信封', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RECEIVED或PROCESSED', `received_at` datetime(3) NOT NULL COMMENT '接收时间', `processed_at` datetime(3) DEFAULT NULL COMMENT '处理完成时间', PRIMARY KEY (`event_id`), UNIQUE KEY `uk_ll_wallet_command_result` (`command_event_id`), KEY `idx_ll_wallet_event_status` (`status`,`received_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='跨区客户资金结果幂等收件箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_carton` ( `id` bigint NOT NULL COMMENT '预报箱主键', `transfer_order_id` bigint NOT NULL COMMENT '转运单ID', `transfer_item_id` bigint DEFAULT NULL COMMENT '实际箱内首项SKU明细ID,预报补箱可为空', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '系统生成的一箱一码箱唛', `customer_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户原箱唛,用于换标现场绑定', `carton_index` int NOT NULL COMMENT '全单箱序号', `total_cartons` int NOT NULL COMMENT '首次生成时全单总箱数', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'EXPECTED' COMMENT '箱状态:EXPECTED待实收', `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 '更新时间', `length_cm` decimal(12,2) DEFAULT NULL COMMENT '箱子实测长度厘米', `width_cm` decimal(12,2) DEFAULT NULL COMMENT '箱子实测宽度厘米', `height_cm` decimal(12,2) DEFAULT NULL COMMENT '箱子实测高度厘米', `gross_weight_kg` decimal(12,2) DEFAULT NULL COMMENT '箱子实测重量千克', `counted_quantity` bigint DEFAULT NULL COMMENT '箱内SKU实点件数', `count_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱内清点幂等键', `count_request_hash` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱内清点请求摘要', `counted_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '箱内清点操作人', `counted_at` datetime(3) DEFAULT NULL COMMENT '箱内清点完成时间', `discrepancy_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实收与预报箱数差异原因', `transfer_pallet_id` bigint DEFAULT NULL COMMENT '签收箱所属转运托盘事实ID', `sku_items_json` json DEFAULT NULL COMMENT '实收箱内SKU及逐项件数明细', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_transfer_carton_mark` (`customer_id`,`carton_mark`), UNIQUE KEY `uk_ll_wh_transfer_carton_index` (`transfer_order_id`,`carton_index`), KEY `idx_ll_wh_transfer_carton_list` (`customer_id`,`transfer_order_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓储转运系统箱唛预报'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_inventory_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_inventory_allocation` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `transfer_order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `inventory_position_id` bigint NOT NULL, `inventory_balance_id` bigint NOT NULL, `inbound_order_id` bigint NOT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `pallet_id` bigint NOT NULL, `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `package_count` int NOT NULL, `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RESERVED', `active_position_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `allocated_at` datetime(3) NOT NULL, `shipped_at` datetime(3) DEFAULT NULL, `received_at` datetime(3) DEFAULT 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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本次来源分配的实际SKU快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_transfer_allocation_position` (`transfer_order_id`,`inventory_position_id`), UNIQUE KEY `uk_ll_wh_transfer_active_position` (`customer_id`,`active_position_key`), KEY `idx_ll_wh_transfer_allocation_list` (`customer_id`,`transfer_order_id`,`status`), KEY `idx_ll_wh_transfer_allocation_position` (`transfer_order_id`,`inventory_position_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Exclusive source inventory positions allocated to a warehouse transfer'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_item` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `transfer_order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `sku_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `product_name_zh` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `package_count` int NOT NULL, `shipping_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `declared_quantity` bigint DEFAULT NULL COMMENT 'SKU鐢虫姤浠舵暟锛岄潪棰勮鎴栧疄鏀剁鏁�', PRIMARY KEY (`id`), KEY `idx_ll_wh_transfer_item_list` (`customer_id`,`transfer_order_id`), KEY `idx_ll_wh_transfer_item_sku` (`customer_id`,`sku_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Frozen warehouse transfer cargo items'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_measurement_photo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_measurement_photo` ( `id` bigint NOT NULL COMMENT '测量照片引用ID', `transfer_order_id` bigint NOT NULL COMMENT '仓储转运单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `file_id` bigint NOT NULL COMMENT '文件服务文件ID', `file_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件名快照', `content_type` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件媒体类型快照', `size_bytes` bigint NOT NULL DEFAULT '0' COMMENT '文件字节数快照', `uploaded_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PDA上传操作人', `uploaded_at` datetime(3) NOT NULL COMMENT '上传时间', `submitted_at` datetime(3) DEFAULT NULL COMMENT '随测量打托提交时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_transfer_measurement_photo_file` (`customer_id`,`transfer_order_id`,`file_id`), KEY `idx_ll_transfer_measurement_photo_order` (`customer_id`,`transfer_order_id`,`uploaded_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓储转运PDA测量现场照片引用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_order` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `transfer_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `inbound_order_id` bigint NOT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `lastleg_order_id` bigint NOT NULL, `lastleg_order_no` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `operating_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `fba_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可选FBA目的仓编码', `delivery_address` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '提货地址或中转仓收货地址', `pickup_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提货联系人', `pickup_contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提货联系电话', `package_count` int NOT NULL, `delivery_method` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入仓方式', `estimated_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计入仓时间,库存转运不填写', `estimated_ship_at` datetime(3) DEFAULT NULL COMMENT '预计发货时间', `fba_shipment_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可选FBA货件编号', `tracking_no` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `fba_box_nos` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `need_relabel` tinyint NOT NULL DEFAULT '0', `relabel_application_id` bigint DEFAULT NULL, `relabel_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `relabel_completed_at` datetime(3) DEFAULT NULL COMMENT '鍏宠仈璐存爣瀹屾垚鏃堕棿', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PENDING_REVIEW', `review_decision` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核决定', `review_remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核备注或驳回原因', `reviewed_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核人ID', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', `allocation_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '库存分配幂等键', `allocation_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '库存分配请求哈希', `outbound_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '出库幂等键', `outbound_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '出库请求哈希', `outbound_at` datetime(3) DEFAULT NULL COMMENT '出库时间', `measured_at` datetime(3) DEFAULT NULL COMMENT 'PDA测量完成时间', `actual_ship_at` datetime(3) DEFAULT NULL COMMENT '实际发货时间', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT 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), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', `label_deadline` datetime(3) DEFAULT NULL COMMENT '换标截止时间', `relabel_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标联系人', `relabel_contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标联系电话', `relabel_charge_amount` decimal(20,2) DEFAULT NULL COMMENT '换标费用CNY', `relabel_delivery_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标后派送方式', `palletize_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PDA打托幂等键', `palletize_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PDA打托请求哈希', `confirmation_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户测量确认幂等键', `confirmation_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户测量确认请求哈希', `customer_confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认测量时间', `destination_type` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的类型:FBA或PRIVATE', `destination_warehouse_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓ID快照', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓名称快照', `private_destination_address` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓完整地址', `private_destination_postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓邮编', `private_destination_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系人', `private_destination_contact_phone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '私人仓联系电话', `destination_binding_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地绑定幂等键', `destination_binding_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地绑定请求哈希', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_transfer_no` (`customer_id`,`transfer_no`), UNIQUE KEY `uk_ll_wh_transfer_key` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_wh_transfer_tail_order` (`lastleg_order_id`), KEY `idx_ll_wh_transfer_list` (`customer_id`,`status`,`created_at`), KEY `idx_ll_wh_transfer_inbound` (`customer_id`,`inbound_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Customer warehouse transfer order'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_pallet` ( `id` bigint NOT NULL COMMENT '打托事实ID', `transfer_order_id` bigint NOT NULL COMMENT '转运单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `sequence_no` int NOT NULL COMMENT '托序号', `warehouse_pallet_id` bigint DEFAULT NULL COMMENT '鐢熸垚鍚庣殑娴峰?浠撶湡瀹炴墭鐩業D', `pallet_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鐢熸垚鍚庣殑鐪熷疄鎵樼洏鐮', `warehouse_location_id` bigint DEFAULT NULL COMMENT '鐢熸垚鍚庣殑鐪熷疄搴撲綅ID', `warehouse_location_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实库位码', `warehouse_resource_lock_id` bigint DEFAULT NULL COMMENT '鐢熸垚鍚庣殑浠撳偍璧勬簮閿両D', `carton_count` int NOT NULL COMMENT '本托实收箱数', `length_cm` decimal(12,2) NOT NULL COMMENT '实测长cm', `width_cm` decimal(12,2) NOT NULL COMMENT '实测宽cm', `height_cm` decimal(12,2) NOT NULL COMMENT '实测高cm', `gross_weight_kg` decimal(12,3) NOT NULL COMMENT '实测毛重kg', `volume_cbm` decimal(18,6) NOT NULL COMMENT '实测体积CBM', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '打托状态', `draft_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鑽夌?淇濆瓨骞傜瓑閿', `draft_request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鑽夌?璇锋眰鎽樿?', `generate_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鏂版墭鐩樼敓鎴愬箓绛夐敭', `bind_idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鎵?爜缁戝畾骞傜瓑閿', `bound_at` datetime(3) DEFAULT NULL COMMENT '鎵?爜纭??缁戝畾鏃堕棿', `completed_at` datetime(3) DEFAULT 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 '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_transfer_pallet_seq` (`transfer_order_id`,`sequence_no`), UNIQUE KEY `uk_ll_transfer_pallet_physical` (`customer_id`,`warehouse_pallet_id`), KEY `idx_ll_transfer_pallet_order` (`customer_id`,`transfer_order_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓储转运PDA实测打托事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_pallet_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_pallet_item` ( `id` bigint NOT NULL COMMENT '主键ID', `transfer_order_id` bigint NOT NULL COMMENT '转运单ID', `transfer_pallet_id` bigint NOT NULL COMMENT '转运托盘事实ID', `transfer_item_id` bigint NOT NULL COMMENT '转运申报明细ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `package_count` int NOT NULL COMMENT '本托该SKU实收箱数', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_transfer_pallet_item` (`transfer_pallet_id`,`transfer_item_id`), KEY `idx_ll_transfer_pallet_item_order` (`customer_id`,`transfer_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓储转运每托SKU箱数回填'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_receipt` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `transfer_order_id` bigint NOT NULL, `allocation_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `source_inventory_position_id` bigint NOT NULL, `destination_inventory_balance_id` bigint NOT NULL, `destination_inventory_position_id` bigint NOT NULL, `package_count` int NOT NULL, `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `inventory_operation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `received_at` datetime(3) NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_transfer_receipt_source` (`transfer_order_id`,`source_inventory_position_id`), UNIQUE KEY `uk_ll_wh_transfer_receipt_key` (`customer_id`,`idempotency_key`), UNIQUE KEY `uk_ll_wh_transfer_receipt_operation` (`customer_id`,`inventory_operation_key`), KEY `idx_ll_wh_transfer_receipt_list` (`customer_id`,`transfer_order_id`,`received_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Idempotent destination stock receipt for one transfer source position'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_receipt_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_receipt_command` ( `id` bigint NOT NULL COMMENT '收货命令主键', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户标识', `transfer_order_id` bigint NOT NULL COMMENT '转运单标识', `source_inventory_position_id` bigint NOT NULL COMMENT '本次收货来源库存位置', `idempotency_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原始收货幂等键', `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '完整原始收货请求摘要', `request_json` json NOT NULL COMMENT '完整原始收货请求快照', `target_warehouse_id` bigint NOT NULL COMMENT '实际目标海外收货仓', `target_pallet_id` bigint NOT NULL COMMENT '目标实物托盘', `target_location_id` bigint NOT NULL COMMENT '目标实际库位', `target_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '共享目标资源绑定摘要', `target_json` json NOT NULL COMMENT '权威目标仓托盘库位及目的仓快照', `reservation_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '同转运同目标托盘共享资源占用键', `resource_lock_id` bigint DEFAULT NULL COMMENT '已确认有效的海外资源锁标识', `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '命令状态PREPARED准备完成RESERVED资源占用COMPLETED收货完成', `created_at` datetime(3) NOT NULL COMMENT '命令创建时间', `updated_at` datetime(3) NOT NULL COMMENT '命令最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_receipt_cmd_source` (`transfer_order_id`,`source_inventory_position_id`), UNIQUE KEY `uk_ll_wh_receipt_cmd_key` (`customer_id`,`idempotency_key`), KEY `idx_ll_wh_receipt_cmd_target` (`customer_id`,`transfer_order_id`,`target_pallet_id`), CONSTRAINT `ck_ll_wh_receipt_cmd_status` CHECK ((`status` in (_utf8mb4'PREPARED',_utf8mb4'RESERVED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='转运逐来源收货原请求与共享目标资源占用命令'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_relabel_binding`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_relabel_binding` ( `id` bigint NOT NULL COMMENT '主键ID', `transfer_order_id` bigint NOT NULL COMMENT '转运单ID', `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户租户ID', `operation_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标类型', `customer_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户原箱唛', `original_sku` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '旧SKU', `new_sku` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '新SKU', `quantity` int NOT NULL COMMENT '换标件数', `fba_carton_mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '新FBA箱唛', `destination_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'FBA目的仓', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `source_allocation_id` bigint DEFAULT NULL COMMENT '已有库存转运的原始来源分配ID', `relabel_item_id` bigint DEFAULT NULL COMMENT '本票关联换标明细ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_transfer_relabel_mark` (`transfer_order_id`,`customer_carton_mark`), KEY `idx_ll_transfer_relabel_order` (`customer_id`,`transfer_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓储转运换标预绑定明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `ll_warehouse_transfer_source_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `ll_warehouse_transfer_source_order` ( `id` bigint NOT NULL COMMENT 'Snowflake ID', `transfer_order_id` bigint NOT NULL, `customer_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `source_lastleg_order_id` bigint NOT NULL, `source_lastleg_order_no` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `inbound_order_id` bigint NOT NULL, `inbound_code` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `tenant_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BAIYUE' COMMENT 'SaaS租户标识,当前单租户固定为BAIYUE', PRIMARY KEY (`id`), UNIQUE KEY `uk_ll_wh_transfer_source` (`transfer_order_id`,`source_lastleg_order_id`), KEY `idx_ll_wh_transfer_source_list` (`customer_id`,`transfer_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Selected historical customer orders and inbound bindings'; /*!40101 SET character_set_client = @saved_cs_client */; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `baiyue_firstleg` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; USE `baiyue_firstleg`; DROP TABLE IF EXISTS `event_delivery_attempt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `event_delivery_attempt` ( `attempt_id` varchar(36) NOT NULL COMMENT '本次投递租约UUID和审计主键', `service_name` varchar(32) NOT NULL COMMENT '本库所属生产服务', `event_type` varchar(96) NOT NULL COMMENT '白名单业务事件类型', `entry_id` varchar(128) NOT NULL COMMENT '生产者发件箱主键', `event_id` varchar(128) DEFAULT NULL COMMENT '合法原事件UUID或ULID;格式错误时为空', `target_name` varchar(64) NOT NULL COMMENT '固定目标业务服务', `started_at` datetime(3) NOT NULL COMMENT '领取及审计事务提交前的开始时间', `finished_at` datetime(3) DEFAULT NULL COMMENT '尝试完成或租约过期恢复时间', `duration_ms` bigint DEFAULT NULL COMMENT '尝试耗时毫秒', `outcome` varchar(24) NOT NULL COMMENT 'STARTED/APPLIED/DUPLICATE/STALE/RETRY/DEAD/LEASE_EXPIRED', `error_code` varchar(64) DEFAULT NULL COMMENT '有限错误类别或HTTP状态;不含载荷与令牌', `next_retry_at` datetime(3) DEFAULT NULL COMMENT '本次失败后下次计划投递时间', PRIMARY KEY (`attempt_id`), KEY `idx_delivery_attempt_entry` (`service_name`,`entry_id`,`started_at`), KEY `idx_delivery_attempt_outcome` (`outcome`,`started_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='本服务业务事件逐次投递审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `event_delivery_retry_audit`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `event_delivery_retry_audit` ( `request_id` varchar(36) NOT NULL COMMENT '人工重试请求UUID和幂等键', `producer_table` varchar(64) NOT NULL COMMENT '本服务发件箱表名', `entry_id` varchar(64) NOT NULL COMMENT '发件箱记录主键', `event_id` varchar(128) NOT NULL COMMENT '原事件全局标识', `event_type` varchar(64) NOT NULL COMMENT '原事件类型', `payload_hash` varchar(71) NOT NULL COMMENT '原事件不可变负载摘要', `operator_name` varchar(128) NOT NULL COMMENT '持有运维凭据的操作人标识', `reason` varchar(500) NOT NULL COMMENT '人工重试原因', `previous_failures` int NOT NULL COMMENT '重试前累计失败次数', `previous_error` varchar(1000) DEFAULT NULL COMMENT '重试前最后一次脱敏错误', `requested_at` datetime(3) NOT NULL COMMENT '重试申请提交时间', PRIMARY KEY (`request_id`), KEY `idx_event_retry_entry` (`producer_table`,`entry_id`,`requested_at`), KEY `idx_event_retry_event` (`event_id`,`requested_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='业务事件人工重试审计,与恢复待发送状态同事务提交'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_assignment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_assignment_history` ( `id` bigint unsigned NOT NULL COMMENT '指派历史ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `task_id` bigint unsigned NOT NULL COMMENT '所属履约任务ID', `previous_assignee_id` bigint unsigned DEFAULT NULL COMMENT '原负责人ID', `assignee_id` bigint unsigned NOT NULL COMMENT '新负责人ID', `assignee_name` varchar(64) NOT NULL COMMENT '新负责人名称快照', `reason` varchar(500) DEFAULT NULL COMMENT '指派或改派原因', `operator_id` bigint unsigned NOT NULL COMMENT '执行指派的操作人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '指派发生时间', PRIMARY KEY (`id`), KEY `idx_assignment_task_time` (`tenant_id`,`task_id`,`created_at`), KEY `fk_assignment_task` (`task_id`), CONSTRAINT `fk_assignment_task` FOREIGN KEY (`task_id`) REFERENCES `fl_fulfillment_task` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='头程任务指派历史表:不可变记录每次负责人变更及原因,用于追踪和审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_fba_rate`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_fba_rate` ( `id` bigint unsigned NOT NULL COMMENT '船司FBA价格ID', `tenant_id` bigint unsigned NOT NULL COMMENT '平台价格作用域ID,船司价格固定为0', `price_book_version_id` bigint unsigned DEFAULT NULL COMMENT '整表价格版本ID;历史兼容价格可为空', `rate_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '平台公共价格编码', `rate_version` int unsigned NOT NULL COMMENT '价格版本号', `origin_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '确认前可为空;确认后绑定平台公共起运仓逻辑ID', `origin_warehouse_code` varchar(64) DEFAULT NULL COMMENT '起运仓稳定编码', `origin_warehouse_name` varchar(128) NOT NULL COMMENT '起运仓名称快照', `business_type` varchar(32) NOT NULL COMMENT '业务或计费类型', `channel_code` varchar(64) DEFAULT NULL COMMENT '渠道编码', `price_model` varchar(32) NOT NULL DEFAULT 'FBA_WAREHOUSE_RATE' COMMENT '价格模型', `carrier_id` bigint unsigned DEFAULT NULL COMMENT '船司逻辑ID', `carrier_name` varchar(128) DEFAULT NULL COMMENT '历史承运商名称;渠道价格可为空', `destination_type` varchar(16) DEFAULT NULL COMMENT '目的地类型:FBA或OVERSEAS;REGION_WEIGHT_TIER区域阶梯行为空', `destination_code` varchar(32) DEFAULT NULL COMMENT 'FBA目的仓编码;区域阶梯模型为空', `destination_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '平台海外仓稳定ID;不存环境专属ID', `destination_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `region_code` varchar(16) DEFAULT NULL COMMENT '区域阶梯模型区域编码', `pricing_tax_mode` varchar(16) DEFAULT NULL COMMENT '报价包税维度;独立于订单tax_mode', `weight_from_kg` decimal(18,6) DEFAULT NULL COMMENT '区域阶梯起始计费重量KG', `charge_unit` varchar(16) NOT NULL COMMENT '计费单位:KG或CBM', `unit_price` decimal(18,6) NOT NULL COMMENT '基础单价', `currency` char(3) NOT NULL COMMENT '币种', `additional_fee` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '固定附加费', `source_sheet_name` varchar(128) DEFAULT NULL COMMENT '原始Excel Sheet', `source_row_number` int unsigned DEFAULT NULL COMMENT '原始Excel行号', `source_destination_text` varchar(1000) DEFAULT NULL COMMENT '原始组合仓库或区域文本', `effective_from` datetime(3) NOT NULL COMMENT '生效开始时间', `effective_to` datetime(3) DEFAULT NULL COMMENT '生效结束时间', `status` varchar(24) NOT NULL DEFAULT 'ACTIVE' COMMENT '价格状态:PENDING_CONFIRMATION、ACTIVE或SUPERSEDED', `remark` varchar(500) DEFAULT NULL COMMENT '价格备注', `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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_fba_rate_version` (`tenant_id`,`rate_code`,`rate_version`), KEY `idx_fba_rate_unique_match` (`tenant_id`,`origin_warehouse_id`,`business_type`,`channel_code`,`carrier_id`,`destination_code`,`charge_unit`,`status`,`effective_from`,`effective_to`), KEY `idx_fba_rate_match` (`tenant_id`,`origin_warehouse_id`,`business_type`,`channel_code`,`carrier_id`,`destination_type`,`destination_code`,`destination_warehouse_id`,`charge_unit`,`status`,`effective_from`,`effective_to`), KEY `idx_fba_rate_book` (`price_book_version_id`,`channel_code`,`origin_warehouse_id`,`price_model`,`status`), KEY `idx_fba_rate_destination` (`price_book_version_id`,`channel_code`,`origin_warehouse_id`,`destination_type`,`destination_warehouse_id`,`destination_code`), KEY `idx_fba_rate_region` (`price_book_version_id`,`channel_code`,`origin_warehouse_id`,`region_code`,`weight_from_kg`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船司FBA目的仓价格版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_exception_fact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_exception_fact` ( `id` bigint unsigned NOT NULL COMMENT '船节点异常事实ID', `query_id` bigint unsigned NOT NULL COMMENT '所属查询任务ID', `event_key` varchar(192) NOT NULL COMMENT '供应商编码与供应商事件ID组成的幂等键', `provider_code` varchar(32) NOT NULL COMMENT '供应商编码', `provider_event_id` varchar(128) NOT NULL COMMENT '供应商稳定事件ID', `provider_status` varchar(128) NOT NULL COMMENT '供应商原始异常状态', `exception_code` varchar(32) NOT NULL COMMENT '平台异常编码', `active` tinyint(1) NOT NULL COMMENT '1异常发生;0异常解除', `observed_at` datetime(3) NOT NULL COMMENT '供应商观测时间', `location_code` varchar(32) DEFAULT NULL COMMENT '地点编码', `location_name` varchar(128) DEFAULT NULL COMMENT '地点名称', `source_reference` varchar(500) DEFAULT NULL COMMENT '可审计来源引用', `raw_payload_hash` char(64) NOT NULL COMMENT '原始响应SHA-256', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '事实入库时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_carrier_schedule_exception_event` (`query_id`,`event_key`), KEY `idx_carrier_schedule_exception_timeline` (`query_id`,`observed_at`,`id`), CONSTRAINT `fk_carrier_schedule_exception_query` FOREIGN KEY (`query_id`) REFERENCES `fl_carrier_schedule_query` (`id`), CONSTRAINT `chk_carrier_schedule_exception_active` CHECK ((`active` in (0,1))), CONSTRAINT `chk_carrier_schedule_exception_code` CHECK ((`exception_code` in (_utf8mb4'CUSTOMS_HOLD',_utf8mb4'TERMINAL_HOLD',_utf8mb4'DOCUMENT_HOLD',_utf8mb4'UNKNOWN_HOLD'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船节点异常发生与解除不可变事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_node_fact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_node_fact` ( `id` bigint unsigned NOT NULL COMMENT '标准船节点事实ID', `query_id` bigint unsigned NOT NULL COMMENT '所属查询任务ID', `event_key` varchar(192) NOT NULL COMMENT '供应商编码与供应商事件ID组成的幂等键', `provider_code` varchar(32) NOT NULL COMMENT '轨迹供应商编码', `provider_event_id` varchar(128) NOT NULL COMMENT '供应商稳定事件ID', `provider_node_code` varchar(64) NOT NULL COMMENT '供应商原始节点编码', `standard_node` varchar(32) NOT NULL COMMENT '标准船节点', `node_sequence` int unsigned NOT NULL COMMENT '标准节点单调序号', `observed_at` datetime(3) NOT NULL COMMENT '供应商观测时间', `estimated_at` datetime(3) DEFAULT NULL COMMENT '供应商预计发生时间', `actual_at` datetime(3) DEFAULT NULL COMMENT '供应商确认实际发生时间', `location_code` varchar(32) DEFAULT NULL COMMENT '节点地点编码', `location_name` varchar(128) DEFAULT NULL COMMENT '节点地点名称', `source_reference` varchar(500) DEFAULT NULL COMMENT '可审计来源引用', `raw_payload_hash` char(64) NOT NULL COMMENT '原始响应SHA-256;不保存敏感原文', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '事实入库时间', `container_booking_id` bigint unsigned NOT NULL COMMENT '所属真实货柜ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_carrier_schedule_node_event` (`query_id`,`event_key`), KEY `idx_carrier_schedule_node_timeline` (`query_id`,`node_sequence`,`observed_at`,`id`), KEY `idx_container_shipping_node_timeline` (`container_booking_id`,`observed_at`,`id`), CONSTRAINT `fk_carrier_schedule_node_query` FOREIGN KEY (`query_id`) REFERENCES `fl_carrier_schedule_query` (`id`), CONSTRAINT `chk_carrier_schedule_node_sequence` CHECK ((`node_sequence` in (10,20,30,40,50,60,70,80,90,100))), CONSTRAINT `chk_carrier_schedule_node_standard` CHECK ((`standard_node` in (_utf8mb4'DEPARTED_WAREHOUSE',_utf8mb4'AT_ORIGIN_PORT',_utf8mb4'LOADED_ON_VESSEL',_utf8mb4'DEPARTED_ORIGIN_PORT',_utf8mb4'IN_TRANSIT',_utf8mb4'ARRIVED_DESTINATION_PORT',_utf8mb4'DISCHARGED_FROM_VESSEL',_utf8mb4'PICKUP_READY',_utf8mb4'PICKED_UP',_utf8mb4'EMPTY_RETURNED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='供应商标准船节点不可变事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_query`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_query` ( `id` bigint unsigned NOT NULL COMMENT '船司官网查询任务ID', `query_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船司官网查询任务编号', `customer_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '关联海运订舱ID', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '指定查询的柜次ID;整票订舱查询时为空', `container_scope_id` bigint unsigned GENERATED ALWAYS AS (coalesce(`container_booking_id`,0)) STORED COMMENT '柜次唯一作用域计算值;整票订舱查询固定为0', `carrier_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船公司编码:MATSON美森、SML森罗、ZIM以星、COSCO中远海运、EMC长荣、HEDE合德', `tracking_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '官网跟踪类型:BOOKING_NO订舱号、BILL_OF_LADING提单号、CONTAINER_NO箱号', `tracking_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提交至船公司官网的跟踪号码', `official_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船公司官网查询入口地址快照', `access_mode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '官网访问方式:PUBLIC_FORM公开表单、HCAPTCHA人机校验、DYNAMIC_IFRAME动态页面', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务状态:READY可查询、MANUAL_REQUIRED需人工处理、SUCCESS已取得有效结果', `window_started_at` datetime(3) NOT NULL COMMENT '当前三天查询窗口起始时间', `attempt_count` int unsigned NOT NULL DEFAULT '0' COMMENT '当前查询窗口已执行次数;最多3次', `next_allowed_at` datetime(3) NOT NULL COMMENT '频控规则允许的下次查询时间', `last_attempt_at` datetime(3) DEFAULT NULL COMMENT '最近一次查询尝试时间', `last_success_at` datetime(3) DEFAULT NULL COMMENT '最近一次取得有效结果时间', `source_updated_at` datetime(3) DEFAULT NULL COMMENT '船公司官网展示的结果更新时间', `expires_at` datetime(3) DEFAULT NULL COMMENT '当前最近有效结果过期时间;到期后仍保留但标记过期', `result_port_schedule_id` bigint unsigned DEFAULT NULL COMMENT '最近有效结果对应的船期记录ID', `last_attempt_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最近查询尝试状态快照', `manual_reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '需要人工查询或录入的原因', `last_error_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最近查询失败错误码', `last_error_message` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最近查询失败错误说明', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平台内部备注', `created_by` bigint unsigned NOT NULL COMMENT '创建操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '任务创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL 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 '乐观锁版本号', `consecutive_failures` int unsigned NOT NULL DEFAULT '0' COMMENT '当前正常查询槽位内的连续技术失败次数', `latest_node_observed_at` datetime(3) DEFAULT NULL COMMENT '最近实际标准节点发生时间', `latest_standard_node` varchar(32) DEFAULT NULL COMMENT '最近实际标准船节点;预计事实不推进', `lease_owner` varchar(64) DEFAULT NULL COMMENT '当前调度租约持有者', `lease_until` datetime(3) DEFAULT NULL COMMENT '当前调度租约过期时间', `stop_reason` varchar(500) DEFAULT NULL COMMENT '任务停止原因', `stopped_at` datetime(3) DEFAULT NULL COMMENT '任务停止时间', `trigger_source` varchar(32) NOT NULL DEFAULT 'MANUAL' COMMENT '任务触发来源:OUTBOUND_CONFIRM或MANUAL', PRIMARY KEY (`id`), UNIQUE KEY `uk_carrier_schedule_query_no` (`query_no`), UNIQUE KEY `uk_carrier_schedule_query_scope` (`customer_id`,`ocean_booking_id`,`container_scope_id`,`carrier_code`,`tracking_type`,`tracking_no`), KEY `idx_carrier_schedule_query_due` (`status`,`next_allowed_at`,`id`), KEY `idx_carrier_schedule_query_customer` (`customer_id`,`updated_at`,`id`), KEY `idx_carrier_schedule_query_expiry` (`expires_at`,`id`), KEY `fk_carrier_schedule_query_booking` (`ocean_booking_id`), KEY `fk_carrier_schedule_query_container` (`container_booking_id`), KEY `fk_carrier_schedule_query_result` (`result_port_schedule_id`), CONSTRAINT `fk_carrier_schedule_query_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `fk_carrier_schedule_query_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `fk_carrier_schedule_query_result` FOREIGN KEY (`result_port_schedule_id`) REFERENCES `fl_port_schedule` (`id`), CONSTRAINT `chk_carrier_schedule_query_attempt` CHECK ((`attempt_count` between 0 and 3)), CONSTRAINT `chk_carrier_schedule_query_customer` CHECK ((`customer_id` > 0)), CONSTRAINT `chk_carrier_schedule_query_tracking` CHECK ((`tracking_type` in (_utf8mb4'BOOKING_NO',_utf8mb4'BILL_OF_LADING',_utf8mb4'CONTAINER_NO'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='六家船公司官网查询任务与三天窗口频控'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_query_attempt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_query_attempt` ( `id` bigint unsigned NOT NULL COMMENT '船司官网查询尝试ID', `query_id` bigint unsigned NOT NULL COMMENT '所属船司官网查询任务ID', `window_attempt_no` int unsigned NOT NULL COMMENT '当前三天窗口内的尝试序号;取值1至3', `carrier_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本次尝试的船公司编码快照', `access_mode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本次尝试的官网访问方式快照', `official_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本次尝试使用的官网地址快照', `attempt_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '尝试结果:MANUAL_REQUIRED需人工处理、SUCCESS成功、FAILED失败', `coverage_gap` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否存在自动化覆盖缺口:0否、1是', `coverage_gap_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '自动化覆盖缺口编码', `manual_reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '转人工处理原因', `error_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '查询失败错误码', `error_message` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '查询失败错误说明', `operator_id` bigint unsigned NOT NULL COMMENT '执行本次尝试的操作人ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '尝试记录创建时间', PRIMARY KEY (`id`), KEY `idx_carrier_schedule_attempt_query` (`query_id`,`created_at`,`id`), CONSTRAINT `fk_carrier_schedule_attempt_query` FOREIGN KEY (`query_id`) REFERENCES `fl_carrier_schedule_query` (`id`), CONSTRAINT `chk_carrier_schedule_attempt_no` CHECK ((`window_attempt_no` between 1 and 3)), CONSTRAINT `chk_carrier_schedule_attempt_status` CHECK ((`attempt_status` in (_utf8mb4'MANUAL_REQUIRED',_utf8mb4'SUCCESS',_utf8mb4'FAILED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船司官网查询尝试不可变审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_query_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_query_history` ( `id` bigint unsigned NOT NULL COMMENT '船司查询任务历史ID', `query_id` bigint unsigned NOT NULL COMMENT '所属船司官网查询任务ID', `action` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '历史动作:CREATE创建、ATTEMPT执行查询、MANUAL_RESULT录入人工结果', `from_version` int unsigned DEFAULT NULL COMMENT '变更前任务版本;创建时为空', `to_version` int unsigned NOT NULL COMMENT '变更后任务版本', `reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作原因或说明', `before_snapshot` json DEFAULT NULL COMMENT '变更前任务数据快照;创建时为空', `after_snapshot` json NOT NULL COMMENT '变更后任务数据快照', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史记录创建时间', PRIMARY KEY (`id`), KEY `idx_carrier_schedule_history_query` (`query_id`,`created_at`,`id`), CONSTRAINT `fk_carrier_schedule_history_query` FOREIGN KEY (`query_id`) REFERENCES `fl_carrier_schedule_query` (`id`), CONSTRAINT `chk_carrier_schedule_history_action` CHECK ((`action` in (_utf8mb4'CREATE',_utf8mb4'ATTEMPT',_utf8mb4'MANUAL_RESULT'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船司查询任务不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_carrier_schedule_query_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_carrier_schedule_query_operation` ( `id` bigint unsigned NOT NULL COMMENT '船司查询写操作幂等记录ID', `query_id` bigint unsigned DEFAULT NULL COMMENT '关联查询任务ID;创建任务落库前允许为空', `operator_id` bigint unsigned NOT NULL COMMENT '发起写操作的平台操作人ID', `operation` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '幂等写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端写操作幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要;用于识别同键不同请求', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '处理状态:PROCESSING处理中、SUCCESS成功', `result_json` json DEFAULT NULL COMMENT '成功结果JSON快照;供幂等重放返回', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '写操作成功完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_carrier_schedule_operation` (`operator_id`,`idempotency_key`), KEY `idx_carrier_schedule_operation_query` (`query_id`,`created_at`,`id`), CONSTRAINT `fk_carrier_schedule_operation_query` FOREIGN KEY (`query_id`) REFERENCES `fl_carrier_schedule_query` (`id`), CONSTRAINT `chk_carrier_schedule_operation_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船司查询写操作幂等与请求摘要'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_chargeable_weight_confirmation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_chargeable_weight_confirmation` ( `id` bigint NOT NULL COMMENT '确认记录ID', `tenant_id` bigint NOT NULL COMMENT '客户隔离ID', `inbound_id` bigint NOT NULL COMMENT '独立来源入仓单ID', `operator_id` bigint NOT NULL COMMENT '确认客户成员ID', `command_key` varchar(128) NOT NULL COMMENT '成员确认幂等键', `fingerprint` char(64) NOT NULL COMMENT '计费重及测量轮次摘要', `chargeable_weight_kg` decimal(18,4) NOT NULL COMMENT '客户确认计费重千克', `confirmed_at` datetime(3) NOT NULL COMMENT '客户确认时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_weight_confirmation_command` (`tenant_id`,`operator_id`,`command_key`), KEY `idx_weight_confirmation_inbound` (`tenant_id`,`inbound_id`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户计费重独立确认历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_coload_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_coload_command` ( `id` bigint unsigned NOT NULL COMMENT '幂等命令ID', `actor_id` bigint unsigned NOT NULL COMMENT '平台或内部操作人ID', `action_type` varchar(16) NOT NULL, `idempotency_key` varchar(128) NOT NULL, `request_hash` char(64) NOT NULL, `command_status` varchar(16) NOT NULL COMMENT 'PROCESSING、SUCCESS', `result_group_id` bigint unsigned DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `completed_at` datetime(3) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_coload_command` (`actor_id`,`action_type`,`idempotency_key`), KEY `fk_coload_command_group` (`result_group_id`), CONSTRAINT `fk_coload_command_group` FOREIGN KEY (`result_group_id`) REFERENCES `fl_coload_group` (`id`), CONSTRAINT `chk_coload_command_status` CHECK ((`command_status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='同柜不可拆组幂等写命令'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_coload_group`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_coload_group` ( `id` bigint unsigned NOT NULL COMMENT '同柜不可拆组ID', `group_no` varchar(40) NOT NULL COMMENT '稳定组号CLG-{id}', `group_status` varchar(16) NOT NULL COMMENT 'ACTIVE、LOCKED、CONSUMED、CANCELLED', `warehouse_id` bigint unsigned NOT NULL COMMENT '国内收货仓ID快照', `channel_code` varchar(64) NOT NULL COMMENT '物流渠道编码快照', `locked_plan_id` bigint unsigned DEFAULT NULL COMMENT 'LOCKED/CONSUMED绑定装柜计划ID', `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观版本', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `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), `locked_by` bigint unsigned DEFAULT NULL, `locked_by_name` varchar(64) DEFAULT NULL, `locked_at` datetime(3) DEFAULT NULL, `consumed_by` bigint unsigned DEFAULT NULL, `consumed_by_name` varchar(64) DEFAULT NULL, `consumed_at` datetime(3) DEFAULT NULL, `cancelled_by` bigint unsigned DEFAULT NULL, `cancelled_by_name` varchar(64) DEFAULT NULL, `cancelled_at` datetime(3) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_coload_group_no` (`group_no`), KEY `idx_coload_group_status` (`group_status`,`updated_at`,`id`), KEY `idx_coload_group_plan` (`locked_plan_id`,`group_status`), CONSTRAINT `fk_coload_group_plan` FOREIGN KEY (`locked_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `chk_coload_group_lock` CHECK ((((`group_status` in (_utf8mb4'ACTIVE',_utf8mb4'CANCELLED')) and (`locked_plan_id` is null)) or ((`group_status` in (_utf8mb4'LOCKED',_utf8mb4'CONSUMED')) and (`locked_plan_id` is not null)))), CONSTRAINT `chk_coload_group_status` CHECK ((`group_status` in (_utf8mb4'ACTIVE',_utf8mb4'LOCKED',_utf8mb4'CONSUMED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='同柜且不可拆业务组聚合根'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_coload_group_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_coload_group_history` ( `id` bigint unsigned NOT NULL COMMENT '状态历史ID', `group_id` bigint unsigned NOT NULL, `action_type` varchar(16) NOT NULL COMMENT 'CREATE、CANCEL、LOCK、UNLOCK、CONSUME', `from_status` varchar(16) DEFAULT NULL, `to_status` varchar(16) NOT NULL, `plan_id` bigint unsigned DEFAULT NULL, `operation_id` varchar(128) NOT NULL COMMENT '稳定幂等操作ID', `remark` varchar(500) DEFAULT NULL, `operator_id` bigint unsigned NOT NULL, `operator_name` varchar(64) DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE KEY `uk_coload_history_operation` (`group_id`,`action_type`,`operation_id`), KEY `idx_coload_history_group` (`group_id`,`created_at`,`id`), CONSTRAINT `fk_coload_history_group` FOREIGN KEY (`group_id`) REFERENCES `fl_coload_group` (`id`), CONSTRAINT `chk_coload_history_action` CHECK ((`action_type` in (_utf8mb4'CREATE',_utf8mb4'CANCEL',_utf8mb4'LOCK',_utf8mb4'UNLOCK',_utf8mb4'CONSUME'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='同柜不可拆组不可变状态历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_coload_group_member`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_coload_group_member` ( `id` bigint unsigned NOT NULL COMMENT '组成员ID', `group_id` bigint unsigned NOT NULL COMMENT '同柜不可拆组ID', `tenant_id` bigint unsigned NOT NULL COMMENT '成员客户ID;允许跨客户成组', `order_id` bigint unsigned NOT NULL COMMENT '订单ID', `inbound_id` bigint unsigned NOT NULL COMMENT '创建时权威入库单ID', `full_package_count` int unsigned NOT NULL COMMENT '必须整组分配的满箱数快照', `active_flag` tinyint unsigned DEFAULT '1' COMMENT '当前约束唯一标识;取消或消费后置NULL', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `closed_at` datetime(3) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_coload_group_member` (`group_id`,`inbound_id`), UNIQUE KEY `uk_coload_active_inbound` (`tenant_id`,`inbound_id`,`active_flag`), KEY `idx_coload_member_order` (`order_id`,`created_at`,`group_id`), KEY `fk_coload_member_inbound` (`inbound_id`), CONSTRAINT `fk_coload_member_group` FOREIGN KEY (`group_id`) REFERENCES `fl_coload_group` (`id`), CONSTRAINT `fk_coload_member_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_coload_member_active` CHECK (((`active_flag` is null) or (`active_flag` = 1))), CONSTRAINT `chk_coload_member_packages` CHECK ((`full_package_count` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='同柜不可拆组成员与满箱数快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_consumed_event`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_consumed_event` ( `event_id` bigint unsigned NOT NULL COMMENT '已消费领域事件ID,与生产端Outbox事件ID一致', `event_type` varchar(64) NOT NULL COMMENT '已消费事件类型', `consumed_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '首次成功消费时间', PRIMARY KEY (`event_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='头程消息消费幂等表:记录已处理事件并按事件ID去重,防止RocketMQ重复投递造成重复建单;不是消息发布表'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_booking`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_booking` ( `id` bigint unsigned NOT NULL COMMENT '货柜预订ID(雪花ID)', `booking_no` varchar(40) NOT NULL COMMENT '平台唯一货柜预订单号', `container_no` varchar(64) DEFAULT NULL COMMENT '集装箱号;确认前允许修订', `cabinet_no` varchar(64) NOT NULL COMMENT '平台唯一内部柜号', `channel_code` varchar(64) DEFAULT NULL COMMENT '订舱渠道编码快照', `channel_name` varchar(128) DEFAULT NULL COMMENT '订舱渠道名称快照', `ocean_booking_id` bigint unsigned DEFAULT NULL COMMENT '来源订舱ID', `ocean_booking_requirement_id` bigint unsigned DEFAULT NULL COMMENT '来源订舱箱型需求ID', `warehouse_id` bigint unsigned NOT NULL COMMENT '装柜仓库ID;平台公共资源', `warehouse_name` varchar(128) NOT NULL COMMENT '装柜仓库名称快照', `bill_of_lading_no` varchar(128) DEFAULT NULL COMMENT '提单号', `vessel_name` varchar(128) DEFAULT NULL COMMENT '船名快照', `voyage_no` varchar(64) DEFAULT NULL COMMENT '航次;确认前允许修订', `container_type` varchar(32) NOT NULL COMMENT '箱型,例如20GP、40GP、40HQ', `shipping_company_id` bigint unsigned DEFAULT NULL COMMENT '船司ID快照', `shipping_company_name` varchar(128) DEFAULT NULL COMMENT '船司名称快照', `departure_port_code` varchar(32) DEFAULT NULL COMMENT '起运港编码快照', `departure_port_name` varchar(128) DEFAULT NULL COMMENT '起运港名称快照', `destination_port_code` varchar(32) DEFAULT NULL COMMENT '目的港编码快照', `destination_port_name` varchar(128) DEFAULT NULL COMMENT '目的港名称快照', `destination_warehouse_code` varchar(64) DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `capacity_cbm` decimal(18,4) DEFAULT NULL COMMENT '货柜容量m3', `max_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '货柜最大承重kg', `terminal_trucking_company` varchar(128) DEFAULT NULL COMMENT '码头拖车公司', `loading_at` datetime(3) DEFAULT NULL COMMENT '计划或实际装柜时间', `estimated_sailing_at` datetime(3) DEFAULT NULL COMMENT '预计开船时间', `actual_sailing_at` datetime(3) DEFAULT NULL COMMENT '实际开船时间', `estimated_port_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到港时间', `actual_port_arrival_at` datetime(3) DEFAULT NULL COMMENT '实际到港时间', `estimated_warehouse_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到仓时间', `actual_warehouse_arrival_at` datetime(3) DEFAULT NULL COMMENT '实际到仓时间', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改人ID', `updated_by_name` varchar(64) DEFAULT NULL 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 '乐观锁版本号', `source_type` varchar(24) NOT NULL DEFAULT 'SIMULATION', `record_status` varchar(16) NOT NULL DEFAULT 'ACTIVE', `merged_into_container_booking_id` bigint unsigned DEFAULT NULL, `customer_id` bigint unsigned DEFAULT NULL, `customer_name` varchar(128) DEFAULT NULL, `terminal_trucking_company_id` bigint unsigned DEFAULT NULL, `unloading_completed_at` datetime(3) DEFAULT NULL, `unloading_photo_uploaded_at` datetime(3) DEFAULT NULL, `estimated_empty_reported_at` datetime(3) DEFAULT NULL, `actual_empty_reported_at` datetime(3) DEFAULT NULL, `empty_report_source_version` bigint DEFAULT NULL, `channel_group_code` varchar(64) DEFAULT NULL COMMENT '模拟柜计划渠道分组;关联真实订舱后继续保留', `pickup_code` varchar(64) DEFAULT NULL COMMENT 'PU数字码;按字符串保存以保留前导零', `pickup_code_updated_by` bigint unsigned DEFAULT NULL COMMENT 'PU码最后填写人ID', `pickup_code_updated_by_name` varchar(64) DEFAULT NULL COMMENT 'PU码最后填写人名称快照', `pickup_code_updated_at` datetime(3) DEFAULT NULL COMMENT 'PU码最后填写时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_container_booking_no` (`booking_no`), UNIQUE KEY `uk_container_booking_cabinet` (`cabinet_no`), UNIQUE KEY `uk_container_booking_ocean_container` (`ocean_booking_id`,`container_no`), KEY `idx_container_booking_container` (`container_no`), KEY `idx_container_booking_warehouse` (`warehouse_id`,`updated_at`,`id`), KEY `idx_container_booking_voyage` (`voyage_no`,`updated_at`), KEY `idx_container_booking_container_no` (`container_no`,`updated_at`,`id`), KEY `idx_container_booking_merge` (`record_status`,`merged_into_container_booking_id`), KEY `idx_container_booking_transit_summary` (`actual_sailing_at`,`actual_warehouse_arrival_at`,`ocean_booking_id`,`container_type`), CONSTRAINT `chk_container_booking_capacity` CHECK (((`capacity_cbm` is null) or (`capacity_cbm` > 0))), CONSTRAINT `chk_container_booking_weight` CHECK (((`max_weight_kg` is null) or (`max_weight_kg` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台货柜预订资料;预装状态唯一来源为装柜计划'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_document` ( `id` bigint unsigned NOT NULL COMMENT '货柜文件关联ID(雪花ID)', `container_booking_id` bigint unsigned NOT NULL COMMENT '货柜预订ID', `document_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '文件类型:CUSTOMS_CLEARANCE清关文件、DELIVERY_ORDER提货单、PICKUP_ORDER取货单', `file_id` bigint unsigned NOT NULL COMMENT 'File服务文件ID,不建立跨库外键', `file_name` varchar(255) NOT NULL COMMENT '文件名称快照', `file_hash` varchar(64) DEFAULT NULL, `file_url` varchar(1000) DEFAULT NULL COMMENT '文件访问地址快照', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传操作人ID', `uploaded_by_name` varchar(64) DEFAULT NULL COMMENT '上传操作人名称快照', `completed_by` bigint unsigned DEFAULT NULL, `completed_by_name` varchar(64) DEFAULT 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) DEFAULT NULL, `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_container_document_type` (`container_booking_id`,`document_type`), KEY `idx_container_document_file` (`file_id`), CONSTRAINT `fk_container_document_booking` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `chk_container_document_type` CHECK ((`document_type` in (_utf8mb4'DESTINATION_CLEARANCE',_utf8mb4'CUSTOMS_DECLARATION',_utf8mb4'DELIVERY_ORDER',_utf8mb4'PICKUP_ORDER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台货柜清关、DO与PU文件关联'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_event_inbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_event_inbox` ( `event_id` varchar(64) NOT NULL COMMENT '跨区事件全局唯一ID', `event_type` varchar(64) NOT NULL COMMENT '事件类型', `event_version` int unsigned NOT NULL COMMENT '事件契约版本', `aggregate_id` varchar(64) NOT NULL COMMENT '货柜聚合ID', `aggregate_version` bigint unsigned NOT NULL COMMENT '货柜聚合版本', `payload_hash` varchar(80) NOT NULL COMMENT '规范化负载SHA-256摘要', `payload_json` json NOT NULL COMMENT '原始事件负载', `status` varchar(16) NOT NULL COMMENT 'RECEIVED或PROCESSED', `received_at` datetime(3) NOT NULL COMMENT '接收时间(UTC)', `processed_at` datetime(3) DEFAULT NULL COMMENT '处理完成时间(UTC)', PRIMARY KEY (`event_id`), KEY `idx_container_event_aggregate` (`aggregate_id`,`aggregate_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='海外货柜事件消费Inbox'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_exception_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_exception_history` ( `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) DEFAULT 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`), CONSTRAINT `chk_container_exception_action` CHECK ((`action` in (_utf8mb4'MARK',_utf8mb4'CANCEL'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='货柜异常标记及取消原因历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_fee_detail`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_fee_detail` ( `id` bigint unsigned NOT NULL COMMENT '柜次费用来源ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `loading_plan_id` bigint unsigned NOT NULL COMMENT '柜次ID,对应fl_loading_plan.id', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '订舱柜ID快照', `container_no` varchar(64) DEFAULT NULL COMMENT '柜号快照', `fee_item_id` bigint unsigned NOT NULL COMMENT '平台公共费用项目ID', `fee_item_code_snapshot` varchar(50) NOT NULL COMMENT '费用项目稳定编码快照', `fee_item_name_snapshot` varchar(128) NOT NULL COMMENT '费用项目名称快照', `direction` varchar(16) NOT NULL COMMENT '费用方向:RECEIVABLE应收、PAYABLE应付', `business_date` date NOT NULL COMMENT '费用业务日期', `amount` decimal(18,2) NOT NULL COMMENT 'CNY费用金额', `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种,首期固定CNY', `settlement_included` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否参与财务结算来源池', `review_status` varchar(16) NOT NULL DEFAULT 'PENDING' COMMENT '审核状态:PENDING待审核、APPROVED通过、REJECTED驳回', `source_status` varchar(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '来源状态:ACTIVE有效、VOIDED作废', `source_version` int unsigned NOT NULL DEFAULT '1' COMMENT '费用来源版本;调整递增,作废携带当前版本', `remark` varchar(500) DEFAULT NULL COMMENT '人工备注', `reviewer_id` bigint unsigned DEFAULT NULL COMMENT '审核人ID', `reviewer_name` varchar(64) DEFAULT NULL COMMENT '审核人名称快照', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', `review_reason` varchar(500) DEFAULT NULL COMMENT '审核驳回原因', `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 '最后更新时间', `paid_at` datetime(3) DEFAULT NULL COMMENT 'DIRECT_PAID业务已付时间', `payment_method` varchar(32) DEFAULT NULL COMMENT 'DIRECT_PAID付款方式', `payment_reference_no` varchar(128) DEFAULT NULL COMMENT 'DIRECT_PAID付款流水号', `payment_voucher_file_ids` json DEFAULT NULL COMMENT 'DIRECT_PAID付款凭证File ID数组', `settlement_mode` varchar(16) DEFAULT NULL COMMENT '仅PAYABLE:ON_ACCOUNT账期应付、DIRECT_PAID业务已付;RECEIVABLE为空', `supplier_category` varchar(16) DEFAULT NULL COMMENT '费用项目供应商类别约束快照;为空表示任意启用供应商', `supplier_id` bigint unsigned DEFAULT NULL COMMENT '应付Warehouse供应商ID快照;应收为空', `supplier_name` varchar(200) DEFAULT NULL COMMENT '应付Warehouse供应商名称快照;应收为空', `allocation_group_id` bigint unsigned DEFAULT NULL COMMENT '柜级公共费用分摊组ID;单入仓直接费用为空', `allocation_order_id` bigint unsigned DEFAULT NULL COMMENT '本分摊行业务订单ID', `allocation_order_no` varchar(64) DEFAULT NULL COMMENT '本分摊行业务订单号', `allocation_inbound_id` bigint unsigned DEFAULT NULL COMMENT '本分摊行对应入仓单ID', `allocation_inbound_code` varchar(64) DEFAULT NULL COMMENT '本分摊行对应入仓码', `allocation_group_amount` decimal(18,2) DEFAULT NULL COMMENT '柜级原始费用总额快照', PRIMARY KEY (`id`), KEY `idx_container_fee_customer_plan` (`tenant_id`,`loading_plan_id`,`source_status`), KEY `idx_container_fee_settlement` (`tenant_id`,`review_status`,`settlement_included`,`source_status`), KEY `idx_container_fee_review` (`tenant_id`,`review_status`,`source_status`), CONSTRAINT `chk_container_fee_amount` CHECK ((`amount` >= 0)), CONSTRAINT `chk_container_fee_currency` CHECK ((`currency` = _utf8mb4'CNY')), CONSTRAINT `chk_container_fee_direction` CHECK ((`direction` in (_utf8mb4'RECEIVABLE',_utf8mb4'PAYABLE'))), CONSTRAINT `chk_container_fee_review` CHECK ((`review_status` in (_utf8mb4'PENDING',_utf8mb4'APPROVED',_utf8mb4'REJECTED'))), CONSTRAINT `chk_container_fee_source` CHECK ((`source_status` in (_utf8mb4'ACTIVE',_utf8mb4'VOIDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次级人工应收应付费用来源;审核通过且参与结算后同步Finance'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_fee_source_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_fee_source_snapshot` ( `id` bigint unsigned NOT NULL COMMENT '柜次费用快照ID', `source_fee_id` bigint unsigned NOT NULL COMMENT '柜次费用来源ID', `source_version` int unsigned NOT NULL COMMENT '费用来源版本', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `loading_plan_id` bigint unsigned NOT NULL COMMENT '柜次ID', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '订舱柜ID快照', `container_no` varchar(64) DEFAULT NULL COMMENT '柜号快照', `fee_item_id` bigint unsigned NOT NULL COMMENT '费用项目ID快照', `fee_item_code` varchar(50) NOT NULL COMMENT '费用项目编码快照', `fee_item_name` varchar(128) NOT NULL COMMENT '费用项目名称快照', `direction` varchar(16) NOT NULL COMMENT '费用方向', `supplier_id` bigint unsigned DEFAULT NULL COMMENT 'Warehouse供应商ID快照', `supplier_name` varchar(200) DEFAULT NULL COMMENT 'Warehouse供应商名称快照', `supplier_category` varchar(16) DEFAULT NULL COMMENT '费用项目供应商类别约束快照;为空表示任意启用供应商', `settlement_mode` varchar(16) DEFAULT NULL COMMENT '仅PAYABLE:ON_ACCOUNT账期应付、DIRECT_PAID业务已付;RECEIVABLE为空', `paid_at` datetime(3) DEFAULT NULL COMMENT 'DIRECT_PAID业务已付时间', `payment_method` varchar(32) DEFAULT NULL COMMENT 'DIRECT_PAID付款方式', `payment_reference_no` varchar(128) DEFAULT NULL COMMENT 'DIRECT_PAID付款流水号', `payment_voucher_file_ids` json DEFAULT NULL COMMENT 'DIRECT_PAID付款凭证File ID数组', `business_date` date NOT NULL COMMENT '费用业务日期', `amount` decimal(18,2) NOT NULL COMMENT 'CNY费用金额', `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种,首期固定CNY', `review_status` varchar(16) NOT NULL COMMENT '审核状态快照', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '快照创建时间', `allocation_group_id` bigint unsigned DEFAULT NULL COMMENT '柜级公共费用分摊组ID', `allocation_order_id` bigint unsigned DEFAULT NULL COMMENT '分摊业务订单ID快照', `allocation_order_no` varchar(64) DEFAULT NULL COMMENT '分摊业务订单号快照', `allocation_inbound_id` bigint unsigned DEFAULT NULL COMMENT '分摊入仓单ID快照', `allocation_inbound_code` varchar(64) DEFAULT NULL COMMENT '分摊入仓码快照', `allocation_group_amount` decimal(18,2) DEFAULT NULL COMMENT '柜级原始费用总额快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_container_fee_source_version` (`loading_plan_id`,`source_fee_id`,`source_version`), KEY `idx_container_fee_snapshot_tenant` (`tenant_id`,`loading_plan_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次费用不可变版本快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_container_transport_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_container_transport_history` ( `id` bigint unsigned NOT NULL COMMENT '运输字段变更历史ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '稳定柜次ID', `before_container_no` varchar(64) DEFAULT NULL COMMENT '变更前真实集装箱号', `after_container_no` varchar(64) DEFAULT NULL COMMENT '变更后真实集装箱号', `before_voyage_no` varchar(64) DEFAULT NULL COMMENT '变更前航次号', `after_voyage_no` varchar(64) DEFAULT NULL COMMENT '变更后航次号', `reason` varchar(500) DEFAULT NULL COMMENT '运输字段变更原因', `operator_id` bigint unsigned NOT NULL COMMENT '变更操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '变更操作人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '变更记录创建时间', `operation_id` varchar(64) NOT NULL COMMENT '运输字段操作幂等ID', `request_hash` char(64) NOT NULL COMMENT '运输字段请求哈希', PRIMARY KEY (`id`), UNIQUE KEY `uk_container_transport_history_operation` (`container_booking_id`,`operator_id`,`operation_id`), KEY `idx_container_transport_history` (`container_booking_id`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次真实运输字段不可变变更审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customer_charge_rule`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customer_charge_rule` ( `id` bigint unsigned NOT NULL COMMENT '客户计费规则ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `rule_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户内唯一计费规则编码', `rule_version` int unsigned NOT NULL COMMENT '规则版本号', `customer_id` bigint unsigned NOT NULL COMMENT '客户逻辑ID', `customer_name` varchar(128) NOT NULL COMMENT '客户名称快照', `business_type` varchar(32) NOT NULL COMMENT '业务类型', `charge_mode` varchar(16) NOT NULL COMMENT '计费口径:KG或CBM', `tax_mode` varchar(24) DEFAULT NULL COMMENT '包税或不包税类型', `conversion_factor` decimal(18,6) NOT NULL COMMENT '重量体积换算系数', `length_factor` decimal(18,6) NOT NULL DEFAULT '1.000000' COMMENT 'length factor', `width_factor` decimal(18,6) NOT NULL DEFAULT '1.000000' COMMENT 'width factor', `height_factor` decimal(18,6) NOT NULL DEFAULT '1.000000' COMMENT 'height factor', `rounding_scale` tinyint unsigned NOT NULL DEFAULT '3' COMMENT '结果保留小数位数', `rounding_mode` varchar(24) NOT NULL DEFAULT 'CEILING' COMMENT '舍入方式', `currency` char(3) NOT NULL COMMENT '默认币种', `effective_from` datetime(3) NOT NULL COMMENT '生效开始时间', `effective_to` datetime(3) DEFAULT NULL COMMENT '生效结束时间', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '规则状态:ACTIVE启用、DISABLED停用', `default_rule` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'default customer rule', `remark` varchar(500) DEFAULT NULL COMMENT '规则备注', `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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', `initialization_key` varchar(128) DEFAULT NULL COMMENT '客户创建执行器幂等键及补偿归属', PRIMARY KEY (`id`), UNIQUE KEY `uk_charge_rule_version` (`tenant_id`,`rule_code`,`rule_version`), KEY `idx_charge_rule_match` (`tenant_id`,`customer_id`,`business_type`,`status`,`effective_from`,`effective_to`), KEY `idx_charge_rule_initialization` (`tenant_id`,`initialization_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户头程计费规则版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customer_dimension_config`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customer_dimension_config` ( `id` bigint unsigned NOT NULL COMMENT '配置ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `box_type` varchar(24) NOT NULL COMMENT '固定箱规类型:SMALL/MEDIUM/LARGE/EXTRA_LARGE', `inner_length_cm` decimal(9,3) NOT NULL COMMENT '箱规内长(厘米)', `inner_width_cm` decimal(9,3) NOT NULL COMMENT '箱规内宽(厘米)', `inner_height_cm` decimal(9,3) NOT NULL COMMENT '箱规内高(厘米)', `edge_addition_cm` decimal(6,3) NOT NULL DEFAULT '2.000' COMMENT '每个尺寸方向的单侧加宽厘米数', `default_calculation_mode` varchar(16) NOT NULL DEFAULT 'ADD' COMMENT '订单外箱规默认计算方式:ADD或MULTIPLY', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `initialization_key` varchar(128) NOT NULL COMMENT '创建流程幂等键及补偿归属', `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 '逻辑删除', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_customer_dimension_config_tenant_box` (`tenant_id`,`box_type`), KEY `idx_customer_dimension_config_initialization` (`tenant_id`,`initialization_key`), CONSTRAINT `chk_customer_dimension_box_type` CHECK ((`box_type` in (_utf8mb4'SMALL',_utf8mb4'MEDIUM',_utf8mb4'LARGE',_utf8mb4'EXTRA_LARGE'))), CONSTRAINT `chk_customer_dimension_edge_addition` CHECK (((`edge_addition_cm` >= 0.001) and (`edge_addition_cm` <= 100.000))), CONSTRAINT `chk_customer_dimension_inner_size` CHECK (((`inner_length_cm` >= 0.001) and (`inner_width_cm` >= 0.001) and (`inner_height_cm` >= 0.001))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户固定四箱规尺寸配置'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_broker_submission`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_broker_submission` ( `id` bigint unsigned NOT NULL COMMENT '首次发送报关行批次ID', `customs_container_id` bigint unsigned NOT NULL COMMENT '所属整柜报关聚合ID', `loading_plan_id` bigint unsigned NOT NULL COMMENT '装柜计划ID快照', `batch_no` varchar(64) NOT NULL COMMENT '首次发送报关行批次号', `status` varchar(16) NOT NULL COMMENT '发送状态:SENT已发送', `source_version` int unsigned NOT NULL COMMENT '发送时整柜报关聚合版本', `source_snapshot_json` json NOT NULL COMMENT '发送时冻结资料版本与覆盖范围快照', `sent_by` bigint unsigned NOT NULL COMMENT '首次发送操作人ID', `sent_by_name` varchar(64) DEFAULT NULL COMMENT '首次发送操作人名称快照', `sent_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_broker_submission_container` (`customs_container_id`), UNIQUE KEY `uk_customs_broker_submission_batch` (`batch_no`), KEY `idx_customs_broker_submission_plan` (`loading_plan_id`,`sent_at`), CONSTRAINT `fk_customs_broker_submission_container` FOREIGN KEY (`customs_container_id`) REFERENCES `fl_customs_container` (`id`), CONSTRAINT `chk_customs_broker_submission_status` CHECK ((`status` = _utf8mb4'SENT')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='冻结退税报关资料首次发送报关行批次事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_case`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_case` ( `id` bigint unsigned NOT NULL COMMENT '报关协同单逻辑ID', `customs_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '全局唯一报关协同单号', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `order_id` bigint unsigned NOT NULL COMMENT 'Order服务订单逻辑ID;跨库不建立外键', `inbound_id` bigint unsigned NOT NULL COMMENT 'Firstleg入库单逻辑ID', `container_booking_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '关联柜次逻辑ID;0表示创建时尚未关联柜次', `checklist_version_id` bigint unsigned NOT NULL COMMENT '本单冻结使用的报关资料清单版本ID', `checklist_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建协同单时的清单编码快照;源清单变化不回写', `checklist_version_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建协同单时的清单版本号快照;源清单变化不回写', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DOCUMENTS_PENDING' COMMENT '协同状态:DOCUMENTS_PENDING待补资料、REVIEWING审核中、SUPPLEMENT_REQUIRED需补件、READY_TO_SUBMIT待提交代理、RECEIPT_PENDING待回执、RECEIPT_AVAILABLE已有回执、CLEARANCE_COMPLETED已放行、CANCELLED已取消', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '报关协同单内部业务备注', `created_by` bigint unsigned NOT NULL COMMENT '创建协同单的平台操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建协同单时的平台操作人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '协同单创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改协同单的平台操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL 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_no` (`customs_no`), UNIQUE KEY `uk_customs_case_scope` (`tenant_id`,`order_id`,`inbound_id`,`container_booking_id`), KEY `idx_customs_case_status` (`status`,`updated_at`), KEY `idx_customs_case_container` (`container_booking_id`), KEY `fk_customs_case_checklist` (`checklist_version_id`), CONSTRAINT `fk_customs_case_checklist` FOREIGN KEY (`checklist_version_id`) REFERENCES `fl_customs_checklist_version` (`id`), CONSTRAINT `chk_customs_case_status` CHECK ((`status` in (_utf8mb4'DOCUMENTS_PENDING',_utf8mb4'REVIEWING',_utf8mb4'SUPPLEMENT_REQUIRED',_utf8mb4'READY_TO_SUBMIT',_utf8mb4'RECEIPT_PENDING',_utf8mb4'RECEIPT_AVAILABLE',_utf8mb4'CLEARANCE_COMPLETED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='三期订单报关协同聚合'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_checklist_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_checklist_version` ( `id` bigint unsigned NOT NULL COMMENT '报关资料清单版本逻辑ID', `checklist_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '报关资料清单编码;同一清单的多个版本共用', `version_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '清单业务版本号', `country_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '清单适用的目的国家或地区编码', `channel_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '清单适用的运输渠道编码', `cargo_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '清单适用的货物类型编码', `items_json` json NOT NULL COMMENT '不可变清单项目数组;元素包含code项目编码、name项目名称和required是否必填', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '清单版本状态:ACTIVE启用、RETIRED停用', `created_by` bigint unsigned NOT NULL COMMENT '创建清单版本的平台操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建清单版本时的平台操作人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '清单版本创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_checklist_version` (`checklist_code`,`version_no`), KEY `idx_customs_checklist_match` (`country_code`,`channel_code`,`cargo_type`,`status`), CONSTRAINT `chk_customs_checklist_status` CHECK ((`status` in (_utf8mb4'ACTIVE',_utf8mb4'RETIRED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='三期报关资料清单不可变版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_clearance_result`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_clearance_result` ( `id` bigint unsigned NOT NULL COMMENT '海关结果事实ID', `declaration_batch_id` bigint unsigned NOT NULL COMMENT '所属正式申报批次ID', `customs_container_id` bigint unsigned NOT NULL COMMENT '所属整柜报关聚合ID', `result_type` varchar(32) NOT NULL COMMENT '结果类型:INSPECTION/SUPPLEMENT_REQUIRED/RELEASED/DETAINED/OTHER', `result_status` varchar(16) NOT NULL DEFAULT 'OPEN' COMMENT '结果状态:OPEN/RESOLVED/CANCELLED', `customs_entry_no` varchar(64) DEFAULT NULL COMMENT '报关单号快照', `occurred_at` datetime(3) NOT NULL COMMENT '海关事实发生时间', `resolution` varchar(1000) DEFAULT NULL COMMENT '处理结果或异常说明', `evidence_file_id` bigint unsigned DEFAULT NULL COMMENT '结果凭证File文件ID', `recorded_by` bigint unsigned NOT NULL COMMENT '平台录入人', `recorded_by_name` varchar(64) DEFAULT NULL COMMENT '平台录入人名称快照', `recorded_at` datetime(3) NOT NULL COMMENT '平台录入时间', `previous_result_id` bigint unsigned DEFAULT NULL COMMENT '前序结果事实ID', `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_clearance_result_batch` (`declaration_batch_id`,`occurred_at`,`id`), KEY `idx_customs_clearance_result_container` (`customs_container_id`,`result_type`,`result_status`), CONSTRAINT `fk_customs_clearance_result_batch` FOREIGN KEY (`declaration_batch_id`) REFERENCES `fl_customs_declaration_batch` (`id`), CONSTRAINT `chk_customs_clearance_result_status` CHECK ((`result_status` in (_utf8mb4'OPEN',_utf8mb4'RESOLVED',_utf8mb4'CANCELLED'))), CONSTRAINT `chk_customs_clearance_result_type` CHECK ((`result_type` in (_utf8mb4'INSPECTION',_utf8mb4'SUPPLEMENT_REQUIRED',_utf8mb4'RELEASED',_utf8mb4'DETAINED',_utf8mb4'OTHER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='正式申报后的海关结果不可变事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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 DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `completed_at` datetime(3) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_command` (`actor_id`,`action`,`idempotency_key`), CONSTRAINT `chk_customs_command_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='整柜报关写命令幂等事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_completion_action_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_completion_action_history` ( `id` bigint unsigned NOT NULL COMMENT '客户回执动作历史ID', `completion_document_id` bigint unsigned NOT NULL COMMENT '报关行回执当前版本逻辑根ID', `receipt_version` int unsigned NOT NULL COMMENT '动作对应的回执文件版本', `action` varchar(16) NOT NULL COMMENT '客户动作:CONFIRM确认、REJECT打回', `reason` varchar(500) DEFAULT NULL COMMENT '客户打回原因;确认动作为空', `operator_id` bigint unsigned NOT NULL COMMENT '客户操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '客户操作人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '客户动作时间', PRIMARY KEY (`id`), KEY `idx_customs_completion_action_history` (`completion_document_id`,`receipt_version`,`created_at`,`id`), CONSTRAINT `fk_customs_completion_action_history_document` FOREIGN KEY (`completion_document_id`) REFERENCES `fl_customs_completion_document` (`id`), CONSTRAINT `chk_customs_completion_action_history_action` CHECK ((`action` in (_utf8mb4'CONFIRM',_utf8mb4'REJECT'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户报关行回执确认与打回不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_completion_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_completion_document` ( `id` bigint unsigned NOT NULL, `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) DEFAULT NULL, `size_bytes` bigint unsigned NOT NULL, `uploaded_by` bigint unsigned NOT NULL, `uploaded_by_name` varchar(64) DEFAULT 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), `customer_confirm_status` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT '客户回执确认状态:PENDING/CONFIRMED/REJECTED', `customer_confirmed_by` bigint unsigned DEFAULT NULL COMMENT '客户确认人ID', `customer_confirmed_by_name` varchar(64) DEFAULT NULL COMMENT '客户确认人名称快照', `customer_confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认时间', `customer_reject_reason` varchar(500) DEFAULT NULL 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 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关完成文件当前版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_completion_document_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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) DEFAULT NULL, `size_bytes` bigint unsigned NOT NULL, `operator_id` bigint unsigned NOT NULL, `operator_name` varchar(64) DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), 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 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关完成文件不可变覆盖版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_container`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_container` ( `id` bigint unsigned NOT NULL, `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 DEFAULT NULL, `started_by_name` varchar(64) DEFAULT NULL, `started_at` datetime(3) DEFAULT NULL, `completed_by` bigint unsigned DEFAULT NULL, `completed_by_name` varchar(64) DEFAULT NULL, `completed_at` datetime(3) DEFAULT 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', `broker_submitted_by` bigint unsigned DEFAULT NULL COMMENT '发送报关行执行的操作人ID', `broker_submitted_by_name` varchar(64) DEFAULT NULL COMMENT '发送报关行执行的操作人名称', `broker_submitted_at` datetime(3) DEFAULT NULL COMMENT '发送报关行执行时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_container_plan` (`loading_plan_id`), UNIQUE KEY `uk_customs_container_booking` (`container_booking_id`), KEY `idx_customs_container_status` (`status`,`updated_at`), CONSTRAINT `chk_customs_container_status` CHECK ((`status` in (_utf8mb4'WAITING_CUSTOMER_DOCUMENTS',_utf8mb4'READY_TO_START',_utf8mb4'DECLARING',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='装柜完成后的整柜出口报关聚合'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_container_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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) DEFAULT NULL, `to_status` varchar(40) DEFAULT NULL, `remark` varchar(500) DEFAULT NULL, `operator_id` bigint unsigned NOT NULL, `operator_name` varchar(64) DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), 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 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='整柜报关状态与系统触发历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_customer_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_customer_document` ( `id` bigint unsigned NOT NULL, `customs_container_id` bigint unsigned NOT NULL, `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) DEFAULT 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 DEFAULT NULL, `frozen_at` datetime(3) DEFAULT NULL, `deleted_by` bigint unsigned DEFAULT NULL, `deleted_at` datetime(3) DEFAULT 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), 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`), CONSTRAINT `chk_customs_customer_document_freeze` CHECK ((((`frozen_at` is null) and (`frozen_version` is null)) or ((`frozen_at` is not null) and (`frozen_version` is not null)))), CONSTRAINT `chk_customs_customer_document_status` CHECK ((`status` in (_utf8mb4'ACTIVE',_utf8mb4'DELETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户整份退税报送资料逻辑根'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_customer_document_inbound`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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), 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 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户报送资料与当前柜退税入仓码多对多关系'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_customer_document_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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) DEFAULT 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), 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`), CONSTRAINT `chk_customs_customer_document_version_action` CHECK ((`action` in (_utf8mb4'UPLOAD',_utf8mb4'REPLACE',_utf8mb4'SCOPE_CHANGE',_utf8mb4'DELETE'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户报送资料文件与覆盖范围不可变版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_declaration_batch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_declaration_batch` ( `id` bigint unsigned NOT NULL COMMENT '正式申报批次ID', `customs_container_id` bigint unsigned NOT NULL COMMENT '所属整柜报关聚合ID', `loading_plan_id` bigint unsigned NOT NULL COMMENT '装柜计划ID快照', `batch_no` varchar(64) DEFAULT NULL COMMENT '平台正式申报批次号', `status` varchar(32) NOT NULL COMMENT '批次状态:READY/SUBMITTED/ACKNOWLEDGED/RESULT_PENDING/CLOSED/CANCELLED', `source_version` int unsigned NOT NULL COMMENT '创建时整柜报关聚合版本', `source_snapshot_json` json NOT NULL COMMENT '提交时资料、回执和确认版本快照', `customs_entry_no` varchar(64) DEFAULT NULL COMMENT '报关单号', `submitted_by` bigint unsigned DEFAULT NULL COMMENT '正式申报提交人', `submitted_by_name` varchar(64) DEFAULT NULL COMMENT '正式申报提交人名称快照', `submitted_at` datetime(3) DEFAULT NULL COMMENT '正式申报提交时间', `acknowledged_by` bigint unsigned DEFAULT NULL COMMENT '报关行确认受理人', `acknowledged_by_name` varchar(64) DEFAULT NULL COMMENT '报关行确认受理人名称快照', `acknowledged_at` datetime(3) DEFAULT NULL COMMENT '报关行确认受理时间', `remark` varchar(500) DEFAULT NULL COMMENT '批次说明', `version` int unsigned NOT NULL DEFAULT '0' 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_declaration_batch_container` (`customs_container_id`,`id`), KEY `idx_customs_declaration_batch_plan` (`loading_plan_id`,`status`,`created_at`), CONSTRAINT `fk_customs_declaration_batch_container` FOREIGN KEY (`customs_container_id`) REFERENCES `fl_customs_container` (`id`), CONSTRAINT `chk_customs_declaration_batch_status` CHECK ((`status` in (_utf8mb4'READY',_utf8mb4'SUBMITTED',_utf8mb4'ACKNOWLEDGED',_utf8mb4'RESULT_PENDING',_utf8mb4'CLOSED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='整柜正式申报批次事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_document` ( `id` bigint unsigned NOT NULL COMMENT '报关资料文件版本逻辑ID', `customs_case_id` bigint unsigned NOT NULL COMMENT '所属报关协同单ID', `checklist_item_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '对应冻结清单中的资料项目编码', `file_id` bigint unsigned NOT NULL COMMENT 'File服务文件逻辑ID;跨库不建立外键', `document_version` int unsigned NOT NULL COMMENT '同一协同单和清单项目下的文件版本序号', `replaces_document_id` bigint unsigned DEFAULT NULL COMMENT '被本版本替换的上一资料版本ID;首个版本为空', `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上传或引用时的文件名称快照', `file_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '文件内容SHA-256摘要;用于版本审计和幂等校验', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'UPLOADED' COMMENT '资料状态:UPLOADED待审核、APPROVED审核通过、RETURNED已退回、SUPERSEDED已被替换、FROZEN已随代理提交批次冻结', `visibility` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'CUSTOMER' COMMENT '资料可见范围:PLATFORM仅平台可见、CUSTOMER客户可见', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传或引用资料的操作人ID', `uploaded_by_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上传主体类型:PLATFORM平台操作人、MERCHANT客户操作人', `uploaded_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '资料上传或引用时间', `reviewed_by` bigint unsigned DEFAULT NULL COMMENT '审核资料的平台操作人ID;未审核时为空', `reviewed_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '审核时的平台操作人名称快照', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '资料审核时间', `review_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '审核退回原因或审核备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_document_version` (`customs_case_id`,`checklist_item_code`,`document_version`), UNIQUE KEY `uk_customs_document_file` (`customs_case_id`,`file_id`), KEY `idx_customs_document_case` (`customs_case_id`,`status`), CONSTRAINT `fk_customs_document_case` FOREIGN KEY (`customs_case_id`) REFERENCES `fl_customs_case` (`id`), CONSTRAINT `chk_customs_document_actor` CHECK ((`uploaded_by_type` in (_utf8mb4'PLATFORM',_utf8mb4'MERCHANT'))), CONSTRAINT `chk_customs_document_status` CHECK ((`status` in (_utf8mb4'UPLOADED',_utf8mb4'APPROVED',_utf8mb4'RETURNED',_utf8mb4'SUPERSEDED',_utf8mb4'FROZEN'))), CONSTRAINT `chk_customs_document_visibility` CHECK ((`visibility` in (_utf8mb4'PLATFORM',_utf8mb4'CUSTOMER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关客户文件版本引用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_final_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_final_document` ( `id` bigint unsigned NOT NULL COMMENT '真实报关完税文件ID', `source_document_id` bigint unsigned NOT NULL COMMENT '对应冻结客户资料ID', `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) DEFAULT NULL COMMENT '真实报关完税文件媒体类型', `size_bytes` bigint unsigned NOT NULL COMMENT '真实报关完税文件大小(字节)', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传操作人ID', `uploaded_by_name` varchar(64) DEFAULT 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_final_source` (`source_document_id`), CONSTRAINT `fk_customs_final_source` FOREIGN KEY (`source_document_id`) REFERENCES `fl_customs_customer_document` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='真实报关完税文件当前版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_frozen_document_inbound`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `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), PRIMARY KEY (`document_id`,`inbound_id`), CONSTRAINT `fk_customs_frozen_document` FOREIGN KEY (`document_id`) REFERENCES `fl_customs_customer_document` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='开始报关时冻结的客户资料覆盖范围'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_history` ( `id` bigint unsigned NOT NULL COMMENT '报关协同历史逻辑ID', `customs_case_id` bigint unsigned NOT NULL COMMENT '所属报关协同单ID', `action` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '业务动作编码,如CREATE、UPLOAD_DOCUMENT、REPLACE_DOCUMENT、REVIEW_DOCUMENT_APPROVE、REVIEW_DOCUMENT_RETURN、SUBMIT_AGENT_BATCH或UPLOAD_RECEIPT', `from_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '动作发生前的协同状态;创建动作时为空', `to_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '动作完成后的协同状态', `resource_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '动作关联资源类型:CASE协同单、DOCUMENT资料、SUBMISSION_BATCH提交批次或RECEIPT回执', `resource_id` bigint unsigned NOT NULL COMMENT '动作关联资源逻辑ID', `note` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '动作原因、资料项目编码或业务备注快照', `operator_id` bigint unsigned NOT NULL COMMENT '执行业务动作的操作人ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行动作时的操作人名称快照', `operator_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '操作主体类型:PLATFORM平台操作人、MERCHANT客户操作人', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史记录创建时间', PRIMARY KEY (`id`), KEY `idx_customs_history_case` (`customs_case_id`,`created_at`,`id`), CONSTRAINT `fk_customs_history_case` FOREIGN KEY (`customs_case_id`) REFERENCES `fl_customs_case` (`id`), CONSTRAINT `chk_customs_history_actor` CHECK ((`operator_type` in (_utf8mb4'PLATFORM',_utf8mb4'MERCHANT'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关协同稳定历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_operation` ( `id` bigint unsigned NOT NULL COMMENT '报关写命令幂等记录逻辑ID', `operator_id` bigint unsigned NOT NULL COMMENT '发起写命令的操作人ID;与动作和幂等键共同限定重放范围', `action` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '幂等业务动作编码,包含平台或客户动作及资料、审核、提交、回执类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端提供的幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化完整请求内容的SHA-256摘要;同键不同请求时拒绝', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '幂等处理状态:PROCESSING处理中、SUCCESS处理成功', `result_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '成功结果资源类型:CHECKLIST、CASE、DOCUMENT、BATCH或RECEIPT', `result_id` bigint unsigned DEFAULT NULL COMMENT '成功结果资源逻辑ID;处理中为空', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '写命令成功完成时间;处理中为空', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_operation` (`operator_id`,`action`,`idempotency_key`), CONSTRAINT `chk_customs_operation_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关协同命令幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_receipt` ( `id` bigint unsigned NOT NULL COMMENT '报关回执文件版本逻辑ID', `customs_case_id` bigint unsigned NOT NULL COMMENT '所属报关协同单ID', `submission_batch_id` bigint unsigned NOT NULL COMMENT '产生本回执的报关代理提交批次ID', `receipt_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '回执类型:RECEIVED已收件、DECLARED已申报、REJECTED已拒绝、INSPECTION查验通知、RELEASED放行回执、OTHER其他回执', `file_id` bigint unsigned NOT NULL COMMENT 'File服务回执文件逻辑ID;跨库不建立外键', `receipt_version` int unsigned NOT NULL COMMENT '同一提交批次和回执类型下的版本序号', `replaces_receipt_id` bigint unsigned DEFAULT NULL COMMENT '被本版本替换的上一回执版本ID;首个版本为空', `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上传或引用时的回执文件名称快照', `file_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '回执文件内容SHA-256摘要;用于版本审计和幂等校验', `visibility` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PLATFORM' COMMENT '回执可见范围:PLATFORM仅平台可见、CUSTOMER客户可查询下载', `note` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '回执业务备注', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传或引用回执的平台操作人ID', `uploaded_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '上传回执时的平台操作人名称快照', `uploaded_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '回执上传或引用时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_receipt_version` (`submission_batch_id`,`receipt_type`,`receipt_version`), UNIQUE KEY `uk_customs_receipt_file` (`submission_batch_id`,`file_id`), KEY `idx_customs_receipt_case` (`customs_case_id`,`visibility`,`uploaded_at`), CONSTRAINT `fk_customs_receipt_batch` FOREIGN KEY (`submission_batch_id`) REFERENCES `fl_customs_submission_batch` (`id`), CONSTRAINT `fk_customs_receipt_case` FOREIGN KEY (`customs_case_id`) REFERENCES `fl_customs_case` (`id`), CONSTRAINT `chk_customs_receipt_type` CHECK ((`receipt_type` in (_utf8mb4'RECEIVED',_utf8mb4'DECLARED',_utf8mb4'REJECTED',_utf8mb4'INSPECTION',_utf8mb4'RELEASED',_utf8mb4'OTHER'))), CONSTRAINT `chk_customs_receipt_visibility` CHECK ((`visibility` in (_utf8mb4'PLATFORM',_utf8mb4'CUSTOMER'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关代理回执版本与客户可见范围'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_submission_batch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_submission_batch` ( `id` bigint unsigned NOT NULL COMMENT '报关代理提交批次逻辑ID', `customs_case_id` bigint unsigned NOT NULL COMMENT '所属报关协同单ID', `batch_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '全局唯一代理提交批次号', `batch_version` int unsigned NOT NULL COMMENT '同一报关协同单内的提交批次版本序号', `customs_agent_id` bigint unsigned DEFAULT NULL, `customs_agent_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本批次接收报关资料的报关代理名称快照', `external_reference` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '报关代理或外部系统返回的业务参考号', `file_snapshot_json` json NOT NULL COMMENT '提交时冻结的已审核资料数组;元素包含documentId、fileId、itemCode、documentVersion和fileHash', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'SUBMITTED' COMMENT '代理提交状态:SUBMITTED已提交、ACKNOWLEDGED代理已确认、REJECTED代理已拒绝、COMPLETED代理处理完成', `note` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '提交报关代理时的平台备注', `submitted_by` bigint unsigned NOT NULL COMMENT '提交报关代理的平台操作人ID', `submitted_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '提交时的平台操作人名称快照', `submitted_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '提交报关代理时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_customs_batch_no` (`batch_no`), UNIQUE KEY `uk_customs_batch_version` (`customs_case_id`,`batch_version`), CONSTRAINT `fk_customs_batch_case` FOREIGN KEY (`customs_case_id`) REFERENCES `fl_customs_case` (`id`), CONSTRAINT `chk_customs_batch_status` CHECK ((`status` in (_utf8mb4'SUBMITTED',_utf8mb4'ACKNOWLEDGED',_utf8mb4'REJECTED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关代理提交批次及冻结文件版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_customs_supplement_request`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_customs_supplement_request` ( `id` bigint unsigned NOT NULL COMMENT '报关补件请求逻辑ID', `customs_case_id` bigint unsigned NOT NULL COMMENT '所属报关协同单ID', `source_document_id` bigint unsigned NOT NULL COMMENT '触发本次补件的被退回资料版本ID', `resolved_document_id` bigint unsigned DEFAULT NULL COMMENT '解决本次补件的新资料版本ID;未解决时为空', `checklist_item_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '需要补充的报关资料项目编码', `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '平台审核人员填写的补件原因', `due_at` datetime(3) DEFAULT NULL COMMENT '期望完成补件时间;未设置时为空', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'OPEN' COMMENT '补件状态:OPEN待补件、RESOLVED已由新资料解决、CANCELLED已取消', `requested_by` bigint unsigned NOT NULL COMMENT '发起补件的平台操作人ID', `requested_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '发起补件时的平台操作人名称快照', `requested_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '补件请求发起时间', `resolved_by` bigint unsigned DEFAULT NULL COMMENT '提交解决资料的操作人ID;未解决时为空', `resolved_at` datetime(3) DEFAULT NULL COMMENT '补件请求解决时间', PRIMARY KEY (`id`), KEY `idx_customs_supplement_case` (`customs_case_id`,`status`,`due_at`), CONSTRAINT `fk_customs_supplement_case` FOREIGN KEY (`customs_case_id`) REFERENCES `fl_customs_case` (`id`), CONSTRAINT `chk_customs_supplement_status` CHECK ((`status` in (_utf8mb4'OPEN',_utf8mb4'RESOLVED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='报关补件请求'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_direct_delivery_unloading`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_direct_delivery_unloading` ( `container_booking_id` bigint unsigned NOT NULL, `inbound_id` bigint unsigned NOT NULL COMMENT 'Immutable physically loaded inbound source', `actual_at` datetime(3) NOT NULL COMMENT 'Actual destination local time', `timezone` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Explicit destination IANA timezone', `received_by` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Actual recipient', `evidence_no` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Actual delivery receipt reference', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `version` int NOT NULL DEFAULT '1', `idempotency_key` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `request_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created_by` bigint unsigned NOT NULL, `created_by_name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`container_booking_id`,`inbound_id`), UNIQUE KEY `uk_direct_unloading_command` (`container_booking_id`,`idempotency_key`), CONSTRAINT `fk_direct_unloading_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='直送目的仓真实卸货凭据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_document_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_document_sequence` ( `sequence_key` varchar(32) NOT NULL COMMENT '单据类型与北京时间日期组合键,例如CAB:20260818', `current_value` int unsigned NOT NULL COMMENT '该类型当日已分配的最大序号', PRIMARY KEY (`sequence_key`), CONSTRAINT `chk_fl_document_sequence_value` CHECK ((`current_value` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='头程履约业务单号日序列;生成YYMMDD加四位当日序号'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_dropship_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_dropship_pallet` ( `id` bigint unsigned NOT NULL COMMENT '合托托盘ID', `task_id` bigint unsigned NOT NULL COMMENT '所属合托任务ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '一件代发入仓单ID', `warehouse_id` bigint unsigned NOT NULL COMMENT '作业仓库ID', `pallet_no` varchar(32) NOT NULL COMMENT '现场扫描的系统DP托盘码', `pallet_status` varchar(16) NOT NULL COMMENT '托盘状态:OPEN合托中、COMPLETED已封托', `open_operation_id` varchar(128) NOT NULL COMMENT '创建托盘幂等操作ID', `seal_operation_id` varchar(128) DEFAULT NULL COMMENT '封托幂等操作ID', `created_by` bigint unsigned NOT NULL COMMENT '托盘创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '托盘创建人姓名快照', `completed_by` bigint unsigned DEFAULT NULL COMMENT '封托操作人ID', `completed_by_name` varchar(64) DEFAULT NULL COMMENT '封托操作人姓名快照', `completed_at` datetime(3) DEFAULT NULL COMMENT '封托完成时间', `version` int 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_dropship_pallet_open_op` (`open_operation_id`), UNIQUE KEY `uk_dropship_pallet_no` (`pallet_no`), UNIQUE KEY `uk_dropship_pallet_seal_op` (`seal_operation_id`), KEY `idx_dropship_pallet_inbound` (`tenant_id`,`inbound_id`,`pallet_status`), KEY `fk_dropship_pallet_task` (`task_id`), CONSTRAINT `fk_dropship_pallet_task` FOREIGN KEY (`task_id`) REFERENCES `fl_dropship_pallet_task` (`id`), CONSTRAINT `chk_dropship_pallet_status` CHECK ((`pallet_status` in (_utf8mb4'OPEN',_utf8mb4'SEALED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发合托形成的可打印托盘'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_dropship_pallet_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_dropship_pallet_carton` ( `id` bigint unsigned NOT NULL COMMENT '托盘箱明细ID', `task_id` bigint unsigned NOT NULL COMMENT '所属合托任务ID', `pallet_id` bigint unsigned DEFAULT NULL COMMENT '所属组托托盘ID;已清点待绑托时为空', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '一件代发入仓单ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '入仓货物明细ID', `carton_label_id` bigint unsigned NOT NULL COMMENT '稳定箱唛记录ID', `sku_code` varchar(128) NOT NULL COMMENT '箱唛冻结SKU编码', `cargo_name` varchar(255) DEFAULT NULL COMMENT '货物名称快照', `box_code` varchar(80) NOT NULL COMMENT '稳定箱码', `expected_sku_quantity` int unsigned NOT NULL COMMENT '箱唛冻结的应收SKU数量', `actual_sku_quantity` int unsigned NOT NULL COMMENT 'PDA确认的实收SKU数量', `discrepancy_status` varchar(24) NOT NULL COMMENT '差异状态:MATCH或ACCEPTED_VARIANCE', `discrepancy_remark` varchar(500) DEFAULT NULL COMMENT '差异接受说明', `count_operation_id` varchar(128) NOT NULL COMMENT '逐箱清点幂等操作ID', `bind_operation_id` varchar(128) DEFAULT NULL COMMENT '批量绑托幂等操作ID', `last_operation_id` varchar(128) NOT NULL COMMENT '最后一次绑托或换托操作幂等号', `counted_by` bigint unsigned NOT NULL COMMENT '清点操作人ID', `counted_by_name` varchar(64) DEFAULT NULL COMMENT '清点操作人姓名快照', `counted_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '清点时间', `bound_by` bigint unsigned DEFAULT NULL COMMENT '上托操作人ID', `bound_by_name` varchar(64) DEFAULT NULL COMMENT '上托操作人姓名快照', `bound_at` datetime(3) DEFAULT NULL COMMENT '上托时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dropship_carton_task_label` (`task_id`,`carton_label_id`), UNIQUE KEY `uk_dropship_carton_count_operation` (`count_operation_id`), KEY `idx_dropship_carton_pallet_sku` (`pallet_id`,`sku_code`,`id`), KEY `idx_dropship_carton_inbound` (`tenant_id`,`inbound_id`,`pallet_id`), KEY `idx_dropship_carton_operation` (`count_operation_id`), KEY `fk_dropship_carton_label` (`carton_label_id`), KEY `idx_dropship_carton_bind_operation` (`task_id`,`bind_operation_id`), CONSTRAINT `fk_dropship_carton_label` FOREIGN KEY (`carton_label_id`) REFERENCES `fl_inbound_carton_label` (`id`), CONSTRAINT `fk_dropship_carton_pallet` FOREIGN KEY (`pallet_id`) REFERENCES `fl_dropship_pallet` (`id`), CONSTRAINT `fk_dropship_carton_task` FOREIGN KEY (`task_id`) REFERENCES `fl_dropship_pallet_task` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发托盘内逐箱SKU和入仓单明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_dropship_pallet_carton_sku`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_dropship_pallet_carton_sku` ( `id` bigint unsigned NOT NULL COMMENT '清点箱SKU明细ID', `carton_id` bigint unsigned NOT NULL COMMENT '清点物理箱ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '入仓货物明细ID', `sku_code` varchar(128) NOT NULL COMMENT 'SKU编码快照', `cargo_name` varchar(255) DEFAULT NULL COMMENT '货物名称快照', `expected_quantity` int unsigned NOT NULL COMMENT '应收数量', `actual_quantity` int unsigned NOT NULL COMMENT '实收数量', `discrepancy_status` varchar(24) NOT NULL COMMENT 'MATCH或ACCEPTED_VARIANCE', `discrepancy_remark` varchar(500) DEFAULT NULL COMMENT '差异处理说明', `line_no` int unsigned NOT NULL COMMENT '箱内SKU顺序', PRIMARY KEY (`id`), UNIQUE KEY `uk_dropship_carton_sku_detail` (`carton_id`,`inbound_detail_id`), KEY `idx_dropship_carton_sku_code` (`sku_code`,`carton_id`), CONSTRAINT `fk_dropship_carton_sku_carton` FOREIGN KEY (`carton_id`) REFERENCES `fl_dropship_pallet_carton` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发物理箱内逐SKU清点事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_dropship_pallet_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_dropship_pallet_task` ( `id` bigint unsigned NOT NULL COMMENT '合托任务ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '一件代发入仓单ID', `warehouse_id` bigint unsigned NOT NULL COMMENT '作业仓库ID', `task_status` varchar(24) NOT NULL COMMENT '任务状态:PENDING待领取、CLAIMED已领取、COMPLETED已完成', `total_cartons` int unsigned NOT NULL COMMENT '测量确认总箱数', `counted_cartons` int unsigned NOT NULL DEFAULT '0' COMMENT '已逐箱确认实收数量的箱数', `allocated_cartons` int unsigned NOT NULL DEFAULT '0' COMMENT '已上托箱数', `discrepancy_cartons` int unsigned NOT NULL DEFAULT '0' COMMENT '已确认差异箱数', `assignee_id` bigint unsigned DEFAULT NULL COMMENT '任务领取人ID', `assignee_name` varchar(64) DEFAULT NULL COMMENT '任务领取人姓名快照', `claimed_at` datetime(3) DEFAULT NULL COMMENT '任务领取时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '任务完成时间', `version` int 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_dropship_task_inbound` (`tenant_id`,`inbound_id`), KEY `idx_dropship_task_operator` (`task_status`,`assignee_id`,`warehouse_id`,`created_at`), KEY `fk_dropship_task_inbound` (`inbound_id`), CONSTRAINT `fk_dropship_task_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_dropship_task_cartons` CHECK (((`allocated_cartons` <= `counted_cartons`) and (`counted_cartons` <= `total_cartons`))), CONSTRAINT `chk_dropship_task_status` CHECK ((`task_status` in (_utf8mb4'PENDING',_utf8mb4'CLAIMED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发测量后PDA合托任务'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_fee_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_fee_item` ( `id` bigint unsigned NOT NULL COMMENT '费用项目ID', `tenant_id` bigint unsigned NOT NULL COMMENT '平台公共费用项目作用域,固定为0;物理字段名沿用 tenant_id', `category` varchar(64) NOT NULL COMMENT '费用分类', `trade_scope` varchar(20) NOT NULL COMMENT 'DOMESTIC国内、INTERNATIONAL国际', `fee_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '稳定费用编码;系统费用使用固定编码', `fee_type_name` varchar(128) NOT NULL COMMENT '费用类型名称', `pickup_payable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '提柜应付是否参与', `pickup_receivable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '提柜应收是否参与', `warehouse_payable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '仓储应付是否参与', `warehouse_receivable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '仓储应收是否参与', `allocation_fee` tinyint(1) NOT NULL DEFAULT '0' COMMENT '平摊费用是否参与', `description` varchar(500) DEFAULT NULL COMMENT '说明', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE启用、DISABLED停用', `created_by` bigint DEFAULT NULL COMMENT '创建人ID;系统初始化时可为空', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint DEFAULT NULL COMMENT '最后修改人ID;系统初始化时可为空', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最后修改人名称快照', `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 '乐观锁版本号', `supplier_category` varchar(16) DEFAULT NULL COMMENT 'PAYABLE供应商类别约束;为空表示任意启用供应商', `default_price` decimal(12,2) DEFAULT NULL COMMENT '默认价格CNY;仅选费带入,实际费用可修改', PRIMARY KEY (`id`), UNIQUE KEY `uk_fee_item_code` (`fee_code`), KEY `idx_fee_item_query` (`tenant_id`,`trade_scope`,`category`,`status`,`deleted`), KEY `idx_fee_item_name` (`tenant_id`,`fee_type_name`,`deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台公共费用项目主数据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_finance_fee_source_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_finance_fee_source_command` ( `id` bigint unsigned NOT NULL COMMENT 'Finance费用来源命令ID', `customer_id` bigint unsigned NOT NULL COMMENT '客户隔离键,由Firstleg费用事实再次校验', `operator_id` bigint unsigned NOT NULL COMMENT 'Finance操作人ID', `operator_name` varchar(64) NOT NULL COMMENT 'Finance操作人名称快照', `action` varchar(24) NOT NULL COMMENT '命令动作;当前仅VOID', `idempotency_key` varchar(128) NOT NULL COMMENT 'Finance透传的幂等键', `request_hash` char(64) NOT NULL COMMENT '规范化请求SHA-256', `source_type` varchar(24) NOT NULL COMMENT 'INBOUND_FEE或CONTAINER_FEE', `source_fee_id` bigint unsigned NOT NULL COMMENT '稳定费用来源ID', `source_version` int unsigned NOT NULL COMMENT '精确费用来源版本', `inbound_id` bigint unsigned DEFAULT NULL COMMENT '入库费用所属入库单ID', `container_id` bigint unsigned DEFAULT NULL COMMENT '柜次费用所属柜次ID', `reason` varchar(500) NOT NULL COMMENT '操作原因', `status` varchar(16) NOT NULL COMMENT 'PROCESSING或SUCCEEDED', `result_status` varchar(16) DEFAULT NULL COMMENT '成功业务结果;当前为VOIDED', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '命令创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '命令成功完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_finance_fee_command_idem` (`customer_id`,`operator_id`,`action`,`idempotency_key`), KEY `idx_finance_fee_command_source` (`source_type`,`source_fee_id`,`source_version`,`created_at`), CONSTRAINT `chk_finance_fee_command_action` CHECK ((`action` = _utf8mb4'VOID')), CONSTRAINT `chk_finance_fee_command_source` CHECK ((`source_type` in (_utf8mb4'INBOUND_FEE',_utf8mb4'CONTAINER_FEE'))), CONSTRAINT `chk_finance_fee_command_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCEEDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Finance发起、Firstleg执行业务费用命令的幂等审计记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_fulfillment_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_fulfillment_task` ( `id` bigint unsigned NOT NULL COMMENT '履约任务ID(雪花ID)', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `order_id` bigint unsigned NOT NULL COMMENT '订单服务中的订单逻辑ID,不建立跨库外键', `order_no` varchar(32) NOT NULL COMMENT '订单号快照', `order_snapshot_json` json NOT NULL COMMENT '创建履约任务时所需的订单业务快照', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING_ASSIGNMENT' COMMENT '履约状态:PENDING_ASSIGNMENT待指派、ASSIGNED已指派、PROCESSING处理中、COMPLETED已完成、CANCELLED已取消', `assignee_id` bigint unsigned DEFAULT NULL COMMENT '当前负责人ID', `assignee_name` varchar(64) DEFAULT NULL COMMENT '当前负责人名称快照', `assigned_at` datetime(3) DEFAULT NULL COMMENT '最近指派时间', `started_at` datetime(3) DEFAULT NULL COMMENT '开始履约时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '履约完成时间', `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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_tenant_order` (`tenant_id`,`order_id`), KEY `idx_task_assignee_status` (`tenant_id`,`assignee_id`,`status`,`created_at`), KEY `idx_task_tenant_created` (`tenant_id`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='头程履约任务表:接收订单事件后形成独立履约任务,管理指派、执行和完成状态'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_carton_label`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_carton_label` ( `id` bigint unsigned NOT NULL COMMENT '实际箱唛头映射ID(雪花ID)', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `order_id` bigint unsigned NOT NULL COMMENT '订单服务订单ID快照', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '订单货物明细ID,不建立跨库外键', `cargo_item_no` int unsigned NOT NULL COMMENT '订单货物明细序号快照', `cargo_name` varchar(255) DEFAULT NULL COMMENT '货物名称快照', `sku_code` varchar(128) DEFAULT NULL COMMENT '箱唛绑定的SKU快照;二维码内容不变', `units_per_carton` int unsigned DEFAULT NULL COMMENT '每箱SKU数量快照;一件代发必须为正数', `detail_package_count` int unsigned NOT NULL COMMENT '该订单货物明细箱数快照', `inbound_code` varchar(40) NOT NULL COMMENT '入仓码快照', `box_code` varchar(80) NOT NULL COMMENT '固定二维码内容:入仓码#总箱数-箱下标', `total_carton_count` int unsigned NOT NULL COMMENT '首次分配时整单总箱数', `carton_index` int unsigned NOT NULL COMMENT '整单从1开始的稳定箱下标', `label_version` int unsigned NOT NULL DEFAULT '1' COMMENT '箱唛批次版本,从1递增', `batch_status` varchar(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '批次状态:ACTIVE有效、VOID已作废', `cargo_fingerprint` char(64) DEFAULT NULL COMMENT '影响标签字段的SHA-256指纹', `voided_at` datetime(3) DEFAULT NULL COMMENT '批次作废时间', `box_specification` varchar(255) NOT NULL COMMENT '订单箱规或货物明细描述快照', `length_cm` decimal(12,3) DEFAULT NULL COMMENT '下单箱规长度cm快照', `width_cm` decimal(12,3) DEFAULT NULL COMMENT '下单箱规宽度cm快照', `height_cm` decimal(12,3) DEFAULT NULL COMMENT '下单箱规高度cm快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '首次分配时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_carton_label_box_code` (`tenant_id`,`box_code`), UNIQUE KEY `uk_carton_label_index` (`tenant_id`,`inbound_id`,`label_version`,`carton_index`), KEY `idx_carton_label_detail` (`tenant_id`,`inbound_id`,`inbound_detail_id`), KEY `fk_carton_label_inbound` (`inbound_id`), KEY `idx_carton_label_active` (`tenant_id`,`inbound_id`,`batch_status`,`label_version`), CONSTRAINT `fk_carton_label_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='首次打印前冻结的实际箱号与订单货物明细映射'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_carton_label_sku`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_carton_label_sku` ( `id` bigint unsigned NOT NULL COMMENT '箱唛SKU快照ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `carton_label_id` bigint unsigned NOT NULL COMMENT '物理箱唛ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '订单货物明细ID', `sku_code` varchar(128) NOT NULL COMMENT 'SKU编码快照', `cargo_name` varchar(255) DEFAULT NULL COMMENT '货物名称快照', `expected_quantity` int unsigned NOT NULL COMMENT '该物理箱内应收SKU数量', `line_no` int unsigned NOT NULL COMMENT '箱内SKU展示顺序', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_carton_label_sku_detail` (`carton_label_id`,`inbound_detail_id`), KEY `idx_carton_label_sku_code` (`tenant_id`,`inbound_id`,`sku_code`), CONSTRAINT `fk_carton_label_sku_label` FOREIGN KEY (`carton_label_id`) REFERENCES `fl_inbound_carton_label` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='物理箱唛内的多SKU冻结快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_destination_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_destination_snapshot` ( `id` bigint unsigned NOT NULL COMMENT '目的仓地址快照ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `destination_type` varchar(24) DEFAULT NULL COMMENT '目的仓类型', `destination_code` varchar(32) DEFAULT NULL COMMENT '目的仓编码', `destination_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称', `country_code` char(2) DEFAULT NULL COMMENT '国家二字码', `state_province` varchar(100) DEFAULT NULL COMMENT '省或州', `city` varchar(100) DEFAULT NULL COMMENT '城市', `address_line` varchar(512) DEFAULT NULL COMMENT '详细地址', `postal_code` varchar(20) DEFAULT NULL COMMENT '邮编', `contact_name` varchar(64) DEFAULT NULL COMMENT '联系人', `contact_phone` varchar(32) DEFAULT NULL COMMENT '联系人电话', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_destination_inbound` (`tenant_id`,`inbound_id`), KEY `fk_destination_inbound` (`inbound_id`), CONSTRAINT `fk_destination_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单目的仓地址和联系人快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_fee`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_fee` ( `id` bigint unsigned NOT NULL COMMENT '入库费用ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `measurement_id` bigint unsigned DEFAULT NULL COMMENT '璐圭敤缁戝畾鐨勬祴閲忔壒娆D蹇収', `measurement_source` varchar(32) DEFAULT NULL COMMENT '璁¤垂灏哄鏉ユ簮蹇収锛歄UTER涓哄绠辫鏁版嵁', `fee_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户内唯一费用单号', `fee_version` int unsigned NOT NULL DEFAULT '1' COMMENT '费用快照版本', `charge_rule_id` bigint unsigned DEFAULT NULL COMMENT '历史客户计费规则ID;渠道价格可为空', `charge_rule_version` int unsigned DEFAULT NULL COMMENT '历史客户规则版本快照', `carrier_rate_id` bigint unsigned DEFAULT NULL COMMENT '船司FBA价格ID;人工报价为空', `carrier_rate_version` int unsigned DEFAULT NULL COMMENT '船司价格版本快照;人工报价为空', `price_book_version_id` bigint unsigned DEFAULT NULL COMMENT '整表价格版本ID快照', `rule_code` varchar(50) DEFAULT NULL COMMENT '历史客户规则编码快照', `customer_id` bigint unsigned DEFAULT NULL COMMENT '可选业务客户快照;平台公共渠道计费不依赖该字段', `customer_name` varchar(128) NOT NULL COMMENT '客户名称快照', `business_type` varchar(32) NOT NULL COMMENT '业务类型快照', `tax_mode` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '订单买单或退税模式快照', `pricing_tax_mode` varchar(16) DEFAULT NULL COMMENT '报价包税维度快照', `rounding_scale` tinyint unsigned DEFAULT NULL COMMENT '历史客户规则计费量保留位数快照', `rounding_mode` varchar(24) DEFAULT NULL COMMENT '历史客户规则舍入方式快照', `rule_effective_from` datetime(3) DEFAULT NULL COMMENT '历史客户规则生效开始快照', `rule_effective_to` datetime(3) DEFAULT NULL COMMENT '客户规则生效结束快照', `rate_code` varchar(50) NOT NULL COMMENT '船司价格编码快照', `origin_warehouse_id` bigint unsigned NOT NULL COMMENT '起运仓ID快照', `origin_warehouse_name` varchar(128) NOT NULL COMMENT '起运仓名称快照', `channel_code` varchar(64) NOT NULL COMMENT '渠道编码快照', `carrier_id` bigint unsigned DEFAULT NULL COMMENT '历史承运商ID;渠道价格可为空', `carrier_name` varchar(128) DEFAULT NULL COMMENT '历史承运商名称;渠道价格可为空', `destination_type` varchar(16) DEFAULT NULL COMMENT '目的地类型快照:FBA或OVERSEAS', `destination_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '海外仓或FBA目的仓ID快照', `destination_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `destination_code` varchar(32) DEFAULT NULL COMMENT 'FBA仓编码快照;海外仓可为空', `rate_effective_from` datetime(3) DEFAULT NULL COMMENT '价格生效开始快照;人工报价为空', `rate_effective_to` datetime(3) DEFAULT NULL COMMENT '价格生效结束快照', `charge_mode` varchar(16) DEFAULT NULL COMMENT '计费口径:KG或CBM', `conversion_factor` decimal(18,6) DEFAULT NULL COMMENT '历史客户规则使用的换算系数快照', `actual_weight_kg` decimal(18,3) NOT NULL COMMENT '试算时实际重量kg', `actual_volume_cbm` decimal(18,4) NOT NULL COMMENT '试算时实际体积m3', `converted_quantity` decimal(18,4) NOT NULL COMMENT '换算后的重量或体积', `chargeable_quantity` decimal(18,4) NOT NULL COMMENT '最终计费量', `charge_unit` varchar(16) NOT NULL COMMENT '计费单位', `currency` char(3) NOT NULL COMMENT '币种', `subtotal_amount` decimal(18,2) NOT NULL COMMENT '基础费用金额', `additional_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '附加费金额', `total_amount` decimal(18,2) NOT NULL COMMENT '总金额', `fee_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'CALCULATED' COMMENT '费用状态:CALCULATED已计算、SUPERSEDED已被新版本替代', `review_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NOT_SUBMITTED' COMMENT '费用审核状态:NOT_SUBMITTED未提交、PENDING待审核、APPROVED已通过、REJECTED已驳回、CONFIRMED已确认', `exception_release` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否基于测量异常放行生成', `calculated_by` bigint unsigned NOT NULL COMMENT '试算人ID', `calculated_at` datetime(3) NOT NULL COMMENT '试算时间', `confirmed_by` bigint unsigned DEFAULT NULL COMMENT '确认人ID', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '确认时间', `sent_by` bigint unsigned DEFAULT NULL COMMENT '发送人ID', `sent_at` datetime(3) DEFAULT NULL COMMENT '发送客户时间', `customer_confirmed_by` bigint unsigned DEFAULT NULL COMMENT '瀹㈡埛纭浜虹敤鎴稩D', `customer_confirmed_by_name` varchar(64) DEFAULT NULL COMMENT '瀹㈡埛纭浜哄悕绉板揩鐓�', `customer_confirmed_at` datetime(3) DEFAULT 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 '更新时间', `baseline_chargeable_quantity` decimal(18,6) NOT NULL COMMENT '系统按权威测量与生效报价计算的原始计费量', `tolerance_percent` decimal(5,2) NOT NULL DEFAULT '10.00' COMMENT '人工调整允许的最大偏差百分比,边界包含', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_fee_no` (`tenant_id`,`fee_no`), UNIQUE KEY `uk_inbound_fee_version` (`tenant_id`,`inbound_id`,`fee_version`), KEY `idx_inbound_fee_status` (`tenant_id`,`inbound_id`,`fee_status`,`review_status`), KEY `fk_fee_inbound` (`inbound_id`), KEY `fk_fee_charge_rule` (`charge_rule_id`), KEY `fk_fee_carrier_rate` (`carrier_rate_id`), CONSTRAINT `fk_fee_carrier_rate` FOREIGN KEY (`carrier_rate_id`) REFERENCES `fl_carrier_fba_rate` (`id`), CONSTRAINT `fk_fee_charge_rule` FOREIGN KEY (`charge_rule_id`) REFERENCES `fl_customer_charge_rule` (`id`), CONSTRAINT `fk_fee_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库头程费用计算和确认快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_fee_detail`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_fee_detail` ( `id` bigint unsigned NOT NULL COMMENT '入库费用明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID(客户隔离键);费用明细引用平台公共费用项目', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `fee_item_id` bigint unsigned NOT NULL COMMENT '绑定费用项目ID', `source_type` varchar(32) NOT NULL DEFAULT 'MANUAL' COMMENT 'MANUAL或FBA_PRICING', `source_fee_id` bigint unsigned DEFAULT NULL COMMENT '来源计费快照ID', `source_fee_version` int unsigned DEFAULT NULL COMMENT '来源计费快照版本', `source_fee_no` varchar(40) DEFAULT NULL COMMENT '来源费用单号', `inbound_code` varchar(40) NOT NULL COMMENT '入仓码快照', `direction` varchar(16) NOT NULL COMMENT 'RECEIVABLE应收、PAYABLE应付', `business_date` date NOT NULL COMMENT '业务发生日', `customer_id` bigint unsigned DEFAULT NULL COMMENT '客户ID快照', `customer_name` varchar(128) DEFAULT NULL COMMENT '客户公司名称快照', `invoice_title` varchar(256) DEFAULT NULL COMMENT '发票抬头快照', `fee_category_snapshot` varchar(64) NOT NULL COMMENT '费用分类快照', `trade_scope_snapshot` varchar(20) NOT NULL COMMENT '国内国际快照', `fee_type_name_snapshot` varchar(128) NOT NULL COMMENT '费用类型名称快照', `channel_code` varchar(64) DEFAULT NULL COMMENT '渠道编码快照', `channel_name` varchar(128) DEFAULT NULL COMMENT '渠道名称快照', `destination_code` varchar(32) DEFAULT NULL COMMENT '目的仓编码快照', `destination_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `package_count` int DEFAULT NULL COMMENT '件数快照', `actual_gross_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '仓库实测毛重快照,单位千克', `actual_volume_cbm` decimal(18,6) DEFAULT NULL COMMENT '实际体积快照,单位立方米', `volume_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '材积重快照,单位千克', `chargeable_weight_kg` decimal(18,4) DEFAULT NULL COMMENT '费用计算采用的计费重量,单位千克', `chargeable_volume_cbm` decimal(18,6) DEFAULT NULL COMMENT '费用计算采用的计费体积,单位立方米', `chargeable_quantity` decimal(18,4) DEFAULT NULL COMMENT '本费用最终计费量', `charge_unit` varchar(16) DEFAULT NULL COMMENT 'KG或CBM', `unit_price` decimal(18,4) NOT NULL COMMENT '费用单价;计价单位由对应费用项目规则确定', `currency` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '金额币种三字码,如CNY', `amount` decimal(18,2) NOT NULL COMMENT '该费用明细金额,币种由currency字段指定', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `review_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '审核状态:PENDING待审核、APPROVED已通过、REJECTED已驳回', `reviewer_id` bigint DEFAULT NULL COMMENT '审核人ID', `reviewer_name` varchar(64) DEFAULT NULL COMMENT '审核人名称快照', `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', `review_reason` varchar(500) DEFAULT NULL COMMENT '审核驳回原因', `publication_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DRAFT' COMMENT '费用发布状态:DRAFT草稿、PUBLISHED已发布、SUPERSEDED已替代', `published_by` bigint DEFAULT NULL COMMENT '发布人ID', `published_by_name` varchar(64) DEFAULT NULL COMMENT '发布人名称快照', `published_at` datetime(3) DEFAULT NULL COMMENT '发布时间', `inbounded_at` datetime(3) DEFAULT NULL COMMENT '入库完成时间快照', `settlement_included` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否参与结算', `created_by` bigint DEFAULT NULL COMMENT '创建人或系统主体ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint DEFAULT 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 '乐观锁版本号', `paid_at` datetime(3) DEFAULT NULL COMMENT 'DIRECT_PAID业务已付时间', `payment_method` varchar(32) DEFAULT NULL COMMENT 'DIRECT_PAID付款方式', `payment_reference_no` varchar(128) DEFAULT NULL COMMENT 'DIRECT_PAID付款流水号', `payment_voucher_file_ids` json DEFAULT NULL COMMENT 'DIRECT_PAID付款凭证File ID数组', `settlement_mode` varchar(16) DEFAULT NULL COMMENT '仅PAYABLE:ON_ACCOUNT或DIRECT_PAID', `supplier_category` varchar(16) DEFAULT NULL COMMENT '费用项目供应商类别约束快照;为空表示任意启用供应商', `supplier_id` bigint unsigned DEFAULT NULL COMMENT '应付Warehouse供应商ID快照;应收为空', `supplier_name` varchar(200) DEFAULT NULL COMMENT '应付Warehouse供应商名称快照;应收为空', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_fee_source` (`tenant_id`,`source_type`,`source_fee_id`), KEY `idx_inbound_fee_detail` (`tenant_id`,`inbound_id`,`business_date`,`deleted`), KEY `idx_inbound_fee_review` (`tenant_id`,`review_status`,`business_date`,`deleted`), KEY `idx_inbound_fee_item` (`tenant_id`,`fee_item_id`,`deleted`), KEY `fk_inbound_fee_detail_order` (`inbound_id`), KEY `fk_inbound_fee_detail_item` (`fee_item_id`), KEY `idx_inbound_fee_published` (`tenant_id`,`inbound_id`,`publication_status`,`source_fee_version`), CONSTRAINT `fk_inbound_fee_detail_item` FOREIGN KEY (`fee_item_id`) REFERENCES `fl_fee_item` (`id`), CONSTRAINT `fk_inbound_fee_detail_order` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单应收应付费用明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_fee_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_fee_item` ( `id` bigint unsigned NOT NULL COMMENT '费用明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `fee_id` bigint unsigned NOT NULL COMMENT '费用头ID', `item_no` int unsigned NOT NULL COMMENT '费用单内序号', `fee_code` varchar(50) NOT NULL COMMENT '费用项目编码', `fee_name` varchar(128) NOT NULL COMMENT '费用项目名称快照', `quantity` decimal(18,4) NOT NULL COMMENT '计费数量', `unit` varchar(16) NOT NULL COMMENT '计费单位', `unit_price` decimal(18,6) NOT NULL COMMENT '单价', `amount` decimal(18,2) NOT NULL COMMENT '金额', `currency` char(3) NOT NULL COMMENT '币种', `automatic_flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否自动计算', `remark` varchar(500) DEFAULT NULL COMMENT '费用备注', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_fee_item_no` (`tenant_id`,`fee_id`,`item_no`), KEY `fk_fee_item_header` (`fee_id`), CONSTRAINT `fk_fee_item_header` FOREIGN KEY (`fee_id`) REFERENCES `fl_inbound_fee` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库头程费用项目明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_file`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_file` ( `id` bigint unsigned NOT NULL COMMENT '入库单文件关系ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `file_id` bigint unsigned NOT NULL COMMENT '文件服务文件ID', `file_type` varchar(24) NOT NULL COMMENT '文件类型:RELATED、MARK、PC_ORDER、MEASURE或WEIGHT', `file_name_snapshot` varchar(255) NOT NULL COMMENT '文件名快照', `visibility` varchar(16) NOT NULL DEFAULT 'INTERNAL' COMMENT '可见范围', `file_version` int unsigned NOT NULL DEFAULT '1' COMMENT '业务文件版本', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传人ID', `uploaded_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传时间', `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除标记', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_file_relation` (`tenant_id`,`inbound_id`,`file_id`,`file_type`), KEY `idx_inbound_file_type` (`tenant_id`,`inbound_id`,`file_type`,`deleted`), KEY `fk_file_inbound` (`inbound_id`), CONSTRAINT `fk_file_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单与文件中心对象的分类关系'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_hold_record`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_hold_record` ( `id` bigint unsigned NOT NULL COMMENT '扣货记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `hold_action` varchar(16) NOT NULL COMMENT '动作:HOLD或RELEASE', `reason` varchar(1000) NOT NULL COMMENT '扣货或解除原因', `evidence_file_id` bigint unsigned DEFAULT NULL COMMENT '证据文件ID', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `operated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_hold_inbound_time` (`tenant_id`,`inbound_id`,`operated_at`), KEY `fk_hold_inbound` (`inbound_id`), CONSTRAINT `fk_hold_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单扣货和解除扣货不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_idempotency`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_idempotency` ( `id` bigint unsigned NOT NULL COMMENT '入库写操作幂等记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `operation` varchar(40) NOT NULL COMMENT '操作类型', `operator_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '操作者或外部应用ID', `inbound_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '入库单ID,创建前可为0', `idempotency_key` varchar(128) NOT NULL COMMENT '幂等键', `request_hash` char(64) NOT NULL COMMENT '请求内容摘要', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '幂等处理状态:PROCESSING处理中、SUCCEEDED已成功、FAILED已失败', `result_json` json DEFAULT NULL COMMENT '成功结果摘要', `result_resource_id` bigint unsigned DEFAULT NULL COMMENT '成功结果资源ID', `completed_at` datetime(3) DEFAULT 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 '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_idempotency` (`tenant_id`,`operation`,`operator_id`,`idempotency_key`), KEY `idx_inbound_idempotency_created` (`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='第三方测量、审核、费用发送和入库写操作幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_internal_note`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_internal_note` ( `id` bigint unsigned NOT NULL COMMENT '客服内部备注ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `content` varchar(2000) NOT NULL COMMENT '仅内部可见备注', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_internal_note_time` (`tenant_id`,`inbound_id`,`created_at`), KEY `fk_internal_note_inbound` (`inbound_id`), CONSTRAINT `fk_internal_note_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单客服内部备注历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_loading_pick_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_loading_pick_task` ( `id` bigint unsigned NOT NULL COMMENT '入库单级PDA拣货任务ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '关联入库单逻辑ID', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '任务状态:PENDING待拣货、IN_PROGRESS拣货中、COMPLETED已完成', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号,每次更新递增', `expected_count` int unsigned DEFAULT NULL COMMENT '计划应拣箱数', `picked_count` int unsigned DEFAULT NULL COMMENT '实际已拣箱数', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '拣货结果或异常补充说明', `updated_by` bigint unsigned NOT NULL COMMENT '最后操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最后操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'PDA拣货任务创建时间', `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT 'PDA拣货任务最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pick_tenant_inbound` (`tenant_id`,`inbound_id`), KEY `idx_loading_pick_status` (`tenant_id`,`status`,`updated_at`), KEY `fk_loading_pick_inbound` (`inbound_id`), CONSTRAINT `fk_loading_pick_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA拣货任务及结果'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_measurement`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_measurement` ( `id` bigint unsigned NOT NULL COMMENT '测量批次ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `split_batch_id` bigint unsigned DEFAULT NULL COMMENT '产生该测量批次的入仓拆分批次ID', `source_measurement_id` bigint unsigned DEFAULT NULL COMMENT '子单继承或复核时的来源测量批次ID', `source_type` varchar(24) NOT NULL COMMENT '数据来源:THIRD_PARTY或MANUAL', `source_code` varchar(64) DEFAULT NULL COMMENT '第三方应用或来源编码', `external_event_no` varchar(128) DEFAULT NULL COMMENT '第三方事件号', `external_request_hash` char(64) DEFAULT NULL COMMENT '第三方data原文和图片内容联合请求哈希', `device_code` varchar(64) DEFAULT NULL COMMENT '测量设备编码', `warehouse_code` varchar(50) DEFAULT NULL COMMENT '第三方回传仓库编码', `measured_at` datetime(3) DEFAULT NULL COMMENT '设备测量时间', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'RECEIVED' COMMENT '测量批次状态:DRAFT草稿、RECEIVED已接收、SUBMITTED已提交、APPROVED已通过、REJECTED已驳回', `raw_payload_json` json DEFAULT NULL COMMENT '第三方原始报文', `original_document_no` varchar(64) DEFAULT NULL COMMENT '原单据号码快照', `original_gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '原单据毛重kg', `original_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '原单据体积或材积m3', `actual_goods_name` varchar(255) DEFAULT NULL COMMENT '实际品名', `total_package_count` int unsigned DEFAULT NULL COMMENT '本批次总箱数', `total_volume_raw_cbm` decimal(18,6) DEFAULT NULL COMMENT '本批次原始总体积m3', `total_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '本批次业务总体积m3', `volume_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '本批次总材积重kg', `created_by` bigint unsigned DEFAULT NULL COMMENT '创建人或系统主体ID', `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 NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_measure_external_event` (`tenant_id`,`source_code`,`external_event_no`), KEY `idx_measure_inbound_time` (`tenant_id`,`inbound_id`,`created_at`), KEY `fk_measure_inbound` (`inbound_id`), KEY `fk_measure_split_batch` (`split_batch_id`), KEY `fk_measure_source_batch` (`source_measurement_id`), KEY `idx_measure_split_source` (`tenant_id`,`split_batch_id`,`source_measurement_id`,`created_at`), KEY `idx_measure_inbound_status_id` (`tenant_id`,`inbound_id`,`status`,`id`), CONSTRAINT `fk_measure_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_measure_source_batch` FOREIGN KEY (`source_measurement_id`) REFERENCES `fl_inbound_measurement` (`id`), CONSTRAINT `fk_measure_split_batch` FOREIGN KEY (`split_batch_id`) REFERENCES `fl_inbound_split_batch` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库长宽高测量批次和第三方原始数据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_measurement_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_measurement_item` ( `id` bigint unsigned NOT NULL COMMENT '测量明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `measurement_id` bigint unsigned NOT NULL COMMENT '测量批次ID', `split_item_id` bigint unsigned DEFAULT NULL COMMENT '产生该子单测量明细的拆分台账ID', `source_measurement_item_id` bigint unsigned DEFAULT NULL COMMENT '被拆分继承的来源测量箱规明细ID', `inbound_detail_id` bigint unsigned DEFAULT NULL COMMENT '绑定的订单货物明细ID,平台手工明细可为空', `external_detail_no` varchar(128) DEFAULT NULL COMMENT '第三方测量明细唯一号,平台手工明细可为空', `box_code` varchar(128) DEFAULT NULL COMMENT '柏悦唛头箱号;设备单箱测量时同一客户内唯一', `scanned_shipment_id` varchar(64) DEFAULT NULL COMMENT '设备从Amazon FBA箱标实扫的Shipment ID', `item_no` varchar(32) NOT NULL COMMENT '批次内明细号', `box_specification` varchar(64) NOT NULL COMMENT '箱规标识', `package_count` int unsigned NOT NULL COMMENT '相同箱规箱数', `length_cm` decimal(12,3) NOT NULL COMMENT '原始长度cm', `width_cm` decimal(12,3) NOT NULL COMMENT '原始宽度cm', `height_cm` decimal(12,3) NOT NULL COMMENT '原始高度cm', `girth_cm` decimal(12,3) NOT NULL COMMENT '周长cm,规则为长+2*(宽+高)', `unit_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '单箱重量kg,第三方仅回传尺寸时可为空', `unit_volume_cbm` decimal(18,4) NOT NULL COMMENT '单箱业务体积m3', `volume_raw_cbm` decimal(18,6) NOT NULL COMMENT '原始体积m3', `volume_cbm` decimal(18,4) NOT NULL COMMENT '业务体积m3', `total_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '本箱规总重量kg', `total_volume_cbm` decimal(18,4) NOT NULL COMMENT '本箱规总体积m3', `volume_weight_kg` decimal(18,3) NOT NULL COMMENT '本箱规材积重kg', `charge_rule_id` bigint unsigned DEFAULT NULL COMMENT 'customer charge rule id', `coefficient_mode` varchar(16) DEFAULT NULL COMMENT '系数模式快照:ADD或MULTIPLY', `calculation_rule_version` varchar(64) NOT NULL COMMENT '体积计算和舍入规则版本', `source_image_file_id` bigint unsigned DEFAULT NULL COMMENT '测量设备图片文件ID', `machine_no` varchar(64) DEFAULT NULL COMMENT '本次测量设备编号', `device_measured_at` datetime(3) DEFAULT NULL COMMENT '本次设备测量时间', `over_limit_warning` varchar(500) DEFAULT NULL COMMENT '超线提醒快照', `outer_length_cm` decimal(12,3) DEFAULT NULL COMMENT '外箱规长度cm', `outer_width_cm` decimal(12,3) DEFAULT NULL COMMENT '外箱规宽度cm', `outer_height_cm` decimal(12,3) DEFAULT NULL COMMENT '外箱规高度cm', `manual_outer_length_cm` decimal(12,3) DEFAULT NULL COMMENT '浠撳簱浜哄伐澶栫瑙勯暱搴﹁绠楀熀鏁癱m', `manual_outer_width_cm` decimal(12,3) DEFAULT NULL COMMENT '浠撳簱浜哄伐澶栫瑙勫搴﹁绠楀熀鏁癱m', `manual_outer_height_cm` decimal(12,3) DEFAULT NULL COMMENT '浠撳簱浜哄伐澶栫瑙勯珮搴﹁绠楀熀鏁癱m', `remark` varchar(500) DEFAULT 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 '最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_measure_item_no` (`tenant_id`,`measurement_id`,`item_no`), UNIQUE KEY `uk_measure_external_detail` (`tenant_id`,`inbound_detail_id`,`external_detail_no`), UNIQUE KEY `uk_measure_box_code` (`tenant_id`,`box_code`), KEY `fk_measure_item_batch` (`measurement_id`), KEY `fk_measure_item_split_item` (`split_item_id`), KEY `fk_measure_item_source_item` (`source_measurement_item_id`), KEY `idx_measure_item_split_source` (`tenant_id`,`split_item_id`,`source_measurement_item_id`), KEY `idx_measure_item_candidate` (`tenant_id`,`measurement_id`,`inbound_detail_id`), CONSTRAINT `fk_measure_item_batch` FOREIGN KEY (`measurement_id`) REFERENCES `fl_inbound_measurement` (`id`), CONSTRAINT `fk_measure_item_source_item` FOREIGN KEY (`source_measurement_item_id`) REFERENCES `fl_inbound_measurement_item` (`id`), CONSTRAINT `fk_measure_item_split_item` FOREIGN KEY (`split_item_id`) REFERENCES `fl_inbound_split_item` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库长宽高和箱数测量明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_order` ( `id` bigint unsigned NOT NULL COMMENT '入库单ID(雪花ID)', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `task_id` bigint unsigned DEFAULT NULL COMMENT '头程履约任务ID', `order_id` bigint unsigned NOT NULL COMMENT '订单服务订单ID,不建立跨库外键', `order_no` varchar(32) NOT NULL COMMENT '订单号快照', `inbound_code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户内唯一入仓码', `inbound_role` varchar(16) NOT NULL DEFAULT 'MASTER' COMMENT '入仓单层级:MASTER主单、CHILD子单', `parent_inbound_id` bigint unsigned DEFAULT NULL COMMENT '直属主入仓单ID;主单为空', `root_inbound_id` bigint unsigned DEFAULT NULL COMMENT '根主入仓单ID;存量主单可为空,按自身ID解释', `split_sequence` int unsigned DEFAULT NULL COMMENT '同一主单下的子单顺序号', `split_status` varchar(24) NOT NULL DEFAULT 'NOT_SPLIT' COMMENT '拆分状态:NOT_SPLIT、PARTIALLY_SPLIT、FULLY_SPLIT', `process_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'WAIT_MEASURE' COMMENT '入库流程状态:WAIT_MEASURE待测量、MEASURING测量中、MEASURE_PENDING待审核、MEASURE_REJECTED测量驳回、WAIT_PRICING待计费、FEE_CONFIRMING费用确认中、INBOUNDING入库收口中、INBOUNDED已入库、WAIT_SPLIT历史待分柜', `order_status_snapshot` varchar(24) NOT NULL COMMENT '订单状态快照', `measure_review_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NOT_SUBMITTED' COMMENT '测量审核状态:NOT_SUBMITTED未提交、PENDING待审核、APPROVED已通过、REJECTED已驳回', `fee_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'UNPRICED' COMMENT '费用状态:UNPRICED未计费、CALCULATED已计算、CONFIRMED已确认、SENT已发送、VOIDED已作废', `fee_review_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NOT_SUBMITTED' COMMENT '费用审核状态:NOT_SUBMITTED未提交、PENDING待审核、APPROVED已通过、REJECTED已驳回、CONFIRMED已确认', `notification_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NOT_CREATED' COMMENT '客户通知状态:NOT_CREATED未创建、PENDING待通知', `expected_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到达时间', `customer_id` bigint unsigned DEFAULT NULL COMMENT '客户逻辑ID', `customer_name` varchar(128) NOT NULL COMMENT '客户名称快照', `company_id` bigint unsigned DEFAULT NULL COMMENT '运营公司逻辑ID', `company_name` varchar(128) DEFAULT NULL COMMENT '运营公司名称快照', `warehouse_id` bigint unsigned NOT NULL COMMENT '实际作业仓库ID', `warehouse_name` varchar(128) NOT NULL COMMENT '实际作业仓库名称快照', `delivery_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '交货仓逻辑ID', `delivery_warehouse_name` varchar(128) DEFAULT NULL COMMENT '交货仓名称快照', `business_type` varchar(32) NOT NULL COMMENT '业务类型', `fulfillment_type` varchar(32) NOT NULL DEFAULT 'STANDARD' COMMENT '履约类型:STANDARD普通头程、ONE_CLICK_DROPSHIP一键代发', `lx_code` varchar(128) DEFAULT NULL COMMENT '一件代发领星入库单代码', `channel_code` varchar(64) DEFAULT NULL COMMENT '渠道编码', `channel_name` varchar(128) DEFAULT NULL COMMENT '渠道名称快照', `carrier_id` bigint unsigned DEFAULT NULL COMMENT '计费船司逻辑ID', `carrier_name` varchar(128) DEFAULT NULL COMMENT '计费船司名称快照', `tax_mode` varchar(24) DEFAULT NULL COMMENT '买单或退税模式', `pricing_tax_mode` varchar(16) DEFAULT NULL COMMENT '报价包税维度:TAX_INCLUDED/TAX_EXCLUDED', `container_mode` varchar(24) DEFAULT NULL COMMENT '整柜或散货模式', `customs_inspection` tinyint(1) DEFAULT NULL COMMENT '是否商检', `destination_type` varchar(24) DEFAULT NULL COMMENT '目的仓类型', `destination_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '目的仓逻辑ID', `destination_code` varchar(32) DEFAULT NULL COMMENT '目的仓编码,例如FBA仓编码', `destination_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `hold_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '当前是否扣货', `current_hold_reason` varchar(500) DEFAULT NULL COMMENT '当前扣货理由快照', `last_overseas_hold_version` bigint unsigned DEFAULT NULL COMMENT '海外暂扣事件最新聚合版本,用于阻止乱序覆盖', `total_package_count` int unsigned DEFAULT NULL COMMENT '确认后的总箱数', `package_count` int unsigned DEFAULT NULL COMMENT '入仓单箱数;三期唯一数量口径', `split_purpose` varchar(16) NOT NULL DEFAULT 'MASTER' COMMENT '履约分片用途:MASTER、LOADED、REMAINDER', `actual_gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '确认后的实际总毛重kg', `chargeable_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '当前费用快照的计费重量kg', `actual_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '确认后的实际总体积m3', `chargeable_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '当前费用快照的计费体积m3', `pallet_count` int unsigned DEFAULT NULL COMMENT '已分配总托盘数快照', `volume_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '总材积重kg', `actual_net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '总净重kg', `measure_completed_at` datetime(3) DEFAULT NULL COMMENT '测量完成时间', `inbounded_at` datetime(3) DEFAULT NULL COMMENT '入库完成时间', `express_company_code` varchar(64) DEFAULT NULL COMMENT '快递公司编码快照', `express_company_name` varchar(128) DEFAULT NULL COMMENT '快递公司名称快照', `express_tracking_no` varchar(128) DEFAULT NULL COMMENT '快递单号快照', `public_remark` varchar(1000) DEFAULT NULL COMMENT '客户可见备注', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', `master_order_id` bigint unsigned GENERATED ALWAYS AS ((case when ((`inbound_role` = _utf8mb4'MASTER') and (`deleted` = 0)) then `order_id` else NULL end)) STORED COMMENT '仅用于约束有效主单订单唯一性', `active_remainder_root_id` bigint unsigned GENERATED ALWAYS AS ((case when ((`inbound_role` = _utf8mb4'CHILD') and (`split_purpose` = _utf8mb4'REMAINDER') and (`split_status` = _utf8mb4'NOT_SPLIT') and (`deleted` = 0)) then `root_inbound_id` else NULL end)) STORED COMMENT '有效余量唯一约束键;历史已完成分片为空', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_code` (`inbound_code`), UNIQUE KEY `uk_inbound_master_order` (`tenant_id`,`master_order_id`), UNIQUE KEY `uk_inbound_parent_split_sequence` (`tenant_id`,`parent_inbound_id`,`split_sequence`), UNIQUE KEY `uk_inbound_one_active_remainder` (`tenant_id`,`active_remainder_root_id`), KEY `idx_inbound_process_time` (`tenant_id`,`process_status`,`created_at`,`id`), KEY `idx_inbound_measure_time` (`tenant_id`,`measure_review_status`,`created_at`,`id`), KEY `idx_inbound_fee_time` (`tenant_id`,`fee_review_status`,`created_at`,`id`), KEY `idx_inbound_warehouse_status` (`tenant_id`,`warehouse_id`,`process_status`,`created_at`), KEY `idx_inbound_customer_time` (`tenant_id`,`customer_id`,`created_at`), KEY `idx_inbound_company_time` (`tenant_id`,`company_id`,`created_at`), KEY `idx_inbound_arrival` (`tenant_id`,`expected_arrival_at`), KEY `idx_inbound_destination` (`tenant_id`,`destination_code`,`created_at`), KEY `idx_inbound_channel` (`tenant_id`,`channel_code`,`created_at`), KEY `fk_inbound_task` (`task_id`), KEY `idx_inbound_root_role` (`tenant_id`,`root_inbound_id`,`inbound_role`,`created_at`,`id`), KEY `fk_inbound_parent_order` (`parent_inbound_id`), KEY `fk_inbound_root_order` (`root_inbound_id`), KEY `idx_inbound_smart_loading` (`warehouse_id`,`process_status`,`channel_code`,`expected_arrival_at`,`id`), CONSTRAINT `fk_inbound_parent_order` FOREIGN KEY (`parent_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_root_order` FOREIGN KEY (`root_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_task` FOREIGN KEY (`task_id`) REFERENCES `fl_fulfillment_task` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='二期头程入库单聚合根和列表查询快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_outbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_outbox` ( `id` bigint unsigned NOT NULL COMMENT '领域事件全局ID', `tenant_id` bigint unsigned NOT NULL COMMENT '事件所属客户ID和数据隔离键', `aggregate_type` varchar(32) NOT NULL DEFAULT 'INBOUND' COMMENT '聚合类型', `aggregate_id` bigint unsigned NOT NULL COMMENT '入库单ID', `event_type` varchar(64) NOT NULL COMMENT '事件类型', `event_key` varchar(160) DEFAULT NULL COMMENT '费用来源事件幂等键;历史事件允许为空', `event_version` int unsigned NOT NULL DEFAULT '1' COMMENT '事件信封版本', `aggregate_sequence` int unsigned DEFAULT NULL COMMENT '同一费用来源的单调版本序号', `payload_hash` varchar(71) DEFAULT NULL COMMENT '事件规范化负载SHA-256;标准跨区事件含sha256:前缀', `payload_json` longtext NOT NULL COMMENT '事件负载快照;文本类型保留跨区事件摘要所依赖的数值词法', `publish_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '事件发布状态:PENDING待发布、PUBLISHED已发布、FAILED发布失败', `retry_count` int NOT NULL DEFAULT '0' COMMENT '重试次数', `next_retry_at` datetime(3) DEFAULT NULL COMMENT '下次重试时间', `published_at` datetime(3) DEFAULT NULL COMMENT '发布时间', `locked_at` datetime(3) DEFAULT NULL COMMENT 'Relay抢占租约时间', `locked_by` varchar(64) DEFAULT NULL COMMENT 'Relay抢占实例ID', `last_error` varchar(500) DEFAULT NULL COMMENT '最近一次投递失败摘要,不记录令牌', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_outbox_event_key` (`event_key`), KEY `idx_inbound_outbox_publish` (`publish_status`,`next_retry_at`,`created_at`), KEY `idx_inbound_outbox_finance_relay` (`publish_status`,`next_retry_at`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库事务Outbox事件表'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_pallet_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_pallet_allocation` ( `id` bigint unsigned NOT NULL COMMENT '头程托盘分配引用ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `allocation_no` int unsigned NOT NULL COMMENT '入库单内分配序号', `block_id` bigint unsigned NOT NULL COMMENT 'Warehouse整票连续库位块ID', `slot_no` int unsigned NOT NULL COMMENT '连续块内稳定槽位序号', `weight_result_id` bigint unsigned DEFAULT NULL COMMENT '已绑定称重结果ID;预留空槽为空', `pallet_sequence` int unsigned DEFAULT NULL COMMENT '已绑定称重托盘在整票内的稳定顺序;空槽为空', `warehouse_id` bigint unsigned NOT NULL COMMENT '仓库服务仓库ID', `warehouse_resource_tenant_id` bigint unsigned NOT NULL COMMENT '平台公共仓储资源固定使用 0;tenant_id 仍是客户隔离键', `pallet_id` bigint unsigned NOT NULL COMMENT '仓库服务托盘ID', `pallet_code` varchar(50) NOT NULL COMMENT '托盘编码快照', `pallet_capacity_cbm` decimal(18,4) NOT NULL COMMENT '托盘可用容积快照', `allocated_volume_cbm` decimal(18,4) NOT NULL COMMENT '本托盘分配体积', `allocated_package_count` int unsigned DEFAULT NULL COMMENT '本托盘分配箱数', `picked_package_count` int unsigned NOT NULL DEFAULT '0' COMMENT '已拣货箱数', `location_id` bigint unsigned NOT NULL COMMENT '仓库服务库位ID', `location_code` varchar(50) NOT NULL COMMENT '库位编码快照', `shared_overflow` tinyint(1) NOT NULL DEFAULT '0' COMMENT '普通连续位不足时是否使用共享A0', `reservation_id` bigint unsigned DEFAULT NULL COMMENT '仓库预占资源唯一ID,A0共享场景用于区分托盘', `slot_status` varchar(24) NOT NULL DEFAULT 'RESERVED_EMPTY' COMMENT '槽位状态:RESERVED_EMPTY、BOUND、TRANSFERRED、RELEASED', `reservation_no` varchar(64) NOT NULL COMMENT '仓库库位预占单号', `allocation_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'RESERVED' COMMENT '托盘库位分配状态:RESERVED已预占、CONFIRMED已确认、TRANSFERRED已转移、RELEASED已释放', `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_pallet_allocation_no` (`tenant_id`,`inbound_id`,`allocation_no`), UNIQUE KEY `uk_pallet_allocation_slot` (`tenant_id`,`block_id`,`slot_no`), UNIQUE KEY `uk_pallet_allocation_weight` (`tenant_id`,`weight_result_id`), KEY `idx_allocation_location` (`tenant_id`,`warehouse_id`,`location_id`,`allocation_status`), KEY `fk_allocation_inbound` (`inbound_id`), KEY `idx_allocation_reservation` (`reservation_id`), CONSTRAINT `fk_allocation_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='头程侧托盘、库位和仓库预占结果引用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_pickup_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_pickup_snapshot` ( `id` bigint unsigned NOT NULL COMMENT '提货信息快照ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `pickup_method` varchar(24) DEFAULT NULL COMMENT '提货方式', `pickup_at` datetime(3) DEFAULT NULL COMMENT '提货时间', `contact_name` varchar(64) DEFAULT NULL COMMENT '提货联系人', `contact_phone` varchar(32) DEFAULT NULL COMMENT '提货联系人电话', `contact_email` varchar(128) DEFAULT NULL COMMENT '提货联系人邮箱', `country_code` char(2) DEFAULT NULL COMMENT '国家二字码', `province` varchar(64) DEFAULT NULL COMMENT '省或州', `city` varchar(64) DEFAULT NULL COMMENT '城市', `district` varchar(64) DEFAULT NULL COMMENT '区县', `address_line` varchar(512) DEFAULT NULL COMMENT '提货详细地址', `postal_code` varchar(20) DEFAULT NULL COMMENT '提货邮编', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_pickup_inbound` (`tenant_id`,`inbound_id`), KEY `fk_pickup_inbound` (`inbound_id`), CONSTRAINT `fk_pickup_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单提货信息不可变快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_split_batch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_split_batch` ( `id` bigint unsigned NOT NULL COMMENT '拆分批次ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `parent_inbound_id` bigint unsigned NOT NULL COMMENT '主入仓单ID', `source_inbound_id` bigint unsigned DEFAULT NULL COMMENT '本批次实际消耗的MASTER或REMAINDER分片ID', `operation_id` varchar(64) NOT NULL COMMENT '业务操作幂等号', `idempotency_key` varchar(128) NOT NULL COMMENT '请求幂等键', `expected_parent_version` int NOT NULL COMMENT '操作时主单乐观锁版本', `package_count` int unsigned NOT NULL COMMENT '本批次拆分箱数', `loaded_child_inbound_id` bigint unsigned DEFAULT NULL COMMENT '本批次实装子单ID', `remainder_child_inbound_id` bigint unsigned DEFAULT NULL COMMENT '本批次余量子单ID', `loaded_package_count` int unsigned NOT NULL DEFAULT '0' COMMENT '本批次实装箱数', `remaining_package_count` int unsigned NOT NULL DEFAULT '0' COMMENT '本批次未装箱数', `loading_plan_id` bigint unsigned DEFAULT NULL COMMENT '关联装柜计划/柜次', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '关联柜次标识(兼容查询)', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PREPARED' COMMENT '拆分批次状态:PREPARED已准备、APPLIED已生效、CANCELLED已取消', `remark` varchar(500) DEFAULT NULL COMMENT '拆分原因或备注', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '拆分批次创建时间', `applied_at` datetime(3) DEFAULT NULL COMMENT '批次生效时间', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号,每次更新递增', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_split_operation` (`tenant_id`,`operation_id`), UNIQUE KEY `uk_inbound_split_idempotency` (`tenant_id`,`parent_inbound_id`,`idempotency_key`), UNIQUE KEY `uk_inbound_split_source_once` (`tenant_id`,`source_inbound_id`), KEY `idx_inbound_split_parent` (`tenant_id`,`parent_inbound_id`,`created_at`,`id`), KEY `fk_inbound_split_parent` (`parent_inbound_id`), KEY `fk_inbound_split_loaded_child` (`loaded_child_inbound_id`), KEY `fk_inbound_split_source` (`source_inbound_id`), KEY `fk_inbound_split_remainder_child` (`remainder_child_inbound_id`), KEY `idx_inbound_split_loading_plan` (`tenant_id`,`loading_plan_id`,`container_booking_id`,`status`,`id`), CONSTRAINT `fk_inbound_split_loaded_child` FOREIGN KEY (`loaded_child_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_split_parent` FOREIGN KEY (`parent_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_split_remainder_child` FOREIGN KEY (`remainder_child_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_split_source` FOREIGN KEY (`source_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_inbound_split_package` CHECK ((`package_count` > 0)), CONSTRAINT `chk_inbound_split_status` CHECK ((`status` in (_utf8mb4'PREPARED',_utf8mb4'APPLIED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='主入仓单拆分批次;数量口径仅为箱数'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_split_detail`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_split_detail` ( `id` bigint unsigned NOT NULL COMMENT '部分锁定明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `parent_inbound_id` bigint unsigned NOT NULL COMMENT '主入库单ID', `child_inbound_id` bigint unsigned DEFAULT NULL COMMENT '完成拆单后生成的二级子入库单ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '原订单货物明细ID,不建立跨库外键', `source_package_count` int unsigned NOT NULL COMMENT '拆分前该明细总箱数快照', `locked_package_count` int unsigned NOT NULL COMMENT '本次装柜锁定箱数', `remaining_package_count` int unsigned GENERATED ALWAYS AS ((`source_package_count` - `locked_package_count`)) STORED COMMENT '锁定后剩余箱数,由来源箱数减锁定箱数生成', `status` varchar(16) NOT NULL DEFAULT 'LOCKED' COMMENT '分柜明细状态:LOCKED已锁定、COMPLETED已完成拆分', `operation_id` varchar(128) NOT NULL COMMENT '部分锁定操作幂等号', `created_by` bigint unsigned NOT NULL COMMENT '创建部分锁定明细的操作人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建操作人姓名快照', `completed_by` bigint unsigned DEFAULT NULL COMMENT '完成拆分的操作人ID', `completed_by_name` varchar(64) DEFAULT NULL COMMENT '完成操作人姓名快照', `completed_at` datetime(3) DEFAULT 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_inbound_split_parent_detail` (`tenant_id`,`parent_inbound_id`,`inbound_detail_id`), UNIQUE KEY `uk_inbound_split_operation` (`operation_id`), UNIQUE KEY `uk_inbound_split_child_detail` (`tenant_id`,`child_inbound_id`,`inbound_detail_id`), KEY `idx_inbound_split_status` (`tenant_id`,`parent_inbound_id`,`status`), KEY `fk_inbound_split_detail_parent` (`parent_inbound_id`), KEY `fk_inbound_split_detail_child` (`child_inbound_id`), CONSTRAINT `fk_inbound_split_detail_child` FOREIGN KEY (`child_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_split_detail_parent` FOREIGN KEY (`parent_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_inbound_split_completion` CHECK ((((`status` = _utf8mb4'LOCKED') and (`child_inbound_id` is null) and (`completed_at` is null)) or ((`status` = _utf8mb4'COMPLETED') and (`child_inbound_id` is not null) and (`completed_at` is not null)))), CONSTRAINT `chk_inbound_split_partial` CHECK (((`source_package_count` > 1) and (`locked_package_count` > 0) and (`locked_package_count` < `source_package_count`))), CONSTRAINT `chk_legacy_inbound_split_status` CHECK ((`status` in (_utf8mb4'LOCKED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='按箱数部分锁定及剩余箱数生成二级子入库单的不可变契约'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_split_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_split_history` ( `id` bigint unsigned NOT NULL COMMENT '拆分历史ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `split_batch_id` bigint unsigned NOT NULL COMMENT '拆分批次ID', `operation_id` varchar(64) NOT NULL COMMENT '历史操作幂等号', `action_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '拆分动作:CREATE创建批次、APPLY生效、CANCEL取消', `before_snapshot` json DEFAULT NULL COMMENT '操作前快照', `after_snapshot` json NOT NULL COMMENT '操作后快照', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `operation_reason` varchar(500) DEFAULT NULL COMMENT '操作原因', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '不可变拆分历史创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_split_history_operation` (`tenant_id`,`operation_id`), KEY `idx_inbound_split_history` (`tenant_id`,`split_batch_id`,`created_at`,`id`), KEY `fk_inbound_split_history_batch` (`split_batch_id`), CONSTRAINT `fk_inbound_split_history_batch` FOREIGN KEY (`split_batch_id`) REFERENCES `fl_inbound_split_batch` (`id`), CONSTRAINT `chk_inbound_split_action` CHECK ((`action_type` in (_utf8mb4'CREATE',_utf8mb4'APPLY',_utf8mb4'CANCEL'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='不可变主子入仓单拆分审计历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_split_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_split_item` ( `id` bigint unsigned NOT NULL COMMENT '拆分明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `split_batch_id` bigint unsigned NOT NULL COMMENT '拆分批次ID', `parent_inbound_id` bigint unsigned NOT NULL COMMENT '主入仓单ID', `child_inbound_id` bigint unsigned NOT NULL COMMENT '子入仓单ID', `line_no` int unsigned NOT NULL COMMENT '同一拆分批次内的行号', `source_inbound_detail_id` bigint unsigned DEFAULT NULL COMMENT '订单货物明细逻辑ID', `source_measurement_id` bigint unsigned NOT NULL COMMENT '来源测量批次ID', `source_measurement_item_id` bigint unsigned NOT NULL COMMENT '来源测量箱规明细ID', `package_count` int unsigned NOT NULL COMMENT '分配给子单的箱数', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '拆分数量台账创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_inbound_split_batch_line` (`tenant_id`,`split_batch_id`,`line_no`), UNIQUE KEY `uk_inbound_split_batch_source_child` (`tenant_id`,`split_batch_id`,`source_measurement_item_id`,`child_inbound_id`), KEY `idx_inbound_split_detail` (`tenant_id`,`source_inbound_detail_id`,`created_at`), KEY `fk_inbound_split_item_batch` (`split_batch_id`), KEY `fk_inbound_split_item_parent` (`parent_inbound_id`), KEY `fk_inbound_split_item_child` (`child_inbound_id`), KEY `fk_inbound_split_item_measurement` (`source_measurement_id`), KEY `fk_inbound_split_item_measure_item` (`source_measurement_item_id`), KEY `idx_inbound_split_candidate` (`tenant_id`,`parent_inbound_id`,`source_inbound_detail_id`), CONSTRAINT `fk_inbound_split_item_batch` FOREIGN KEY (`split_batch_id`) REFERENCES `fl_inbound_split_batch` (`id`), CONSTRAINT `fk_inbound_split_item_child` FOREIGN KEY (`child_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_inbound_split_item_measure_item` FOREIGN KEY (`source_measurement_item_id`) REFERENCES `fl_inbound_measurement_item` (`id`), CONSTRAINT `fk_inbound_split_item_measurement` FOREIGN KEY (`source_measurement_id`) REFERENCES `fl_inbound_measurement` (`id`), CONSTRAINT `fk_inbound_split_item_parent` FOREIGN KEY (`parent_inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_inbound_split_item_package` CHECK ((`package_count` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='主子入仓单拆分数量台账'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_status_history` ( `id` bigint unsigned NOT NULL COMMENT '入库状态历史ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `from_status` varchar(24) DEFAULT NULL COMMENT '变更前状态', `to_status` varchar(24) NOT NULL COMMENT '变更后状态', `action` varchar(32) NOT NULL COMMENT '触发动作', `reason` varchar(1000) DEFAULT NULL COMMENT '变更原因', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `occurred_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '发生时间', PRIMARY KEY (`id`), KEY `idx_inbound_history_time` (`tenant_id`,`inbound_id`,`occurred_at`), KEY `fk_history_inbound` (`inbound_id`), CONSTRAINT `fk_history_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单流程状态不可变历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_transport_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_transport_snapshot` ( `id` bigint unsigned NOT NULL COMMENT '运输信息快照ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `loading_status` varchar(24) DEFAULT NULL COMMENT '配载状态快照', `container_no` varchar(64) DEFAULT NULL COMMENT '集装箱号', `cabinet_no` varchar(64) DEFAULT NULL COMMENT '柜号或内部柜单号', `vessel_name` varchar(128) DEFAULT NULL COMMENT '船名', `voyage_no` varchar(64) DEFAULT NULL COMMENT '航次', `sailing_at` datetime(3) DEFAULT NULL COMMENT '开船时间', `port_arrival_at` datetime(3) DEFAULT NULL COMMENT '到港时间', `source_updated_at` datetime(3) DEFAULT 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 '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_transport_inbound` (`tenant_id`,`inbound_id`), KEY `idx_transport_container` (`tenant_id`,`container_no`), KEY `idx_transport_cabinet` (`tenant_id`,`cabinet_no`), KEY `idx_transport_loading` (`tenant_id`,`loading_status`,`sailing_at`), KEY `fk_transport_inbound` (`inbound_id`), CONSTRAINT `fk_transport_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单关联运输信息只读快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_weight_result`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_weight_result` ( `id` bigint unsigned NOT NULL COMMENT 'OCR重量结果ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `file_id` bigint unsigned NOT NULL COMMENT '称重图片文件ID', `pallet_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Warehouse托盘ID', `pallet_code` varchar(50) NOT NULL DEFAULT '' COMMENT '托盘编码快照', `pallet_type` varchar(32) NOT NULL DEFAULT '' COMMENT '托盘类型快照', `pallet_capacity_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000' COMMENT '托盘容量CBM快照', `pallet_tare_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '托盘皮重KG快照', `ocr_provider` varchar(64) DEFAULT NULL COMMENT 'OCR服务商编码', `ocr_raw_text` varchar(1000) DEFAULT NULL COMMENT 'OCR原始文本', `ocr_weight_value` decimal(18,3) DEFAULT NULL COMMENT 'OCR识别原始重量值', `ocr_weight_unit` varchar(8) DEFAULT NULL COMMENT 'OCR识别原始单位', `confidence` decimal(6,5) DEFAULT NULL COMMENT '识别置信度', `adjusted_weight_value` decimal(18,3) DEFAULT NULL COMMENT '人工修正后的原单位重量', `adjusted_weight_unit` varchar(8) DEFAULT NULL COMMENT '人工修正后的单位', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '确认时统一换算后的含托盘毛重kg', `net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '确认毛重扣除托盘皮重后的货物净重kg', `recognition_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '重量识别状态:PENDING待识别、PENDING_CONFIRM待确认、NEEDS_MANUAL需人工录入、CONFIRMED已确认', `adjustment_reason` varchar(500) DEFAULT NULL COMMENT '人工修正原因', `adjusted_by` bigint unsigned DEFAULT NULL COMMENT '修正人ID', `adjusted_at` datetime(3) DEFAULT NULL COMMENT '修正时间', `confirmed_by` bigint unsigned DEFAULT NULL COMMENT '确认人ID', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '确认时间', `created_by` bigint unsigned NOT NULL DEFAULT '0' COMMENT '创建人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint unsigned NOT NULL DEFAULT '0' 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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_weight_inbound_file` (`tenant_id`,`inbound_id`,`file_id`), KEY `idx_weight_inbound_status` (`tenant_id`,`inbound_id`,`recognition_status`), KEY `fk_weight_inbound` (`inbound_id`), KEY `idx_weight_inbound_pallet` (`tenant_id`,`inbound_id`,`pallet_id`), CONSTRAINT `fk_weight_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='称重图片OCR原值、人工修正值和确认重量'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_inbound_weight_revision`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_inbound_weight_revision` ( `id` bigint unsigned NOT NULL COMMENT 'OCR重量修订记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `weight_result_id` bigint unsigned NOT NULL COMMENT 'OCR重量结果ID', `revision_no` int unsigned NOT NULL COMMENT '结果版本号,与乐观锁版本一致', `action` varchar(24) NOT NULL COMMENT '动作:CORRECT或CONFIRM', `before_weight_value` decimal(18,3) DEFAULT NULL COMMENT '变更前原单位重量', `before_weight_unit` varchar(8) DEFAULT NULL COMMENT '变更前单位', `after_weight_value` decimal(18,3) DEFAULT NULL COMMENT '变更后原单位重量', `after_weight_unit` varchar(8) DEFAULT NULL COMMENT '变更后单位', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '确认时统一换算后的含托盘毛重kg', `net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '确认毛重扣除托盘皮重后的货物净重kg', `reason` varchar(500) DEFAULT NULL COMMENT '人工修正原因', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `operated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_weight_revision_no` (`tenant_id`,`weight_result_id`,`revision_no`), KEY `idx_weight_revision_time` (`tenant_id`,`inbound_id`,`operated_at`), KEY `fk_weight_revision_inbound` (`inbound_id`), KEY `fk_weight_revision_result` (`weight_result_id`), CONSTRAINT `fk_weight_revision_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_weight_revision_result` FOREIGN KEY (`weight_result_id`) REFERENCES `fl_inbound_weight_result` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='OCR重量人工修正和确认的不可变版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_cabinet_evidence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_cabinet_evidence` ( `id` bigint unsigned NOT NULL COMMENT '柜次证据记录ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '证据唯一归属柜次ID', `source_task_id` bigint unsigned NOT NULL COMMENT '上传来源PDA任务ID,仅用于审计', `evidence_type` varchar(32) NOT NULL COMMENT '四步照片或带锁码照类型', `file_id` bigint unsigned NOT NULL COMMENT 'File服务文件ID', `file_name` varchar(255) NOT NULL COMMENT '文件名称快照', `seal_no` varchar(64) DEFAULT NULL COMMENT '带锁码照对应锁码', `remark` varchar(1000) DEFAULT NULL COMMENT '证据备注', `status` varchar(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '证据状态:ACTIVE有效、VOID作废', `active_flag` tinyint unsigned DEFAULT '1' COMMENT '有效唯一标识;作废后置NULL', `operation_key` varchar(128) NOT NULL COMMENT '任务范围内幂等操作键', `request_hash` char(64) NOT NULL COMMENT '规范化请求SHA-256摘要', `void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因', `voided_by` bigint unsigned DEFAULT NULL COMMENT '作废操作人ID', `voided_by_name` varchar(128) DEFAULT NULL COMMENT '作废操作人名称快照', `voided_at` datetime(3) DEFAULT NULL COMMENT '作废时间', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本', `created_by` bigint unsigned NOT NULL COMMENT '创建操作人ID', `created_by_name` varchar(128) DEFAULT NULL COMMENT '创建操作人名称快照', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(128) DEFAULT 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 '最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_cabinet_evidence_operation` (`source_task_id`,`operation_key`), UNIQUE KEY `uk_cabinet_evidence_active` (`container_booking_id`,`evidence_type`,`active_flag`), KEY `idx_cabinet_evidence_container` (`container_booking_id`,`status`), KEY `idx_cabinet_evidence_seal` (`seal_no`,`active_flag`), CONSTRAINT `fk_cabinet_evidence_booking` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `fk_cabinet_evidence_task` FOREIGN KEY (`source_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_cabinet_evidence_status` CHECK ((`status` in (_utf8mb4'ACTIVE',_utf8mb4'VOID'))), CONSTRAINT `chk_cabinet_evidence_type` CHECK ((`evidence_type` in (_utf8mb4'PHOTO_STEP_1',_utf8mb4'PHOTO_STEP_2',_utf8mb4'PHOTO_STEP_3',_utf8mb4'PHOTO_STEP_4',_utf8mb4'SEAL'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次物理装柜证据;task仅记录来源审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_completion_checkpoint`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_completion_checkpoint` ( `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 '入库单处理检查点', `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`) REFERENCES `fl_loading_completion_command` (`id`), CONSTRAINT `chk_loading_completion_checkpoint` CHECK ((`checkpoint_stage` in (_utf8mb4'READY',_utf8mb4'SETTLED',_utf8mb4'INBOUND_COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA装柜完成按入库单恢复检查点'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_completion_command`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_completion_command` ( `id` bigint unsigned NOT NULL COMMENT '可靠装柜完成命令ID', `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', `expected_task_version` int unsigned NOT NULL COMMENT '受理时客户端任务版本', `remark` varchar(500) DEFAULT NULL COMMENT '完成备注', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `attempt_count` int unsigned NOT NULL DEFAULT '0' COMMENT 'worker认领次数', `next_retry_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '下次处理时间', `lease_owner` varchar(128) DEFAULT NULL COMMENT 'worker租约持有者', `lease_until` datetime(3) DEFAULT NULL COMMENT 'worker租约截止时间', `failure_stage` varchar(40) DEFAULT NULL COMMENT '脱敏失败阶段', `failure_code` varchar(32) DEFAULT NULL COMMENT '下游或业务错误码', `failure_request_id` varchar(64) DEFAULT NULL COMMENT '下游请求ID', `failure_trace_id` varchar(64) DEFAULT 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) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_completion_operation` (`operation_id`), KEY `idx_loading_completion_dispatch` (`command_status`,`next_retry_at`,`lease_until`), KEY `fk_loading_completion_task` (`pick_task_id`), CONSTRAINT `fk_loading_completion_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_completion_status` CHECK ((`command_status` in (_utf8mb4'PROCESSING',_utf8mb4'RETRYABLE',_utf8mb4'FAILED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA装柜完成可靠异步命令'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_evidence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_evidence` ( `id` bigint unsigned NOT NULL COMMENT '装柜证据记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '关联入库单逻辑ID', `evidence_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'PHOTO_STEP_1空仓/PHOTO_STEP_2半仓/PHOTO_STEP_3满仓/PHOTO_STEP_4锁仓/SEAL带锁码照', `file_id` bigint unsigned DEFAULT NULL COMMENT 'File 服务逻辑文件ID', `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '上传时文件名称快照', `seal_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '锁码文本;带锁码照必填,客户不可见', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证据补充说明', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号,每次更新递增', `created_by` bigint unsigned NOT NULL COMMENT '上传证据的操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '上传证据的操作人姓名快照', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 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 '证据记录最后更新时间', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '证据状态:ACTIVE有效、VOID已作废;错误照片保留记录不硬删除', `void_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '照片作废原因', `voided_by` bigint unsigned DEFAULT NULL COMMENT '执行作废的平台操作人ID', `voided_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行作废的平台操作人姓名快照', `voided_at` datetime(3) DEFAULT NULL COMMENT '照片作废时间', PRIMARY KEY (`id`), KEY `idx_loading_evidence_time` (`tenant_id`,`inbound_id`,`updated_at`), KEY `fk_loading_evidence_inbound` (`inbound_id`), KEY `idx_loading_evidence_type` (`tenant_id`,`inbound_id`,`evidence_type`,`status`), KEY `idx_loading_evidence_seal` (`tenant_id`,`seal_no`,`status`), CONSTRAINT `fk_loading_evidence_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单装柜空仓/半仓/满仓/锁仓/带锁码照证据'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_operation` ( `id` bigint unsigned NOT NULL COMMENT '装柜写操作记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '操作目标入库单逻辑ID', `operator_id` bigint unsigned NOT NULL COMMENT '执行写操作的平台用户ID', `operation` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '装柜或证据写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端幂等键,同一操作重试复用', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '幂等处理状态:PROCESSING处理中、SUCCESS成功、FAILED失败', `result_json` json DEFAULT NULL COMMENT '成功结果或失败信息JSON快照,用于幂等重放', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作声明创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '操作完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_operation` (`tenant_id`,`inbound_id`,`operator_id`,`operation`,`idempotency_key`), KEY `idx_loading_operation_time` (`tenant_id`,`inbound_id`,`created_at`), KEY `fk_loading_operation_inbound` (`inbound_id`), CONSTRAINT `fk_loading_operation_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='装柜与派送写操作幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pallet_label`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pallet_label` ( `id` bigint unsigned NOT NULL COMMENT '散货托盘标签ID(雪花ID)', `loading_plan_id` bigint unsigned NOT NULL COMMENT '装柜计划ID', `loading_plan_item_id` bigint unsigned NOT NULL COMMENT '标签归属装柜明细ID', `account_id` bigint unsigned NOT NULL COMMENT '客户ID快照', `inbound_id` bigint unsigned NOT NULL COMMENT '入仓单ID快照', `inbound_code` varchar(40) NOT NULL COMMENT '入仓码快照', `container_no` varchar(64) NOT NULL COMMENT '真实集装箱号快照', `destination_warehouse_code` varchar(64) NOT NULL COMMENT 'FBA仓编码快照', `destination_warehouse_name` varchar(128) DEFAULT NULL COMMENT 'FBA仓名称快照', `pallet_index` int unsigned NOT NULL COMMENT '当前柜当前FBA仓内从1开始的序号', `pallet_code` varchar(128) NOT NULL COMMENT '托盘码:集装箱号-FBA仓编码-三位序号', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '生成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pallet_code` (`pallet_code`), UNIQUE KEY `uk_loading_pallet_index` (`loading_plan_id`,`destination_warehouse_code`,`pallet_index`), KEY `idx_loading_pallet_item` (`loading_plan_item_id`,`pallet_index`), KEY `idx_loading_pallet_inbound` (`account_id`,`inbound_id`), CONSTRAINT `fk_loading_pallet_item` FOREIGN KEY (`loading_plan_item_id`) REFERENCES `fl_loading_plan_item` (`id`), CONSTRAINT `fk_loading_pallet_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `chk_loading_pallet_index` CHECK ((`pallet_index` between 1 and 999)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='散货按柜号和FBA仓冻结的可打印托盘码'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_assignment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_assignment` ( `pick_task_id` bigint unsigned NOT NULL COMMENT '柜次PDA拣货任务ID;同一任务仅保留一名作业员', `assignee_id` bigint unsigned NOT NULL COMMENT '当前唯一作业员ID', `assignee_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '当前作业员姓名快照', `assigned_by` bigint unsigned NOT NULL COMMENT '领取任务的作业员或执行分配的平台用户ID', `assigned_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '领取或分配操作人姓名快照', `assignment_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分配方式:CLAIMED作业员领取、ASSIGNED平台指派', `version` int unsigned NOT NULL DEFAULT '0' 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 (`pick_task_id`), KEY `idx_loading_pick_assignee` (`assignee_id`,`updated_at`), CONSTRAINT `fk_loading_pick_assignment_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_pick_assignment_type` CHECK ((`assignment_type` in (_utf8mb4'CLAIMED',_utf8mb4'ASSIGNED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次PDA任务领取与作业员分配'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_history` ( `id` bigint unsigned NOT NULL COMMENT 'PDA拣货操作历史ID', `pick_task_id` bigint unsigned NOT NULL COMMENT 'PDA拣货任务ID', `pick_item_id` bigint unsigned NOT NULL COMMENT 'PDA拣货明细ID', `operation_id` varchar(128) NOT NULL COMMENT '客户端幂等操作号', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '完整批量请求内容SHA-256摘要', `action_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PICK' COMMENT '拣货动作:PICK正常拣货、PARTIAL部分拣货、SKIP跳拣', `picked_package_count` int unsigned NOT NULL COMMENT '本次拣货箱数', `operation_reason` varchar(500) DEFAULT NULL COMMENT '部分拣货或跳拣原因', `operator_id` bigint unsigned NOT NULL COMMENT '执行PDA拣货操作的作业员ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '作业员姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '不可变拣货操作历史创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pick_history_operation` (`operation_id`), KEY `idx_loading_pick_history_item` (`pick_item_id`,`created_at`), KEY `fk_loading_pick_history_task` (`pick_task_id`), CONSTRAINT `fk_loading_pick_history_item` FOREIGN KEY (`pick_item_id`) REFERENCES `fl_loading_pick_item` (`id`), CONSTRAINT `fk_loading_pick_history_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA拣货幂等和操作审计历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_item` ( `id` bigint unsigned NOT NULL COMMENT 'PDA拣货明细ID', `pick_task_id` bigint unsigned NOT NULL COMMENT 'PDA拣货任务ID', `loading_plan_item_id` bigint unsigned NOT NULL COMMENT '装柜计划明细ID', `inbound_id` bigint unsigned NOT NULL COMMENT '父入库单ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '订单货物明细ID', `planned_package_count` int unsigned NOT NULL COMMENT '计划拣货箱数;上层拆分按业务规则向上取整', `picked_package_count` int unsigned NOT NULL DEFAULT '0' COMMENT '已拣货箱数', `item_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '拣货明细状态:PENDING待拣、PICKING拣货中、PICKED已拣完、PARTIAL部分拣货、SKIPPED跳拣', `release_mode` varchar(10) DEFAULT NULL COMMENT 'AUTO按比例释放,MANUAL按人工选择释放', `release_location_ids` json DEFAULT NULL COMMENT '人工选择释放库位ID;空数组表示明确释放0个', `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'PDA拣货明细创建时间', `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT 'PDA拣货明细最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pick_item_plan_item` (`loading_plan_item_id`), KEY `idx_loading_pick_item_task` (`pick_task_id`,`item_status`,`id`), CONSTRAINT `fk_loading_pick_item_plan_item` FOREIGN KEY (`loading_plan_item_id`) REFERENCES `fl_loading_plan_item` (`id`), CONSTRAINT `fk_loading_pick_item_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_pick_item_count` CHECK ((`picked_package_count` <= `planned_package_count`)), CONSTRAINT `chk_loading_pick_item_planned` CHECK ((`planned_package_count` > 0)), CONSTRAINT `chk_loading_pick_item_status` CHECK ((`item_status` in (_utf8mb4'PENDING',_utf8mb4'PICKING',_utf8mb4'PICKED',_utf8mb4'PARTIAL',_utf8mb4'SKIPPED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA装柜拣货明细'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_item_assignment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_item_assignment` ( `pick_item_id` bigint unsigned NOT NULL COMMENT 'PDA拣货明细ID,同时作为本表主键', `assignee_id` bigint unsigned NOT NULL COMMENT '当前领取或被分配的作业员ID', `assignee_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '当前作业员姓名快照', `assigned_by` bigint unsigned NOT NULL COMMENT '执行领取或分配操作的用户ID', `assigned_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行领取或分配操作的用户姓名快照', `assignment_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分配类型:CLAIMED作业员领取、ASSIGNED管理员分配', `version` int unsigned NOT NULL DEFAULT '0' 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 (`pick_item_id`), KEY `idx_loading_pick_item_assignee` (`assignee_id`,`updated_at`), CONSTRAINT `fk_loading_pick_item_assignment_item` FOREIGN KEY (`pick_item_id`) REFERENCES `fl_loading_pick_item` (`id`), CONSTRAINT `chk_loading_pick_item_assignment_type` CHECK ((`assignment_type` in (_utf8mb4'CLAIMED',_utf8mb4'ASSIGNED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA拣货明细领取与作业员分配'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_operation` ( `id` bigint unsigned NOT NULL COMMENT 'PDA任务操作审计记录ID', `pick_task_id` bigint unsigned NOT NULL COMMENT '关联柜次PDA拣货任务ID', `operation_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '全局唯一操作ID,用于幂等重放', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '完整批量请求或任务操作内容SHA-256摘要', `action_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '动作类型:CLAIM领取、ASSIGN分配、REVIEW复核、BATCH批量提交', `operator_id` bigint unsigned NOT NULL COMMENT '执行PDA任务操作的用户ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '不可变操作审计创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pick_operation_id` (`operation_id`), KEY `idx_loading_pick_operation_task` (`pick_task_id`,`created_at`), CONSTRAINT `fk_loading_pick_operation_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_pick_operation_action` CHECK ((`action_type` in (_gbk'CLAIM',_gbk'ASSIGN',_gbk'ITEM_CLAIM',_gbk'ITEM_ASSIGN',_gbk'REVIEW',_gbk'BATCH',_gbk'COMPLETE_LOADING'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次PDA任务级幂等审计'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_review`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_review` ( `pick_task_id` bigint unsigned NOT NULL COMMENT '已完成的柜次PDA拣货任务ID', `review_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'APPROVED' COMMENT '复核状态:APPROVED已通过;记录创建后不可修改或删除', `reviewed_by` bigint unsigned NOT NULL COMMENT '执行完成复核的平台用户ID', `reviewed_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '复核人姓名快照', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'PDA任务复核备注', `version` int unsigned NOT NULL DEFAULT '0' 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 (`pick_task_id`), KEY `idx_loading_pick_reviewer` (`reviewed_by`,`created_at`), CONSTRAINT `fk_loading_pick_review_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_pick_review_status` CHECK ((`review_status` = _utf8mb4'APPROVED')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='柜次PDA任务完成复核'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_pick_task`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_pick_task` ( `id` bigint unsigned NOT NULL COMMENT 'PDA拣货任务ID', `loading_plan_id` bigint unsigned NOT NULL COMMENT '装柜计划ID', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '稳定柜次ID', `cabinet_no` varchar(64) DEFAULT NULL COMMENT '稳定内部柜次号快照', `container_no` varchar(64) DEFAULT NULL COMMENT '真实集装箱号;生成PDA任务前允许为空', `task_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'LOADING' COMMENT 'PDA任务状态:LOADING拣货装柜中、COMPLETED已完成', `started_by` bigint unsigned NOT NULL COMMENT '开始装柜人', `started_by_name` varchar(64) DEFAULT NULL COMMENT '开始装柜人名称', `started_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '开始时间', `completed_by` bigint unsigned DEFAULT NULL COMMENT '完成装柜人', `completed_by_name` varchar(64) DEFAULT NULL COMMENT '完成装柜人名称', `completed_at` datetime(3) DEFAULT NULL COMMENT '完成时间', `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_pick_task_plan` (`loading_plan_id`), UNIQUE KEY `uk_loading_pick_task_booking` (`container_booking_id`), KEY `idx_loading_pick_container` (`container_no`,`task_status`,`started_at`), CONSTRAINT `fk_loading_pick_task_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `chk_loading_pick_task_status` CHECK ((`task_status` in (_utf8mb4'LOADING',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PDA装柜拣货任务'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `trg_loading_pick_task_before_update` BEFORE UPDATE ON `fl_loading_pick_task` FOR EACH ROW BEGIN IF OLD.task_status = 'COMPLETED' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '已完成PDA拣货任务不可修改'; END IF; IF NEW.loading_plan_id <> OLD.loading_plan_id OR NOT (NEW.container_booking_id <=> OLD.container_booking_id) OR NOT (NEW.cabinet_no <=> OLD.cabinet_no) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'PDA拣货任务稳定归属不可修改'; END IF; IF NOT (OLD.task_status = 'LOADING' AND NEW.task_status IN ('LOADING', 'COMPLETED')) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'PDA拣货任务状态只允许完成'; END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; DROP TABLE IF EXISTS `fl_loading_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_plan` ( `id` bigint unsigned NOT NULL COMMENT '智能装柜计划ID(雪花ID)', `plan_no` varchar(40) NOT NULL COMMENT '平台唯一装柜计划号', `container_booking_id` bigint unsigned NOT NULL COMMENT '货柜预订ID', `plan_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'EDITING' COMMENT '装柜计划状态:EDITING编辑中、LOADING装柜中、COMPLETED装柜完成;建议须经人工确认', `push_idempotency_key` varchar(128) DEFAULT NULL COMMENT '推送预装幂等键', `preload_pushed_by` bigint unsigned DEFAULT NULL COMMENT '推送预装操作人ID', `preload_pushed_by_name` varchar(64) DEFAULT NULL COMMENT '推送预装操作人名称快照', `preload_pushed_at` datetime(3) DEFAULT NULL COMMENT '开始装柜并进入LOADING的时间', `preload_completed_by` bigint unsigned DEFAULT NULL COMMENT '预装完成操作人ID', `preload_completed_by_name` varchar(64) DEFAULT NULL COMMENT '预装完成操作人名称快照', `preload_completed_at` datetime(3) DEFAULT NULL COMMENT '预装完成时间', `confirmed_by` bigint unsigned DEFAULT NULL COMMENT '确认操作人ID', `confirmed_by_name` varchar(64) DEFAULT NULL COMMENT '确认操作人名称快照', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '确认时间', `remark` varchar(500) DEFAULT NULL COMMENT '平台装柜计划备注', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改人ID', `updated_by_name` varchar(64) DEFAULT NULL 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_loading_plan_no` (`plan_no`), UNIQUE KEY `uk_loading_plan_booking` (`container_booking_id`), UNIQUE KEY `uk_loading_plan_push_key` (`push_idempotency_key`), KEY `idx_loading_plan_status` (`plan_status`,`updated_at`,`id`), CONSTRAINT `fk_loading_plan_booking` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `chk_loading_plan_status` CHECK ((`plan_status` in (_utf8mb4'EDITING',_utf8mb4'LOADING',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台智能装柜计划与唯一预装状态源'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `trg_loading_plan_after_update` AFTER UPDATE ON `fl_loading_plan` FOR EACH ROW BEGIN IF OLD.plan_status = 'LOADING' AND NEW.plan_status = 'COMPLETED' THEN UPDATE fl_loading_plan_item SET frozen_at = COALESCE(frozen_at, NEW.confirmed_at, CURRENT_TIMESTAMP(3)), frozen_by = COALESCE(frozen_by, NEW.updated_by), updated_by = NEW.updated_by, updated_by_name = NEW.updated_by_name, version = version + 1 WHERE loading_plan_id = NEW.id AND deleted = 0; UPDATE fl_loading_pick_task SET task_status = 'COMPLETED', completed_by = NEW.updated_by, completed_by_name = NEW.updated_by_name, completed_at = CURRENT_TIMESTAMP(3), version = version + 1 WHERE loading_plan_id = NEW.id AND task_status = 'LOADING'; END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; DROP TABLE IF EXISTS `fl_loading_plan_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_plan_history` ( `id` bigint unsigned NOT NULL COMMENT '装柜操作历史ID(雪花ID)', `loading_plan_id` bigint unsigned NOT NULL COMMENT '智能装柜计划ID', `loading_plan_item_id` bigint unsigned DEFAULT NULL COMMENT '装柜计划明细ID', `operation_id` varchar(128) NOT NULL COMMENT '操作幂等ID', `action_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '动作类型:CREATE_PLAN创建计划、ADD_ITEM新增明细、ADJUST_ITEM调整明细、REMOVE_ITEM移除明细、START_LOADING开始装柜、COMPLETE_LOADING完成装柜、PICK_ITEM拣货', `from_status` varchar(24) DEFAULT NULL COMMENT '变更前状态', `to_status` varchar(24) DEFAULT NULL COMMENT '变更后状态', `before_snapshot` json DEFAULT NULL COMMENT '变更前快照', `after_snapshot` json DEFAULT NULL COMMENT '变更后快照', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `operation_reason` varchar(500) DEFAULT NULL COMMENT '操作原因', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_history_operation` (`operation_id`), KEY `idx_loading_history_plan` (`loading_plan_id`,`created_at`,`id`), KEY `idx_loading_history_item` (`loading_plan_item_id`,`created_at`,`id`), CONSTRAINT `fk_loading_history_item` FOREIGN KEY (`loading_plan_item_id`) REFERENCES `fl_loading_plan_item` (`id`), CONSTRAINT `fk_loading_history_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='智能装柜追加式不可变操作历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_plan_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_plan_item` ( `id` bigint unsigned NOT NULL COMMENT '装柜计划明细ID(雪花ID)', `loading_plan_id` bigint unsigned NOT NULL COMMENT '智能装柜计划ID', `account_id` bigint unsigned NOT NULL COMMENT '客户账号ID;装柜业务唯一客户归属字段', `customer_name` varchar(128) NOT NULL COMMENT '客户名称快照', `inbound_id` bigint unsigned NOT NULL COMMENT 'Firstleg入库单ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '订单货物或入库货物明细ID,不建立跨库外键', `order_id` bigint unsigned NOT NULL COMMENT '订单服务订单ID快照,不建立跨库外键', `order_no` varchar(32) NOT NULL COMMENT '订单号快照', `inbound_code` varchar(40) NOT NULL COMMENT '入仓码快照', `destination_warehouse_id` bigint unsigned DEFAULT NULL COMMENT '目的仓ID快照', `destination_warehouse_code` varchar(64) DEFAULT NULL COMMENT '目的仓编码快照', `destination_warehouse_name` varchar(128) DEFAULT NULL COMMENT '目的仓名称快照', `sku_code` varchar(128) DEFAULT NULL COMMENT 'SKU编码快照', `product_name_zh` varchar(255) DEFAULT NULL COMMENT '中文品名快照', `product_name_en` varchar(255) DEFAULT NULL COMMENT '英文品名快照', `product_image_file_id` bigint unsigned DEFAULT NULL COMMENT '产品图片File对象ID', `product_image_url` varchar(1000) DEFAULT NULL COMMENT '产品图片访问地址快照', `package_count` int unsigned NOT NULL COMMENT '本次装柜箱数', `product_quantity` int unsigned DEFAULT NULL COMMENT '产品总数量', `units_per_carton` int unsigned DEFAULT NULL COMMENT '每箱产品数', `pallet_count` int unsigned DEFAULT NULL COMMENT '托盘数', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '本次装柜毛重kg', `net_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '本次装柜净重kg', `dimensional_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '本次装柜材积重kg', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '本次装柜体积m3', `fba_tracking_no` varchar(128) DEFAULT NULL COMMENT 'FBA追踪号快照', `shipment_no` varchar(128) DEFAULT NULL COMMENT '货件编号快照', `shipping_mark` varchar(500) DEFAULT NULL COMMENT '唛头快照', `load_sequence` int unsigned NOT NULL DEFAULT '0' COMMENT '装柜顺序', `position_snapshot` json DEFAULT NULL COMMENT '智能装柜位置与摆放结果快照', `internal_remark` varchar(1000) DEFAULT NULL COMMENT '平台内部备注', `customer_remark` varchar(1000) DEFAULT NULL COMMENT '客户备注快照', `warehouse_remark` varchar(1000) DEFAULT NULL COMMENT '仓库备注快照', `frozen_at` datetime(3) DEFAULT NULL COMMENT '装柜完成后的永久冻结时间', `frozen_by` bigint unsigned DEFAULT NULL COMMENT '冻结操作人ID', `removed_by` bigint unsigned DEFAULT NULL COMMENT '推送前逻辑删除操作人ID', `removed_by_name` varchar(64) DEFAULT NULL COMMENT '推送前逻辑删除操作人名称快照', `removed_at` datetime(3) DEFAULT NULL COMMENT '推送前逻辑删除时间', `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '推送前逻辑删除标记;冻结后不可修改', `active_inbound_detail_id` bigint unsigned GENERATED ALWAYS AS ((case when (`deleted` = 0) then `inbound_detail_id` else NULL end)) STORED COMMENT '未删除明细唯一锁;删除后返回NULL释放分配资格', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改人ID', `updated_by_name` varchar(64) DEFAULT NULL 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 '乐观锁版本号', `unit_type` varchar(24) NOT NULL DEFAULT 'PACKAGE' COMMENT '分配单元:PACKAGE普通箱、SEALED_PALLET一件代发封托', `pallet_id` bigint unsigned DEFAULT NULL COMMENT '一件代发封托ID;普通箱为空', `pallet_no` varchar(32) DEFAULT NULL COMMENT '一件代发系统托盘码快照', `indivisible` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否为不可拆整托单元', `customer_service_remark` varchar(1000) DEFAULT NULL COMMENT '客服备注快照', `active_assignment_key` varchar(96) GENERATED ALWAYS AS ((case when (`deleted` = 0) then concat((case when (`pallet_id` is null) then _utf8mb4'D:0' else concat(_utf8mb4'P:',`pallet_id`) end),_utf8mb4':',`inbound_detail_id`) else NULL end)) STORED COMMENT '普通明细或已封托托盘明细的有效唯一锁', PRIMARY KEY (`id`), UNIQUE KEY `uk_loading_item_plan_detail` (`loading_plan_id`,`active_inbound_detail_id`), UNIQUE KEY `uk_loading_item_plan_assignment` (`loading_plan_id`,`active_assignment_key`), KEY `idx_loading_item_active_detail` (`account_id`,`active_inbound_detail_id`), KEY `idx_loading_item_plan` (`loading_plan_id`,`deleted`,`load_sequence`,`id`), KEY `idx_loading_item_account` (`account_id`,`created_at`,`id`), KEY `idx_loading_item_inbound` (`account_id`,`inbound_id`,`deleted`), KEY `idx_loading_item_order` (`account_id`,`order_id`,`deleted`), KEY `idx_loading_item_candidate` (`account_id`,`inbound_id`,`inbound_detail_id`,`deleted`), KEY `idx_loading_item_pallet` (`pallet_id`,`deleted`), CONSTRAINT `fk_loading_item_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `chk_loading_item_account` CHECK ((`account_id` > 0)), CONSTRAINT `chk_loading_item_deleted` CHECK ((`deleted` in (0,1))), CONSTRAINT `chk_loading_item_package` CHECK ((`package_count` > 0)), CONSTRAINT `chk_loading_item_pallet` CHECK (((`pallet_count` is null) or (`pallet_count` >= 0))), CONSTRAINT `chk_loading_item_product_quantity` CHECK (((`product_quantity` is null) or (`product_quantity` > 0))), CONSTRAINT `chk_loading_item_units` CHECK (((`units_per_carton` is null) or (`units_per_carton` > 0))), CONSTRAINT `chk_loading_item_volume` CHECK (((`volume_cbm` is null) or (`volume_cbm` >= 0))), CONSTRAINT `chk_loading_item_weight` CHECK ((((`gross_weight_kg` is null) or (`gross_weight_kg` >= 0)) and ((`net_weight_kg` is null) or (`net_weight_kg` >= 0)) and ((`dimensional_weight_kg` is null) or (`dimensional_weight_kg` >= 0)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='智能装柜客户货物明细;客户归属仅在明细层'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_work_pallet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_work_pallet` ( `id` bigint unsigned NOT NULL COMMENT '一件代发现场作业托盘ID', `pick_task_id` bigint unsigned NOT NULL COMMENT 'PDA装柜拣货任务ID', `loading_plan_id` bigint unsigned NOT NULL COMMENT '装柜计划ID快照', `warehouse_id` bigint unsigned NOT NULL COMMENT '作业仓库ID', `warehouse_pallet_id` bigint unsigned DEFAULT NULL COMMENT '仓库实物托盘ID;未绑定仓库资源时为空', `pallet_code` varchar(64) NOT NULL COMMENT '现场托盘号', `open_operation_id` varchar(128) NOT NULL COMMENT '开托幂等操作号', `seal_operation_id` varchar(128) DEFAULT NULL COMMENT '封托幂等操作号', `pallet_status` varchar(16) NOT NULL DEFAULT 'OPEN' COMMENT '托盘状态:OPEN打托中、SEALED已封托、CANCELLED已取消', `created_by` bigint unsigned NOT NULL COMMENT '创建操作人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建操作人名称快照', `sealed_by` bigint unsigned DEFAULT NULL COMMENT '封托操作人ID', `sealed_by_name` varchar(64) DEFAULT NULL COMMENT '封托操作人名称快照', `sealed_at` datetime(3) DEFAULT NULL COMMENT '封托时间', `version` int unsigned NOT NULL DEFAULT '0' 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_loading_work_pallet_code` (`pick_task_id`,`pallet_code`), UNIQUE KEY `uk_loading_work_pallet_open_operation` (`open_operation_id`), UNIQUE KEY `uk_loading_work_pallet_seal_operation` (`seal_operation_id`), KEY `idx_loading_work_pallet_plan` (`loading_plan_id`,`pallet_status`,`id`), CONSTRAINT `fk_loading_work_pallet_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `fk_loading_work_pallet_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_work_pallet_status` CHECK ((`pallet_status` in (_utf8mb4'OPEN',_utf8mb4'SEALED',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发PDA现场实际托盘;允许同托盘承载多个客户订单'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_loading_work_pallet_carton`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_loading_work_pallet_carton` ( `id` bigint unsigned NOT NULL COMMENT '一件代发现场托盘箱唛绑定ID', `pick_task_id` bigint unsigned NOT NULL COMMENT 'PDA装柜拣货任务ID', `work_pallet_id` bigint unsigned NOT NULL COMMENT '现场作业托盘ID', `loading_plan_item_id` bigint unsigned NOT NULL COMMENT '装柜计划货物明细ID', `pick_item_id` bigint unsigned NOT NULL COMMENT 'PDA拣货明细ID', `tenant_id` bigint unsigned NOT NULL COMMENT '箱唛所属客户ID', `inbound_id` bigint unsigned NOT NULL COMMENT '来源入仓单ID', `inbound_detail_id` bigint unsigned NOT NULL COMMENT '来源入仓货物明细ID', `carton_label_id` bigint unsigned NOT NULL COMMENT '稳定箱唛记录ID', `box_code` varchar(80) NOT NULL COMMENT '稳定箱唛箱码快照', `sku_code` varchar(128) NOT NULL COMMENT 'SKU编码快照', `units_per_carton` int unsigned DEFAULT NULL COMMENT '每箱产品数量快照', `bound_by` bigint unsigned NOT NULL COMMENT '最后绑定操作人ID', `bound_by_name` varchar(64) DEFAULT NULL COMMENT '最后绑定操作人名称快照', `operation_id` varchar(128) NOT NULL COMMENT '最近一次绑定或移托幂等操作号', `version` int unsigned NOT NULL DEFAULT '0' 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_loading_work_carton_task_label` (`pick_task_id`,`carton_label_id`), UNIQUE KEY `uk_loading_work_carton_operation` (`operation_id`), KEY `idx_loading_work_carton_pallet` (`work_pallet_id`,`sku_code`,`id`), KEY `idx_loading_work_carton_plan_item` (`loading_plan_item_id`,`id`), KEY `fk_loading_work_carton_pick_item` (`pick_item_id`), KEY `fk_loading_work_carton_label` (`carton_label_id`), CONSTRAINT `fk_loading_work_carton_label` FOREIGN KEY (`carton_label_id`) REFERENCES `fl_inbound_carton_label` (`id`), CONSTRAINT `fk_loading_work_carton_pallet` FOREIGN KEY (`work_pallet_id`) REFERENCES `fl_loading_work_pallet` (`id`), CONSTRAINT `fk_loading_work_carton_pick_item` FOREIGN KEY (`pick_item_id`) REFERENCES `fl_loading_pick_item` (`id`), CONSTRAINT `fk_loading_work_carton_plan_item` FOREIGN KEY (`loading_plan_item_id`) REFERENCES `fl_loading_plan_item` (`id`), CONSTRAINT `fk_loading_work_carton_task` FOREIGN KEY (`pick_task_id`) REFERENCES `fl_loading_pick_task` (`id`), CONSTRAINT `chk_loading_work_carton_units` CHECK (((`units_per_carton` is null) or (`units_per_carton` > 0))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='一件代发PDA逐箱上托事实;客户订单不合并但实际托盘可混托'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_measure_review_record`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_measure_review_record` ( `id` bigint unsigned NOT NULL COMMENT '测量审核记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `measurement_id` bigint unsigned DEFAULT NULL COMMENT '被审核的测量批次ID', `review_result` varchar(24) NOT NULL COMMENT '审核结果', `review_reason` varchar(1000) DEFAULT NULL COMMENT '审核或驳回原因', `exception_release` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否异常放行', `release_reason` varchar(1000) DEFAULT NULL COMMENT '异常放行原因', `allow_rejected_config` tinyint(1) NOT NULL DEFAULT '0' COMMENT '操作时Nacos异常放行开关值', `reviewer_id` bigint unsigned NOT NULL COMMENT '审核人ID', `reviewer_name` varchar(64) DEFAULT NULL COMMENT '审核人名称快照', `reviewed_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '审核时间', PRIMARY KEY (`id`), KEY `idx_review_inbound_time` (`tenant_id`,`inbound_id`,`reviewed_at`), KEY `idx_review_exception_release` (`tenant_id`,`inbound_id`,`exception_release`,`reviewed_at`), KEY `fk_review_inbound` (`inbound_id`), KEY `fk_review_measurement` (`measurement_id`), CONSTRAINT `fk_review_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_review_measurement` FOREIGN KEY (`measurement_id`) REFERENCES `fl_inbound_measurement` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='测量审核、驳回和异常放行不可变记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_mojia_measurement_receipt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_mojia_measurement_receipt` ( `id` bigint unsigned NOT NULL COMMENT '墨家联调收件记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `subject_id` bigint unsigned NOT NULL COMMENT '设备应用操作主体ID', `box_code` varchar(128) NOT NULL COMMENT '设备扫描的原始箱码或不带#的SKU', `inbound_code` varchar(64) DEFAULT NULL COMMENT '箱码命中后的权威入仓码;SKU记录为空', `measurement_kind` varchar(16) NOT NULL DEFAULT 'BOX_LABEL' COMMENT '测量分流:BOX_LABEL箱唛;SKU一件代发SKU', `scanned_shipment_id` varchar(64) DEFAULT NULL COMMENT '设备从Amazon FBA箱标实扫的Shipment ID', `length_cm` decimal(12,3) NOT NULL COMMENT '设备实测长度cm', `width_cm` decimal(12,3) NOT NULL COMMENT '设备实测宽度cm', `height_cm` decimal(12,3) NOT NULL COMMENT '设备实测高度cm', `weight_kg` decimal(18,3) NOT NULL COMMENT '设备实测重量kg', `machine_no` varchar(64) NOT NULL COMMENT '设备编号', `measured_at` datetime(3) NOT NULL COMMENT '设备测量时间或服务接收时间', `image_file_id` bigint unsigned NOT NULL COMMENT 'File服务中的墨家联调图片ID', `status` varchar(24) NOT NULL DEFAULT 'UNMATCHED' COMMENT '原始收件状态;SKU记录使用SKU_PENDING_SYNC', `sync_status` varchar(24) DEFAULT NULL COMMENT 'SKU同步状态:PENDING/SYNCING/SUCCESS/FAILED', `sync_failure_code` varchar(64) DEFAULT NULL COMMENT 'SKU同步失败业务码', `sync_failure_reason` varchar(500) DEFAULT NULL COMMENT '脱敏后的SKU同步失败原因', `lingxing_sku_id` varchar(128) DEFAULT NULL COMMENT '领星SKU内部标识', `revision` int NOT NULL DEFAULT '1' COMMENT '当前测量版本号', `match_failure_code` varchar(16) DEFAULT NULL COMMENT '正式箱唛业务匹配失败码', `match_failure_reason` varchar(500) DEFAULT NULL COMMENT '脱敏后的箱唛匹配失败原因', `request_id` varchar(128) DEFAULT NULL COMMENT '请求链路ID', `trace_id` varchar(128) DEFAULT NULL COMMENT '调用链ID', `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_mojia_receipt_status_time` (`tenant_id`,`status`,`created_at`), KEY `idx_mojia_receipt_box_time` (`tenant_id`,`box_code`,`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='墨家模拟或未匹配入库单的原始测量收件箱'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking` ( `id` bigint unsigned NOT NULL COMMENT '海运订舱ID', `booking_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '平台海运订舱编号', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DRAFT' COMMENT '订舱状态:DRAFT草稿、SUBMITTED已提交、CONFIRMED已确认、RELEASED已放舱、FAILED失败、CHANGE_PENDING船期待变更、CANCELLED已取消', `customer_id` bigint unsigned DEFAULT NULL COMMENT '可选客户ID快照', `customer_name` varchar(128) DEFAULT NULL COMMENT '可选客户名称快照', `channel_code` varchar(64) DEFAULT NULL, `channel_name` varchar(128) DEFAULT NULL, `warehouse_id` bigint unsigned DEFAULT NULL, `warehouse_name` varchar(128) DEFAULT NULL, `bill_of_lading_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '提单号', `shipping_company_id` bigint unsigned DEFAULT NULL COMMENT '船公司逻辑ID快照', `shipping_company_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '船公司名称快照', `carrier_code` varchar(16) DEFAULT NULL COMMENT '船司标准编码:MATSON/SML/ZIM/COSCO/EMC/HEDE/OTHER;发布前必填', `booking_agent_id` bigint unsigned DEFAULT NULL COMMENT '订舱代理逻辑ID快照', `booking_agent_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '订舱代理名称快照', `vessel_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前确认船名快照', `voyage_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前确认航次号快照', `departure_port_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '起运港编码快照', `departure_port_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '起运港名称快照', `destination_port_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '目的港编码快照', `destination_port_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '目的港名称快照', `place_of_delivery` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最终交货地快照', `service_term` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '运输服务条款快照', `freight_term` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '海运费支付条款快照', `estimated_sailing_at` datetime(3) DEFAULT NULL COMMENT '当前确认预计开船时间', `estimated_arrival_at` datetime(3) DEFAULT NULL COMMENT '当前确认预计到港时间', `pending_vessel_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '待确认变更船名', `pending_voyage_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '待确认变更航次号', `pending_estimated_sailing_at` datetime(3) DEFAULT NULL COMMENT '待确认变更预计开船时间', `pending_estimated_arrival_at` datetime(3) DEFAULT NULL COMMENT '待确认变更预计到港时间', `change_reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '船期变更原因', `cancellation_reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '取消订舱原因', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平台内部备注', `created_by` bigint unsigned NOT NULL COMMENT '创建操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '订舱记录创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL 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_ocean_booking_no` (`booking_no`), UNIQUE KEY `uk_ocean_booking_bill_of_lading` (`bill_of_lading_no`), KEY `idx_ocean_booking_customer` (`customer_id`,`status`,`updated_at`,`id`), KEY `idx_ocean_booking_voyage` (`vessel_name`,`voyage_no`,`updated_at`), CONSTRAINT `chk_ocean_booking_carrier_code` CHECK (((`carrier_code` is null) or (`carrier_code` in (_utf8mb4'MATSON',_utf8mb4'SML',_utf8mb4'ZIM',_utf8mb4'COSCO',_utf8mb4'EMC',_utf8mb4'HEDE',_utf8mb4'OTHER')))), CONSTRAINT `chk_ocean_booking_customer` CHECK ((`customer_id` > 0)), CONSTRAINT `chk_ocean_booking_pending_schedule` CHECK (((`pending_estimated_sailing_at` is null) or (`pending_estimated_arrival_at` is null) or (`pending_estimated_arrival_at` >= `pending_estimated_sailing_at`))), CONSTRAINT `chk_ocean_booking_schedule` CHECK (((`estimated_sailing_at` is null) or (`estimated_arrival_at` is null) or (`estimated_arrival_at` >= `estimated_sailing_at`))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='独立海运订舱聚合;柜次仍由fl_container_booking承载'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_container_allocation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_container_allocation` ( `id` bigint unsigned NOT NULL COMMENT '订舱柜次分配关系ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '所属海运订舱ID', `requirement_id` bigint unsigned NOT NULL COMMENT '对应订舱箱型需求ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '明确引用现有柜次ID', `allocated_by` bigint unsigned NOT NULL COMMENT '分配操作人ID', `allocated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '分配操作人姓名快照', `allocated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '柜次分配时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ocean_allocation_container` (`container_booking_id`), KEY `idx_ocean_allocation_booking` (`ocean_booking_id`,`requirement_id`,`allocated_at`), KEY `fk_ocean_allocation_requirement` (`requirement_id`), CONSTRAINT `fk_ocean_allocation_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `fk_ocean_allocation_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `fk_ocean_allocation_requirement` FOREIGN KEY (`requirement_id`) REFERENCES `fl_ocean_booking_container_requirement` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订舱需求与现有柜次的唯一分配关系'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_container_requirement`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_container_requirement` ( `id` bigint unsigned NOT NULL COMMENT '订舱箱型需求ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '所属海运订舱ID', `container_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所需集装箱尺寸类型编码', `container_kind` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所需集装箱箱种编码', `capacity_cbm` decimal(18,4) NOT NULL DEFAULT '0.0000', `max_weight_kg` decimal(18,3) NOT NULL DEFAULT '0.000', `quantity` int unsigned NOT NULL COMMENT '该箱型箱种所需柜数', `sort_no` int unsigned NOT NULL DEFAULT '0' COMMENT '订舱需求展示顺序', PRIMARY KEY (`id`), KEY `idx_ocean_requirement_booking` (`ocean_booking_id`,`sort_no`,`id`), CONSTRAINT `fk_ocean_requirement_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `chk_ocean_requirement_quantity` CHECK ((`quantity` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订舱箱型箱种及数量需求'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_document` ( `id` bigint unsigned NOT NULL COMMENT '订舱文件关联ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '所属海运订舱ID', `file_id` bigint unsigned NOT NULL COMMENT 'File服务文件逻辑ID', `document_type` varchar(32) NOT NULL COMMENT '文件类型:BOOKING_CONFIRMATION订舱确认、BILL_OF_LADING提单', `file_name` varchar(255) NOT NULL COMMENT 'File返回的原始文件名快照', `file_hash` char(64) DEFAULT NULL COMMENT 'File返回的SHA-256快照', `size_bytes` bigint unsigned DEFAULT NULL COMMENT 'File返回的文件大小快照', `content_type` varchar(128) DEFAULT NULL COMMENT 'File返回的内容类型快照', `valid` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否为有效文件关联', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传或关联操作人ID', `uploaded_by_name` varchar(64) DEFAULT NULL COMMENT '上传或关联操作人姓名快照', `uploaded_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传或关联时间', `invalidated_by` bigint unsigned DEFAULT NULL COMMENT '作废操作人ID', `invalidated_by_name` varchar(64) DEFAULT NULL COMMENT '作废操作人姓名快照', `invalidated_at` datetime(3) DEFAULT NULL COMMENT '作废时间', PRIMARY KEY (`id`), KEY `idx_ocean_document_booking` (`ocean_booking_id`,`valid`,`uploaded_at`,`id`), KEY `idx_ocean_document_file` (`file_id`), CONSTRAINT `fk_ocean_document_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`) ON DELETE CASCADE, CONSTRAINT `chk_ocean_document_type` CHECK ((`document_type` in (_utf8mb4'BOOKING_CONFIRMATION',_utf8mb4'BILL_OF_LADING'))), CONSTRAINT `chk_ocean_document_valid` CHECK ((`valid` in (0,1))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订舱聚合拥有的订舱确认与提单文件关联'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_operation` ( `id` bigint unsigned NOT NULL COMMENT '订舱写操作幂等记录ID', `ocean_booking_id` bigint unsigned DEFAULT NULL COMMENT '关联海运订舱ID;创建请求完成前允许为空', `operator_id` bigint unsigned NOT NULL COMMENT '发起写操作的平台操作人ID', `operation` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '幂等写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端写操作幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要;用于识别同键不同请求', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '处理状态:PROCESSING处理中、SUCCESS成功', `result_json` json DEFAULT NULL COMMENT '成功结果JSON快照;供幂等重放返回', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '写操作成功完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ocean_operation` (`operator_id`,`operation`,`idempotency_key`), KEY `idx_ocean_operation_booking` (`ocean_booking_id`,`created_at`), CONSTRAINT `fk_ocean_operation_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `chk_ocean_operation_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='海运订舱写操作幂等与请求哈希'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_party`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_party` ( `id` bigint unsigned NOT NULL COMMENT '订舱提单关系方ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '所属海运订舱ID', `party_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '关系方类型:SHIPPER发货人、CONSIGNEE收货人、NOTIFY_PARTY通知人', `party_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '关系方名称快照', `address` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '关系方地址快照', `contact_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '关系方联系人快照', `contact_phone` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '关系方联系电话快照', PRIMARY KEY (`id`), UNIQUE KEY `uk_ocean_booking_party` (`ocean_booking_id`,`party_type`), CONSTRAINT `fk_ocean_booking_party` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `chk_ocean_booking_party_type` CHECK ((`party_type` in (_utf8mb4'SHIPPER',_utf8mb4'CONSIGNEE',_utf8mb4'NOTIFY_PARTY'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订舱提单关系方快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_ocean_booking_status_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_ocean_booking_status_history` ( `id` bigint unsigned NOT NULL COMMENT '订舱状态历史ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '所属海运订舱ID', `from_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更前订舱状态;创建时为空', `to_status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '变更后订舱状态', `action` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发状态变更的业务动作', `reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '状态变更原因', `before_snapshot` json DEFAULT NULL COMMENT '状态变更前订舱数据快照;创建时为空', `after_snapshot` json NOT NULL COMMENT '状态变更后订舱数据快照', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '状态历史创建时间', PRIMARY KEY (`id`), KEY `idx_ocean_history_booking` (`ocean_booking_id`,`created_at`,`id`), CONSTRAINT `fk_ocean_history_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='海运订舱不可变状态历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_order_declaration_event`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_order_declaration_event` ( `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和隔离键', `event_id` varchar(128) NOT NULL COMMENT '永久保留的Order Outbox事件ID', `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), PRIMARY KEY (`tenant_id`,`event_id`), KEY `idx_order_declaration_event_order` (`tenant_id`,`order_id`,`order_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Order客户申报事件永久幂等账本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_order_declaration_snapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_order_declaration_snapshot` ( `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和隔离键', `order_id` bigint unsigned NOT NULL COMMENT 'Order订单ID', `event_id` varchar(128) NOT NULL COMMENT 'Order Outbox事件ID', `order_version` int NOT NULL COMMENT 'Order聚合版本,严格单调消费', `request_hash` char(64) NOT NULL COMMENT '完整事件SHA-256', `customer_remark` varchar(1000) DEFAULT NULL COMMENT '客户备注快照', `expected_arrival_at` datetime(3) DEFAULT NULL COMMENT '预计到仓时间快照', `channel_code` varchar(64) NOT NULL COMMENT '渠道编码快照', `channel_name` varchar(128) NOT NULL COMMENT '渠道名称快照', `cargoes_json` json NOT NULL COMMENT '客户申报货物行完整快照,不覆盖实测事实', `changes_json` json DEFAULT 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), 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Order客户申报版本快照;与箱码、实测、托盘、PDA和计费事实隔离'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_outbound_dispatch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_outbound_dispatch` ( `id` bigint unsigned NOT NULL COMMENT '国内出仓调度记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `order_id` bigint unsigned NOT NULL COMMENT 'Order服务订单逻辑ID,不复制订单主数据', `inbound_id` bigint unsigned NOT NULL COMMENT '关联入库单逻辑ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '关联柜次逻辑ID', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'READY_FOR_DISPATCH' COMMENT '出仓状态:READY_FOR_DISPATCH待确认出仓、WAITING_FOR_LOADING等待装柜', `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号,每次更新递增', `confirmed_by` bigint unsigned DEFAULT NULL COMMENT '确认国内出仓的操作人ID', `confirmed_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '确认国内出仓的操作人姓名快照', `confirmed_at` datetime(3) DEFAULT NULL COMMENT '国内出仓确认时间', `reversed_by` bigint unsigned DEFAULT NULL COMMENT '撤销国内出仓的操作人ID', `reversed_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '撤销国内出仓的操作人姓名快照', `reversed_at` datetime(3) DEFAULT NULL COMMENT '国内出仓撤销时间', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 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 '出仓调度记录最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_outbound_dispatch_owner` (`tenant_id`,`inbound_id`,`container_booking_id`), KEY `idx_outbound_dispatch_order` (`tenant_id`,`order_id`,`updated_at`), KEY `idx_outbound_dispatch_container` (`container_booking_id`,`status`,`updated_at`), KEY `fk_outbound_dispatch_inbound` (`inbound_id`), CONSTRAINT `fk_outbound_dispatch_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `fk_outbound_dispatch_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `chk_outbound_dispatch_status` CHECK ((`status` in (_utf8mb4'READY_FOR_DISPATCH',_utf8mb4'WAITING_FOR_LOADING'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='三期国内出仓派车状态,不重复创建出仓单'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_outbound_dispatch_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_outbound_dispatch_history` ( `id` bigint unsigned NOT NULL COMMENT '出仓状态历史记录ID', `dispatch_id` bigint unsigned NOT NULL COMMENT '关联国内出仓调度记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '关联入库单逻辑ID快照', `container_booking_id` bigint unsigned NOT NULL COMMENT '关联柜次逻辑ID快照', `action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '出仓状态变更动作', `from_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更前出仓状态;首次创建时为空', `to_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '变更后出仓状态', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '状态变更原因或备注', `operator_id` bigint unsigned NOT NULL COMMENT '执行状态变更的平台用户ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行状态变更的平台用户姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '状态历史创建时间', PRIMARY KEY (`id`), KEY `idx_outbound_dispatch_history` (`tenant_id`,`inbound_id`,`container_booking_id`,`created_at`,`id`), KEY `fk_outbound_dispatch_history` (`dispatch_id`), CONSTRAINT `fk_outbound_dispatch_history` FOREIGN KEY (`dispatch_id`) REFERENCES `fl_outbound_dispatch` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='国内出仓追加式审计历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_outbound_dispatch_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_outbound_dispatch_operation` ( `id` bigint unsigned NOT NULL COMMENT '出仓幂等操作记录ID', `dispatch_id` bigint unsigned DEFAULT NULL COMMENT '首次声明幂等键时允许为空', `operator_id` bigint unsigned NOT NULL COMMENT '执行写操作的平台用户ID', `operation` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '国内出仓写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端幂等键,同一操作重试复用', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '幂等处理状态:PROCESSING处理中、SUCCESS成功', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等声明创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '幂等操作完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_outbound_dispatch_operation` (`operator_id`,`operation`,`idempotency_key`), KEY `idx_outbound_dispatch_operation_resource` (`dispatch_id`,`created_at`), CONSTRAINT `fk_outbound_dispatch_operation` FOREIGN KEY (`dispatch_id`) REFERENCES `fl_outbound_dispatch` (`id`), CONSTRAINT `chk_outbound_dispatch_operation_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='国内出仓写操作幂等声明'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_port_schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_port_schedule` ( `id` bigint unsigned NOT NULL COMMENT '港务船期记录ID', `schedule_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '港务船期记录编号', `customer_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '关联海运订舱ID', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '关联柜次ID;订舱整票船期时为空', `source_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船期来源类型:MANUAL人工录入、CARRIER船公司、TERMINAL码头、API外部接口', `source_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船期来源名称', `source_ref` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源侧记录唯一引用或查询凭据摘要', `vessel_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '船名快照', `voyage_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '航次号快照', `departure_port_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '起运港编码快照', `departure_port_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '起运港名称快照', `destination_port_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '目的港编码快照', `destination_port_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '目的港名称快照', `etd_at` datetime(3) DEFAULT NULL COMMENT '预计离港时间', `eta_at` datetime(3) DEFAULT NULL COMMENT '预计到港时间', `booking_cutoff_at` datetime(3) DEFAULT NULL COMMENT '截单时间', `customs_cutoff_at` datetime(3) DEFAULT NULL COMMENT '截关时间', `port_cutoff_at` datetime(3) DEFAULT NULL COMMENT '截港时间', `observed_at` datetime(3) NOT NULL COMMENT '来源数据观测时间', `expires_at` datetime(3) NOT NULL COMMENT '超过该时间即由API计算为过期', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平台内部备注', `created_by` bigint unsigned NOT NULL COMMENT '创建操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '船期记录创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL 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_port_schedule_no` (`schedule_no`), UNIQUE KEY `uk_port_schedule_source` (`source_type`,`source_name`,`source_ref`), KEY `idx_port_schedule_customer` (`customer_id`,`observed_at`,`id`), KEY `idx_port_schedule_booking` (`ocean_booking_id`,`observed_at`,`id`), KEY `idx_port_schedule_container` (`container_booking_id`,`observed_at`,`id`), KEY `idx_port_schedule_expiry` (`expires_at`,`id`), CONSTRAINT `fk_port_schedule_booking` FOREIGN KEY (`ocean_booking_id`) REFERENCES `fl_ocean_booking` (`id`), CONSTRAINT `fk_port_schedule_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `chk_port_schedule_booking_cutoff` CHECK (((`booking_cutoff_at` is null) or (`etd_at` is null) or (`booking_cutoff_at` <= `etd_at`))), CONSTRAINT `chk_port_schedule_customer` CHECK ((`customer_id` > 0)), CONSTRAINT `chk_port_schedule_customs_cutoff` CHECK (((`customs_cutoff_at` is null) or (`etd_at` is null) or (`customs_cutoff_at` <= `etd_at`))), CONSTRAINT `chk_port_schedule_eta` CHECK (((`etd_at` is null) or (`eta_at` is null) or (`eta_at` >= `etd_at`))), CONSTRAINT `chk_port_schedule_expiry` CHECK ((`expires_at` > `observed_at`)), CONSTRAINT `chk_port_schedule_port_cutoff` CHECK (((`port_cutoff_at` is null) or (`etd_at` is null) or (`port_cutoff_at` <= `etd_at`))), CONSTRAINT `chk_port_schedule_source_type` CHECK ((`source_type` in (_utf8mb4'MANUAL',_utf8mb4'CARRIER',_utf8mb4'TERMINAL',_utf8mb4'API'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='独立港务船期来源聚合,不替代订舱快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_port_schedule_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_port_schedule_history` ( `id` bigint unsigned NOT NULL COMMENT '港务船期变更历史ID', `port_schedule_id` bigint unsigned NOT NULL COMMENT '所属港务船期记录ID', `action` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '变更动作:CREATE创建、UPDATE更新', `from_version` int unsigned DEFAULT NULL COMMENT '变更前版本;创建时为空', `to_version` int unsigned NOT NULL COMMENT '变更后版本', `reason` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更原因或说明', `before_snapshot` json DEFAULT NULL COMMENT '变更前船期数据快照;创建时为空', `after_snapshot` json NOT NULL COMMENT '变更后船期数据快照', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史记录创建时间', PRIMARY KEY (`id`), KEY `idx_port_schedule_history` (`port_schedule_id`,`created_at`,`id`), CONSTRAINT `fk_port_schedule_history` FOREIGN KEY (`port_schedule_id`) REFERENCES `fl_port_schedule` (`id`), CONSTRAINT `chk_port_schedule_history_action` CHECK ((`action` in (_utf8mb4'CREATE',_utf8mb4'UPDATE'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='港务船期不可变变更历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_port_schedule_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_port_schedule_operation` ( `id` bigint unsigned NOT NULL COMMENT '港务船期写操作幂等记录ID', `port_schedule_id` bigint unsigned DEFAULT NULL COMMENT '关联港务船期ID;创建请求完成前允许为空', `operator_id` bigint unsigned NOT NULL COMMENT '发起写操作的平台操作人ID', `operation` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '幂等写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端写操作幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要;用于识别同键不同请求', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '处理状态:PROCESSING处理中、SUCCESS成功', `result_json` json DEFAULT NULL COMMENT '成功结果JSON快照;供幂等重放返回', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间', `completed_at` datetime(3) DEFAULT NULL COMMENT '写操作成功完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_port_schedule_operation` (`operator_id`,`idempotency_key`), KEY `idx_port_schedule_operation_resource` (`port_schedule_id`,`created_at`), CONSTRAINT `fk_port_schedule_operation` FOREIGN KEY (`port_schedule_id`) REFERENCES `fl_port_schedule` (`id`), CONSTRAINT `chk_port_schedule_operation_status` CHECK ((`status` in (_utf8mb4'PROCESSING',_utf8mb4'SUCCESS'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='港务船期写操作幂等与请求哈希'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_preload_loading_plan_link`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_preload_loading_plan_link` ( `id` bigint unsigned NOT NULL COMMENT '关联ID', `tenant_id` bigint unsigned NOT NULL COMMENT '入库单客户隔离ID', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `preload_plan_id` bigint unsigned NOT NULL COMMENT '入库单级预装计划ID', `loading_plan_id` bigint unsigned NOT NULL COMMENT '柜次级装柜计划ID', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '建立关联幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '建立关联请求SHA-256', `created_by` bigint unsigned NOT NULL COMMENT '建立预装与装柜计划关联的操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '建立关联的操作人姓名快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关联记录创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_preload_loading_pair` (`tenant_id`,`inbound_id`,`loading_plan_id`), UNIQUE KEY `uk_preload_loading_idempotency` (`created_by`,`idempotency_key`), KEY `idx_preload_loading_preload` (`preload_plan_id`,`loading_plan_id`), KEY `idx_preload_loading_plan` (`loading_plan_id`,`tenant_id`,`inbound_id`), KEY `fk_preload_loading_inbound` (`inbound_id`), CONSTRAINT `fk_preload_loading_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`), CONSTRAINT `fk_preload_loading_plan` FOREIGN KEY (`loading_plan_id`) REFERENCES `fl_loading_plan` (`id`), CONSTRAINT `fk_preload_loading_preload` FOREIGN KEY (`preload_plan_id`) REFERENCES `fl_preload_plan` (`id`), CONSTRAINT `chk_preload_loading_tenant` CHECK ((`tenant_id` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单预装与柜次装柜计划多对多关联'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_preload_plan`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_preload_plan` ( `id` bigint unsigned NOT NULL COMMENT '预装清单ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '关联入库单逻辑ID', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '预装状态:PENDING待确认、CONFIRMING确认中、CONFIRMED已确认', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号,每次更新递增', `items_json` json NOT NULL COMMENT '可编辑分柜明细JSON快照;人工确认后作为预装依据', `remark` varchar(1000) DEFAULT NULL COMMENT '预装备注', `confirmed_by` bigint unsigned DEFAULT NULL, `confirmed_by_name` varchar(64) DEFAULT NULL, `confirmed_at` datetime(3) DEFAULT NULL, `created_by` bigint unsigned NOT NULL COMMENT '创建预装清单的操作人ID', `created_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建操作人姓名快照', `updated_by` bigint unsigned NOT NULL COMMENT '最后修改操作人ID', `updated_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 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 '预装清单最后更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_preload_tenant_inbound` (`tenant_id`,`inbound_id`), KEY `idx_preload_status` (`tenant_id`,`status`,`updated_at`), KEY `fk_preload_inbound` (`inbound_id`), CONSTRAINT `fk_preload_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单分柜预装清单'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_price_book_channel`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_price_book_channel` ( `id` bigint unsigned NOT NULL COMMENT '版本渠道快照ID', `price_book_version_id` bigint unsigned NOT NULL COMMENT '整表价格版本ID', `channel_code` varchar(64) NOT NULL COMMENT '固定渠道编码', `channel_name` varchar(128) NOT NULL COMMENT '渠道名称快照', `price_model` varchar(32) NOT NULL COMMENT '价格模型快照', `source_sheet_name` varchar(128) NOT NULL COMMENT '原始Excel Sheet', `estimated_departure_date` date DEFAULT NULL COMMENT '标准预计开船日期', `estimated_departure_text` varchar(128) DEFAULT NULL COMMENT '原始预计开船日期文本', `latest_warehouse_entry` varchar(128) DEFAULT NULL COMMENT '最晚进仓时间', `vessel_name` varchar(128) DEFAULT NULL COMMENT '船名', `voyage_no` varchar(64) DEFAULT NULL COMMENT '航次', `reference_transit` varchar(128) DEFAULT NULL COMMENT '参考时效', `surcharge_description` varchar(2000) DEFAULT NULL COMMENT '附加费说明,仅展示', `remark` varchar(2000) DEFAULT NULL COMMENT '渠道备注', `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 '逻辑删除标记', `version` int NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_price_book_channel` (`price_book_version_id`,`channel_code`), KEY `idx_price_book_channel_code` (`channel_code`,`price_book_version_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='价格版本渠道及船期快照'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_price_book_version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_price_book_version` ( `id` bigint unsigned NOT NULL COMMENT '整表价格版本ID', `tenant_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '平台公共价格作用域固定为0', `version_no` int unsigned NOT NULL COMMENT '整表版本号', `original_file_name` varchar(255) NOT NULL COMMENT '原始Excel文件名', `source_file_id` bigint unsigned DEFAULT NULL COMMENT 'File服务原始文件ID', `source_sha256` char(64) DEFAULT NULL COMMENT '原始文件SHA-256', `status` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING_CONFIRMATION' COMMENT '价格版本状态:PENDING_CONFIRMATION待确认、ACTIVE已生效、SUPERSEDED已被替代、FAILED解析失败', `blocking_error_count` int unsigned NOT NULL DEFAULT '0' COMMENT '阻断错误数', `warning_count` int unsigned NOT NULL DEFAULT '0' COMMENT '警告数', `parse_issues_json` json DEFAULT NULL COMMENT '上传解析问题及待确认重新校验结果', `channel_count` int unsigned NOT NULL DEFAULT '0' COMMENT '解析渠道数', `rate_count` int unsigned NOT NULL DEFAULT '0' COMMENT '解析价格数', `created_by` bigint unsigned NOT NULL COMMENT '上传价格表的操作人ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传记录创建时间', `published_by` bigint unsigned DEFAULT NULL COMMENT '确认并发布价格版本的操作人ID', `published_at` datetime(3) DEFAULT NULL COMMENT '确认并生效时间', `superseded_at` datetime(3) DEFAULT NULL 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 '乐观锁版本号', `voided_by` bigint unsigned DEFAULT NULL COMMENT '作废操作人ID', `voided_at` datetime(3) DEFAULT NULL COMMENT '作废时间', `void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因', PRIMARY KEY (`id`), UNIQUE KEY `uk_price_book_version` (`tenant_id`,`version_no`), KEY `idx_price_book_status` (`tenant_id`,`status`,`published_at`), KEY `idx_price_book_source_hash` (`tenant_id`,`source_sha256`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台公共船期价格整表版本'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_price_channel_catalog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_price_channel_catalog` ( `id` bigint unsigned NOT NULL COMMENT '渠道目录ID', `channel_code` varchar(64) NOT NULL COMMENT '稳定渠道编码', `display_name` varchar(128) NOT NULL COMMENT '平台渠道名称', `price_model` varchar(32) NOT NULL COMMENT '默认价格模型', `source_sheet_name` varchar(128) NOT NULL COMMENT '来源Sheet名称;海派为同一Sheet', `aliases_json` json NOT NULL COMMENT '上传名称别名数组', `inbound_code_prefix` varchar(6) DEFAULT NULL, `overseas_inbound_code_prefix` varchar(6) DEFAULT NULL, `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '目录状态:ACTIVE启用、DISABLED停用', `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_price_channel_code` (`channel_code`), KEY `idx_price_channel_status` (`status`,`price_model`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='平台公共船期价格固定渠道目录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_price_origin_alias`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_price_origin_alias` ( `id` bigint unsigned NOT NULL COMMENT '起运仓别名ID', `warehouse_code` varchar(64) NOT NULL COMMENT '平台仓库稳定编码,不存环境专属ID', `alias_name` varchar(128) NOT NULL COMMENT 'Excel起运仓名称别名', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE启用、DISABLED停用', `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_price_origin_alias` (`warehouse_code`,`alias_name`), KEY `idx_price_origin_alias_name` (`alias_name`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='价格表起运仓名称别名映射'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_price_warehouse_mapping`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_price_warehouse_mapping` ( `id` bigint unsigned NOT NULL COMMENT '价格仓映射ID', `source_type` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源维度:ORIGIN_CODE或OVERSEAS_NAME', `source_value` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '解析后的来源仓编码或海外仓名称', `warehouse_id` bigint unsigned NOT NULL COMMENT '固定平台公共仓库ID', `warehouse_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '平台仓库稳定编码快照', `warehouse_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'DOMESTIC或OVERSEAS', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE启用、DISABLED停用', `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_price_warehouse_mapping_source` (`source_type`,`source_value`), KEY `idx_price_warehouse_mapping_target` (`warehouse_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='价格表来源仓与固定平台公共仓映射'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing` ( `id` bigint NOT NULL, `sailing_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `template_id` bigint DEFAULT NULL, `channel_id` bigint NOT NULL, `channel_code_snapshot` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `channel_name_snapshot` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `warehouse_id` bigint NOT NULL, `warehouse_name_snapshot` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `departure_port_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `destination_port_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `vessel_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `voyage_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `etd_at` datetime(3) NOT NULL, `warehouse_cutoff_at` datetime(3) NOT NULL, `eta_at` datetime(3) DEFAULT NULL, `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'OPEN', `source_type` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'MANUAL', `generated_key` varchar(192) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `planned_capacity_cbm` decimal(14,3) DEFAULT NULL, `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_by` bigint NOT NULL, `created_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_by` bigint NOT NULL, `updated_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), `version` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `uk_fl_sailing_no` (`sailing_no`), UNIQUE KEY `uk_fl_sailing_generated_key` (`generated_key`), UNIQUE KEY `uk_fl_sailing_business` (`warehouse_id`,`channel_code_snapshot`,`departure_port_code`,`destination_port_code`,`etd_at`,`voyage_no`), KEY `idx_fl_sailing_calendar` (`etd_at`,`warehouse_id`,`channel_id`,`status`), KEY `idx_fl_sailing_route` (`departure_port_code`,`destination_port_code`), CONSTRAINT `ck_fl_sailing_status` CHECK ((`status` in (_utf8mb4'DRAFT',_utf8mb4'OPEN',_utf8mb4'CLOSED',_utf8mb4'DEPARTED',_utf8mb4'CANCELLED',_utf8mb4'COMPLETED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_assignment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_assignment` ( `id` bigint unsigned NOT NULL COMMENT '归班事实ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键', `sailing_id` bigint unsigned DEFAULT NULL COMMENT '船期实例ID,UNMATCHED为空', `origin_sailing_id` bigint unsigned DEFAULT NULL COMMENT '异常重排/取消前的原船期实例ID', `inbound_id` bigint unsigned DEFAULT NULL COMMENT '归班对象入库单ID', `inbound_code` varchar(64) DEFAULT NULL COMMENT '入仓码快照,仅用于展示', `receipt_batch_id` bigint unsigned DEFAULT NULL COMMENT '收货批次事实ID', `forecast_id` bigint unsigned DEFAULT NULL COMMENT '货量预报事实ID', `assignment_source` varchar(24) NOT NULL DEFAULT 'AUTO' COMMENT '归班来源:AUTO/MANUAL/ROLLOVER', `assignment_version` int unsigned NOT NULL COMMENT '同一对象的归班版本', `match_status` varchar(24) NOT NULL COMMENT 'FORECAST_MATCHED/RECEIVED/LATE/UNMATCHED/SUPERSEDED', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '已收实测体积', `forecast_volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '未收有效预计体积', `route_source` varchar(32) DEFAULT NULL COMMENT '航线来源:INBOUND_FACT/FORECAST_FACT/CHANNEL_DEFAULT', `volume_source` varchar(32) DEFAULT NULL COMMENT 'MEASURED_ACTUAL或预报来源', `rule_version` varchar(64) NOT NULL COMMENT '自动归班规则版本', `matched_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `superseded_at` datetime(3) DEFAULT NULL, `locked_at` datetime(3) DEFAULT NULL COMMENT '截止/订舱/关闭后冻结时间', `lock_reason` varchar(32) DEFAULT NULL COMMENT 'CUTOFF/BOOKING_CONFIRMED/CLOSED', `operator_id` bigint unsigned DEFAULT NULL, `reason` varchar(500) DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), KEY `idx_sailing_assignment_current` (`tenant_id`,`sailing_id`,`match_status`,`matched_at`,`id`), KEY `idx_sailing_assignment_origin` (`tenant_id`,`origin_sailing_id`,`match_status`,`id`), KEY `idx_sailing_assignment_receipt` (`tenant_id`,`receipt_batch_id`,`assignment_version`,`id`), KEY `idx_sailing_assignment_forecast` (`tenant_id`,`forecast_id`,`assignment_version`,`id`), KEY `idx_sailing_assignment_inbound` (`tenant_id`,`inbound_id`,`match_status`,`id`), CONSTRAINT `chk_sailing_assignment_source` CHECK ((`assignment_source` in (_utf8mb4'AUTO',_utf8mb4'MANUAL',_utf8mb4'ROLLOVER'))), CONSTRAINT `chk_sailing_assignment_status` CHECK ((`match_status` in (_utf8mb4'FORECAST_MATCHED',_utf8mb4'RECEIVED',_utf8mb4'LATE',_utf8mb4'UNMATCHED',_utf8mb4'SUPERSEDED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船期日历自动归班事实及不可变版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_booking_link`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_booking_link` ( `id` bigint unsigned NOT NULL COMMENT '船期-订舱关联ID', `tenant_id` bigint unsigned NOT NULL COMMENT '平台关联隔离键', `sailing_id` bigint unsigned NOT NULL COMMENT '计划船期实例ID', `ocean_booking_id` bigint unsigned NOT NULL COMMENT '海运订舱ID', `link_status` varchar(24) NOT NULL DEFAULT 'ACTIVE' COMMENT '关联状态:ACTIVE/REVOKED', `active_booking_guard` tinyint DEFAULT NULL COMMENT 'ACTIVE为1,REVOKED为空,用于唯一约束', `booking_status_snapshot` varchar(24) NOT NULL COMMENT '关联时订舱状态快照;只有RELEASED可建立', `warehouse_id` bigint unsigned DEFAULT NULL COMMENT '关联仓库快照', `channel_code` varchar(64) DEFAULT NULL COMMENT '关联渠道快照', `departure_port_code` varchar(32) DEFAULT NULL COMMENT '关联起运港快照', `destination_port_code` varchar(32) DEFAULT NULL COMMENT '关联目的港快照', `linked_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `revoked_at` datetime(3) DEFAULT NULL, `operator_id` bigint unsigned DEFAULT NULL, `operator_name` varchar(64) DEFAULT NULL, `reason` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_sailing_booking_active` (`ocean_booking_id`,`active_booking_guard`), KEY `idx_sailing_booking_link` (`sailing_id`,`link_status`,`ocean_booking_id`), KEY `idx_sailing_booking_booking` (`ocean_booking_id`,`link_status`,`id`), CONSTRAINT `chk_sailing_booking_link_guard` CHECK ((((`link_status` = _utf8mb4'ACTIVE') and (`active_booking_guard` = 1)) or ((`link_status` = _utf8mb4'REVOKED') and (`active_booking_guard` is null)))), CONSTRAINT `chk_sailing_booking_link_status` CHECK ((`link_status` in (_utf8mb4'ACTIVE',_utf8mb4'REVOKED'))), CONSTRAINT `chk_sailing_booking_released` CHECK ((`booking_status_snapshot` = _utf8mb4'RELEASED')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船期计划与已放舱订舱的最小关联及历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_channel`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_channel` ( `id` bigint NOT NULL, `channel_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `channel_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `source_type` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL, `mapped_channel_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `default_departure_port_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `default_destination_port_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `default_cutoff_days` tinyint NOT NULL DEFAULT '3', `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_by` bigint NOT NULL, `created_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_by` bigint NOT NULL, `updated_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), `version` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `uk_fl_sailing_channel_code` (`channel_code`), KEY `idx_fl_sailing_channel_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_history` ( `id` bigint NOT NULL, `sailing_id` bigint NOT NULL, `action` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `from_status` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `to_status` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `operator_id` bigint DEFAULT NULL, `operator_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), KEY `idx_fl_sailing_history_sailing` (`sailing_id`,`created_at`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_inbound_volume_forecast`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_inbound_volume_forecast` ( `id` bigint unsigned NOT NULL COMMENT '货量预报事实ID(forecastId)', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键,继承入库事实', `forecast_key` varchar(64) NOT NULL COMMENT '同一未收货对象的不可变业务键', `fact_version` int unsigned NOT NULL DEFAULT '1' COMMENT '预报修订版本', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `receiving_warehouse_id` bigint unsigned NOT NULL COMMENT '预计收货仓ID', `channel_code` varchar(64) DEFAULT NULL COMMENT '预计渠道编码快照', `channel_name` varchar(128) DEFAULT NULL COMMENT '预计渠道名称快照', `departure_port_code` varchar(32) DEFAULT NULL COMMENT '预计起运港编码快照', `destination_port_code` varchar(32) DEFAULT NULL COMMENT '预计目的港编码快照', `expected_arrival_at` datetime(3) NOT NULL COMMENT '预计到仓时间', `forecast_volume_cbm` decimal(18,4) NOT NULL COMMENT '未收货预计体积m3,不得使用申报体积代替', `source_type` varchar(32) NOT NULL COMMENT '预报来源,例如OPERATIONS/UPSTREAM_MEASUREMENT;不得使用客户申报体积冒充预报', `fact_status` varchar(24) NOT NULL DEFAULT 'VALID' COMMENT '事实状态:VALID/SUPERSEDED/VOIDED/CONSUMED', `effective_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '本版本生效时间', `created_by` bigint unsigned DEFAULT NULL COMMENT '写入人或系统主体', `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_sailing_forecast_version` (`tenant_id`,`forecast_key`,`fact_version`), KEY `idx_sailing_forecast_current` (`tenant_id`,`forecast_key`,`fact_status`,`fact_version`), KEY `idx_sailing_forecast_match` (`tenant_id`,`receiving_warehouse_id`,`channel_code`,`expected_arrival_at`,`id`), KEY `idx_sailing_forecast_inbound` (`tenant_id`,`inbound_id`,`expected_arrival_at`,`id`), CONSTRAINT `chk_sailing_forecast_status` CHECK ((`fact_status` in (_utf8mb4'VALID',_utf8mb4'SUPERSEDED',_utf8mb4'VOIDED',_utf8mb4'CONSUMED'))), CONSTRAINT `chk_sailing_forecast_volume` CHECK ((`forecast_volume_cbm` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船期日历未收货量预报事实及版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_receipt_batch_fact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_receipt_batch_fact` ( `id` bigint unsigned NOT NULL COMMENT '稳定收货批次事实ID(receiptBatchId)', `tenant_id` bigint unsigned NOT NULL COMMENT '客户隔离键,继承入库事实', `receipt_batch_key` varchar(64) NOT NULL COMMENT '同一物理收货批次的不可变业务键', `fact_version` int unsigned NOT NULL DEFAULT '1' COMMENT '同一批次复测/冲正版本', `inbound_id` bigint unsigned NOT NULL COMMENT '入库单ID', `measurement_id` bigint unsigned DEFAULT NULL COMMENT '最终审核测量批次ID', `receiving_warehouse_id` bigint unsigned NOT NULL COMMENT '实际收货仓ID', `channel_code` varchar(64) DEFAULT NULL COMMENT '收货渠道编码快照', `channel_name` varchar(128) DEFAULT NULL COMMENT '收货渠道名称快照', `departure_port_code` varchar(32) DEFAULT NULL COMMENT '起运港编码快照', `destination_port_code` varchar(32) DEFAULT NULL COMMENT '目的港编码快照', `received_at` datetime(3) NOT NULL COMMENT '实际收货完成时间,不使用入库单inbounded_at替代', `actual_volume_cbm` decimal(18,4) NOT NULL COMMENT '最终审核实测体积m3', `fact_status` varchar(24) NOT NULL DEFAULT 'APPROVED' COMMENT '事实状态:APPROVED/REVERSED/VOIDED/SUPERSEDED', `reversal_of_fact_id` bigint unsigned DEFAULT NULL COMMENT '冲正所替代的事实ID', `source_type` varchar(32) NOT NULL DEFAULT 'FIRSTLEG_RECEIPT' COMMENT '事实来源', `created_by` bigint unsigned DEFAULT NULL COMMENT '写入人或系统主体', `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_sailing_receipt_batch_version` (`tenant_id`,`receipt_batch_key`,`fact_version`), KEY `idx_sailing_receipt_batch_current` (`tenant_id`,`receipt_batch_key`,`fact_status`,`fact_version`), KEY `idx_sailing_receipt_match` (`tenant_id`,`receiving_warehouse_id`,`channel_code`,`received_at`,`id`), KEY `idx_sailing_receipt_inbound` (`tenant_id`,`inbound_id`,`received_at`,`id`), CONSTRAINT `chk_sailing_receipt_status` CHECK ((`fact_status` in (_utf8mb4'APPROVED',_utf8mb4'REVERSED',_utf8mb4'VOIDED',_utf8mb4'SUPERSEDED'))), CONSTRAINT `chk_sailing_receipt_volume` CHECK ((`actual_volume_cbm` > 0)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='船期日历稳定收货批次实测事实及版本历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_sailing_template`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_sailing_template` ( `id` bigint NOT NULL, `template_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `template_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `channel_id` bigint NOT NULL, `channel_code_snapshot` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `channel_name_snapshot` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, `warehouse_id` bigint NOT NULL, `warehouse_name_snapshot` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `departure_port_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `destination_port_code` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `weekday` tinyint NOT NULL, `weekday_mask` tinyint NOT NULL DEFAULT '1', `etd_local_time` time NOT NULL, `cutoff_days` tinyint NOT NULL DEFAULT '3', `cutoff_local_time` time NOT NULL DEFAULT '18:00:00', `valid_from` date NOT NULL, `valid_to` date DEFAULT NULL, `voyage_rule` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `vessel_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ACTIVE', `remark` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_by` bigint NOT NULL, `created_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_by` bigint NOT NULL, `updated_by_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), `version` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `uk_fl_sailing_template_no` (`template_no`), KEY `idx_fl_sailing_template_filter` (`warehouse_id`,`channel_id`,`status`,`weekday`), CONSTRAINT `ck_fl_sailing_template_cutoff_days` CHECK ((`cutoff_days` between 0 and 30)), CONSTRAINT `ck_fl_sailing_template_weekday` CHECK ((`weekday` between 1 and 7)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_split_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_split_operation` ( `id` bigint unsigned NOT NULL COMMENT '幂等记录ID', `tenant_id` bigint unsigned NOT NULL COMMENT '客户ID和数据隔离键', `inbound_id` bigint unsigned NOT NULL COMMENT '操作目标入库单逻辑ID', `operator_id` bigint unsigned NOT NULL COMMENT '执行分柜或预装写操作的平台用户ID', `operation` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分柜或预装写操作类型', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端幂等键,同一操作重试复用', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROCESSING' COMMENT '幂等处理状态:PROCESSING处理中、SUCCESS成功', `result_json` json DEFAULT NULL COMMENT '操作结果JSON快照,用于幂等重放', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等操作声明创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_split_operation` (`tenant_id`,`inbound_id`,`operator_id`,`operation`,`idempotency_key`), KEY `idx_split_operation_time` (`tenant_id`,`inbound_id`,`created_at`), KEY `fk_split_operation_inbound` (`inbound_id`), CONSTRAINT `fk_split_operation_inbound` FOREIGN KEY (`inbound_id`) REFERENCES `fl_inbound_order` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='分柜操作幂等与审计索引'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_terminal_drayage`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_terminal_drayage` ( `id` bigint unsigned NOT NULL COMMENT '目的港码头拖车聚合ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '唯一归属物理货柜ID', `fleet_supplier_id` bigint unsigned DEFAULT NULL COMMENT 'Warehouse ACTIVE/TRUCKING供应商ID快照', `fleet_supplier_name` varchar(128) DEFAULT NULL COMMENT 'Warehouse供应商名称快照', `pickup_appointment_at` datetime(3) DEFAULT NULL COMMENT '预约提柜时间', `actual_pickup_at` datetime(3) DEFAULT NULL COMMENT '实际提柜时间', `estimated_empty_return_at` datetime(3) DEFAULT NULL COMMENT '服务端按卸柜完成时间加72小时计算的预计还柜时间', `actual_empty_return_at` datetime(3) DEFAULT NULL COMMENT '实际还空柜时间', `version` int unsigned NOT NULL DEFAULT '1' COMMENT '乐观锁版本号', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `created_by_name` varchar(64) DEFAULT NULL COMMENT '创建人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_by` bigint unsigned NOT NULL COMMENT '最后更新人ID', `updated_by_name` varchar(64) DEFAULT NULL COMMENT '最后更新人名称快照', `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_terminal_drayage_container` (`container_booking_id`), KEY `idx_terminal_drayage_warning` (`actual_empty_return_at`,`estimated_empty_return_at`), CONSTRAINT `fk_terminal_drayage_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `chk_terminal_drayage_times` CHECK ((((`actual_pickup_at` is null) or (`pickup_appointment_at` is not null)) and ((`actual_empty_return_at` is null) or (`actual_pickup_at` is null) or (`actual_empty_return_at` >= `actual_pickup_at`)))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='目的港货柜级码头拖车与还空事实'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_terminal_drayage_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_terminal_drayage_history` ( `id` bigint unsigned NOT NULL COMMENT '历史ID', `drayage_id` bigint unsigned NOT NULL COMMENT '码头拖车聚合ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '货柜ID快照', `action` varchar(32) NOT NULL COMMENT '业务动作', `from_status` varchar(32) NOT NULL COMMENT '操作前状态', `to_status` varchar(32) NOT NULL COMMENT '操作后状态', `from_version` int unsigned NOT NULL COMMENT '操作前版本', `to_version` int unsigned NOT NULL COMMENT '操作后版本', `reason` varchar(500) DEFAULT NULL COMMENT '操作说明', `operator_id` bigint unsigned NOT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称快照', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_terminal_drayage_history` (`container_booking_id`,`created_at`,`id`), KEY `fk_terminal_drayage_history` (`drayage_id`), CONSTRAINT `fk_terminal_drayage_history` FOREIGN KEY (`drayage_id`) REFERENCES `fl_terminal_drayage` (`id`), CONSTRAINT `chk_terminal_drayage_history_action` CHECK ((`action` in (_utf8mb4'SELECT_FLEET',_utf8mb4'SEND_PICKUP_EMAIL',_utf8mb4'SCHEDULE_PICKUP',_utf8mb4'RECORD_PICKUP',_utf8mb4'RECORD_EMPTY_RETURN'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='目的港码头拖车不可变操作历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_terminal_drayage_mail`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_terminal_drayage_mail` ( `id` bigint unsigned NOT NULL COMMENT '邮件任务ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '归属物理货柜ID', `fleet_supplier_id` bigint unsigned NOT NULL COMMENT '车队供应商ID快照', `fleet_name` varchar(128) NOT NULL COMMENT '车队名称快照', `recipient` varchar(254) NOT NULL COMMENT '收件人邮箱', `kind` varchar(32) NOT NULL COMMENT '邮件类型:REQUEST_PICKUP提柜请求、CANCEL_PICKUP取消提柜', `subject` varchar(255) NOT NULL COMMENT '邮件主题', `body` text NOT NULL COMMENT '邮件正文', `status` varchar(16) NOT NULL DEFAULT 'PENDING' COMMENT '投递状态:PENDING待发送、SENDING发送中、SENT已发送、FAILED失败', `attempts` int NOT NULL DEFAULT '0' COMMENT '发送尝试次数', `failure_reason` varchar(500) DEFAULT NULL COMMENT '发送失败原因', `created_by` bigint unsigned NOT NULL COMMENT '创建人ID', `updated_by` bigint unsigned NOT NULL COMMENT '最后更新人ID', `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 '更新时间', `sent_at` datetime(3) DEFAULT NULL COMMENT '发送成功时间', PRIMARY KEY (`id`), KEY `idx_terminal_mail_dispatch` (`status`,`id`), KEY `idx_terminal_mail_container` (`container_booking_id`,`id`,`status`), CONSTRAINT `fk_terminal_mail_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`), CONSTRAINT `chk_terminal_mail_kind` CHECK ((`kind` in (_utf8mb4'REQUEST_PICKUP',_utf8mb4'CANCEL_PICKUP'))), CONSTRAINT `chk_terminal_mail_status` CHECK ((`status` in (_utf8mb4'PENDING',_utf8mb4'SENDING',_utf8mb4'SENT',_utf8mb4'FAILED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='码头车队邮件任务与投递记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_terminal_drayage_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_terminal_drayage_operation` ( `id` bigint unsigned NOT NULL COMMENT '幂等操作ID', `container_booking_id` bigint unsigned NOT NULL COMMENT '货柜ID', `operation` varchar(32) NOT NULL COMMENT '业务动作', `idempotency_key` varchar(255) NOT NULL COMMENT '客户端幂等键', `request_hash` char(64) NOT NULL COMMENT '请求载荷SHA-256', `result_version` int unsigned NOT NULL COMMENT '成功结果版本', `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_terminal_drayage_operation` (`container_booking_id`,`idempotency_key`), KEY `idx_terminal_drayage_operation` (`container_booking_id`,`created_at`), CONSTRAINT `fk_terminal_drayage_operation_container` FOREIGN KEY (`container_booking_id`) REFERENCES `fl_container_booking` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='目的港码头拖车成功幂等操作'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_third_party_call_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_third_party_call_log` ( `id` bigint unsigned NOT NULL COMMENT '第三方调用日志ID(雪花ID)', `tenant_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '第三方未知/未解析主体哨兵值;不是平台客户记录或平台作用域,不得用于业务数据授权', `app_key` varchar(128) DEFAULT NULL COMMENT '第三方应用标识', `signature_subject` varchar(128) DEFAULT NULL COMMENT '签名主体快照', `request_method` varchar(8) NOT NULL COMMENT 'HTTP方法', `request_path` varchar(255) NOT NULL COMMENT '签名使用的规范路径', `request_timestamp` varchar(32) DEFAULT NULL COMMENT '请求头Unix毫秒时间戳原值', `nonce` varchar(128) DEFAULT NULL COMMENT '请求Nonce', `idempotency_key` varchar(128) DEFAULT NULL COMMENT 'HTTP幂等键,查询接口为空', `idempotency_anchor` tinyint unsigned DEFAULT NULL COMMENT '签名通过后首个请求为1,重复调用为空', `signature_value` varchar(128) DEFAULT NULL COMMENT '第三方签名原值', `request_hash` char(64) NOT NULL COMMENT '原始请求体SHA-256小写十六进制', `raw_payload` longtext NOT NULL COMMENT '未经重新序列化的UTF-8原始请求体', `processing_status` varchar(16) NOT NULL COMMENT 'PROCESSING、ACCEPTED或REJECTED', `result_code` varchar(32) DEFAULT NULL COMMENT '统一响应业务码', `result_message` varchar(1000) DEFAULT NULL COMMENT '处理结果或失败原因', `result_json` json DEFAULT NULL COMMENT '首次成功结果快照', `requested_at` datetime(3) NOT NULL COMMENT '服务端接收时间', `processed_at` datetime(3) DEFAULT NULL COMMENT '处理完成时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_call_idempotency_owner` (`tenant_id`,`app_key`,`idempotency_key`,`idempotency_anchor`), KEY `idx_third_call_app_time` (`tenant_id`,`app_key`,`requested_at`), KEY `idx_third_call_idempotency` (`tenant_id`,`app_key`,`idempotency_key`), KEY `idx_third_call_nonce` (`tenant_id`,`app_key`,`nonce`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='第三方测量开放接口原始请求、签名主体和处理结果留档'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_truck_appointment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_truck_appointment` ( `id` bigint unsigned NOT NULL COMMENT '拖车预约ID', `appointment_no` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '平台拖车预约编号', `outbound_order_id` bigint unsigned DEFAULT NULL COMMENT '关联头程订单逻辑ID;不跨库建外键', `ocean_booking_id` bigint unsigned DEFAULT NULL COMMENT '关联海运订舱逻辑ID', `container_booking_id` bigint unsigned DEFAULT NULL COMMENT '关联柜次逻辑ID;拖车完成供装柜门禁校验', `loading_plan_id` bigint unsigned DEFAULT NULL COMMENT '关联装柜计划逻辑ID', `warehouse_id` bigint unsigned DEFAULT NULL COMMENT '预约到仓的国内收货仓逻辑ID', `customer_id` bigint unsigned DEFAULT NULL COMMENT '客户ID和数据隔离键', `customer_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '客户名称快照', `carrier_id` bigint unsigned DEFAULT NULL COMMENT '拖车服务商逻辑ID', `carrier_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '拖车服务商名称快照', `bill_of_lading_no` varchar(128) DEFAULT NULL, `fleet_contact` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '车队联系人', `fleet_phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '车队联系电话', `driver_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '司机姓名', `driver_phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '司机联系电话', `driver_id_card` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '司机身份证号;平台内部敏感信息', `vehicle_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '车辆车牌号', `store_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓装柜地点名称快照', `store_contact` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓地点联系人快照', `store_phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓地点联系电话快照', `store_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓装柜地点地址快照', `store_city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓地点城市快照', `store_zipcode` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '到仓地点邮编快照', `package_count` int unsigned DEFAULT NULL COMMENT '预约货物包装件数快照', `gross_weight_kg` decimal(18,3) DEFAULT NULL COMMENT '预约货物毛重,单位千克', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '预约货物体积,单位立方米', `pallet_count` int unsigned DEFAULT NULL COMMENT '预约托盘数量', `po_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '关联采购单号或客户PO号', `planned_loading_at` datetime(3) DEFAULT NULL COMMENT '预约到仓装柜时间', `actual_arrived_warehouse_at` datetime(3) DEFAULT NULL COMMENT '车辆实际到达收货仓时间', `actual_loading_at` datetime(3) DEFAULT NULL COMMENT '实际开始装柜时间', `actual_departed_at` datetime(3) DEFAULT NULL COMMENT '车辆实际离仓时间;DEPARTED后供LOADED门禁使用', `transit_minutes` int unsigned DEFAULT NULL COMMENT '从到仓到离仓的运输作业耗时,单位分钟', `payable_amount` decimal(18,2) DEFAULT NULL COMMENT '应付拖车服务商金额;币种由currency指定', `receivable_amount` decimal(18,2) DEFAULT NULL COMMENT '向客户收取的拖车金额;币种由currency指定', `currency` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'RMB' COMMENT '金额币种;首期默认RMB', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DRAFT' COMMENT '拖车预约状态:DRAFT草稿、PENDING_DISPATCH待派车、DISPATCHED已派车、PICKUP_IN_PROGRESS提货中、ARRIVED_WAREHOUSE已到仓、LOADING装柜中、DEPARTED已离仓、COMPLETED已完成、RESCHEDULED已改约、EXCEPTION异常、CANCELLED已取消', `revision` int unsigned NOT NULL DEFAULT '0' COMMENT '拖车预约业务修订号;每次状态或改约递增', `version` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 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 '拖车预约最后更新时间', `active_container_booking_id` bigint unsigned GENERATED ALWAYS AS ((case when (`status` not in (_utf8mb4'COMPLETED',_utf8mb4'CANCELLED',_utf8mb4'EXCEPTION')) then `container_booking_id` else NULL end)) STORED COMMENT '非终态预约的柜次唯一键', `active_ocean_booking_id` bigint unsigned GENERATED ALWAYS AS ((case when (`status` not in (_utf8mb4'COMPLETED',_utf8mb4'CANCELLED',_utf8mb4'EXCEPTION')) then `ocean_booking_id` else NULL end)) STORED COMMENT '非终态预约的订舱唯一键', PRIMARY KEY (`id`), UNIQUE KEY `uk_truck_appointment_no` (`appointment_no`), UNIQUE KEY `uk_truck_active_ocean_booking` (`active_ocean_booking_id`), KEY `idx_truck_appointment_status` (`status`,`updated_at`), KEY `idx_truck_appointment_container` (`container_booking_id`), KEY `idx_truck_appointment_customer` (`customer_id`), KEY `idx_truck_appointment_ocean` (`ocean_booking_id`), CONSTRAINT `chk_truck_appointment_status` CHECK ((`status` in (_utf8mb4'DRAFT',_utf8mb4'PENDING_DISPATCH',_utf8mb4'DISPATCHED',_utf8mb4'PICKUP_IN_PROGRESS',_utf8mb4'ARRIVED_WAREHOUSE',_utf8mb4'LOADING',_utf8mb4'DEPARTED',_utf8mb4'COMPLETED',_utf8mb4'RESCHEDULED',_utf8mb4'EXCEPTION',_utf8mb4'CANCELLED'))) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='三期拖车预约派车聚合'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_truck_appointment_attachment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_truck_appointment_attachment` ( `id` bigint unsigned NOT NULL COMMENT '拖车附件关系ID', `appointment_id` bigint unsigned NOT NULL COMMENT '所属拖车预约ID', `file_id` bigint unsigned NOT NULL COMMENT 'File服务文件逻辑ID', `attachment_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '附件类型编码;由业务动作约定', `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '上传时文件名快照', `file_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '文件内容SHA-256摘要', `visibility` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'INTERNAL' COMMENT '可见范围:INTERNAL仅平台内部、CLIENT客户可见', `uploaded_by` bigint unsigned NOT NULL COMMENT '上传操作人ID', `uploaded_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '附件上传时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_truck_attachment` (`appointment_id`,`file_id`), KEY `idx_truck_attachment` (`appointment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拖车附件文件引用'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_truck_appointment_history`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_truck_appointment_history` ( `id` bigint unsigned NOT NULL COMMENT '拖车预约历史ID', `appointment_id` bigint unsigned NOT NULL COMMENT '所属拖车预约ID', `revision` int unsigned NOT NULL COMMENT '该预约业务修订号', `action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发状态或改约的业务动作', `from_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更前拖车状态;创建时为空', `to_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '变更后拖车状态;改约时可保持原状态', `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '状态或改约原因', `operator_id` bigint unsigned NOT NULL COMMENT '执行操作的平台用户ID', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作人姓名快照', `request_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '请求链路中的请求ID', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史记录创建时间', PRIMARY KEY (`id`), KEY `idx_truck_history` (`appointment_id`,`revision`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拖车状态与改约历史'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `fl_truck_appointment_operation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `fl_truck_appointment_operation` ( `id` bigint unsigned NOT NULL COMMENT '拖车写操作幂等记录ID', `appointment_id` bigint unsigned NOT NULL COMMENT '所属拖车预约ID', `idempotency_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户端写操作幂等键', `request_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '规范化请求内容SHA-256摘要;用于识别同键不同请求', `action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '执行的拖车业务动作', `response_snapshot` json DEFAULT NULL COMMENT '成功响应JSON快照;供相同幂等请求重放', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '幂等记录创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_truck_operation` (`idempotency_key`), KEY `idx_truck_operation_appointment` (`appointment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拖车操作幂等记录'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `sys_audit_outbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_audit_outbox` ( `event_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '审计事件全局唯一ID', `event_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '审计事件类型', `resource_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '被审计业务资源类型', `resource_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '被审计业务资源ID;无法确定时为空', `service_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '产生审计事件的服务名称', `payload_json` json NOT NULL COMMENT '待发送的审计事件完整负载快照', `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT '发送状态:PENDING待发送、SENDING发送中、SENT已发送、DEAD已转死信', `attempt_count` int NOT NULL DEFAULT '0' COMMENT '正常发送累计尝试次数', `compensation_count` int NOT NULL DEFAULT '0' COMMENT '人工或自动补偿累计次数', `next_retry_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '允许下次重试的最早时间', `lease_owner` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前发送任务租约持有者标识', `lease_until` datetime(3) DEFAULT NULL COMMENT '当前发送任务租约到期时间', `last_error` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最近一次发送失败原因', `dead_at` datetime(3) DEFAULT NULL COMMENT '转入死信状态的时间', `sent_at` datetime(3) DEFAULT 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 '记录最后更新时间', PRIMARY KEY (`event_id`), KEY `idx_audit_outbox_publish` (`status`,`next_retry_at`,`lease_until`,`created_at`), KEY `idx_audit_outbox_retention` (`status`,`sent_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='可靠审计事件本地发送箱'; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;