项目实训第4篇
前言
在“菜单翻译官——AI智能点餐助手”项目中,美食知识库是核心支撑模块,直接服务于AI咨询、菜品推荐、菜单解析等核心功能。此前知识库数据量有限、覆盖范围较窄,且缺乏图片资源和用户个性化适配能力。本周重点推进以下3项工作,进一步完善模块功能、提升用户体验:
-
扩充知识库数据,涵盖菜系、食材、饮食文化、过敏原标签等核心内容
-
为所有知识库条目统一添加图片资源,提升视觉呈现效果
-
开发用户个性化饮食偏好设置功能,实现精准适配
一、美食知识库数据扩充
本次数据扩充围绕“丰富性、实用性、全面性”展开,结合项目实际需求,对原有数据库表进行补充和完善,同时新增过敏原标签表,满足用户安全点餐需求。
1.1 全球菜系覆盖
为满足国际化点餐需求,新增了港式料理、台湾料理、新加坡料理、马来西亚料理、美式料理、巴西料理、秘鲁料理、黎巴嫩料理、英式料理、德国料理等国际菜系,每条国际菜系均标注所属国家/地区、核心特点及代表菜品,实现中外菜系全面覆盖。
1.2 饮食文化扩充
饮食文化是知识库的重要补充,本次新增12条饮食文化记录,涵盖多个国家和地区的饮食习俗、礼仪规范,帮助用户更好地了解不同地域的饮食文化,提升点餐体验,具体包括:
-
日本:鞠躬礼仪、荞麦面文化
-
韩国:火锅文化、伴餐小菜文化
-
泰国:辣度文化、街头美食文化
-
法国:红酒搭配、法式正餐礼仪
-
意大利:面食礼仪、咖啡文化
-
印度:手抓饭、素食文化
以下为泰国辣度文化的插入示例代码:
INSERT INTO food_culture VALUES
(13, 'thai_spicy', '泰国菜的辣度文化', '习俗', '泰国', 'thai',
'泰国菜以辣闻名,但辣度可根据个人口味调整。点餐时可以说"mai phet"(不辣)、"phet nit noy"(微辣)、"phet mak"(特辣),适配不同人群的口味需求。泰国辣度的核心来自于新鲜辣椒和鱼露的搭配,既刺激又鲜香,是泰国饮食文化的重要标志。',
'泰国菜辣度可灵活调节', 'https://images.unsplash.com/photo-1536304993881-ff6e9eefa2a6?w=400');
1.3 过敏原标签系统
为保障过敏体质用户的用餐安全,新建allergen_tags表,包含12类常见过敏原,标注风险等级及相关说明,后续将关联菜品表,实现过敏原自动识别和提示,具体如下表所示:
|
过敏原 |
风险等级 |
说明 |
|---|---|---|
|
花生 |
high |
花生酱、花生油、沙茶酱等制品中均可能含有 |
|
乳制品 |
high |
牛奶、奶油、芝士、黄油等乳制品均含该成分 |
|
蛋类 |
medium |
鸡蛋及含蛋制品(蛋糕、蛋挞、蛋炒饭等) |
|
小麦/麸质 |
medium |
面包、面条、馒头等小麦制品 |
|
海鲜 |
high |
鱼、虾、蟹、贝类等各类海鲜 |
|
甲壳类 |
high |
虾、蟹、龙虾等甲壳类海鲜,过敏反应较强烈 |
|
大豆 |
medium |
大豆、豆腐、豆浆等豆制品 |
|
坚果 |
high |
核桃、杏仁、腰果等各类坚果及坚果制品 |
|
芝麻 |
medium |
芝麻、芝麻酱等芝麻制品 |
|
芹菜 |
low |
芹菜及含芹菜的菜品 |
|
芥末 |
low |
芥末及含芥末的调味品、菜品 |
|
酒精 |
medium |
含酒精的饮品、菜品(如醉虾、酒心巧克力) |
二、图片资源添加
为提升知识库的视觉呈现效果和用户体验,为所有知识库条目(菜系、食材、烹饪方法)统一添加了图片资源。图片分为封面大图(cover_image)和小图标(icon),分别用于列表展示和详情页展示。
2.1 菜系封面图
每个菜系均配置了cover_image(封面大图)和icon(小图标),封面大图选用高质量美食摄影作品,小图标选用Icons8彩色图标,贴合菜系特点,以下为日本菜系的图片配置示例代码:
UPDATE cuisines SET cover_image = 'https://images.unsplash.com/photo-1579871494447-9811cf80d66c?w=800', icon = 'https://img.icons8.com/color/96/sushi.png' WHERE cuisine_id = 'japanese';
2.2 食材图片
30种食材全部配置了图片和图标,图片选用食材特写摄影作品,图标选用Icons8对应的食材图标,确保视觉统一,以下为大米的图片配置示例代码:
UPDATE ingredients SET image = 'https://images.unsplash.com/photo-1536304993881-ff6e9eefa2a6?w=400', icon = 'https://img.icons8.com/color/96/rice-bowl.png' WHERE ingredient_id = 'rice';
2.3 烹饪方法图标
14种烹饪方法统一使用Icons8彩色图标,图标样式贴合烹饪场景,直观易懂,以下为常见烹饪方法的图标配置示例代码:
UPDATE cooking_methods SET icon = 'https://img.icons8.com/color/96/frying-pan.png' WHERE method_id = 'stir_fry';
三、用户个性化偏好设置
结合用户实际点餐需求,开发了用户个性化饮食偏好设置功能,支持用户根据自身情况设置过敏原、忌口食材、辣度偏好等,后续将联动知识库和菜品推荐功能,实现精准适配,提升用户点餐体验。
3.1 数据库改造
在users表中新增6个偏好字段,用于存储用户的饮食偏好信息,字段类型适配实际需求,支持多选项存储,具体改造代码如下:
ALTER TABLE users ADD COLUMN allergies JSON NULL COMMENT '过敏原列表', ADD COLUMN dislikes JSON NULL COMMENT '忌口食材列表', ADD COLUMN dietary_restrictions JSON NULL COMMENT '饮食限制(如素食、清真等)', ADD COLUMN spice_level VARCHAR(20) DEFAULT 'medium' COMMENT '辣度偏好(no_spicy/medium/hot)', ADD COLUMN budget VARCHAR(20) DEFAULT 'medium' COMMENT '预算等级(economic/medium/high)', ADD COLUMN preferred_language VARCHAR(20) DEFAULT 'zh-CN' COMMENT '偏好语言(中文/English/日本語/한국어)';
3.2 后端API开发
基于FastAPI框架,新增3个接口,用于获取、更新用户偏好及获取可选过敏原列表,接口设计符合RESTful规范,支持JWT鉴权,确保用户数据安全,具体接口信息及核心代码如下:
|
接口 |
请求方法 |
功能描述 |
|---|---|---|
|
/users/preferences |
GET |
获取当前登录用户的饮食偏好信息 |
|
/users/preferences |
PUT |
更新当前登录用户的饮食偏好信息 |
|
/knowledge/allergen-options |
GET |
获取所有可选的过敏原列表,用于前端下拉选择 |
3.3 前端界面开发
基于Flutter框架,开发了偏好设置页面,界面简洁直观,支持用户快速设置个人饮食偏好,具体功能如下:
-
过敏原选择:多选12类常见过敏原,选中后将在后续点餐中自动规避含该过敏原的菜品
-
忌口食材选择:支持自定义输入+多选常见忌口食材(如香菜、生姜、大蒜等)
-
辣度偏好:单选(不辣/no_spicy、中等/medium、重辣/hot),适配不同口味需求
-
预算等级:单选(经济/economic、中等/medium、高端/high),用于后续菜品推荐过滤
-
偏好语言:单选(中文、English、日本語、한국어),适配不同语言用户的使用需求
每个用户的偏好设置独立存储,互不影响,设置完成后实时生效,后续将联动菜单解析、菜品推荐功能,实现个性化适配。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)