-- Run this script against the configured planning MySQL/MariaDB database. -- Keep this table independent from alibaba_1688_products so deletion/re-import -- cannot bypass the one-encoding-per-1688-ID rule. CREATE TABLE IF NOT EXISTS alibaba_1688_product_encodings ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编码登记主键', product_id VARCHAR(80) NOT NULL COMMENT '1688 商品 ID,全局唯一且删除商品后仍保留', status VARCHAR(20) NOT NULL DEFAULT 'encoding' COMMENT 'encoding/encoded/failed/conflict', claim_token CHAR(36) NULL COMMENT '本次编码占用令牌', request_json LONGTEXT NULL COMMENT '提交编码服务的完整业务参数', response_json LONGTEXT NULL COMMENT '编码服务原始成功响应', style_code VARCHAR(160) NULL COMMENT '主款式编码', style_codes_json LONGTEXT NULL COMMENT '全部款式编码', product_codes_json LONGTEXT NULL COMMENT '全部规格商品编码', sku_mapping_json LONGTEXT NULL COMMENT '1688 SKU 与商品编码映射', source_sku_count INT NULL COMMENT '编码时的 SKU 数量', source_sku_fingerprint CHAR(64) NULL COMMENT '编码时的有序 SKU 规格指纹', upstream_created TINYINT(1) NULL COMMENT '上游本次是否新建编码', operator_user_id VARCHAR(120) NULL COMMENT '编码操作人用户 ID', operator_name VARCHAR(120) NULL COMMENT '编码操作人', operator_department VARCHAR(120) NULL COMMENT '编码操作人部门', attempt_count INT NOT NULL DEFAULT 1 COMMENT '提交尝试次数', started_at DATETIME NULL COMMENT '最近一次提交开始时间', encoded_at DATETIME NULL COMMENT '编码成功时间', last_error VARCHAR(1000) NULL COMMENT '最近一次失败原因', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', UNIQUE KEY uk_alibaba_1688_encoding_product (product_id), KEY idx_alibaba_1688_encoding_status (status, updated_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='1688 商品一次性编码登记';