2026秋软工实践 海底小纵队——项目原型设计+概要设计

项目内容
所属课程202601 软件工程 - 福州大学
作业要求2026秋软工实践团队作业-第二次(原型设计+概要设计)
作业目标 在第一次作业《需求分析》的基础上,完成软件的原型设计与概要设计:
  1. 用专业工具绘制原型,并展示领域 Agent 的交互流程;
  2. 用用例图/活动图/类图/时序图/协作图等 UML 图,自顶向下描述系统架构与运行逻辑;
  3. 给出 ER 图、关系数据模型与 ORM 映射的数据库设计;
  4. 以表格给出开发计划与分工安排,沉淀团队协作记录。
团队名称海底小纵队
团队成员052401304 李思淇
102301228 林郑嘉同
102401108 李铭媛
102401202 洪雅琳
102401307 陈媛
102401402 冯安娜
102401405 王怡婷
102401406 陈婉凤
102401409 陈宝荣
102401411 陈博淇
102401604 马英慧

原型设计

设计工具:墨刀

注:数据维护(食材/菜库/规则/知识库)由数据岗离线完成,不设在线后台管理界面; 数据经「导入 → 质检 → 审核 → 生效」四步进入正式库, 全程留审计记录。

原型说明

image-20261109132112545

系统设计秉承简约原则,设计为单一功能集成式页面,不另设页面跳转。色调以白色为主,辅以清新绿,给人“健康、清爽”的视觉体验。整体设计参考现在主流大语言模型网页端界面,降低用户的使用门槛,页面从左到右分为三栏:会话管理栏、主对话栏、工具栏。各栏具体说明如下

(1)会话管理栏

image-20261109140751922

  • 会话管理:部件①和②同现在的主流大模型网页,点击①开启新对话,②中以时间分栏记录历史对话记录
  • 个人信息编辑:点击部件③弹出选项,选择个人档案即可查看并编辑。健康目标等字段在设置常见选项同时支持自定义选项,在为用户提供方便时满足自由度需求。

(2)主对话栏:

image-20261109143431401

① 对话框:同主流LLM页面,以气泡形式呈现用户提示词和智能体回复

② 快捷按钮:设置常用提示词选项,点击即可发送按钮中的内容至对话中

③ 输入栏:自由输入提示词,点击右侧发送按钮即可发送

(3)工具栏:

image-20261109144435294

工具栏作为智能体输出的存储器,负责存储智能体的各类输出。具体显示内容由智能体输出决定。

其中,工具①(“食材清单”)和工具②(“当前规划”)展示用户当前确认的方案的对应内容,随用户当前规划实时变动,历史方案和膳食报告则是固定存档,记录历史确认的规划。

领域 Agent 交互流程

  • 配餐规划:用户发送请求 → Agent 理解意图 → Agent 提取用户档案与历史记录,调用工具/知识 → 返回结果 → 确认规划

image-20261109145416203

  • 落地指导:用户点击确认规划 → Agent调用工具/知识 → 返回食材清单与规划详情(含食谱做法与营养分析) → 用户点击右侧工具栏图标展开查看

image-20261109145839201

  • 膳食报告:用户发送请求 → Agent 理解意图 → Agent 提取用户档案与历史记录,调用工具/知识 → 返回结果 → 用户查看

image-20261109151121419

概要设计

系统总体架构

系统按「五层业务架构 + 两个横切层」组织:五层自上而下逐层调用,初始化层位于底层负责环境准备,评测层贯穿五层负责质量观测。系统分层总览如下图所示。

image-20261109133602616

系统的核心分工是确定性计算与智能决策分离:规则引擎(确定性工具)负责计算与生成,Agent 负责理解、决策、沟通;大模型不直接计算数值。各层的核心职责如下表所示:

层 核心职责
数据层 数据持久化:档案、食材、菜、方案、会话等实体存储
知识库层 知识检索:权威资料向量化,支撑结论可溯源
规则引擎层 候选生成:确定性计算候选食谱
Agent 层 意图路由与编排:理解自然语言,编排确定性工具完成询问 / 配餐 / 调整
接口层 对外服务:统一 REST API 与流式对话
初始化层 环境准备:建表、灌入种子数据、首次向量化
评测层 质量观测:量化生成正确性、解释稳定性与性能

系统的技术选型如下:

层 技术栈
前端 Vue3 + Vite + Element Plus
后端 FastAPI(Python 3.13),REST + 流式 SSE
数据库 PostgreSQL 18 + pgvector 扩展
Agent 层 Agno 框架
大模型 DeepSeek(生成/对话);向量化使用共享 embedding 模型

UML 设计

用例图(需求分析)

用例图

本图展示了“膳食搭配智能体系统”的顶层用例。系统以“对话”为核心交互形态,分为普通用户与系统管理员两种角色。用户端聚焦“配餐、调整、咨询”三大对话场景,辅以轻量档案维护;管理端负责维持智能体运行所需的底层知识与规则库。

活动图(业务流程)

活动图

如图所示,核心的配餐流程为:对话发起 → 意图识别 → 读档案与历史(信息不足则追问)→ 确定性工具生成候选 → 换一换 / 确认 → 固定落库,并分支到营养咨询路径。

类图(系统结构)

系统核心实体类及关联如下图所示:

类图

时序图(重要算法模块)

下图描述规则引擎五步算法(算目标 → 构造候选 → 候选差异化 → 跨日微量平衡与回溯 → 输出候选 + 解释)与 SSE 流式对话链路的对象交互时序:

时序图

数据库设计

ER 图

E-R图

核心实体关系:用户 1:N 方案、方案 1:N 餐位、餐位 1:N 候选、候选 1:N 候选菜式 N:1 菜式;菜式 N:1 做法规则、菜式 1:N 配料 N:1 食材;方案 1:1 食材清单、方案 1:1 营养报告;会话 1:N 消息(可引用方案)。

关系数据模型

各实体的属性见类图,此处主要梳理各表的主键与外键

Schema 关系(表) 主键 外键
core ingredient(食材) ingredient_id source_id → data_source
core dish(菜式) dish_id cooking_rule_id → cooking_rule
core dish_ingredient(配料) dish_ingredient_id dish_id → dish;ingredient_id → ingredient
core cooking_rule(做法规则) rule_id —
core nutrient(营养素) nutrient_id —
core nutrient_reference(参考值) nutrient_reference_id nutrient_id → nutrient
core health_condition(疾病) condition_id —
core condition_nutrient_rule(疾病规则) rule_id condition_id → health_condition;nutrient_id → nutrient
core symptom_nutrient_map(症状映射) symptom_nutrient_map_id nutrient_id → nutrient
core goal_structure_map(目标映射) goal —
knowledge knowledge_doc(知识文档) knowledge_doc_id —
knowledge nutrient_knowledge(营养素知识) nutrient_id —
app profile(用户档案) user_id —
app meal_plan(方案) meal_plan_id user_id → profile
app meal_slot(餐位) meal_slot_id meal_plan_id → meal_plan
app meal_candidate(候选) candidate_id meal_slot_id → meal_slot
app meal_candidate_dish(候选菜式) (candidate_id, dish_id) candidate_id → meal_candidate;dish_id → core.dish
app shopping_list(食材清单) shopping_list_id meal_plan_id → meal_plan
app nutrition_report(营养报告) nutrition_report_id meal_plan_id → meal_plan
app conversation(会话) conversation_id user_id → profile
app message(消息) message_id conversation_id → conversation;referenced_plan_id → meal_plan
app nutrition_result(营养结果) nutrition_result_id user_id → profile
audit import_batch / import_issue / condition_rule_review import_batch_id / issue_id / review_id import_issue.import_batch_id → import_batch

对象关系映射

实体类(类图) 库表(Schema) 说明
Profile app.profile 用户档案
Ingredient core.ingredient 食材
Dish core.dish 菜式
MealPlan app.meal_plan 方案
MealSlot app.meal_slot 餐位
MealCandidate app.meal_candidate 候选
MealCandidateDish app.meal_candidate_dish 候选明细(弱实体)
ShoppingList app.shopping_list 食材清单
NutritionReport app.nutrition_report 方案营养报告
SymptomNutritionMap core.symptom_nutrition_map 症状—营养素映射
Conversation app.conversation 会话
Message app.message 消息

映射经 SQLAlchemy 声明式模型实现:实体类即 ORM 模型类,__tablename__ 对应上表库表名。类图未单列实体类的其余表以关联表、主数据、知识或审计表承载,其字段在类图中以属性或外部引用体现。

数据存储与管理说明

(一)存储方式:四个 Schema,三类数据

(1)Schema划分:

系统数据统一存于 PostgreSQL 18 单库 diet_agent,按归属划分为四个 Schema(各 Schema 下的表清单见「关系数据模型」):

Schema 职责
core 权威数值字典(食材、菜式、营养素、规则等)
knowledge 文本知识(供 RAG 检索)
app 业务数据(档案、方案、会话等)
audit 导入与审核留痕

(2)存储形态:

数据类型 存储方式
结构化数值与业务关系 关系表
半结构化内容(候选宏量区间、清单聚合、报告汇总) jsonb
文本知识 pgvector 向量检索

(3)三类数据的落库方式

  1. 领域知识:权威资料(食物成分表、膳食指南、DRIs)经离线「导入 → 质检 → 审核 → 生效」入库,运行时不再依赖外部数据源;数值进 core、文本进 knowledge。每条数据带来源、版本、导入批次,食材另标质量等级(权威 / 估算 / 待核查),可溯源。
  2. 用户交互记录:对话以 SSE 流式交互,存入 conversation(会话)、message(消息);工具调用与结构化输出一并留存,便于复盘评测。
  3. 任务执行结果:规则引擎生成的方案按「方案 → 餐位 → 候选 → 候选菜式」四级落库(状态机 生成中 → 候选可换 → 已固定),固定后汇总出 shopping_list(食材清单)与营养报告,中间结果以 jsonb 快照保存供回溯。

(二)管理方式:权限、质量、一致性与安全

  • 权限:后端以非超级用户 diet_app 连接,按 Schema 授权——core / knowledge 只读、app 读写、audit 只增;规则启用需独立审核角色;对话 Agent 不直连数据库,一律经后端,写库由确定性工具执行。
  • 数据质量:食材分「权威 / 估算 / 待核查」三态;过敏原分「含 / 不含 / 未核查」,未核查食材不向过敏用户标记安全;NULL 表示未知而非零值。
  • 一致性:外键、唯一、检查约束保证取值合法;固定方案在同一事务内提交,失败整体回滚;食材、菜式、历史方案软删除,保留既有引用。
  • 安全:身高体重、疾病、过敏等敏感信息加密存储、最小采集;按用户标识区分并校验归属,日志不记录完整个人资料。
  • 备份恢复:dump + 可重复执行的 SQL 脚本交付,新环境部署与空库恢复均测试。

团队协作记录

开发计划时间安排

周次 阶段 里程碑 产出
第 7–8 周 需求分析 + 答辩 需求文档定稿
答辩通过
需求分析文档、博客、答辩 PPT
第 9–10 周 原型 + 概要设计 原型定稿、两份设计书定稿 原型链接、系统设计说明书 PDF
数据库设计说明书 PDF
第 11 周 数据库改造 + 前端开发 ① 轻量档案(扁平字段)
    + 方案/候选状态机表落地
② 对话主界面 + 工具栏
    + 轻量档案界面完成
① 四 schema + 字段字典 v1.2
    + 后端接口改造
② 可演示前端界面
第 12 周 后端 + Agent 改造 ① 规则引擎五步算法跑通
② 意图路由 + Function Calling
    + 工具编排 + SSE 流式
生成 / 换候选 / 固定接口
方案生成
结构化输出
第 13 周 联调 + 改进 核心流程端到端打通 可演示前端、联调 Demo
第 14 周 测试 + 交付 + 答辩 验收通过、上线、答辩 测试报告、交付包、答辩 PPT

分工安排

学号 姓名 角色 负责的详细开发部分
102401108 李铭媛 PM 项目统筹与排期、架构设计、需求与里程碑管理、博客与文档维护、最终交付定稿
052401304 李思淇 产品 A 前期:调研问卷设计与分析,确定用户画像、使用场景,撰写用户调研部分文档
后期:验收前端用户体验
102401202 洪雅琳 产品 B 前期:功能需求梳理、验收标准编写,撰写需求文档功能规约部分
后期:验收后端功能与业务流程
102301228 林郑嘉同 Agent A RAG 知识检索、营养解释、Agent 输出契约与评测
102401409 陈宝荣 Agent B 意图路由、Function Calling 工具编排、规则引擎五步算法
102401307 陈媛 数据岗 A 领域知识入库:食材 / 菜式 / 营养素数据清洗、种子数据、概念结构设计
102401411 陈博淇 数据岗 B 数据库逻辑 / 物理设计、数据字典、ORM 实现、视图与函数
102401406 陈婉凤 UI 设计 UI 规范与视觉设计、前端样式系统
102401405 王怡婷 前端 对话主界面、工具栏四面板、轻量档案界面、SSE 流式渲染
102401402 冯安娜 后端 接口设计、确定性工具 / 规则引擎实现、数据库访问层
102401604 马英慧 测试 测试用例与验收测试、部署与 GitHub 统筹、原型 / 文档链接可访问性检查

本次作业协作过程记录

团队通过 飞书 与 QQ 进行分工协作与沟通,以下为部分协作过程的聊天记录截图,涵盖文档分工撰写、原型设计反馈、系统架构改进等内容:

原型设计1
原型设计·群意见交流
原型设计2
原型设计·设计A交流记录
原型设计3
原型设计·设计B(前端岗辅助)交流记录
系统设计文档撰写分工
系统设计文档撰写分工
飞书共享文档
飞书共享文档
飞书文档填写记录
飞书文档填写记录
数据库设计文档
数据库设计文档填写协作
测试岗
架构改进意见交流

Github仓库说明

本次作业中的文档协作撰写主要以飞书云文档形式展开,后期统筹后统一将文档上传,后续在实际开发过程中会继续补充代码文件。目前 Github 仓库的目录结构如下:

dietary-agent
├── README.md                 # 仓库导航说明
└── docs
    ├── assignment_1          # 第一次作业
    │   ├── README.md
    │   ├── requirements/     # 需求分析文档
    │   ├── survey/           # 用户调研数据
    │   ├── agent-logs/       # 智能体定制效果对比
    │   └── presentation/     # 答辩PPT
    └── assignment_2          # 第二次作业
        ├── README.md
        ├── prototype_link.txt
        ├── 海底小纵队_系统设计说明书.pdf
        ├── 海底小纵队_数据库设计说明书.pdf
        └── 膳食搭配智能体_数据库交付包_v1.1_2026-10-22/

交付物与链接

交付物 链接
GitHub 团队仓库 dietary-agent
概要设计说明书(2份) https://pan.baidu.com/s/1Y6GkN_5HMSUedHwlAo3Rwg?pwd=ijfb
原型设计展示链接 膳宝-专用膳食搭配智能体
posted @ 2026-11-09 17:12  myuani  阅读(27)  评论(0)    收藏  举报