package com.ruoyi.credit.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.credit.domain.ConsistencyCheckResult;
import com.ruoyi.credit.domain.DataDifference;

/**
 * 银行数据一致性服务接口
 * 
 * @author ruoyi
 * @date 2025-12-25
 */
public interface IBankDataConsistencyService 
{
    /**
     * 检查银行数据一致性
     * 
     * @return 一致性检查结果
     */
    ConsistencyCheckResult checkDataConsistency();

    /**
     * 检查指定银行的数据一致性
     * 
     * @param bankId 银行ID
     * @return 一致性检查结果
     */
    ConsistencyCheckResult checkBankDataConsistency(Long bankId);

    /**
     * 获取数据差异详情列表
     * 
     * @return 数据差异列表
     */
    List<DataDifference> getDataDifferences();

    /**
     * 获取指定银行的数据差异详情
     * 
     * @param bankId 银行ID
     * @return 数据差异列表
     */
    List<DataDifference> getBankDataDifferences(Long bankId);

    /**
     * 生成一致性报告
     * 
     * @return 一致性报告数据
     */
    Map<String, Object> generateConsistencyReport();

    /**
     * 获取一致性统计信息
     * 
     * @return 统计信息
     */
    Map<String, Object> getConsistencyStatistics();

    /**
     * 检查关键字段的一致性
     * 只检查关键业务字段的一致性
     * 
     * @return 关键字段一致性检查结果
     */
    ConsistencyCheckResult checkCriticalFieldsConsistency();

    /**
     * 验证数据一致性检查结果的有效性
     * 
     * @param result 检查结果
     * @return 是否有效
     */
    boolean validateConsistencyResult(ConsistencyCheckResult result);
}