- 创建饮食记录相关的数据库模型、DTO和API接口,支持用户手动添加和AI视觉识别记录饮食。 - 实现饮食分析服务,提供营养分析和健康建议,优化AI教练服务以集成饮食分析功能。 - 更新用户控制器,添加饮食记录的增删查改接口,增强用户饮食管理体验。 - 提供详细的API使用指南和数据库创建脚本,确保功能的完整性和可用性。
46 lines
3.2 KiB
SQL
46 lines
3.2 KiB
SQL
-- 创建用户饮食记录表
|
||
-- 该表用于存储用户通过AI视觉识别或手动输入的饮食记录
|
||
-- 包含详细的营养成分信息,支持营养分析和健康建议功能
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_user_diet_history` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` varchar(255) NOT NULL COMMENT '用户ID',
|
||
`meal_type` enum('breakfast','lunch','dinner','snack','other') NOT NULL DEFAULT 'other' COMMENT '餐次类型',
|
||
`food_name` varchar(100) NOT NULL COMMENT '食物名称',
|
||
`food_description` varchar(500) DEFAULT NULL COMMENT '食物描述(详细信息)',
|
||
`weight_grams` float DEFAULT NULL COMMENT '食物重量(克)',
|
||
`portion_description` varchar(50) DEFAULT NULL COMMENT '份量描述(如:1碗、2片、100g等)',
|
||
`estimated_calories` float DEFAULT NULL COMMENT '估算总热量(卡路里)',
|
||
`protein_grams` float DEFAULT NULL COMMENT '蛋白质含量(克)',
|
||
`carbohydrate_grams` float DEFAULT NULL COMMENT '碳水化合物含量(克)',
|
||
`fat_grams` float DEFAULT NULL COMMENT '脂肪含量(克)',
|
||
`fiber_grams` float DEFAULT NULL COMMENT '膳食纤维含量(克)',
|
||
`sugar_grams` float DEFAULT NULL COMMENT '糖分含量(克)',
|
||
`sodium_mg` float DEFAULT NULL COMMENT '钠含量(毫克)',
|
||
`additional_nutrition` json DEFAULT NULL COMMENT '其他营养信息(维生素、矿物质等)',
|
||
`source` enum('manual','vision','other') NOT NULL DEFAULT 'manual' COMMENT '记录来源',
|
||
`meal_time` datetime DEFAULT NULL COMMENT '用餐时间',
|
||
`image_url` varchar(500) DEFAULT NULL COMMENT '食物图片URL',
|
||
`ai_analysis_result` json DEFAULT NULL COMMENT 'AI识别原始结果',
|
||
`notes` text DEFAULT NULL COMMENT '用户备注',
|
||
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已删除',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_meal_type` (`meal_type`),
|
||
KEY `idx_created_at` (`created_at`),
|
||
KEY `idx_user_created` (`user_id`, `created_at`),
|
||
KEY `idx_deleted` (`deleted`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户饮食记录表';
|
||
|
||
-- 创建索引以优化查询性能
|
||
CREATE INDEX `idx_user_meal_time` ON `t_user_diet_history` (`user_id`, `meal_time`);
|
||
CREATE INDEX `idx_source` ON `t_user_diet_history` (`source`);
|
||
|
||
-- 示例数据(可选)
|
||
-- INSERT INTO `t_user_diet_history` (`user_id`, `meal_type`, `food_name`, `food_description`, `portion_description`, `estimated_calories`, `protein_grams`, `carbohydrate_grams`, `fat_grams`, `fiber_grams`, `source`, `meal_time`, `notes`) VALUES
|
||
-- ('test_user_001', 'breakfast', '燕麦粥', '燕麦片加牛奶和香蕉', '1碗', 320, 12.5, 45.2, 8.3, 6.8, 'manual', '2024-01-15 08:00:00', '早餐很有营养'),
|
||
-- ('test_user_001', 'lunch', '鸡胸肉沙拉', '烤鸡胸肉配蔬菜沙拉', '1份', 280, 35.0, 15.5, 8.0, 5.2, 'vision', '2024-01-15 12:30:00', 'AI识别添加'),
|
||
-- ('test_user_001', 'dinner', '三文鱼配糙米', '煎三文鱼配蒸糙米和西兰花', '1份', 450, 28.5, 52.0, 18.2, 4.5, 'manual', '2024-01-15 19:00:00', '晚餐丰富');
|