package com.njcn.advance.responsibility.service;

import com.njcn.advance.responsibility.model.HarmonicData;

/**
 * 谐波责任计算服务接口
 * 
 * @author hongawen
 * @version 1.0
 */
public interface IHarmonicResponsibilityService {
    
    /**
     * 执行谐波责任计算
     * 
     * @param data 输入的谐波数据
     * @return 计算是否成功
     */
    boolean calculate(HarmonicData data);
    
    /**
     * 执行完整计算
     * 
     * @param harmonicData 谐波数据数组
     * @param powerData 功率数据矩阵
     * @param harmonicCount 谐波数据个数
     * @param powerCount 功率数据个数
     * @param nodeCount 节点数量
     * @param windowSize 窗口大小
     * @param threshold 谐波门槛
     * @return 计算结果
     */
    HarmonicData fullCalculation(float[] harmonicData, float[][] powerData,
                                 int harmonicCount, int powerCount, int nodeCount,
                                 int windowSize, float threshold);
    
    /**
     * 执行部分重算
     * 
     * @param harmonicData 谐波数据数组
     * @param fkData FK数据矩阵
     * @param hkData HK数据矩阵
     * @param harmonicCount 谐波数据个数
     * @param nodeCount 节点数量
     * @param windowSize 窗口大小
     * @param responsibilityCount 责任数据个数
     * @param threshold 谐波门槛
     * @return 计算结果
     */
    HarmonicData partialCalculation(float[] harmonicData, float[][] fkData, float[][] hkData,
                                    int harmonicCount, int nodeCount, int windowSize,
                                    int responsibilityCount, float threshold);
    
    /**
     * 验证输入数据的有效性
     * 
     * @param data 待验证的数据
     * @return 验证结果消息，null表示验证通过
     */
    String validateData(HarmonicData data);
}