-- prc_billing_task add fail_code for abnormal-task search ALTER TABLE prc_billing_task ADD COLUMN fail_code varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '失败码' AFTER bill_id, ADD KEY idx_billing_task_fail_code (fail_code); -- backfill known historical FAILED rows UPDATE prc_billing_task SET fail_code = 'NO_CUSTOMER_PACKAGE' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%未绑定套餐%'; UPDATE prc_billing_task SET fail_code = 'ALREADY_IN_AR_BILL' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%已生成应收账单%'; UPDATE prc_billing_task SET fail_code = 'PRODUCT_ARCHIVE_MISSING' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%未找到有效产品档案%'; UPDATE prc_billing_task SET fail_code = 'ZONE_PRICE_NOT_HIT' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%该分区无对应产品重量段%'; UPDATE prc_billing_task SET fail_code = 'PRICE_NOT_HIT' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%没有产品/国家/重量段%'; UPDATE prc_billing_task SET fail_code = 'POSTCODE_REQUIRED' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%请填写目的邮编%'; UPDATE prc_billing_task SET fail_code = 'POSTCODE_ZONE_NOT_FOUND' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%邮编未匹配到分区%'; UPDATE prc_billing_task SET fail_code = 'ORACLE_ORDER_NOT_FOUND' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%Oracle main order not found%'; UPDATE prc_billing_task SET fail_code = 'ORACLE_ORDERNO_EMPTY' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%mapped orderNo empty%'; UPDATE prc_billing_task SET fail_code = 'ORACLE_CUSTOMER_EMPTY' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%mapped customerCode empty%'; UPDATE prc_billing_task SET fail_code = 'ORACLE_PRODUCT_EMPTY' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%mapped productCode empty%'; UPDATE prc_billing_task SET fail_code = 'ORACLE_WEIGHT_INVALID' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%mapped weight invalid%'; UPDATE prc_billing_task SET fail_code = 'BILL_TIME_EMPTY' WHERE success_status = 'FAILED' AND fail_code IS NULL AND (error_message LIKE '%billTime empty%' OR error_message LIKE '%billTime required%'); UPDATE prc_billing_task SET fail_code = 'REFUND_ORDER_UNRESOLVED' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%退费订单号无法解析%'; UPDATE prc_billing_task SET fail_code = 'CUSTOMER_DISABLED' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%客户已停用%'; UPDATE prc_billing_task SET fail_code = 'FREIGHT_MISSING' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message LIKE '%运费为空%'; UPDATE prc_billing_task SET fail_code = 'UNKNOWN' WHERE success_status = 'FAILED' AND fail_code IS NULL AND error_message IS NOT NULL AND error_message <> '';