feat(nutrition): 添加营养成分表拍照分析功能

新增营养成分表拍照识别功能,用户可通过拍摄食物包装上的成分表自动解析营养信息:
- 创建成分表分析页面,支持拍照/选择图片和结果展示
- 集成新的营养成分分析API,支持图片上传和流式分析
- 在营养雷达卡片中添加成分表分析入口
- 更新应用版本至1.0.19
This commit is contained in:
richarjiang
2025-10-16 12:16:08 +08:00
parent bef7d645a8
commit 5013464a2c
9 changed files with 1177 additions and 13 deletions

View File

@@ -1,7 +1,7 @@
import { AnimatedNumber } from '@/components/AnimatedNumber';
import { ROUTES } from '@/constants/Routes';
import { useActiveCalories } from '@/hooks/useActiveCalories';
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
import { useActiveCalories } from '@/hooks/useActiveCalories';
import { useAuthGuard } from '@/hooks/useAuthGuard';
import { fetchDailyBasalMetabolism, fetchDailyNutritionData, selectBasalMetabolismByDate, selectNutritionSummaryByDate } from '@/store/nutritionSlice';
import { triggerLightHaptic } from '@/utils/haptics';
@@ -296,6 +296,23 @@ export function NutritionRadarCard({
</View>
<Text style={styles.foodOptionText}></Text>
</TouchableOpacity>
<TouchableOpacity
style={styles.foodOptionItem}
onPress={() => {
triggerLightHaptic();
pushIfAuthedElseLogin(`${ROUTES.NUTRITION_LABEL_ANALYSIS}?mealType=${currentMealType}`);
}}
activeOpacity={0.7}
>
<View style={[styles.foodOptionIcon]}>
<Image
source={require('@/assets/images/icons/icon-recommend.png')}
style={styles.foodOptionImage}
/>
</View>
<Text style={styles.foodOptionText}></Text>
</TouchableOpacity>
</View>
</TouchableOpacity>
@@ -493,16 +510,17 @@ const styles = StyleSheet.create({
// 食物选项样式
foodOptionsContainer: {
flexDirection: 'row',
justifyContent: 'space-around',
justifyContent: 'space-between',
marginTop: 12,
paddingTop: 12,
borderTopWidth: 1,
borderTopColor: '#F1F5F9',
gap: 16,
paddingHorizontal: 4,
},
foodOptionItem: {
alignItems: 'center',
flex: 1,
paddingHorizontal: 2,
},
foodOptionIcon: {
width: 24,