<?php
header('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

// 如果是预检请求，直接返回
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

// 读取POST数据
$inputJson = file_get_contents('php://input');
if (empty($inputJson)) {
    echo json_encode([
        'success' => false,
        'message' => '没有接收到数据，请先填写营养成分'
    ]);
    exit;
}

// 解析JSON数据
$inputData = json_decode($inputJson, true);
if (!$inputData) {
    echo json_encode([
        'success' => false,
        'message' => '数据格式错误: ' . json_last_error_msg()
    ]);
    exit;
}

// 确保nutrients字段存在
if (!isset($inputData['nutrients'])) {
    echo json_encode([
        'success' => false,
        'message' => '营养成分数据缺失'
    ]);
    exit;
}

// 保存原始输入数据，用于调试
$rawInputData = [
    'unit' => isset($inputData['unit']) ? $inputData['unit'] : '未设置',
    'foodState' => isset($inputData['foodState']) ? $inputData['foodState'] : '未设置',
    'servingSize' => isset($inputData['servingSize']) ? $inputData['servingSize'] : '未设置',
    'expressionType' => isset($inputData['expressionType']) ? $inputData['expressionType'] : '未设置',
    'nutrients' => isset($inputData['nutrients']) ? $inputData['nutrients'] : []
];

// 进行数据分析
$nutritionClaims = analyzeNutritionClaims($inputData);
$analysis = [
    'dataValidation' => validateData($inputData),
    'nutritionClaims' => $nutritionClaims,
    'nutritionEffects' => analyzeNutritionEffects($inputData, $nutritionClaims),
    'debug' => [
        'rawInputData' => $rawInputData
    ] // 添加调试信息
];

// 返回分析结果
echo json_encode([
    'success' => true,
    'data' => $analysis
]);

// 数据验证函数
function validateData($data) {
    $nutrients = $data['nutrients'];
    $foodState = isset($data['foodState']) ? $data['foodState'] : '固体';
    $unit = isset($data['unit']) ? $data['unit'] : '每100克';
    
    // 计算能量
    $calculatedEnergy = 0;
    if (isset($nutrients['protein']) && isset($nutrients['fat']) && isset($nutrients['carbs'])) {
        $calculatedEnergy = (floatval($nutrients['carbs']) + floatval($nutrients['protein'])) * 17 
                           + floatval($nutrients['fat']) * 37;
        
        if (isset($nutrients['dietaryFiber']) || isset($nutrients['膳食纤维'])) {
            $fiberValue = isset($nutrients['dietaryFiber']) ? floatval($nutrients['dietaryFiber']) : floatval($nutrients['膳食纤维']);
            $calculatedEnergy += $fiberValue * 8;
        }
    }

    // 能量验证规则
    $energyInput = isset($nutrients['energy']) ? floatval($nutrients['energy']) : 0;
    $energyDifference = abs($energyInput - $calculatedEnergy);
    $energyIsValid = $energyDifference <= $calculatedEnergy * 0.2; // 允许20%的误差
    $energyMessage = '';
    
    if (!$energyIsValid) {
        $energyMessage = '输入能量与计算能量差异超过20%，请检查数据';
    }

    return [
        'energy' => [
            'input' => $energyInput,
            'calculated' => $calculatedEnergy,
            'isValid' => $energyIsValid,
            'message' => $energyMessage
        ],
        'fatComposition' => [
            'totalFat' => 0,
            'componentsTotal' => 0,
            'isValid' => true,
            'message' => ''
        ]
    ];
}

// 分析营养声称
function analyzeNutritionClaims($data) {
    global $analysis;
    
    $nutrients = $data['nutrients'];
    $claims = [];
    $debug = []; // 调试信息
    
    // 获取食品状态和单位
    $foodState = isset($data['foodState']) ? $data['foodState'] : '固体';
    $unit = isset($data['unit']) ? $data['unit'] : '每100克';
    
    $debug['foodState'] = $foodState;
    $debug['unit'] = $unit;
    $debug['original_nutrients'] = $nutrients;
    
    // 初始化折算系数Z，默认为1（即不需要折算）
    $conversionFactor = 1;
    
    // 检查是否是每份单位，如果是则计算折算系数Z = 100/x
    if (strpos($unit, '每份') !== false) {
        // 获取每份大小
        $servingSize = isset($data['servingSize']) ? $data['servingSize'] : '';
        $debug['servingSize'] = $servingSize;
        
        // 提取数字部分
        preg_match('/(\d+(\.\d+)?)/', $servingSize, $matches);
        if (!empty($matches[1])) {
            $amount = floatval($matches[1]);
            if ($amount > 0) {
                // 计算折算系数Z = 100/x
                $conversionFactor = 100 / $amount;
                $debug['conversionFactor'] = $conversionFactor;
                $debug['calculation'] = "100 / $amount = $conversionFactor";
            }
        }
    }
    
    // 应用折算系数到所有营养素
    $standardizedNutrients = [];
    foreach ($nutrients as $key => $value) {
        $standardizedNutrients[$key] = floatval($value) * $conversionFactor;
    }
    
    $debug['standardizedNutrients'] = $standardizedNutrients;
    
    // 使用标准化后的营养素数据进行分析
    
    // 计算脂肪供能比
    $protein = isset($standardizedNutrients['protein']) ? floatval($standardizedNutrients['protein']) : 0;
    $fat = isset($standardizedNutrients['fat']) ? floatval($standardizedNutrients['fat']) : 0;
    $carbs = isset($standardizedNutrients['carbs']) ? floatval($standardizedNutrients['carbs']) : 0;
    $standardizedEnergy = isset($standardizedNutrients['energy']) ? floatval($standardizedNutrients['energy']) : 0;
    
    $originalEnergy = isset($nutrients['energy']) ? floatval($nutrients['energy']) : 0;
    
    $debug['原始能量'] = $originalEnergy;
    $debug['折算系数'] = $conversionFactor;
    $debug['折算后能量'] = $standardizedEnergy;
    $debug['能量单位检查'] = gettype($standardizedEnergy);
    
    $debug['protein'] = $protein;
    $debug['fat'] = $fat;
    $debug['carbs'] = $carbs;
    $debug['standardizedEnergy'] = $standardizedEnergy;
    $debug['standardizedEnergy_type'] = gettype($standardizedEnergy);
    
    // 使用新公式计算能量
    $proteinEnergy = $protein * 17;
    $fatEnergy = $fat * 37;
    $carbsEnergy = $carbs * 17;
    $totalCalculatedEnergy = $proteinEnergy + $fatEnergy + $carbsEnergy;
    
    $debug['proteinEnergy'] = $proteinEnergy;
    $debug['fatEnergy'] = $fatEnergy;
    $debug['carbsEnergy'] = $carbsEnergy;
    $debug['totalCalculatedEnergy'] = $totalCalculatedEnergy;
    
    // 如果有膳食纤维，添加其能量
    $fiberValue = 0;
    if (isset($standardizedNutrients['dietaryFiber'])) {
        $fiberValue = $standardizedNutrients['dietaryFiber'];
        $totalCalculatedEnergy += $fiberValue * 8;
    } elseif (isset($standardizedNutrients['膳食纤维'])) {
        $fiberValue = $standardizedNutrients['膳食纤维'];
        $totalCalculatedEnergy += $fiberValue * 8;
    }
    
    $debug['fiberValue'] = $fiberValue;
    $debug['totalCalculatedEnergyWithFiber'] = $totalCalculatedEnergy;
    
    // 计算脂肪供能比 (%)
    $fatEnergyRatio = 0;
    if ($totalCalculatedEnergy > 0) {
        $fatEnergyRatio = ($fatEnergy / $totalCalculatedEnergy) * 100;
    }
    
    $debug['fatEnergyRatio'] = $fatEnergyRatio;
    
    // 低能量判断预检查
    $debug['低能量标准-固体'] = '≤ 170 kJ/100g';
    $debug['低能量标准-液体'] = '≤ 80 kJ/100mL';
    $debug['当前食品状态'] = $foodState;
    $debug['当前标准化能量值'] = $standardizedEnergy;
    $debug['是否符合低能量标准'] = ($foodState === '固体' && $standardizedEnergy <= 170) || 
                            ($foodState === '液体' && $standardizedEnergy <= 80) ? '是' : '否';
    $debug['低能量判断详情'] = $foodState === '固体' ? 
                          "$standardizedEnergy kJ <= 170 kJ ? " . ($standardizedEnergy <= 170 ? '是' : '否') :
                          "$standardizedEnergy kJ <= 80 kJ ? " . ($standardizedEnergy <= 80 ? '是' : '否');
    
    // 先判断脂肪供能比是否≤50%
    if ($fatEnergyRatio <= 50) {
        // 脂肪供能比符合要求，再判断能量声称
        $debug['fatEnergyRatio_check'] = '通过，小于等于50%';
        
        // 检查是否为"无能量"食品（≤17kJ/100g或100mL）
        if ($standardizedEnergy <= 17) {
            $claims[] = [
                'type' => '能量',
                'description' => '无能量或无卡、无千卡或无卡路里'
            ];
            $debug['energyClaim'] = '无能量声称（能量≤17kJ）';
        }
        // 检查是否为"低能量"食品
        else if (($foodState === '固体' && $standardizedEnergy <= 170) || 
                 ($foodState === '液体' && $standardizedEnergy <= 80)) {
            $description = '低能量或低卡、低千卡或低卡路里';
            $claims[] = [
                'type' => '能量',
                'description' => $description
            ];
            $debug['energyCheck_detail'] = [
                'foodState' => $foodState,
                'condition' => $foodState === '固体' ? 'standardizedEnergy <= 170' : 'standardizedEnergy <= 80',
                'standardizedEnergy' => $standardizedEnergy,
                'condition_met' => $foodState === '固体' ? ($standardizedEnergy <= 170 ? 'true' : 'false') : ($standardizedEnergy <= 80 ? 'true' : 'false')
            ];
        } else {
            $debug['energyClaim'] = '不满足能量声称条件';
            if ($foodState === '固体') {
                $debug['energyCheck'] = '固体食品能量值为 ' . $standardizedEnergy . 'kJ，大于170kJ，不满足低能量条件';
            } else {
                $debug['energyCheck'] = '液体食品能量值为 ' . $standardizedEnergy . 'kJ，大于80kJ，不满足低能量条件';
            }
        }
    } else {
        $debug['fatEnergyRatio_check'] = '不通过，大于50%';
    }
    
      // 添加蛋白质来源声称判断
    // 条件1: 固体食品，蛋白质含量 ≥ 6g/100g 且 < 12g/100g
    // 条件2: 液体食品，蛋白质含量 ≥ 3g/100ml 且 < 6g/100mL
    // 条件3: 基于430kJ的能量比例，蛋白质含量 ≥ 3g/430kJ 且 < 6g/430kJ
    // 注意: 如果用户输入"每份"，已经使用"折算系数Z"将营养素值转换为每100g/100mL
    $isProteinSource = false;
    $proteinSourceReason = '';
    
    // 条件1和条件2: 基于食品状态和标准化蛋白质含量判断
    if ($foodState === '固体' && $protein >= 6 && $protein < 12) {
        $isProteinSource = true;
        $proteinSourceReason = '固体食品蛋白质含量≥6g/100g且<12g/100g';
    } else if ($foodState === '液体' && $protein >= 3 && $protein < 6) {
        $isProteinSource = true;
        $proteinSourceReason = '液体食品蛋白质含量≥3g/100ml且<6g/100mL';
    }
    
    // 条件3: 基于430kJ能量标准化后的蛋白质含量判断
    if (!$isProteinSource && $standardizedEnergy > 0) {
        // 计算430kJ条件下的蛋白质含量
        $proteinAt430kJ = $protein * (430 / $standardizedEnergy);
        $debug['proteinAt430kJ'] = $proteinAt430kJ;
        $debug['protein430kJCalculation'] = "$protein * (430 / $standardizedEnergy) = $proteinAt430kJ";
        
        if ($proteinAt430kJ >= 3 && $proteinAt430kJ < 6) {
            $isProteinSource = true;
            $proteinSourceReason = '按430kJ能量标准化后，蛋白质含量≥3g且<6g';
        }
    }
    
    // 添加蛋白质来源声称
    if ($isProteinSource) {
        $claims[] = [
            'type' => '蛋白质',
            'description' => '蛋白质来源或含有蛋白质'
        ];
        $debug['proteinSourceClaim'] = '符合蛋白质来源声称，原因: ' . $proteinSourceReason;
    } else {
        $debug['proteinSourceClaim'] = '不符合蛋白质来源声称条件';
    }
    
    // 判断是否符合高蛋白的声称条件
    $isHighProtein = false;
    $reasonHighProtein = '';
    
    // 条件1: 固体食品，蛋白质含量 ≥ 12g/100g
    if ($foodState === '固体' && $protein >= 12) {
        $isHighProtein = true;
        $reasonHighProtein = '固体食品蛋白质含量≥12g/100g';
    } 
    // 条件2: 液体食品，蛋白质含量 ≥ 6g/100mL
    elseif ($foodState === '液体' && $protein >= 6) {
        $isHighProtein = true;
        $reasonHighProtein = '液体食品蛋白质含量≥6g/100mL';
    }
    
    // 条件3: 按能量430kJ计算，蛋白质含量 ≥ 6g/430kJ
    if (!$isHighProtein && $standardizedEnergy > 0) {
        // 计算430kJ条件下的蛋白质含量
        $proteinAt430kJ = $protein * (430 / $standardizedEnergy);
        $debug['highProteinAt430kJ'] = $proteinAt430kJ;
        $debug['highProtein430kJCalculation'] = "$protein * (430 / $standardizedEnergy) = $proteinAt430kJ";
        
        if ($proteinAt430kJ >= 6) {
            $isHighProtein = true;
            $reasonHighProtein = '按430kJ能量标准化后，蛋白质含量≥6g';
        }
    }
    
    // 添加高蛋白声称
    if ($isHighProtein) {
        $claims[] = [
            'type' => '蛋白质',
            'description' => '高或富含蛋白质'
        ];
        $debug['highProteinClaim'] = '符合高蛋白声称，原因: ' . $reasonHighProtein;
    } else {
        $debug['highProteinClaim'] = '不符合高蛋白声称条件';
    }
    
    // 检查是否为低脂肪食品
    if ($fat <= 0.5) {
        $claims[] = [
            'type' => '脂肪',
            'description' => '无或不含脂肪'
        ];
        $debug['fatClaim'] = '无脂肪声称（脂肪≤0.5g/100g或100mL）';
    } else if ($foodState === '固体') {
        if ($fat > 0.5 && $fat <= 3) {
            $claims[] = [
                'type' => '脂肪',
                'description' => '低脂肪'
            ];
            $debug['fatClaim'] = '低脂肪声称（固体，脂肪>0.5g且≤3g/100g）';
        } else if ($fat > 3 && $fat <= 10) {
            $claims[] = [
                'type' => '脂肪',
                'description' => '瘦（仅指畜肉类和禽肉类）'
            ];
            $debug['fatClaim'] = '瘦声称（固体，脂肪>3g且≤10g/100g，仅适用于畜肉类和禽肉类）';
        } else {
            $debug['fatClaim'] = '不符合脂肪声称条件';
        }
    } else if ($foodState === '液体') {
        if ($fat > 0.5 && $fat <= 1.5) {
            $claims[] = [
                'type' => '脂肪',
                'description' => '低脂肪'
            ];
            $debug['fatClaim'] = '低脂肪声称（液体，脂肪>0.5g且≤1.5g/100mL）';
        } else {
            $debug['fatClaim'] = '不符合脂肪声称条件';
        }
    }
    
    // 检查是否为低饱和脂肪食品
    $saturatedFat = isset($standardizedNutrients['saturatedFat']) ? $standardizedNutrients['saturatedFat'] : 0;
    
    // 计算饱和脂肪供能比
    $saturatedFatEnergyRatio = 0;
    $saturatedFatEnergy = $saturatedFat * 37;
    if ($totalCalculatedEnergy > 0) {
        $saturatedFatEnergyRatio = ($saturatedFatEnergy / $totalCalculatedEnergy) * 100;
    }
    
    $debug['saturatedFat'] = $saturatedFat;
    $debug['saturatedFatEnergy'] = $saturatedFatEnergy; 
    $debug['saturatedFatEnergyRatio'] = $saturatedFatEnergyRatio;
    
    // 条件1: 饱和脂肪 ≤ 0.1g/100g（或100mL）时，可宣称"无或不含饱和脂肪"
    if ($saturatedFat <= 0.1) {
        $claims[] = [
            'type' => '饱和脂肪',
            'description' => '无或不含饱和脂肪'
        ];
        $debug['saturatedFatClaim'] = '无饱和脂肪声称（饱和脂肪≤0.1g/100g或100mL）';
    } 
    // 只有在饱和脂肪能量占比 ≤ 10% 的条件下，才考虑低饱和脂肪声称
    else if ($saturatedFatEnergyRatio <= 10) {
        // 条件2: 固体食品，饱和脂肪 > 0.1g/100g 且 ≤ 1.5g/100g，可宣称"低饱和脂肪"
        if ($foodState === '固体' && $saturatedFat > 0.1 && $saturatedFat <= 1.5) {
            $claims[] = [
                'type' => '饱和脂肪',
                'description' => '低饱和脂肪'
            ];
            $debug['saturatedFatClaim'] = '低饱和脂肪声称（固体，饱和脂肪>0.1g且≤1.5g/100g，且饱和脂肪供能比≤10%）';
        } 
        // 条件3: 液体食品，饱和脂肪 > 0.1g/100mL 且 ≤ 0.75g/100mL，可宣称"低饱和脂肪"
        else if ($foodState === '液体' && $saturatedFat > 0.1 && $saturatedFat <= 0.75) {
            $claims[] = [
                'type' => '饱和脂肪',
                'description' => '低饱和脂肪'
            ];
            $debug['saturatedFatClaim'] = '低饱和脂肪声称（液体，饱和脂肪>0.1g且≤0.75g/100mL，且饱和脂肪供能比≤10%）';
        }
        else {
            $debug['saturatedFatClaim'] = '不符合饱和脂肪声称条件';
        }
    }
    else {
        $debug['saturatedFatClaim'] = '不符合饱和脂肪声称条件（饱和脂肪供能比>10%）';
    }
    
    // 检查反式脂肪酸声称条件
    $transFat = 0;
    $hasTransFatData = false;
    if (isset($standardizedNutrients['transFat'])) {
        $transFat = $standardizedNutrients['transFat'];
        $hasTransFatData = true;
    } elseif (isset($standardizedNutrients['反式脂肪酸'])) {
        $transFat = $standardizedNutrients['反式脂肪酸'];
        $hasTransFatData = true;
    } elseif (isset($standardizedNutrients['反式脂肪'])) {
        $transFat = $standardizedNutrients['反式脂肪'];
        $hasTransFatData = true;
    }
    
    $debug['transFat'] = $transFat;
    $debug['hasTransFatData'] = $hasTransFatData;
    
    // 无论食品状态，只要反式脂肪酸含量 ≤ 0.3g/100g或100mL，可宣称"无或不含反式脂肪酸"
    if ($hasTransFatData && $transFat <= 0.3) {
        $claims[] = [
            'type' => '反式脂肪酸',
            'description' => '无或不含反式脂肪酸'
        ];
        $debug['transFatClaim'] = '无反式脂肪酸声称（反式脂肪酸≤0.3g/100g或100mL）';
    } elseif ($hasTransFatData) {
        $debug['transFatClaim'] = '不符合反式脂肪酸声称条件（反式脂肪酸>' . $transFat . 'g/100g或100mL）';
    } else {
        $debug['transFatClaim'] = '未提供反式脂肪酸数据，不进行声称判断';
    }
    
    // 检查n-3多不饱和脂肪酸含量声称条件
    // 获取α-亚麻酸含量 (mg)
    $alphaLinolenicAcid = 0;
    if (isset($standardizedNutrients['alphaLinolenicAcid'])) {
        $alphaLinolenicAcid = $standardizedNutrients['alphaLinolenicAcid'];
    } elseif (isset($standardizedNutrients['α-亚麻酸'])) {
        $alphaLinolenicAcid = $standardizedNutrients['α-亚麻酸'];
    } elseif (isset($standardizedNutrients['亚麻酸'])) {
        $alphaLinolenicAcid = $standardizedNutrients['亚麻酸'];
    }
    
    // 获取EPA含量 (mg)
    $epa = 0;
    if (isset($standardizedNutrients['EPA'])) {
        $epa = $standardizedNutrients['EPA'];
    } elseif (isset($standardizedNutrients['二十碳五烯酸'])) {
        $epa = $standardizedNutrients['二十碳五烯酸'];
    } elseif (isset($standardizedNutrients['eicosapentaenoicAcid'])) {
        $epa = $standardizedNutrients['eicosapentaenoicAcid'];
    }
    
    // 获取DHA含量 (mg)
    $dha = 0;
    if (isset($standardizedNutrients['DHA'])) {
        $dha = $standardizedNutrients['DHA'];
    } elseif (isset($standardizedNutrients['二十二碳六烯酸'])) {
        $dha = $standardizedNutrients['二十二碳六烯酸'];
    } elseif (isset($standardizedNutrients['docosahexaenoicAcid'])) {
        $dha = $standardizedNutrients['docosahexaenoicAcid'];
    }
    
    // 计算EPA+DHA总和
    $epaPlusDha = $epa + $dha;
    
    // 添加调试信息
    $debug['n3FattyAcids'] = [
        'alphaLinolenicAcid' => $alphaLinolenicAcid,
        'EPA' => $epa,
        'DHA' => $dha,
        'epaPlusDha' => $epaPlusDha
    ];
    
    // 检查是否符合"n-3多不饱和脂肪酸来源"声称
    $isN3Source = ($alphaLinolenicAcid >= 300) || ($epaPlusDha >= 40);
    
    // 检查是否符合"高n-3多不饱和脂肪酸"声称
    $isHighN3 = ($alphaLinolenicAcid >= 600) || ($epaPlusDha >= 80);
    
    // 添加声称
    if ($isHighN3) {
        $claims[] = [
            'type' => 'n-3多不饱和脂肪酸',
            'description' => '高或富含n-3多不饱和脂肪酸，也可用"w-3多不饱和脂肪酸"标示。'
        ];
        $debug['n3FattyClaim'] = '高n-3多不饱和脂肪酸声称';
        if ($alphaLinolenicAcid >= 600) {
            $debug['n3HighReason'] = 'α-亚麻酸含量≥600mg/100g或100mL';
        }
        if ($epaPlusDha >= 80) {
            $debug['n3HighReason'] = $debug['n3HighReason'] ?? '';
            $debug['n3HighReason'] .= ($debug['n3HighReason'] ? '，' : '') . 'EPA+DHA总和≥80mg/100g或100mL';
        }
    } elseif ($isN3Source) {
        $claims[] = [
            'type' => 'n-3多不饱和脂肪酸',
            'description' => 'n-3多不饱和脂肪酸来源或含有n-3多不饱和脂肪酸，也可用"w-3多不饱和脂肪酸"标示。'
        ];
        $debug['n3FattyClaim'] = 'n-3多不饱和脂肪酸来源声称';
        if ($alphaLinolenicAcid >= 300) {
            $debug['n3SourceReason'] = 'α-亚麻酸含量≥300mg/100g或100mL';
        }
        if ($epaPlusDha >= 40) {
            $debug['n3SourceReason'] = $debug['n3SourceReason'] ?? '';
            $debug['n3SourceReason'] .= ($debug['n3SourceReason'] ? '，' : '') . 'EPA+DHA总和≥40mg/100g或100mL';
        }
    } else {
        $debug['n3FattyClaim'] = '不符合n-3多不饱和脂肪酸声称条件';
    }
    
    // 检查胆固醇声称条件
    $cholesterol = 0;
    $hasCholesterolData = false;
    if (isset($standardizedNutrients['cholesterol'])) {
        $cholesterol = $standardizedNutrients['cholesterol'];
        $hasCholesterolData = true;
    } elseif (isset($standardizedNutrients['胆固醇'])) {
        $cholesterol = $standardizedNutrients['胆固醇'];
        $hasCholesterolData = true;
    }
    
    $debug['cholesterol'] = $cholesterol;
    $debug['hasCholesterolData'] = $hasCholesterolData;
    
    // 只有当用户提供了胆固醇数据时才进行声称判断
    if ($hasCholesterolData) {
        // 无胆固醇判断：无论食品状态，胆固醇含量≤5mg/100g（或100mL）
        if ($cholesterol <= 5) {
            $claims[] = [
                'type' => '胆固醇',
                'description' => '无或不含胆固醇'
            ];
            $debug['cholesterolClaim'] = '无胆固醇声称（胆固醇≤5mg/100g或100mL）';
        } 
        // 低胆固醇判断：根据食品状态不同有不同标准
        elseif (($foodState === '固体' && $cholesterol > 5 && $cholesterol <= 20) || 
                ($foodState === '液体' && $cholesterol > 5 && $cholesterol <= 10)) {
            $claims[] = [
                'type' => '胆固醇',
                'description' => '低胆固醇'
            ];
            
            if ($foodState === '固体') {
                $debug['cholesterolClaim'] = '低胆固醇声称（固体，胆固醇>5mg且≤20mg/100g）';
            } else {
                $debug['cholesterolClaim'] = '低胆固醇声称（液体，胆固醇>5mg且≤10mg/100mL）';
            }
        } else {
            if ($foodState === '固体') {
                $debug['cholesterolClaim'] = '不符合胆固醇声称条件（固体，胆固醇>' . $cholesterol . 'mg/100g）';
            } else {
                $debug['cholesterolClaim'] = '不符合胆固醇声称条件（液体，胆固醇>' . $cholesterol . 'mg/100mL）';
            }
        }
    } else {
        $debug['cholesterolClaim'] = '未提供胆固醇数据，不进行声称判断';
    }
    
    // 检查糖的声称条件
    $sugar = 0;
    if (isset($standardizedNutrients['sugar'])) {
        $sugar = $standardizedNutrients['sugar'];
    } elseif (isset($standardizedNutrients['糖'])) {
        $sugar = $standardizedNutrients['糖'];
    }
    
    $debug['sugar'] = $sugar;
    
    // 无糖判断：无论食品状态，糖含量≤0.5g/100g（或100mL）
    if ($sugar <= 0.5) {
        $claims[] = [
            'type' => '糖',
            'description' => '无或不含糖'
        ];
        $debug['sugarClaim'] = '无糖声称（糖≤0.5g/100g或100mL）';
    } 
    // 低糖判断：无论食品状态，糖含量≤5g/100g（或100mL）
    elseif ($sugar <= 5) {
        $claims[] = [
            'type' => '糖',
            'description' => '低糖'
        ];
        $debug['sugarClaim'] = '低糖声称（糖≤5g/100g或100mL）';
    } else {
        $debug['sugarClaim'] = '不符合糖声称条件（糖>' . $sugar . 'g/100g或100mL）';
    }
    
    // 检查乳糖的声称条件
    $lactose = 0;
    $hasLactoseData = false;
    if (isset($standardizedNutrients['lactose'])) {
        $lactose = $standardizedNutrients['lactose'];
        $hasLactoseData = true;
    } elseif (isset($standardizedNutrients['乳糖'])) {
        $lactose = $standardizedNutrients['乳糖'];
        $hasLactoseData = true;
    }
    
    $debug['lactose'] = $lactose;
    $debug['hasLactoseData'] = $hasLactoseData;
    
    // 只有当用户提供了乳糖数据时才进行声称判断
    if ($hasLactoseData) {
        // 无乳糖判断：无论食品状态，乳糖含量≤0.5g/100g（或100mL）
        if ($lactose <= 0.5) {
            $claims[] = [
                'type' => '乳糖',
                'description' => '无乳糖（仅指乳品类）'
            ];
            $debug['lactoseClaim'] = '无乳糖声称（乳糖≤0.5g/100g或100mL，仅适用于乳品类）';
        } 
        // 低乳糖判断：无论食品状态，乳糖含量≤2g/100g（或100mL）
        elseif ($lactose <= 2) {
            $claims[] = [
                'type' => '乳糖',
                'description' => '低乳糖（仅指乳品类）'
            ];
            $debug['lactoseClaim'] = '低乳糖声称（乳糖≤2g/100g或100mL，仅适用于乳品类）';
        } else {
            $debug['lactoseClaim'] = '不符合乳糖声称条件（乳糖>' . $lactose . 'g/100g或100mL）';
        }
    } else {
        $debug['lactoseClaim'] = '未提供乳糖数据，不进行声称判断';
    }
    
    // 检查膳食纤维声称条件
    $dietaryFiber = 0;
    if (isset($standardizedNutrients['dietaryFiber'])) {
        $dietaryFiber = $standardizedNutrients['dietaryFiber'];
    } elseif (isset($standardizedNutrients['膳食纤维'])) {
        $dietaryFiber = $standardizedNutrients['膳食纤维'];
    } elseif (isset($standardizedNutrients['纤维'])) {
        $dietaryFiber = $standardizedNutrients['纤维'];
    }
    
    $debug['dietaryFiber'] = $dietaryFiber;
    
    // 判断是否符合膳食纤维来源的声称条件
    $isDietaryFiberSource = false;
    $reasonDietaryFiberSource = '';
    
    // 条件1: 固体食品，膳食纤维含量 ≥ 3g/100g 且 < 6g/100g
    if ($foodState === '固体' && $dietaryFiber >= 3 && $dietaryFiber < 6) {
        $isDietaryFiberSource = true;
        $reasonDietaryFiberSource = '固体食品膳食纤维含量≥3g/100g且<6g/100g';
    } 
    // 条件2: 液体食品，膳食纤维含量 ≥ 1.5g/100mL 且 < 3g/100mL
    elseif ($foodState === '液体' && $dietaryFiber >= 1.5 && $dietaryFiber < 3) {
        $isDietaryFiberSource = true;
        $reasonDietaryFiberSource = '液体食品膳食纤维含量≥1.5g/100mL且<3g/100mL';
    }
    
    // 条件3: 按能量420kJ计算，膳食纤维含量 ≥ 1.5g/420kJ 且 < 3g/420kJ
    if (!$isDietaryFiberSource && $standardizedEnergy > 0) {
        // 计算420kJ条件下的膳食纤维含量
        $fiberAt420kJ = $dietaryFiber * (420 / $standardizedEnergy);
        $debug['fiberAt420kJ'] = $fiberAt420kJ;
        $debug['fiber420kJCalculation'] = "$dietaryFiber * (420 / $standardizedEnergy) = $fiberAt420kJ";
        
        if ($fiberAt420kJ >= 1.5 && $fiberAt420kJ < 3) {
            $isDietaryFiberSource = true;
            $reasonDietaryFiberSource = '按420kJ能量标准化后，膳食纤维含量≥1.5g且<3g';
        }
    }
    
    // 添加膳食纤维来源声称
    if ($isDietaryFiberSource) {
        $claims[] = [
            'type' => '膳食纤维',
            'description' => '膳食纤维来源或含有膳食纤维'
        ];
        $debug['dietaryFiberSourceClaim'] = '符合膳食纤维来源声称，原因: ' . $reasonDietaryFiberSource;
    } else {
        $debug['dietaryFiberSourceClaim'] = '不符合膳食纤维来源声称条件';
    }
    
    // 判断是否符合高膳食纤维的声称条件
    $isHighDietaryFiber = false;
    $reasonHighDietaryFiber = '';
    
    // 条件1: 固体食品，膳食纤维含量 ≥ 6g/100g
    if ($foodState === '固体' && $dietaryFiber >= 6) {
        $isHighDietaryFiber = true;
        $reasonHighDietaryFiber = '固体食品膳食纤维含量≥6g/100g';
    } 
    // 条件2: 液体食品，膳食纤维含量 ≥ 3g/100mL
    elseif ($foodState === '液体' && $dietaryFiber >= 3) {
        $isHighDietaryFiber = true;
        $reasonHighDietaryFiber = '液体食品膳食纤维含量≥3g/100mL';
    }
    
    // 条件3: 按能量420kJ计算，膳食纤维含量 ≥ 3g/420kJ
    if (!$isHighDietaryFiber && $standardizedEnergy > 0) {
        // 计算420kJ条件下的膳食纤维含量
        $fiberAt420kJ = $dietaryFiber * (420 / $standardizedEnergy);
        $debug['highFiberAt420kJ'] = $fiberAt420kJ;
        $debug['highFiber420kJCalculation'] = "$dietaryFiber * (420 / $standardizedEnergy) = $fiberAt420kJ";
        
        if ($fiberAt420kJ >= 3) {
            $isHighDietaryFiber = true;
            $reasonHighDietaryFiber = '按420kJ能量标准化后，膳食纤维含量≥3g';
        }
    }
    
    // 添加高膳食纤维声称
    if ($isHighDietaryFiber) {
        $claims[] = [
            'type' => '膳食纤维',
            'description' => '高或富含膳食纤维'
        ];
        $debug['highDietaryFiberClaim'] = '符合高膳食纤维声称，原因: ' . $reasonHighDietaryFiber;
    } else {
        $debug['highDietaryFiberClaim'] = '不符合高膳食纤维声称条件';
    }
    
    // 检查钠的声称条件
    $sodium = isset($standardizedNutrients['sodium']) ? $standardizedNutrients['sodium'] : 0;
    
    $debug['sodium'] = $sodium;
    
    // 条件1: 无或不含钠 - 钠含量 ≤ 5mg/100g(或100mL)
    if ($sodium <= 5) {
        $claims[] = [
            'type' => '钠',
            'description' => '无或不含钠，可用"盐"字代替"钠"字'
        ];
        $debug['sodiumClaim'] = '无钠声称（钠≤5mg/100g或100mL）';
    } 
    // 条件2: 极低钠或极少钠 - 钠含量 > 5mg/100g(或100mL) 且 ≤ 40mg/100g(或100mL)
    elseif ($sodium > 5 && $sodium <= 40) {
        $claims[] = [
            'type' => '钠',
            'description' => '极低钠或极少钠，可用"盐"字代替"钠"字'
        ];
        $debug['sodiumClaim'] = '极低钠声称（钠>5mg且≤40mg/100g或100mL）';
    }
    // 条件3: 低钠 - 钠含量 > 40mg/100g(或100mL) 且 ≤ 120mg/100g(或100mL)
    elseif ($sodium > 40 && $sodium <= 120) {
        $claims[] = [
            'type' => '钠',
            'description' => '低钠，可用"盐"字代替"钠"字'
        ];
        $debug['sodiumClaim'] = '低钠声称（钠>40mg且≤120mg/100g或100mL）';
    } else {
        $debug['sodiumClaim'] = '不符合钠声称条件（钠>' . $sodium . 'mg/100g或100mL）';
    }
    
  
    
    // 新增：高或富含维生素声称判断
    $vitaminNRV = [
        '维生素A' => 800,
        '维生素D' => 10,
        '维生素E' => 14,
        '维生素K' => 80,
        '维生素B1' => 1.4,
        '硫胺素' => 1.4,
        '维生素B2' => 1.4,
        '核黄素' => 1.4,
        '维生素B6' => 1.4,
        '维生素B12' => 2.4,
        '维生素C' => 100,
        '抗坏血酸' => 100,
        '烟酸' => 14,
        '烟酰胺' => 14,
        '叶酸' => 400,
        '泛酸' => 5,
        '生物素' => 40
    ];
    // 等价映射，优先用用户输入的名称
    $vitaminEquiv = [
        '维生素B1' => '硫胺素',
        '硫胺素' => '维生素B1',
        '维生素B2' => '核黄素',
        '核黄素' => '维生素B2',
        '维生素C' => '抗坏血酸',
        '抗坏血酸' => '维生素C',
        '烟酸' => '烟酰胺',
        '烟酰胺' => '烟酸'
    ];
    $vitaminHighChecked = [];
    $highVitaminCount = 0;  // 计数符合"高或富含"条件的维生素数量
    $highVitamins = [];     // 记录符合"高或富含"条件的维生素名称
    $sourceVitaminCount = 0; // 计数符合"来源或含有"条件的维生素数量
    $sourceVitamins = [];    // 记录符合"来源或含有"条件的维生素名称
    $allVitaminChecked = [];
    $processedVitamins = []; // 已处理过的维生素类型，避免重复添加
    
    foreach ($vitaminNRV as $vitamin => $nrv) {
        if (in_array($vitamin, $vitaminHighChecked)) continue;
        $inputName = null;
        foreach ([$vitamin, $vitaminEquiv[$vitamin] ?? null] as $name) {
            if ($name && isset($standardizedNutrients[$name])) {
                $inputName = $name;
                break;
            }
        }
        if (!$inputName) continue;
        $value = $standardizedNutrients[$inputName];
        $isHighVitamin = false;
        $isSourceVitamin = false;
        
        // 如果该类型维生素已经处理过，跳过
        if (in_array($inputName, $processedVitamins)) {
            continue;
        }
        
        // 临时存储该维生素的声称
        $vitaminClaim = null;
        
        // 只要有一个区间满足"高或富含"，就不再判断"来源或含有"
        // 固体
        if ($foodState === '固体') {
            if ($value >= 0.3 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => '高或富含' . $inputName
                ];
                $isHighVitamin = true;
            } else if ($value >= 0.15 * $nrv && $value < 0.3 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => $inputName . '来源或含有' . $inputName
                ];
                $isSourceVitamin = true;
            }
        }
        // 液体
        else if ($foodState === '液体') {
            if ($value >= 0.15 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => '高或富含' . $inputName
                ];
                $isHighVitamin = true;
            } else if ($value >= 0.075 * $nrv && $value < 0.15 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => $inputName . '来源或含有' . $inputName
                ];
                $isSourceVitamin = true;
            }
        }
        // 420kJ折算
        if (!$isHighVitamin && $standardizedEnergy > 0 && isset($standardizedNutrients['energy'])) {
            $value420 = $value * (420 / $standardizedEnergy);
            if ($value420 >= 0.1 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => '高或富含' . $inputName
                ];
                $isHighVitamin = true;
            } else if ($value420 >= 0.05 * $nrv && $value420 < 0.1 * $nrv) {
                $vitaminClaim = [
                    'type' => $inputName,
                    'description' => $inputName . '来源或含有' . $inputName
                ];
                $isSourceVitamin = true;
            }
        }
        
        // 如果有声称，添加到claims
        if ($vitaminClaim) {
            $claims[] = $vitaminClaim;
            $processedVitamins[] = $inputName; // 标记该维生素已处理
        }
        
        if ($isHighVitamin) {
            $highVitaminCount++;
            $highVitamins[] = $inputName;
            $allVitaminChecked[] = $inputName;
        } else if ($isSourceVitamin) {
            $sourceVitaminCount++;
            $sourceVitamins[] = $inputName;
            $allVitaminChecked[] = $inputName;
        }
        $vitaminHighChecked[] = $vitamin;
        $vitaminHighChecked[] = $vitaminEquiv[$vitamin] ?? null;
    }
    // "富含多种维生素"判定（原有逻辑）
    if ($highVitaminCount >= 3) {
        $claims[] = [
            'type' => '多种维生素',
            'description' => '富含多种维生素',
            'detail' => '富含' . implode('、', $highVitamins)
        ];
        $debug['multiVitaminClaim'] = [
            'highVitaminCount' => $highVitaminCount,
            'highVitamins' => $highVitamins
        ];
    }
    // 新增："含有多种维生素"判定
    if (
        ($sourceVitaminCount >= 3) ||
        ($highVitaminCount <= 2 && ($highVitaminCount + $sourceVitaminCount) >= 3)
    ) {
        $claims[] = [
            'type' => '多种维生素',
            'description' => '含有多种维生素',
            'detail' => '含有' . implode('、', array_merge($highVitamins, $sourceVitamins))
        ];
        $debug['multiVitaminSourceClaim'] = [
            'highVitaminCount' => $highVitaminCount,
            'sourceVitaminCount' => $sourceVitaminCount,
            'highVitamins' => $highVitamins,
            'sourceVitamins' => $sourceVitamins
        ];
    }
    
    // ====== 新增矿物质NRV及声称判定 ======
    $mineralNRV = [
        '钙' => 800,
        '磷' => 700,
        '钾' => 2000,
        '镁' => 300,
        '铁' => 15,
        '锌' => 11,
        '碘' => 120,
        '硒' => 60,
        '铜' => 0.8,
        '氟' => 1,
        '锰' => 3
    ];
    $mineralHighCount = 0;
    $mineralHighList = [];
    $mineralSourceCount = 0;
    $mineralSourceList = [];
    $processedMinerals = []; // 已处理过的矿物质类型，避免重复添加
    
    foreach ($mineralNRV as $mineral => $nrv) {
        if (!isset($standardizedNutrients[$mineral])) continue;
        
        // 如果该类型矿物质已经处理过，跳过
        if (in_array($mineral, $processedMinerals)) {
            continue;
        }
        
        $value = $standardizedNutrients[$mineral];
        $isHigh = false;
        $isSource = false;
        
        // 临时存储该矿物质的声称
        $mineralClaim = null;
        
        // 固体
        if ($foodState === '固体') {
            if ($value >= 0.3 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => '高或富含' . $mineral
                ];
                $isHigh = true;
            } else if ($value >= 0.15 * $nrv && $value < 0.3 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => $mineral . '来源，或含有' . $mineral
                ];
                $isSource = true;
            }
        }
        // 液体
        else if ($foodState === '液体') {
            if ($value >= 0.15 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => '高或富含' . $mineral
                ];
                $isHigh = true;
            } else if ($value >= 0.075 * $nrv && $value < 0.15 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => $mineral . '来源，或含有' . $mineral
                ];
                $isSource = true;
            }
        }
        // 420kJ折算
        if (!$isHigh && $standardizedEnergy > 0 && isset($standardizedNutrients['energy'])) {
            $value420 = $value * (420 / $standardizedEnergy);
            if ($value420 >= 0.1 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => '高或富含' . $mineral
                ];
                $isHigh = true;
            } else if ($value420 >= 0.05 * $nrv && $value420 < 0.1 * $nrv) {
                $mineralClaim = [
                    'type' => $mineral,
                    'description' => $mineral . '来源，或含有' . $mineral
                ];
                $isSource = true;
            }
        }
        
        // 如果有声称，添加到claims
        if ($mineralClaim) {
            $claims[] = $mineralClaim;
            $processedMinerals[] = $mineral; // 标记该矿物质已处理
        }
        
        if ($isHigh) {
            $mineralHighCount++;
            $mineralHighList[] = $mineral;
        } else if ($isSource) {
            $mineralSourceCount++;
            $mineralSourceList[] = $mineral;
        }
    }
    // "富含多种矿物质"判定
    if ($mineralHighCount >= 3) {
        $claims[] = [
            'type' => '多种矿物质',
            'description' => '富含多种矿物质',
            'detail' => '富含' . implode('、', $mineralHighList)
        ];
        $debug['multiMineralClaim'] = [
            'highMineralCount' => $mineralHighCount,
            'highMinerals' => $mineralHighList
        ];
    }
    // "含有多种矿物质"判定
    if (
        ($mineralSourceCount >= 3) ||
        ($mineralHighCount <= 2 && ($mineralHighCount + $mineralSourceCount) >= 3)
    ) {
        $claims[] = [
            'type' => '多种矿物质',
            'description' => '含有多种矿物质',
            'detail' => '含有' . implode('、', array_merge($mineralHighList, $mineralSourceList))
        ];
        $debug['multiMineralSourceClaim'] = [
            'highMineralCount' => $mineralHighCount,
            'sourceMineralCount' => $mineralSourceCount,
            'highMinerals' => $mineralHighList,
            'sourceMinerals' => $mineralSourceList
        ];
    }
    
    // 添加调试信息
    $analysis['debug'] = $debug;
    
    // 消除重复的声称
    $uniqueClaims = [];
    $processedTypes = [];
    
    foreach ($claims as $claim) {
        $type = $claim['type'];
        $description = $claim['description'];
        $key = $type . '|' . $description;
        
        if (!in_array($key, $processedTypes)) {
            $uniqueClaims[] = $claim;
            $processedTypes[] = $key;
        }
    }
    
    return $uniqueClaims;
}

// 分析营养成分作用声称
function analyzeNutritionEffects($data, $claims = []) {
    $nutrients = $data['nutrients'];
    $effects = [];
    
    // 获取单位
    $unit = isset($data['unit']) ? $data['unit'] : '每100克';
    
    // 初始化折算系数Z，默认为1（即不需要折算）
    $conversionFactor = 1;
    
    // 检查是否是每份单位，如果是则计算折算系数Z = 100/x
    if (strpos($unit, '每份') !== false) {
        // 获取每份大小
        $servingSize = isset($data['servingSize']) ? $data['servingSize'] : '';
        // 提取数字部分
        preg_match('/(\d+(\.\d+)?)/', $servingSize, $matches);
        if (!empty($matches[1])) {
            $amount = floatval($matches[1]);
            if ($amount > 0) {
                // 计算折算系数Z = 100/x
                $conversionFactor = 100 / $amount;
            }
        }
    }
    
    // 应用折算系数到所有营养素
    $standardizedNutrients = [];
    foreach ($nutrients as $key => $value) {
        $standardizedNutrients[$key] = floatval($value) * $conversionFactor;
    }
    
    // 创建营养成分同义词映射
    $nutrientSynonyms = [
        '抗坏血酸' => '维生素C',
        '硫胺素' => '维生素B1',
        '核黄素' => '维生素B2',
        '烟酰胺' => '烟酸'
    ];
    
    // n-3多不饱和脂肪酸与α-亚麻酸的关联检查
    $hasN3FattyAcidsClaim = false;
    $isN3FromAlphaLinolenicAcid = false;
    
    // 检查是否存在n-3多不饱和脂肪酸声称且数据中含有α-亚麻酸
    foreach ($claims as $claim) {
        if ($claim['type'] === 'n-3多不饱和脂肪酸') {
            $hasN3FattyAcidsClaim = true;
            
            // 检查是否有α-亚麻酸数据 - 使用标准化后的数据
            $alphaLinolenicAcid = 0;
            if (isset($standardizedNutrients['α-亚麻酸'])) {
                $alphaLinolenicAcid = $standardizedNutrients['α-亚麻酸'];
            } elseif (isset($standardizedNutrients['alphaLinolenicAcid'])) {
                $alphaLinolenicAcid = $standardizedNutrients['alphaLinolenicAcid'];
            } elseif (isset($standardizedNutrients['亚麻酸'])) {
                $alphaLinolenicAcid = $standardizedNutrients['亚麻酸'];
            }
            
            // 检查α-亚麻酸含量是否达到n-3多不饱和脂肪酸来源的标准（≥300mg）
            if ($alphaLinolenicAcid >= 300) {
                $isN3FromAlphaLinolenicAcid = true;
            }
            break;
        }
    }
    
    // 创建营养声称类型到作用声称的映射
    $effectsMapping = [
        '能量' => [
            'effects' => [
                '人体需要能量来维持生命活动。',
                '机体的生长发育和一切活动都需要能量。',
                '适当的能量可以保持良好的健康状况。',
                '能量摄入过高、缺少运动与超重和肥胖有关。'
            ]
        ],
        '蛋白质' => [
            'effects' => [
                '蛋白质是人体的主要构成物质并提供多种氨基酸。',
                '蛋白质是人体生命活动中必需的重要物质,有助于组织的形成和生长。',
                '蛋白质构成人体组织的重要成分。',
                '蛋白质有助于组织的形成、修复。',
                '蛋白质是组织形成和生长的主要营养素。',
                '蛋白质有助于肌肉的增长和维持。'
            ]
        ],
        '脂肪' => [
            'effects' => [
                '脂肪提供高能量。',
                '每日膳食中脂肪提供的能量比例不宜超过总能量的30%。',
                '脂肪是人体的重要组成成分。',
                '脂肪可辅助脂溶性维生素的吸收。',
                '脂肪提供人体必需脂肪酸。',
                '长期高脂肪摄入不利于维持正常体重和体脂水平。'
            ]
        ],
        '饱和脂肪' => [
            'effects' => [
                '饱和脂肪可促进食品中胆固醇的吸收。',
                '长期过多摄入饱和脂肪可使血胆固醇增高。',
                '饱和脂肪的摄入量应少于每日总能量的10%。'
            ]
        ],
        '反式脂肪酸' => [
            'effects' => [
                '每天摄入反式脂肪酸不应超过2.2g，过多摄入有害健康。',
                '反式脂肪酸摄入量应少于每日总能量的1%。',
                '过多摄入反式脂肪酸可增加心血管疾病发生的风险。'
            ]
        ],
        'α-亚麻酸' => [
            'effects' => [
                'α-亚麻酸是人体必需脂肪酸。'
            ]
        ],
        '糖' => [
            'effects' => [
                '糖是提供能量的基本物质。',
                '长期高糖摄入可增加龋齿和肥胖发生的风险。'
            ]
        ],
        '膳食纤维' => [
            'effects' => [
                '膳食纤维是低能量物质。',
                '膳食纤维有助于维持正常的肠道功能。'
            ]
        ],
        '钠' => [
            'effects' => [
                '钠能调节机体水分、维持酸碱平衡。',
                '成人每日食盐的摄入量不宜超过5g。',
                '长期高盐摄入可以导致血压升高。'
            ]
        ],
        '维生素A' => [
            'effects' => [
                '维生素A有助于维持暗视力。',
                '维生素A有助于维持皮肤和黏膜健康。',
                '维生素A有助于维持正常视力。',
                '维生素A有助于维持免疫系统的正常生理功能。'
            ]
        ],
        '维生素D' => [
            'effects' => [
                '维生素D有助于骨骼和牙齿的健康。',
                '维生素D有助于骨骼形成。',
                '维生素D可促进钙和磷的吸收和利用。'
            ]
        ],
        '维生素E' => [
            'effects' => [
                '维生素E有抗氧化作用。'
            ]
        ],
        '维生素K' => [
            'effects' => [
                '维生素K是维持正常凝血功能不可缺少的成分。'
            ]
        ],
        '维生素B1' => [
            'effects' => [
                '维生素B1是能量代谢中不可缺少的成分。',
                '维生素B1有助于维持神经系统的正常生理功能。'
            ]
        ],
        '维生素B2' => [
            'effects' => [
                '维生素B2有助于维持皮肤和黏膜健康。',
                '维生素B2是能量代谢中不可缺少的成分。'
            ]
        ],
        '维生素B6' => [
            'effects' => [
                '维生素B6有助于蛋白质的代谢和利用。',
                '维生素B6有助于正常能量代谢。',
                '维生素B6有助于维持神经系统的正常生理功能。'
            ]
        ],
        '维生素B12' => [
            'effects' => [
                '维生素B12有助于红细胞形成。',
                '维生素B12有助于正常的能量代谢。',
                '维生素B12有助于维持神经系统的正常生理功能。'
            ]
        ],
        '维生素C' => [
            'effects' => [
                '维生素C有助于维持皮肤和黏膜健康。',
                '维生素C有助于维持骨骼和牙龈的健康。',
                '维生素C可以促进铁的吸收。',
                '维生素C有抗氧化作用。',
                '维生素C有助于维持免疫系统的正常生理功能。'
            ]
        ],
        '烟酸' => [
            'effects' => [
                '烟酸有助于维持皮肤和黏膜健康。',
                '烟酸是能量代谢中不可缺少的成分。',
                '烟酸有助于维持神经系统的正常生理功能。'
            ]
        ],
        '叶酸' => [
            'effects' => [
                '叶酸有助于胎儿大脑和神经系统的正常发育。',
                '叶酸有助于红细胞形成。'
            ]
        ],
        '泛酸' => [
            'effects' => [
                '泛酸是参与能量代谢的物质。'
            ]
        ],
        '生物素' => [
            'effects' => [
                '生物素有助于维持皮肤和毛发健康。'
            ]
        ],
        '胆碱' => [
            'effects' => [
                '胆碱是参与脂类代谢的重要成分。'
            ]
        ],
        '钙' => [
            'effects' => [
                '钙是人体骨骼和牙齿的主要组成成分。',
                '钙是骨骼和牙齿的主要成分,并可维持骨密度。',
                '钙有助于骨骼和牙齿的发育。',
                '钙有助于骨骼和牙齿更坚固。',
                '钙是正常的神经和肌肉功能所必需的。'
            ]
        ],
        '磷' => [
            'effects' => [
                '磷有助于维持细胞膜的正常功能。',
                '磷有助于维持骨骼和牙齿健康。'
            ]
        ],
        '钾' => [
            'effects' => [
                '钾是维持水和电解质的平衡的必需元素。',
                '钾有助于维持正常的肌肉功能。',
                '钾对尿钠的排出有促进作用。',
                '钾参与糖和蛋白质的代谢。'
            ]
        ],
        '镁' => [
            'effects' => [
                '镁是能量代谢、组织形成和骨骼发育的重要成分。',
                '镁有助于维持正常的肌肉功能。'
            ]
        ],
        '铁' => [
            'effects' => [
                '铁是血红细胞形成的重要成分。',
                '铁是血红细胞形成的必需元素。',
                '铁对血红蛋白的产生是必需的。'
            ]
        ],
        '锌' => [
            'effects' => [
                '锌是儿童生长发育的必需元素。',
                '锌有助于改善食欲。',
                '锌有助于皮肤健康。',
                '锌有助于维持免疫系统的正常生理功能。'
            ]
        ],
        '碘' => [
            'effects' => [
                '碘是甲状腺发挥正常功能的元素。',
                '碘是神经系统发育所必需的。'
            ]
        ],
        '硒' => [
            'effects' => [
                '硒有抗氧化作用。',
                '硒有助于维持免疫系统的正常生理功能。'
            ]
        ],
       
        // 可以在这里添加更多营养素的映射...
    ];
    
    // 处理所有营养素 - 基于营养声称
    $processedTypes = []; // 已处理的营养素类型
    
    // 查找直接输入的α-亚麻酸
    $hasAlphaLinolenicAcid = false;
    $alphaLinolenicAcidValue = 0;
    
    if (isset($standardizedNutrients['α-亚麻酸'])) {
        $hasAlphaLinolenicAcid = true;
        $alphaLinolenicAcidValue = $standardizedNutrients['α-亚麻酸'];
    } elseif (isset($standardizedNutrients['alphaLinolenicAcid'])) {
        $hasAlphaLinolenicAcid = true;
        $alphaLinolenicAcidValue = $standardizedNutrients['alphaLinolenicAcid'];
    } elseif (isset($standardizedNutrients['亚麻酸'])) {
        $hasAlphaLinolenicAcid = true;
        $alphaLinolenicAcidValue = $standardizedNutrients['亚麻酸'];
    }
    
    // 检查所有声称
    foreach ($claims as $claim) {
        $type = $claim['type'];
        
        // 检查是否有同义词映射
        if (isset($nutrientSynonyms[$type]) && isset($effectsMapping[$nutrientSynonyms[$type]])) {
            $mappedType = $nutrientSynonyms[$type];
            // 如果已经处理过该类型的营养素或其同义词，跳过
            if (in_array($mappedType, $processedTypes)) {
                continue;
            }
            
            // 添加作用声称，使用映射后的类型
            $effects[] = [
                'nutrient' => $type, // 显示原始类型名称
                'effects' => $effectsMapping[$mappedType]['effects']
            ];
            $processedTypes[] = $mappedType; // 标记为已处理
        }
        // 如果已经处理过该类型的营养素，跳过
        else if (in_array($type, $processedTypes)) {
            continue;
        }
        // 检查是否有此营养素的映射
        else if (isset($effectsMapping[$type])) {
            // 直接添加作用声称，不再检查条件关键词
            $effects[] = [
                'nutrient' => $type,
                'effects' => $effectsMapping[$type]['effects']
            ];
            $processedTypes[] = $type; // 标记为已处理
        }
    }
    
    // 如果存在n-3多不饱和脂肪酸声称且是由α-亚麻酸触发的，或者直接输入的α-亚麻酸达到一定值，添加α-亚麻酸的作用声称
    if (
        ($hasN3FattyAcidsClaim && $isN3FromAlphaLinolenicAcid && isset($effectsMapping['α-亚麻酸']) && !in_array('α-亚麻酸', $processedTypes))
        || 
        ($hasAlphaLinolenicAcid && $alphaLinolenicAcidValue >= 300 && isset($effectsMapping['α-亚麻酸']) && !in_array('α-亚麻酸', $processedTypes))
    ) {
        $effects[] = [
            'nutrient' => 'α-亚麻酸',
            'effects' => $effectsMapping['α-亚麻酸']['effects']
        ];
    }
    
    return $effects;
} 