# 成分表分析功能实现计划 ## 功能概述 实现一个通过拍照识别食物包装上营养成分表的功能,用户可以拍摄食物包装上的成分表,系统会自动识别并解析营养成分信息。 ## 实现步骤 ### 1. 添加路由配置 在 `constants/Routes.ts` 中添加成分表分析的路由: ```typescript // 营养相关路由 NUTRITION_RECORDS: '/nutrition/records', FOOD_LIBRARY: '/food-library', VOICE_RECORD: '/voice-record', NUTRITION_LABEL_ANALYSIS: '/food/nutrition-label-analysis', // 新增 ``` ### 2. 创建成分表分析页面 创建 `app/food/nutrition-label-analysis.tsx` 页面组件,包含以下功能: - 拍照/选择图片功能 - 图片预览 - 成分表识别结果展示 - 营养成分数据展示 - 保存到饮食记录功能 ### 3. 修改NutritionRadarCard组件 在 `components/NutritionRadarCard.tsx` 的食物选项容器中添加成分表分析选项: ```typescript { triggerLightHaptic(); pushIfAuthedElseLogin(`${ROUTES.NUTRITION_LABEL_ANALYSIS}?mealType=${currentMealType}`); }} activeOpacity={0.7} > 成分表分析 ``` ### 4. 创建API服务 在 `services/` 目录下创建 `nutritionLabelAnalysis.ts` 文件,包含以下API: - 图片上传和识别功能 - 成分表数据解析功能 ### 5. 添加图标资源 需要在 `assets/images/icons/` 目录下添加成分表分析相关的图标,建议命名为 `icon-analysis.png` 或 `icon-nutrition-label.png` ### 6. 创建类型定义 在 `types/` 目录下创建或更新食物相关的类型定义,添加成分表分析相关的数据结构 ## 技术实现细节 ### 页面结构 1. **顶部导航栏**:包含返回按钮和标题"成分表分析" 2. **图片区域**:显示拍摄的成分表图片,支持点击预览 3. **识别结果区域**:显示识别出的营养成分数据 4. **操作区域**:包含重新拍照和保存记录按钮 ### 数据结构 ```typescript export interface NutritionLabelData { energy: number; // 能量 (kJ/千卡) protein: number; // 蛋白质 (g) fat: number; // 脂肪 (g) carbohydrate: number; // 碳水化合物 (g) sodium: number; // 钠 (mg) fiber?: number; // 膳食纤维 (g) sugar?: number; // 糖 (g) servingSize?: string; // 每份量 } export interface NutritionLabelAnalysisResult { id: string; imageUri: string; nutritionData: NutritionLabelData; confidence: number; analyzedAt: string; } ``` ### API接口设计 ```typescript // 上传图片并识别成分表 export async function analyzeNutritionLabel(imageUri: string): Promise { // 实现图片上传和识别逻辑 } // 保存成分表分析结果到饮食记录 export async function saveNutritionLabelToDietRecord( analysisResult: NutritionLabelAnalysisResult, mealType: MealType ): Promise { // 实现保存逻辑 } ``` ## UI设计考虑 1. **Liquid Glass风格**:使用毛玻璃效果和渐变背景 2. **动画效果**:添加识别过程中的加载动画和结果展示动画 3. **交互反馈**:使用触觉反馈和视觉反馈提升用户体验 4. **错误处理**:提供友好的错误提示和重试机制 ## 测试计划 1. 测试拍照功能 2. 测试图片识别功能 3. 测试数据保存功能 4. 测试错误处理 5. 测试与现有功能的集成 ## 后续优化 1. 支持多语言成分表识别 2. 添加成分表历史记录 3. 实现成分表数据对比功能 4. 添加成分表数据分享功能