package com.ruoyi.credit.service;

import java.util.Map;

import com.ruoyi.credit.domain.ServicePeriodLoan;

/**
 * 错误处理服务接口
 * 
 * @author ruoyi
 * @date 2025-12-24
 */
public interface ErrorHandlingService {
    
    /**
     * 验证银行信息完整性
     * 
     * @param loan 贷款信息
     * @return 验证结果
     */
    Map<String, Object> validateBankInformation(ServicePeriodLoan loan);
    
    /**
     * 自动修复数据不一致问题
     * 
     * @param loan 贷款信息
     * @return 修复结果
     */
    Map<String, Object> autoRepairDataInconsistency(ServicePeriodLoan loan);
    
    /**
     * 处理网络错误重试
     * 
     * @param operation 操作名称
     * @param retryCount 重试次数
     * @param lastError 最后一次错误
     * @return 处理结果
     */
    Map<String, Object> handleNetworkErrorRetry(String operation, int retryCount, Exception lastError);
    
    /**
     * 生成友好的错误提示信息
     * 
     * @param errorType 错误类型
     * @param context 错误上下文
     * @return 友好提示信息
     */
    Map<String, Object> generateFriendlyErrorMessage(String errorType, Map<String, Object> context);
    
    /**
     * 检查并修复银行选择状态
     * 
     * @param loan 贷款信息
     * @return 修复结果
     */
    Map<String, Object> checkAndRepairBankSelectionStatus(ServicePeriodLoan loan);
    
    /**
     * 验证贷款提交前的数据完整性
     * 
     * @param loan 贷款信息
     * @return 验证结果
     */
    Map<String, Object> validateLoanSubmissionData(ServicePeriodLoan loan);
    
    /**
     * 处理银行服务不可用的情况
     * 
     * @param bankId 银行ID
     * @param servicePeriodId 服务周期ID
     * @return 处理结果（包含备选方案）
     */
    Map<String, Object> handleBankServiceUnavailable(Long bankId, Long servicePeriodId);
}