前言

在“菜单翻译官——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、日本語、한국어),适配不同语言用户的使用需求

每个用户的偏好设置独立存储,互不影响,设置完成后实时生效,后续将联动菜单解析、菜品推荐功能,实现个性化适配。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐