package com.datai.salesforce.common.constant;

/**
 * Salesforce常量类 - 统一管理Salesforce相关常量
 *
 * 该类按照不同类别组织Salesforce相关常量，包括API版本、连接端点、
 * 连接类型、日志消息模板等，便于维护和使用。
 *
 * 设计特点：
 * 1. 按功能模块分类，结构清晰
 * 2. 使用final修饰，确保常量不可修改
 * 3. 使用static修饰，便于直接访问
 * 4. 提供完整的注释，便于理解和使用
 *
 * @author datai
 * @since 1.0.0
 */
public final class SalesforceConstants {

    /**
     * 私有构造函数，防止实例化
     */
    private SalesforceConstants() {
        throw new UnsupportedOperationException("This class cannot be instantiated");
    }

    // ================================= API版本常量 =================================
    
    /**
     * REST API版本
     */
    public static final String REST_API_VERSION = "v59.0";
    
    /**
     * Bulk API v1版本
     */
    public static final String BULK_V1_API_VERSION = "47.0";
    
    /**
     * Bulk API v2版本
     */
    public static final String BULK_V2_API_VERSION = "v59.0";

    // ================================= 连接端点常量 =================================
    
    /**
     * REST API端点后缀
     */
    public static final String REST_ENDPOINT_SUFFIX = "/services/data/";
    
    /**
     * Bulk API v1端点后缀
     */
    public static final String BULK_V1_ENDPOINT_SUFFIX = "/services/async/";
    
    /**
     * Bulk API v2端点后缀
     */
    public static final String BULK_V2_ENDPOINT_SUFFIX = "/services/data/" + BULK_V2_API_VERSION + "/jobs/";
    
    /**
     * SOAP API端点后缀
     */
    public static final String SOAP_ENDPOINT_SUFFIX = "/services/Soap/u/" + REST_API_VERSION.replace("v", "") + "/";

    // ================================= 连接类型常量 =================================
    
    /**
     * 连接类型 - SOAP
     */
    public static final String CONNECTION_TYPE_SOAP = "SOAP";
    
    /**
     * 连接类型 - REST
     */
    public static final String CONNECTION_TYPE_REST = "REST";
    
    /**
     * 连接类型 - Bulk API v1
     */
    public static final String CONNECTION_TYPE_BULK_V1 = "BULK_V1";
    
    /**
     * 连接类型 - Bulk API v2
     */
    public static final String CONNECTION_TYPE_BULK_V2 = "BULK_V2";

    // ================================= 连接缓存常量 =================================

    
    /**
     * 配置缓存键 - 源 ORG
     */
    public static final String SESSION_CONFIG_SOURCE = "SOURCE_SESSION_CONFIG";

    /**
     * 配置缓存键 - 目标 ORG
     */
    public static final String SESSION_CONFIG_TARGET = "TARGET_SESSION_CONFIG";

    // ================================= 日志消息模板 =================================
    
    /**
     * 创建并缓存源ORG连接的日志模板
     */
    public static final String LOG_CREATE_CACHE_SOURCE_CONNECTION = "创建并缓存{}连接实例";
    
    /**
     * 创建并缓存目标ORG连接的日志模板
     */
    public static final String LOG_CREATE_CACHE_TARGET_CONNECTION = "创建并缓存目标ORG的{}连接实例";
    
    /**
     * 清除源ORG连接的日志模板
     */
    public static final String LOG_CLEAR_SOURCE_CONNECTION = "{}连接已清除";
    
    /**
     * 清除目标ORG连接的日志模板
     */
    public static final String LOG_CLEAR_TARGET_CONNECTION = "目标ORG的{}连接已清除";
    
    /**
     * 未找到源ORG连接的日志模板
     */
    public static final String LOG_NOT_FOUND_SOURCE_CONNECTION = "没有找到{}连接";
    
    /**
     * 未找到目标ORG连接的日志模板
     */
    public static final String LOG_NOT_FOUND_TARGET_CONNECTION = "没有找到目标ORG的{}连接";
    
    /**
     * 创建连接失败的日志模板
     */
    public static final String LOG_CREATE_CONNECTION_FAILED = "创建{}ORG的{}连接失败: {}";

    // ================================= 异常消息模板 =================================
    
    /**
     * 创建连接失败的异常消息模板
     */
    public static final String EXCEPTION_CREATE_CONNECTION_FAILED = "创建{}ORG的{}连接失败: {}";

    // ================================= 连接工厂相关常量 =================================
    
    /**
     * 连接配置已清除的消息
     */
    public static final String CONNECTION_CONFIG_CLEARED = "连接配置已清除";
    
    /**
     * 未找到连接配置的消息
     */
    public static final String CONNECTION_CONFIG_NOT_FOUND = "未找到连接配置";

    // ================================= 其他常量 =================================
    
    /**
     * 序列化版本号
     */
    public static final long SERIAL_VERSION_UID = 1L;
    
    /**
     * 默认的批处理大小
     */
    public static final int DEFAULT_BATCH_SIZE = 10000;
    
    /**
     * 默认的查询超时时间（毫秒）
     */
    public static final long DEFAULT_QUERY_TIMEOUT = 300000L;
    
    /**
     * 默认的连接超时时间（毫秒）
     */
    public static final int DEFAULT_CONNECTION_TIMEOUT = 60000;
    
    /**
     * 默认的读取超时时间（毫秒）
     */
    public static final int DEFAULT_READ_TIMEOUT = 60000;

    // ================================= HTTP相关常量 =================================
    
    /**
     * HTTP GET方法
     */
    public static final String HTTP_METHOD_GET = "GET";
    
    /**
     * HTTP POST方法
     */
    public static final String HTTP_METHOD_POST = "POST";
    
    /**
     * HTTP PUT方法
     */
    public static final String HTTP_METHOD_PUT = "PUT";
    
    /**
     * HTTP PATCH方法
     */
    public static final String HTTP_METHOD_PATCH = "PATCH";
    
    /**
     * HTTP DELETE方法
     */
    public static final String HTTP_METHOD_DELETE = "DELETE";
    
    /**
     * 内容类型 - JSON
     */
    public static final String CONTENT_TYPE_JSON = "application/json";
    
    /**
     * 内容类型 - CSV
     */
    public static final String CONTENT_TYPE_CSV = "text/csv";
    
    /**
     * 内容类型 - XML
     */
    public static final String CONTENT_TYPE_XML = "application/xml";
    
    /**
     * 授权头前缀
     */
    public static final String AUTH_HEADER_PREFIX = "Bearer ";
    
    /**
     * 授权头名称
     */
    public static final String AUTH_HEADER_NAME = "Authorization";
    
    /**
     * 内容类型头名称
     */
    public static final String CONTENT_TYPE_HEADER = "Content-Type";
    
    /**
     * 接受内容类型头名称
     */
    public static final String ACCEPT_HEADER = "Accept";
    
    // ================================= Bulk API 相关常量 =================================
    
    /**
     * Salesforce调用选项头
     */
    public static final String SFORCE_CALL_OPTIONS_HEADER = "Sforce-Call-Options";
    
    /**
     * UTF-8编码
     */
    public static final String UTF_8 = "UTF-8";
    
    /**
     * 授权头值前缀
     */
    public static final String AUTH_HEADER_VALUE_PREFIX = "Bearer ";
    
    /**
     * 请求内容类型头
     */
    public static final String REQUEST_CONTENT_TYPE_HEADER = "Content-Type";
    
    /**
     * 接受内容类型头
     */
    public static final String ACCEPT_CONTENT_TYPES_HEADER = "Accept";
    
    /**
     * 授权头
     */
    public static final String AUTH_HEADER = "Authorization";

    /**
     * Bulk API V2 导入作业的路径前缀
     * 完整路径示例: /services/data/v60.0/jobs/ingest/
     */
    public static final String URI_STEM_INGEST = "/jobs/ingest/";

    /**
     * Bulk API V2 查询作业的路径前缀
     * 完整路径示例: /services/data/v60.0/jobs/query/
     */
    public static final String URI_STEM_QUERY = "/jobs/query/";

    /**
     * 摄取结果 - 成功
     */
    public static final String INGEST_RESULTS_SUCCESSFUL = "successfulResults/";
    
    /**
     * 摄取结果 - 失败
     */
    public static final String INGEST_RESULTS_UNSUCCESSFUL = "failedResults/";
    
    /**
     * 摄取记录 - 未处理
     */
    public static final String INGEST_RECORDS_UNPROCESSED = "unprocessedrecords/";
    
    /**
     * 方法 - GET
     */
    public static final String METHOD_GET = "GET";
    
    /**
     * 方法 - POST
     */
    public static final String METHOD_POST = "POST";
    
    /**
     * 方法 - PATCH
     */
    public static final String METHOD_PATCH = "PATCH";
    
    /**
     * 方法 - PUT
     */
    public static final String METHOD_PUT = "PUT";

    // ================================= 日期格式常量 =================================

    /**
     * Salesforce 日期时间格式
     * 格式示例: 2024-01-01T00:00:00.000Z
     */
    public static final String SF_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

    /**
     * Salesforce 日期格式
     * 格式示例: 2024-01-01
     */
    public static final String SF_DATE_ONLY_FORMAT = "yyyy-MM-dd";


    public static final String SF_DATE_FORMAT_BULK = "yyyy-MM-dd'T'HH:mm:ss.SSSX";
    /**
     * sf 时间格式
     */
    public static final String SF_TIME_FORMAT = "HH:mm:ss.SSS'Z'";

    // ================================= 批次处理常量 =================================

    /**
     * 大批次大小（外层批次）
     * 用于大批次数据处理，每批处理10000条记录
     */
    public static final int LARGE_BATCH_SIZE = 10000;

    /**
     * 小批次大小（API调用批次）
     * 用于API调用批次，每批处理200条记录
     */
    public static final int SMALL_BATCH_SIZE = 200;

    /**
     * 批次间休眠时间（毫秒）
     * 用于避免API限流
     */
    public static final long BATCH_SLEEP_MS = 1L;

    /**
     * 日志输出间隔
     * 每处理多少个批次输出一次日志
     */
    public static final int LOG_OUTPUT_INTERVAL = 10;

    // ================================= 数据同步状态常量 =================================

    /**
     * 同步状态 - 未同步
     */
    public static final int SYNC_STATUS_NOT_SYNCED = 0;

    /**
     * 同步状态 - 已同步
     */
    public static final int SYNC_STATUS_SYNCED = 1;

    /**
     * 同步状态 - 同步失败
     */
    public static final int SYNC_STATUS_FAILED = 2;

    // ================================= 重试相关常量 =================================

    /**
     * 最大重试次数
     */
    public static final int MAX_RETRY_COUNT = 3;

    /**
     * 重试延迟时间（毫秒）
     */
    public static final long RETRY_DELAY_MS = 1000L;

    // ================================= 时间转换常量 =================================

    /**
     * 毫秒转秒的转换因子
     */
    public static final int MILLIS_PER_SECOND = 1000;

    // ================================= 数据库字段名常量 =================================

    /**
     * 数据库字段名 - new_id
     */
    public static final String DB_FIELD_NEW_ID = "new_id";

    /**
     * 数据库字段名 - is_insert
     */
    public static final String DB_FIELD_IS_INSERT = "is_insert";

    /**
     * 数据库字段名 - is_update
     */
    public static final String DB_FIELD_IS_UPDATE = "is_update";

    /**
     * 数据库字段名 - error_message
     */
    public static final String DB_FIELD_ERROR_MESSAGE = "error_message";

    /**
     * 数据库字段名 - id
     */
    public static final String DB_FIELD_ID = "id";

    // ================================= 结果键名常量 =================================

    /**
     * 结果键名 - success
     */
    public static final String RESULT_KEY_SUCCESS = "success";

    /**
     * 结果键名 - message
     */
    public static final String RESULT_KEY_MESSAGE = "message";

    /**
     * 结果键名 - batchId
     */
    public static final String RESULT_KEY_BATCH_ID = "batchId";

    /**
     * 结果键名 - api
     */
    public static final String RESULT_KEY_API = "api";

    /**
     * 结果键名 - label
     */
    public static final String RESULT_KEY_LABEL = "label";

    /**
     * 结果键名 - targetOrgType
     */
    public static final String RESULT_KEY_TARGET_ORG_TYPE = "targetOrgType";

    /**
     * 结果键名 - totalCount
     */
    public static final String RESULT_KEY_TOTAL_COUNT = "totalCount";

    /**
     * 结果键名 - successCount
     */
    public static final String RESULT_KEY_SUCCESS_COUNT = "successCount";

    /**
     * 结果键名 - failureCount
     */
    public static final String RESULT_KEY_FAILURE_COUNT = "failureCount";

    /**
     * 结果键名 - duration
     */
    public static final String RESULT_KEY_DURATION = "duration";

    /**
     * 结果键名 - failedRecords
     */
    public static final String RESULT_KEY_FAILED_RECORDS = "failedRecords";

    /**
     * 结果键名 - data
     */
    public static final String RESULT_KEY_DATA = "data";

    /**
     * 结果键名 - syncNum
     */
    public static final String RESULT_KEY_SYNC_NUM = "syncNum";

    /**
     * 结果键名 - syncType
     */
    public static final String RESULT_KEY_SYNC_TYPE = "syncType";

    /**
     * 结果键名 - sfNum
     */
    public static final String RESULT_KEY_SF_NUM = "sfNum";

    /**
     * 结果键名 - dbNum
     */
    public static final String RESULT_KEY_DB_NUM = "dbNum";

    /**
     * 结果键名 - firstSyncTime
     */
    public static final String RESULT_KEY_FIRST_SYNC_TIME = "firstSyncTime";

    /**
     * 结果键名 - lastSyncTime
     */
    public static final String RESULT_KEY_LAST_SYNC_TIME = "lastSyncTime";

    /**
     * 结果键名 - syncStatus
     */
    public static final String RESULT_KEY_SYNC_STATUS = "syncStatus";

    /**
     * 结果键名 - totalCount
     */
    public static final String RESULT_KEY_TOTAL_COUNT_STAT = "totalCount";

    /**
     * 结果键名 - successCount
     */
    public static final String RESULT_KEY_SUCCESS_COUNT_STAT = "successCount";

    /**
     * 结果键名 - failedCount
     */
    public static final String RESULT_KEY_FAILED_COUNT_STAT = "failedCount";

    /**
     * 结果键名 - successRate
     */
    public static final String RESULT_KEY_SUCCESS_RATE = "successRate";

    /**
     * 结果键名 - totalSfNum
     */
    public static final String RESULT_KEY_TOTAL_SF_NUM = "totalSfNum";

    /**
     * 结果键名 - totalDbNum
     */
    public static final String RESULT_KEY_TOTAL_DB_NUM = "totalDbNum";

    /**
     * 结果键名 - avgSfNum
     */
    public static final String RESULT_KEY_AVG_SF_NUM = "avgSfNum";

    /**
     * 结果键名 - avgDbNum
     */
    public static final String RESULT_KEY_AVG_DB_NUM = "avgDbNum";

    /**
     * 结果键名 - totalHistoryCount
     */
    public static final String RESULT_KEY_TOTAL_HISTORY_COUNT = "totalHistoryCount";

    /**
     * 结果键名 - totalCost
     */
    public static final String RESULT_KEY_TOTAL_COST = "totalCost";

    /**
     * 结果键名 - avgCost
     */
    public static final String RESULT_KEY_AVG_COST = "avgCost";

    /**
     * 结果键名 - syncTypeStats
     */
    public static final String RESULT_KEY_SYNC_TYPE_STATS = "syncTypeStats";

    /**
     * 结果键名 - typeCount
     */
    public static final String RESULT_KEY_TYPE_COUNT = "typeCount";

    /**
     * 结果键名 - syncNum
     */
    public static final String RESULT_KEY_SYNC_NUM_STAT = "syncNum";

    /**
     * 结果键名 - totalSyncNum
     */
    public static final String RESULT_KEY_TOTAL_SYNC_NUM = "totalSyncNum";

    /**
     * 结果键名 - minCost
     */
    public static final String RESULT_KEY_MIN_COST = "minCost";

    /**
     * 结果键名 - maxCost
     */
    public static final String RESULT_KEY_MAX_COST = "maxCost";

    // ================================= 失败记录键名常量 =================================

    /**
     * 失败记录键名 - index
     */
    public static final String FAILED_RECORD_KEY_INDEX = "index";

    /**
     * 失败记录键名 - localId
     */
    public static final String FAILED_RECORD_KEY_LOCAL_ID = "localId";

    /**
     * 失败记录键名 - newId
     */
    public static final String FAILED_RECORD_KEY_NEW_ID = "newId";

    /**
     * 失败记录键名 - reason
     */
    public static final String FAILED_RECORD_KEY_REASON = "reason";

    // ================================= 更新映射键名常量 =================================

    /**
     * 更新映射键名 - key
     */
    public static final String UPDATE_MAP_KEY = "key";

    /**
     * 更新映射键名 - value
     */
    public static final String UPDATE_MAP_VALUE = "value";

    // ================================= 日志消息常量 =================================

    /**
     * 日志消息 - 批次ID不能为空
     */
    public static final String LOG_BATCH_ID_NULL = "批次ID不能为空";

    /**
     * 日志消息 - 目标ORG类型不能为空
     */
    public static final String LOG_TARGET_ORG_TYPE_NULL = "目标ORG类型不能为空";

    /**
     * 日志消息 - 批次不存在
     */
    public static final String LOG_BATCH_NOT_EXIST = "批次不存在，批次ID: {}";

    /**
     * 日志消息 - 批次对象API为空
     */
    public static final String LOG_BATCH_API_NULL = "批次对象API为空，批次ID: {}";

    /**
     * 日志消息 - 本地表不存在
     */
    public static final String LOG_TABLE_NOT_EXIST = "本地表不存在，表名: {}";

    /**
     * 日志消息 - 无法获取目标系统连接
     */
    public static final String LOG_TARGET_CONNECTION_NULL = "无法获取目标系统连接，ORG类型: {}";

    /**
     * 日志消息 - 目标系统不存在该对象
     */
    public static final String LOG_TARGET_OBJECT_NOT_EXIST = "目标系统不存在该对象，对象API: {}";

    /**
     * 日志消息 - 本地批次没有数据
     */
    public static final String LOG_NO_BATCH_DATA = "本地批次没有数据，表名: {}, 条件: {}";

    /**
     * 日志消息 - 开始插入批次数据
     */
    public static final String LOG_START_INSERT_BATCH = "开始插入批次数据到目标系统，批次ID: {}, 目标ORG类型: {}";

    /**
     * 日志消息 - 准备插入批次数据
     */
    public static final String LOG_PREPARE_INSERT_BATCH = "准备插入批次 {} 的对象 {} 数据到目标系统";

    /**
     * 日志消息 - 开始查询本地批次数据
     */
    public static final String LOG_QUERY_BATCH_DATA = "开始查询本地批次数据，表名: {}, 条件: {}";

    /**
     * 日志消息 - 查询到本地批次数据
     */
    public static final String LOG_FOUND_BATCH_DATA = "查询到 {} 条本地批次数据，准备插入到目标系统";

    /**
     * 日志消息 - 总Insert数据
     */
    public static final String LOG_TOTAL_INSERT_DATA = "总Insert数据 count:{}；总批次:{}；-api:{}；";

    /**
     * 日志消息 - 当前批次Insert数据
     */
    public static final String LOG_CURRENT_BATCH_INSERT_DATA = "总Insert数据 count:{}；当前批次:{}；-api:{}；";

    /**
     * 日志消息 - 已插入记录
     */
    public static final String LOG_INSERTED_RECORDS = "已插入 {}/{} 条记录";

    /**
     * 日志消息 - 记录插入成功
     */
    public static final String LOG_RECORD_INSERT_SUCCESS = "记录插入成功，本地ID: {}, 新ID: {}";

    /**
     * 日志消息 - 记录插入失败
     */
    public static final String LOG_RECORD_INSERT_FAILED = "记录插入失败，本地ID: {}, 错误: {}";

    /**
     * 日志消息 - 批次数据插入完成
     */
    public static final String LOG_BATCH_INSERT_COMPLETE = "批次数据插入完成，批次ID: {}, 对象API: {}, 总数: {}, 成功: {}, 失败: {}, 耗时: {}ms";

    /**
     * 日志消息 - 插入批次数据到目标系统失败
     */
    public static final String LOG_BATCH_INSERT_FAILED = "插入批次数据到目标系统失败，批次ID: {}";

    /**
     * 日志消息 - 开始更新批次数据
     */
    public static final String LOG_START_UPDATE_BATCH = "开始更新批次数据到目标系统，批次ID: {}, 目标ORG类型: {}";

    /**
     * 日志消息 - 准备更新批次数据
     */
    public static final String LOG_PREPARE_UPDATE_BATCH = "准备更新批次 {} 的对象 {} 数据到目标系统";

    /**
     * 日志消息 - 查询到本地批次数据准备更新
     */
    public static final String LOG_FOUND_BATCH_DATA_UPDATE = "查询到 {} 条本地批次数据，准备更新到目标系统";

    /**
     * 日志消息 - 总Update数据
     */
    public static final String LOG_TOTAL_UPDATE_DATA = "总Update数据 count:{}；总批次:{}；-api:{}；";

    /**
     * 日志消息 - 当前批次Update数据
     */
    public static final String LOG_CURRENT_BATCH_UPDATE_DATA = "总Update数据 count:{}；当前批次:{}；-api:{}；";

    /**
     * 日志消息 - 已更新记录
     */
    public static final String LOG_UPDATED_RECORDS = "已更新 {}/{} 条记录";

    /**
     * 日志消息 - 记录更新成功
     */
    public static final String LOG_RECORD_UPDATE_SUCCESS = "记录更新成功，本地ID: {}, 目标ID: {}";

    /**
     * 日志消息 - 记录更新失败
     */
    public static final String LOG_RECORD_UPDATE_FAILED = "记录更新失败，本地ID: {}, 目标ID: {}, 错误: {}";

    /**
     * 日志消息 - 批次数据更新完成
     */
    public static final String LOG_BATCH_UPDATE_COMPLETE = "批次数据更新完成，批次ID: {}, 对象API: {}, 总数: {}, 成功: {}, 失败: {}, 耗时: {}ms";

    /**
     * 日志消息 - 更新批次数据到目标系统失败
     */
    public static final String LOG_BATCH_UPDATE_FAILED = "更新批次数据到目标系统失败，批次ID: {}";

    /**
     * 日志消息 - 插入批次数据时发生异常
     */
    public static final String LOG_INSERT_BATCH_EXCEPTION = "插入批次数据时发生异常，批次: {}, 批次索引: {}";

    /**
     * 日志消息 - 更新批次数据时发生异常
     */
    public static final String LOG_UPDATE_BATCH_EXCEPTION = "更新批次数据时发生异常，批次: {}, 批次索引: {}";

    /**
     * 日志消息 - 线程休眠被中断
     */
    public static final String LOG_THREAD_SLEEP_INTERRUPTED = "线程休眠被中断";

    /**
     * 日志消息 - 批量查询new_id失败
     */
    public static final String LOG_BATCH_QUERY_NEW_ID_FAILED = "批量查询new_id失败，对象: {}, 错误: {}";

    /**
     * 日志消息 - 字段值转换失败
     */
    public static final String LOG_FIELD_CONVERT_FAILED = "字段值转换失败，字段: {}, 值: {}, 错误: {}";

    /**
     * 日志消息 - 引用对象类型为空
     */
    public static final String LOG_REFERENCE_OBJECT_TYPE_NULL = "引用对象类型为空";

    // ================================= 错误消息常量 =================================

    /**
     * 错误消息 - 批次ID不能为空
     */
    public static final String ERROR_BATCH_ID_NULL = "批次ID不能为空";

    /**
     * 错误消息 - 目标ORG类型不能为空
     */
    public static final String ERROR_TARGET_ORG_TYPE_NULL = "目标ORG类型不能为空";

    /**
     * 错误消息 - 批次不存在
     */
    public static final String ERROR_BATCH_NOT_EXIST = "批次不存在";

    /**
     * 错误消息 - 批次对象API不能为空
     */
    public static final String ERROR_BATCH_API_NULL = "批次对象API不能为空";

    /**
     * 错误消息 - 本地表不存在
     */
    public static final String ERROR_TABLE_NOT_EXIST = "本地表不存在: ";

    /**
     * 错误消息 - 无法获取目标系统连接
     */
    public static final String ERROR_TARGET_CONNECTION_NULL = "无法获取目标系统连接";

    /**
     * 错误消息 - 目标系统不存在该对象
     */
    public static final String ERROR_TARGET_OBJECT_NOT_EXIST = "目标系统不存在该对象: ";

    /**
     * 错误消息 - 本地批次没有数据
     */
    public static final String ERROR_NO_BATCH_DATA = "本地批次没有数据";

    /**
     * 错误消息 - 批次数据插入完成
     */
    public static final String ERROR_BATCH_INSERT_COMPLETE = "批次数据插入完成";

    /**
     * 错误消息 - 批次数据更新完成
     */
    public static final String ERROR_BATCH_UPDATE_COMPLETE = "批次数据更新完成";

    /**
     * 错误消息 - 插入批次数据到目标系统失败
     */
    public static final String ERROR_BATCH_INSERT_FAILED = "插入批次数据到目标系统失败: ";

    /**
     * 错误消息 - 更新批次数据到目标系统失败
     */
    public static final String ERROR_BATCH_UPDATE_FAILED = "更新批次数据到目标系统失败: ";

    /**
     * 错误消息 - 批次数据同步成功
     */
    public static final String ERROR_BATCH_SYNC_SUCCESS = "批次数据同步成功";

    /**
     * 错误消息 - 批次数据同步失败
     */
    public static final String ERROR_BATCH_SYNC_FAILED = "批次数据同步失败";

    /**
     * 错误消息 - 获取统计信息成功
     */
    public static final String ERROR_GET_STATISTICS_SUCCESS = "获取统计信息成功";

    /**
     * 错误消息 - 获取统计信息失败
     */
    public static final String ERROR_GET_STATISTICS_FAILED = "获取统计信息失败: ";

    /**
     * 错误消息 - 获取所有批次统计信息成功
     */
    public static final String ERROR_GET_ALL_STATISTICS_SUCCESS = "获取所有批次统计信息成功";

    /**
     * 错误消息 - 获取所有批次统计信息失败
     */
    public static final String ERROR_GET_ALL_STATISTICS_FAILED = "获取所有批次统计信息失败: ";

    /**
     * 错误消息 - 未找到批次数据
     */
    public static final String ERROR_NO_BATCH_DATA_FOUND = "未找到批次数据";

    /**
     * 错误消息 - 同步批次数据失败
     */
    public static final String ERROR_SYNC_BATCH_DATA_FAILED = "同步批次数据失败: ";
}
