package com.ruoyi.credit.service;

import java.util.Map;
import java.util.concurrent.CompletableFuture;

import com.ruoyi.credit.domain.LoanConsistencyValidation;

/**
 * 贷款验证通知服务接口
 * 
 * @author ruoyi
 * @date 2025-12-31
 */
public interface LoanValidationNotificationService 
{
    /**
     * 发送验证失败通知
     * 
     * @param validation 验证记录
     * @return 发送结果
     */
    boolean sendValidationFailureNotification(LoanConsistencyValidation validation);

    /**
     * 异步发送验证失败通知
     * 
     * @param validation 验证记录
     * @return 异步发送结果
     */
    CompletableFuture<Boolean> sendValidationFailureNotificationAsync(LoanConsistencyValidation validation);

    /**
     * 批量发送验证失败通知
     * 
     * @param validations 验证记录列表
     * @return 发送结果统计
     */
    Map<String, Object> batchSendValidationFailureNotifications(java.util.List<LoanConsistencyValidation> validations);

    /**
     * 发送重新验证成功通知
     * 
     * @param validation 验证记录
     * @return 发送结果
     */
    boolean sendRevalidationSuccessNotification(LoanConsistencyValidation validation);

    /**
     * 发送系统验证异常告警
     * 
     * @param loanId 贷款ID
     * @param errorMessage 异常消息
     * @param alertLevel 告警级别
     * @return 发送结果
     */
    boolean sendValidationExceptionAlert(Long loanId, String errorMessage, String alertLevel);

    /**
     * 创建或更新通知模板
     * 
     * @return 创建结果
     */
    boolean initializeNotificationTemplates();

    /**
     * 获取通知发送统计
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计信息
     */
    Map<String, Object> getNotificationStatistics(String startDate, String endDate);
}