package com.ruoyi.web.modules.industryservice.support;

/**
 * 健康源数据分析与预警生成规则常量。
 * <p>
 * 与 {@link YakDiseaseWarningAnalyzer} 配套：记录类型、已分析标记、集中阈值、检疫异常判定。<br>
 * 集中预警：同一 {@code region_key} + 同一自然日，命中条数 ≥ {@link #CONCENTRATION_THRESHOLD}。
 * </p>
 */
public final class YakDiseaseWarningAnalysisRules
{
    /** 健康源：检疫 */
    public static final int RECORD_TYPE_QUARANTINE = 1;

    /** 健康源：诊疗 */
    public static final int RECORD_TYPE_DIAGNOSIS = 2;

    /** 健康源：养殖过程 */
    public static final int RECORD_TYPE_BREEDING = 3;

    /** 写入预警表：检疫集中（与 {@link YakDiseaseWarningRules#WARNING_TYPE_QUARANTINE} 同值） */
    public static final int WARNING_TYPE_QUARANTINE = 3;

    /** 写入预警表：诊疗集中 */
    public static final int WARNING_TYPE_DIAGNOSIS = 4;

    /** 未分析 */
    public static final String ANALYZED_NO = "0";

    /** 已分析 */
    public static final String ANALYZED_YES = "1";

    /** 同一地区同一自然日内异常/发病条数达到该阈值则生成健康预警 */
    public static final int CONCENTRATION_THRESHOLD = 3;

    private YakDiseaseWarningAnalysisRules()
    {
    }

    /**
     * 检疫结果是否视为异常命中。
     * <p>匹配中文「异常」「阳性」，或英文 {@code abnormal}/{@code positive}（忽略大小写）。</p>
     *
     * @param result 第三方检疫结果原文，空则 false
     */
    public static boolean isAbnormalQuarantineResult(String result)
    {
        if (result == null || result.trim().isEmpty())
        {
            return false;
        }
        String text = result.trim();
        return text.contains("异常") || text.contains("阳性")
                || "abnormal".equalsIgnoreCase(text) || "positive".equalsIgnoreCase(text);
    }
}
