@@ -672,6 +672,9 @@ struct AIFoodAnalysisResult {
672672 let visualAssessmentDetails : String ?
673673 let notes : String ?
674674
675+ // Store original baseline servings for proper scaling calculations
676+ let originalServings : Double
677+
675678 // Advanced dosing fields (optional for backward compatibility)
676679 let fatProteinUnits : String ?
677680 let netCarbsAdjustment : String ?
@@ -1960,6 +1963,9 @@ class OpenAIFoodAnalysisService {
19601963 print ( " 🔍 Extracted absorptionTimeHours: \( absorptionHours? . description ?? " nil " ) " )
19611964 print ( " 🔍 ========== OPENAI AI ANALYSIS RESULT CREATION COMPLETE ========== " )
19621965
1966+ // Calculate original servings for proper scaling
1967+ let originalServings = detailedFoodItems. reduce ( 0 ) { $0 + $1. servingMultiplier }
1968+
19631969 return AIFoodAnalysisResult (
19641970 imageType: imageType,
19651971 foodItemsDetailed: detailedFoodItems,
@@ -1976,6 +1982,7 @@ class OpenAIFoodAnalysisService {
19761982 diabetesConsiderations: diabetesConsiderations,
19771983 visualAssessmentDetails: visualAssessmentDetails,
19781984 notes: " Analyzed using OpenAI GPT-4 Vision with detailed portion assessment " ,
1985+ originalServings: originalServings,
19791986 fatProteinUnits: extractString ( from: nutritionData, keys: [ " fat_protein_units " ] ) ,
19801987 netCarbsAdjustment: extractString ( from: nutritionData, keys: [ " net_carbs_adjustment " ] ) ,
19811988 insulinTimingRecommendations: extractString ( from: nutritionData, keys: [ " insulin_timing_recommendations " ] ) ,
@@ -2708,6 +2715,9 @@ class GoogleGeminiFoodAnalysisService {
27082715 print ( " 🔍 Extracted absorptionTimeHours: \( absorptionHours? . description ?? " nil " ) " )
27092716 print ( " 🔍 ========== GEMINI AI ANALYSIS RESULT CREATION COMPLETE ========== " )
27102717
2718+ // Calculate original servings for proper scaling
2719+ let originalServings = detailedFoodItems. reduce ( 0 ) { $0 + $1. servingMultiplier }
2720+
27112721 return AIFoodAnalysisResult (
27122722 imageType: imageType,
27132723 foodItemsDetailed: detailedFoodItems,
@@ -2724,6 +2734,7 @@ class GoogleGeminiFoodAnalysisService {
27242734 diabetesConsiderations: diabetesConsiderations,
27252735 visualAssessmentDetails: visualAssessmentDetails,
27262736 notes: " Analyzed using Google Gemini Vision - AI food recognition with enhanced safety measures " ,
2737+ originalServings: originalServings,
27272738 fatProteinUnits: extractString ( from: nutritionData, keys: [ " fat_protein_units " ] ) ,
27282739 netCarbsAdjustment: extractString ( from: nutritionData, keys: [ " net_carbs_adjustment " ] ) ,
27292740 insulinTimingRecommendations: extractString ( from: nutritionData, keys: [ " insulin_timing_recommendations " ] ) ,
@@ -2862,6 +2873,9 @@ class BasicFoodAnalysisService {
28622873 let totalFiber = foodItems. compactMap { $0. fiber } . reduce ( 0 , + )
28632874 let totalCalories = foodItems. compactMap { $0. calories } . reduce ( 0 , + )
28642875
2876+ // Calculate original servings for proper scaling
2877+ let originalServings = foodItems. reduce ( 0 ) { $0 + $1. servingMultiplier }
2878+
28652879 return AIFoodAnalysisResult (
28662880 imageType: . foodPhoto, // Fallback analysis assumes food photo
28672881 foodItemsDetailed: foodItems,
@@ -2878,6 +2892,7 @@ class BasicFoodAnalysisService {
28782892 diabetesConsiderations: " Basic carbohydrate estimate provided. Monitor blood glucose response and adjust insulin as needed. " ,
28792893 visualAssessmentDetails: nil ,
28802894 notes: " This is a basic analysis. For more detailed and accurate nutrition information, consider configuring an AI provider in Settings. " ,
2895+ originalServings: originalServings,
28812896 fatProteinUnits: nil ,
28822897 netCarbsAdjustment: nil ,
28832898 insulinTimingRecommendations: nil ,
@@ -3337,6 +3352,9 @@ class ClaudeFoodAnalysisService {
33373352 let imageTypeString = json [ " image_type " ] as? String
33383353 let imageType = ImageAnalysisType ( rawValue: imageTypeString ?? " food_photo " ) ?? . foodPhoto
33393354
3355+ // Calculate original servings for proper scaling
3356+ let originalServings = foodItems. reduce ( 0 ) { $0 + $1. servingMultiplier }
3357+
33403358 return AIFoodAnalysisResult (
33413359 imageType: imageType,
33423360 foodItemsDetailed: foodItems,
@@ -3353,6 +3371,7 @@ class ClaudeFoodAnalysisService {
33533371 diabetesConsiderations: json [ " diabetes_considerations " ] as? String ,
33543372 visualAssessmentDetails: json [ " visual_assessment_details " ] as? String ,
33553373 notes: " Analysis provided by Claude (Anthropic) " ,
3374+ originalServings: originalServings,
33563375 fatProteinUnits: json [ " fat_protein_units " ] as? String ,
33573376 netCarbsAdjustment: json [ " net_carbs_adjustment " ] as? String ,
33583377 insulinTimingRecommendations: json [ " insulin_timing_recommendations " ] as? String ,
0 commit comments