Files
baiyue-firstleg/output/local-schema-repair/actual-incremental-review.sql
T
2026-10-20 11:33:20 +08:00

2420 lines
146 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 本次本机结构修复的实际增量,仅用于审阅与原始快照对照。已执行,禁止在当前库重复执行。
SET NAMES utf8mb4;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='业务事件人工重试审计,与恢复待发送状态同事务提交';
USE `baiyue_lastleg`;
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='预约货物核实资料及不可覆盖的版本历史';
USE `baiyue_lastleg`;
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='真实在途货源的预约筹划联系记录,追加留痕';
USE `baiyue_lastleg`;
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='一柜一个稳定船期变化核对事项,不改写预约或运输';
USE `baiyue_lastleg`;
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='船期观察及人工处理追加历史';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_cargo_discard_carton` ADD COLUMN `source_type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DROPSHIP' COMMENT '箱子来源:一件代发DROPSHIP、入仓箱INBOUND、转运箱TRANSFER';
USE `baiyue_lastleg`;
ALTER TABLE `ll_cargo_discard_item` ADD UNIQUE KEY `uk_ll_discard_position_sku` (`application_id`,`inventory_position_id`,`sku_code`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='正常签收事实变化的本地持久待汇总信号';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='整车排车公共持久命令账本';
USE `baiyue_lastleg`;
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='整车排车唯一派送安排事实';
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_draft` ADD COLUMN `warehouse_id` bigint DEFAULT NULL COMMENT '本草稿唯一起运公共仓库引用';
ALTER TABLE `ll_dispatch_draft` ADD COLUMN `record_version` bigint NOT NULL DEFAULT '0' COMMENT '草稿并发版本,显式零版本合法';
ALTER TABLE `ll_dispatch_draft` ADD COLUMN `sources_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '服务端核验的真实来源及客户版本快照数组';
USE `baiyue_lastleg`;
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='智能排车草稿持久命令及原结果';
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_draft_container` ADD COLUMN `source_keys_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '本装车容器已取得本草稿占用的来源键数组';
ALTER TABLE `ll_dispatch_draft_container` ADD UNIQUE KEY `uk_ll_dispatch_draft_container_sequence` (`draft_id`,`sequence_no`);
USE `baiyue_lastleg`;
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='整车排车版本与审核轮次的追加历史';
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_item` ADD COLUMN `customer_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本条真实客户名称快照';
ALTER TABLE `ll_dispatch_item` ADD COLUMN `source_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本条货物稳定权威来源键';
ALTER TABLE `ll_dispatch_item` ADD COLUMN `source_version` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '选货时核对的真实来源版本摘要';
ALTER TABLE `ll_dispatch_item` ADD COLUMN `source_snapshot_json` json DEFAULT NULL COMMENT '本条货物不可变来源及关联事实快照';
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_order` ADD COLUMN `trip_id` bigint DEFAULT NULL COMMENT '本趟唯一车辆资源记录ID';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `overseas_warehouse_code` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运海外仓编码快照';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `stage` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BEFORE_LOADING' COMMENT '作业阶段:BEFORE_LOADING装车前、LOADING装车中、AFTER_LOADING装车后、DELIVERING派送中、DELIVERED派送完成';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `record_version` bigint NOT NULL DEFAULT '0' COMMENT '整车公共并发版本,首版为零';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `cargo_revision` bigint NOT NULL DEFAULT '0' COMMENT '本趟货物修订版本';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `cargo_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前整车真实货物及来源摘要';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `review_state` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'DRAFT' COMMENT '审核子流程当前状态';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `review_round` bigint NOT NULL DEFAULT '0' COMMENT '当前审核轮次';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `review_basis_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本审核轮次核对的货物和资源依据摘要';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `dispatch_review_json` json DEFAULT NULL COMMENT '当前调度审核事实快照';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `loading_review_json` json DEFAULT NULL COMMENT '当前理货审核事实快照';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `resources_json` json DEFAULT NULL COMMENT '本趟主档或临时车辆司机的真实资源快照';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `planned_departure_at` datetime(3) DEFAULT NULL COMMENT '计划发车时间,草稿未知时为空';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `loading_completed_at` datetime(3) DEFAULT NULL COMMENT '实际确认装车完成时间';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `loading_completion_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '实际装车完成事实摘要';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `loading_confirmation_json` json DEFAULT NULL COMMENT '装车确认时逐实托真实实载完整快照';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `arrangement_key` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本车唯一派送安排事实标识';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `arrangement_business_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '本车派送安排业务内容摘要';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `departed_at` datetime(3) DEFAULT NULL COMMENT '本趟实际发车时间';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `delivery_completed_at` datetime(3) DEFAULT NULL COMMENT '全部派送正常签收后的整车完成时间';
ALTER TABLE `ll_dispatch_order` ADD COLUMN `remark` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '排车业务备注';
ALTER TABLE `ll_dispatch_order` ADD UNIQUE KEY `uk_dispatch_trip` (`trip_id`);
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_pallet_lock` ADD COLUMN `active_warehouse_pallet_id` bigint DEFAULT NULL COMMENT '活动占用的真实仓库托盘,释放后为空,跨客户及来源别名唯一';
ALTER TABLE `ll_dispatch_pallet_lock` ADD UNIQUE KEY `uk_ll_dispatch_active_warehouse_pallet` (`active_warehouse_pallet_id`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_dispatch_pda_pick_order` ADD KEY `idx_dispatch_pick_return_receipt` (`customer_id`,`return_receipt_id`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_dropship_carton` ADD COLUMN `product_quantity` bigint DEFAULT NULL COMMENT '该箱实收商品件数';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_dropship_order_profile` ADD COLUMN `manifest_version` int DEFAULT NULL COMMENT '整托清单版本';
ALTER TABLE `ll_dropship_order_profile` ADD COLUMN `manifest_package_count` int DEFAULT NULL COMMENT '整托总箱数';
ALTER TABLE `ll_dropship_order_profile` ADD COLUMN `manifest_fragment_count` int DEFAULT NULL COMMENT '整托客户分片总数';
ALTER TABLE `ll_dropship_order_profile` ADD COLUMN `manifest_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '整托完整清单摘要';
ALTER TABLE `ll_dropship_order_profile` ADD KEY `idx_ll_dropship_profile_manifest` (`source_pallet_no`,`manifest_hash`);
USE `baiyue_lastleg`;
ALTER TABLE `ll_dropship_sku_inventory` ADD UNIQUE KEY `uk_ll_dropship_sku_inventory` (`profile_id`,`sku_code`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_exception_order` ADD COLUMN `return_context_json` json DEFAULT NULL COMMENT '退回异常创建前的派送及尾程状态快照';
ALTER TABLE `ll_exception_order` ADD KEY `idx_ll_exception_delivery_return` (`customer_id`,`delivery_order_id`,`exception_type`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_exception_return_item` ADD COLUMN `return_carton_id` bigint DEFAULT NULL COMMENT '原生退货箱标识;与普通库存位置互斥';
ALTER TABLE `ll_exception_return_item` ADD COLUMN `return_carton_mark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原生退货箱业务箱码快照';
ALTER TABLE `ll_exception_return_item` ADD COLUMN `received_packages` bigint NOT NULL DEFAULT '0' COMMENT '已实际退回入仓的累计箱数';
ALTER TABLE `ll_exception_return_item` ADD UNIQUE KEY `uk_ll_exception_return_carton` (`customer_id`,`exception_order_id`,`outbound_pallet_item_id`,`return_carton_id`);
USE `baiyue_lastleg`;
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='预约命令与变更历史';
USE `baiyue_lastleg`;
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='独立于送货批次的收货预约';
USE `baiyue_lastleg`;
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='保留原安排且阻止误发车的客户变化';
USE `baiyue_lastleg`;
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='收货预约当前覆盖关联及退出历史';
USE `baiyue_lastleg`;
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='按批次及客户保存的未确认收货计划';
USE `baiyue_lastleg`;
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='收货预约覆盖与确认不可变历史';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_fleet_trip_dispatch` ADD UNIQUE KEY `uk_fleet_trip_dispatch_trip` (`trip_id`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `confirmation_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收货方正式外部确认号';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `planned_date` date DEFAULT NULL COMMENT '计划当地日期,可只有日期而无时段';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `planned_at` datetime(3) DEFAULT NULL COMMENT '计划开始当地时间,待定可空';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `planned_end_at` datetime(3) DEFAULT NULL COMMENT '计划结束当地时间';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `appointment_start_utc` datetime(3) DEFAULT NULL COMMENT '确认开始UTC时间点';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `appointment_end_utc` datetime(3) DEFAULT NULL COMMENT '确认结束UTC时间点';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `timezone` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的仓权威IANA时区,未维护不得确认';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `origin_warehouse_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际起运仓';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `replacement_keys_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '替代批次不可变键列表,只用于内部业务关联';
ALTER TABLE `ll_inbound_fba_appointment` ADD COLUMN `repartition_reason` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分批或合并原因,原安排及来源明细保留';
ALTER TABLE `ll_inbound_fba_appointment` ADD KEY `idx_ll_fba_appointment_planned` (`planned_at`,`appointment_status`);
USE `baiyue_lastleg`;
ALTER TABLE `ll_inbound_fba_appointment_item` ADD COLUMN `cargo_verification_version` int DEFAULT NULL COMMENT '采用的预约货物核实版本,未核实时为空';
ALTER TABLE `ll_inbound_fba_appointment_item` ADD COLUMN `shipment_references_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '本次采用的货件或追踪号核实快照';
ALTER TABLE `ll_inbound_fba_appointment_item` ADD KEY `idx_ll_fba_active_source` (`customer_id`,`source_key`,`active`);
ALTER TABLE `ll_inbound_fba_appointment_item` ADD KEY `idx_ll_fba_active_order` (`customer_id`,`order_id`,`active`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_inbound_plan_pallet` ADD KEY `idx_ll_inbound_pallet_no` (`pallet_no`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `product_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品名称';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `estimated_pallet_count` int DEFAULT NULL COMMENT '客户申报预计托数,不代表实际收货';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `origin_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系人';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `origin_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系电话';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `destination_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系人';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `destination_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系电话';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `pickup_at` datetime(3) DEFAULT NULL COMMENT '取货时间(当地时间,不转换时区)';
ALTER TABLE `ll_local_looseboard_order` ADD COLUMN `delivery_at` datetime(3) DEFAULT NULL COMMENT '送货时间(当地时间,不转换时区)';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `dispatch_item_id` bigint DEFAULT NULL COMMENT '本次整车排车作业明细ID';
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `source_attribution_id` bigint DEFAULT NULL COMMENT '不可变PDA真实拣货归属ID';
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `source_order_id` bigint DEFAULT NULL COMMENT '本行真实来源尾程订单ID';
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `source_inventory_position_id` bigint DEFAULT NULL COMMENT '本行实际拣货库存仓位ID';
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `source_return_receipt_id` bigint DEFAULT NULL COMMENT '本行实际退回再派实收记录ID';
ALTER TABLE `ll_outbound_pallet_item` ADD COLUMN `source_return_carton_id` bigint DEFAULT NULL COMMENT '本行实际退货换标来源箱ID';
ALTER TABLE `ll_outbound_pallet_item` ADD UNIQUE KEY `uk_outbound_source_attribution` (`customer_id`,`source_attribution_id`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `purpose` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用业务用途;由履约节点确定';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `confirmation_origin` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BUSINESS' COMMENT '核定入口:BUSINESS业务节点、FINANCIAL财务操作';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `fee_version` int DEFAULT NULL COMMENT '同用途费用确认版本';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否当前有效版本';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `determination` varchar(24) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'POSITIVE正额、ZERO零元、NOT_APPLICABLE不适用';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `original_currency` char(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '核定原币CNY或USD';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `original_amount` decimal(20,2) DEFAULT NULL COMMENT '核定原币金额';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `exchange_rate` decimal(20,6) DEFAULT NULL COMMENT '已确认汇率快照';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `exchange_rate_month` char(7) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '已确认汇率所属月份';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `business_date` date DEFAULT NULL COMMENT '实际费用业务日期';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `wallet_business_id` bigint DEFAULT NULL COMMENT '资金冻结对应采购费用记录';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `wallet_business_no` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金冻结业务号;实际国际运费引用原预估';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `wallet_hold_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance冻结引用';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `wallet_ledger_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Finance实际处理流水引用';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `settled_command_event_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '成功实扣或退款的资金命令事件';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `source_fee_id` bigint DEFAULT NULL COMMENT '已实扣费用来源ID';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `parent_fee_id` bigint DEFAULT NULL COMMENT '原费用或预估引用';
ALTER TABLE `ll_overseas_procurement_fee` ADD COLUMN `request_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '确认请求摘要';
ALTER TABLE `ll_overseas_procurement_fee` ADD UNIQUE KEY `uk_ll_procurement_fee_version` (`order_id`,`purpose`,`fee_item_code`,`fee_version`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_overseas_procurement_status_history` ADD COLUMN `operation_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作类型:CREATE、REVIEW或UPDATE';
ALTER TABLE `ll_overseas_procurement_status_history` ADD COLUMN `change_detail` json DEFAULT NULL COMMENT '字段变更前后值JSON';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='采购货款预算授权核验历史';
USE `baiyue_lastleg`;
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='采购版本化逐箱实测与件数';
USE `baiyue_lastleg`;
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='采购箱内货物的实收来源与数量';
USE `baiyue_lastleg`;
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='采购实物资金收口后的异常关闭事实';
USE `baiyue_lastleg`;
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='异常关闭逐来源剩余货物最终去向,不产生新发运';
USE `baiyue_lastleg`;
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='采购节点幂等与不可变审计';
USE `baiyue_lastleg`;
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='采购不可覆盖事实的更正说明及阻断异常';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='采购单内差异处置,不自动退款';
USE `baiyue_lastleg`;
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='面单清单与预估冻结的显式核对关联';
USE `baiyue_lastleg`;
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='采购费用链更正目标与原汇率快照';
USE `baiyue_lastleg`;
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='采购费用目标更正与逐笔资金事实关联';
USE `baiyue_lastleg`;
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='采购单一批次履约事实';
USE `baiyue_lastleg`;
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='采购逐箱文件页关联及贴单事实';
USE `baiyue_lastleg`;
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='采购两段面单不可变版本和地址快照';
USE `baiyue_lastleg`;
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='采购装箱清单不可变版本';
USE `baiyue_lastleg`;
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='采购分次实收与受控更正事实';
USE `baiyue_lastleg`;
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='采购国内原箱一对一换包装不可变历史';
USE `baiyue_lastleg`;
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='采购两段各一次整批真实交寄';
USE `baiyue_lastleg`;
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='采购整批交寄逐箱事实';
USE `baiyue_lastleg`;
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='采购费用资金命令尝试与不可变结果';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_receiving_container_session` ADD COLUMN `source_container_booking_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '稳定来源柜预订ID';
ALTER TABLE `ll_receiving_container_session` ADD COLUMN `container_fact_hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '领取时整柜订单与计划事实摘要';
ALTER TABLE `ll_receiving_container_session` ADD COLUMN `overseas_warehouse_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '海外接柜仓业务编码快照';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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实际回仓的不可变凭据';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_return_inventory_outbound_movement` ADD COLUMN `return_sku_quantity` bigint DEFAULT NULL COMMENT '退货单SKU本来源计划出库件数快照,NULL为历史整箱出库';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_return_packing_plan` ADD KEY `idx_ll_return_packing_plan_warehouse` (`overseas_warehouse_id`,`status`,`pushed_at`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
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='历史日末分货主商品品质实物库存';
USE `baiyue_lastleg`;
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='历史日库存不可变版本及原子发布日头';
USE `baiyue_lastleg`;
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='自营历史库存流水最新事实,旧版本保留于暂存证据';
USE `baiyue_lastleg`;
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='产品库存全量批次明细';
USE `baiyue_lastleg`;
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='账号共享出库目录与详情发现协调作用域';
USE `baiyue_lastleg`;
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='整单替换的实际出库明细';
USE `baiyue_lastleg`;
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='最后确认的单据事实';
USE `baiyue_lastleg`;
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='自营领星货主资料版本';
USE `baiyue_lastleg`;
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='自营领星商品资料版本';
USE `baiyue_lastleg`;
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='完整销量版本的稀疏日事实';
USE `baiyue_lastleg`;
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 维度与观察依据';
USE `baiyue_lastleg`;
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='执行尝试、覆盖证明和版本头';
USE `baiyue_lastleg`;
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='分仓任务族租约及发布指针';
USE `baiyue_lastleg`;
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='待验证事实与修订证据';
USE `baiyue_lastleg`;
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='一次计划或人工请求';
USE `baiyue_lastleg`;
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日事实批次原子构建';
USE `baiyue_lastleg`;
ALTER TABLE `ll_us_truck_order` ADD COLUMN `vehicle_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '车辆类型:PALLET_15为15拖,PALLET_30为30拖;拼车未提供时为空';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `origin_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系人';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `origin_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '起运地联系电话';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `destination_contact_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系人';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `destination_contact_phone` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的地联系电话';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `pickup_at` datetime DEFAULT NULL COMMENT '取货时间,按填写的日期时分保存,不转换时区';
ALTER TABLE `ll_us_truck_order` ADD COLUMN `delivery_at` datetime DEFAULT NULL COMMENT '送货时间,按填写的日期时分保存;拼车来源未提供时为空';
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
ALTER TABLE `ll_warehouse_transfer_inventory_allocation` ADD KEY `idx_ll_wh_transfer_allocation_position` (`transfer_order_id`,`inventory_position_id`);
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_lastleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='业务事件人工重试审计,与恢复待发送状态同事务提交';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_carrier_schedule_node_fact` ADD KEY `idx_container_shipping_node_timeline` (`container_booking_id`,`observed_at`,`id`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='客户计费重独立确认历史';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_container_booking` ADD UNIQUE KEY `uk_container_booking_ocean_container` (`ocean_booking_id`,`container_no`);
ALTER TABLE `fl_container_booking` ADD KEY `idx_container_booking_container_no` (`container_no`,`updated_at`,`id`);
ALTER TABLE `fl_container_booking` ADD KEY `idx_container_booking_merge` (`record_status`,`merged_into_container_booking_id`);
ALTER TABLE `fl_container_booking` ADD KEY `idx_container_booking_transit_summary` (`actual_sailing_at`,`actual_warehouse_arrival_at`,`ocean_booking_id`,`container_type`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_container_fee_detail` ADD KEY `idx_container_fee_review` (`tenant_id`,`review_status`,`source_status`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_container_transport_history` ADD UNIQUE KEY `uk_container_transport_history_operation` (`container_booking_id`,`operator_id`,`operation_id`);
USE `baiyue_firstleg`;
ALTER TABLE `fl_customer_charge_rule` ADD KEY `idx_charge_rule_initialization` (`tenant_id`,`initialization_key`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='冻结退税报关资料首次发送报关行批次事实';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='正式申报后的海关结果不可变事实';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='客户报关行回执确认与打回不可变历史';
USE `baiyue_firstleg`;
ALTER TABLE `fl_customs_completion_document` ADD COLUMN `customer_confirm_status` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT '客户回执确认状态:PENDING/CONFIRMED/REJECTED';
ALTER TABLE `fl_customs_completion_document` ADD COLUMN `customer_confirmed_by` bigint unsigned DEFAULT NULL COMMENT '客户确认人ID';
ALTER TABLE `fl_customs_completion_document` ADD COLUMN `customer_confirmed_by_name` varchar(64) DEFAULT NULL COMMENT '客户确认人名称快照';
ALTER TABLE `fl_customs_completion_document` ADD COLUMN `customer_confirmed_at` datetime(3) DEFAULT NULL COMMENT '客户确认时间';
ALTER TABLE `fl_customs_completion_document` ADD COLUMN `customer_reject_reason` varchar(500) DEFAULT NULL COMMENT '客户打回原因';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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='整柜正式申报批次事实';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_fee_item` ADD COLUMN `default_price` decimal(12,2) DEFAULT NULL COMMENT '默认价格CNY;仅选费带入,实际费用可修改';
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_inbound_measurement` ADD KEY `idx_measure_inbound_status_id` (`tenant_id`,`inbound_id`,`status`,`id`);
USE `baiyue_firstleg`;
ALTER TABLE `fl_inbound_measurement_item` ADD KEY `idx_measure_item_candidate` (`tenant_id`,`measurement_id`,`inbound_detail_id`);
USE `baiyue_firstleg`;
ALTER TABLE `fl_inbound_order` ADD KEY `idx_inbound_smart_loading` (`warehouse_id`,`process_status`,`channel_code`,`expected_arrival_at`,`id`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_inbound_split_item` ADD KEY `idx_inbound_split_candidate` (`tenant_id`,`parent_inbound_id`,`source_inbound_detail_id`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_loading_plan_item` ADD UNIQUE KEY `uk_loading_item_plan_assignment` (`loading_plan_id`,`active_assignment_key`);
ALTER TABLE `fl_loading_plan_item` ADD KEY `idx_loading_item_candidate` (`account_id`,`inbound_id`,`inbound_detail_id`,`deleted`);
ALTER TABLE `fl_loading_plan_item` ADD KEY `idx_loading_item_pallet` (`pallet_id`,`deleted`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_ocean_booking` ADD UNIQUE KEY `uk_ocean_booking_bill_of_lading` (`bill_of_lading_no`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
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;
USE `baiyue_firstleg`;
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='船期日历自动归班事实及不可变版本历史';
USE `baiyue_firstleg`;
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='船期计划与已放舱订舱的最小关联及历史';
USE `baiyue_firstleg`;
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;
USE `baiyue_firstleg`;
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;
USE `baiyue_firstleg`;
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='船期日历未收货量预报事实及版本历史';
USE `baiyue_firstleg`;
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='船期日历稳定收货批次实测事实及版本历史';
USE `baiyue_firstleg`;
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;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
ALTER TABLE `fl_truck_appointment` ADD UNIQUE KEY `uk_truck_active_ocean_booking` (`active_ocean_booking_id`);
ALTER TABLE `fl_truck_appointment` ADD KEY `idx_truck_appointment_ocean` (`ocean_booking_id`);
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;
USE `baiyue_firstleg`;