软件工程课程第二次团队作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559
这个作业的目标 构建一个 Agent 服务
学号 102301323吴金超 102301413余思衡 102301420吴限 102301421翁思铖 102301317余佳兴 082300141吴昕昀 102301325王浩楠 102301433李响 102301423魏昀 102301415叶禹瞳 102301422翁俊龙

一、需求描述

1、系统概述

该系统是一个电商后台分析工具,目标是帮助电商分析师实时查询和分析最近的购买情况。系统将通过调用电商后台的查询接口,获取用户购买数据,并通过智能分析提供关键的业务洞察。

2、功能需求

  1. 数据查询接口集成
    • 系统需要与电商后台的查询接口对接,支持查询用户购买数据。
    • 支持的查询条件包括:
      • 查询时间范围(如:最近一周、一个月、指定日期区间等)。
      • 用户维度(如:按用户ID、购买行为等)。
      • 商品维度(如:商品ID、商品类别、品牌等)。
  2. 购买数据统计与分析
    • 总销售额分析:展示在指定时间范围内的总销售额。
    • 购买频次分析:统计特定商品或用户的购买频率,提供热销商品和高活跃用户的分析。
    • 用户行为分析:分析用户购买周期、购买偏好(如购买次数、购买金额、购买时间分布等)。
    • 销售趋势预测:基于历史数据,预测未来一段时间的销售趋势。
    • 商品库存分析:基于购买数据,推算商品的库存状态和补货需求。

二、业务描述

支持有无 MCP 网关的两种配置,如下:
image

  • 用户在前端和 Agent 进行对话交互,流式显示聊天内容
  • Agent 根据需要向 MCP-Server 发起 ToolCall
  • MCP-Server 进行具体的 ToolExecute(如果配置了 MCP-Gateway,会先经过 MCP-Gateway 转发到对应的 MCP-Server 然后返回对应结果)

三、实现说明

前端:

  • 通过 Vite 构建了一个简单的聊天界面窗口,并支持文件的上传
  • 使用 SSE 实现流式输出

后端:

  • 选择 SpringBoot/SpringWeb 以及 Mybayis 作为基本的开发框架
  • 选择 阿里云OSS 作为对象存储服务来实现文件的上传下载
  • 使用 Langchain4J 构建 MCP-Client 实现多个 LLM 模型的 API 调用以及发送 ToolCalls,同时实现了上下文管理以及多个模型共享上下文
  • 使用 SpringAI-Webflux 作为 MCP-Server 启动框架
  • 使用 Shenyu 提供的 MCP-Server-Plugin 作为 MCP-Gateway 实现 Tools 的实时配置以及转发

测试:

  • 代码层面使用 SpringBootTest 内置的 Junit 进行基本测试
  • 基本测试完毕后使用 Apifox 进行接口测试
  • 最后本地部署,在同一个校园网下测试部署是否成功

项目分为四个子项目,各自独立开发,最后以子项目的形式提交到主仓库。具体结构见 Github 仓库

四、功能演示

实时聊天功能演示

  • 支持多轮对话
  • 支持切换模型
  • 支持上传文件
  • 支持调用商场后台工具
  • 支持多个对话上下文

对话1

五、Github 链接

https://github.com/FZU-YOROZUYA/SE-Project/tree/main/hw2

六、小组分工

负责模块 参与人员 主要内容
项目管理 吴金超 负责项目的整体规划与进度管理,协调团队各模块开发与任务分配,确保项目按时高质量完成。
MCP-Client 吴金超 负责与多个 LLM 模型的 API 集成和 MCP Tool Call 的逻辑,编写请求和接收响应逻辑。编写接口文档并与 MCP-Front 对接。
MCP-Gateway 余思衡 负责使用 Shenyu 实现 MCP-Gateway 功能,将请求转发至对应的 MCP-Server。
MCP-Tools 余佳兴,王浩楠,叶禹瞳 负责实现现实电商系统的增删改查功能,为 MCP-Gateway 和 MCP-Client 提供对应的 MCP-Tools 进行调用。
MCP-Frontend 吴限,翁俊龙,翁思铖 负责前端界面的设计与开发,确保与后端的顺畅数据交互,优化用户体验。
测试 魏昀,吴昕昀,李响 负责进行系统功能、性能测试,确保系统各个功能点符合要求,提供反馈并进行缺陷追踪与修复。

吴金超(项目经理)

作为项目经理,我负责项目的整体规划、进度管理和团队协调。在这次项目中,我学习了如何使用 Langchain4J 集成不同的语言模型。我深入了解了如何利用 MCP-Gateway 模式处理来,并通过与团队成员的紧密合作,在项目管理上积累了经验。我学到了如何高效地安排任务、调整项目进度,并根据项目需求及时调整计划。最重要的是,我理解了如何通过透明的沟通和团队协作确保项目按时交付。

余思衡(MCP-Gateway开发)

作为 Apache Shenyu 的贡献者,我在这个项目中负责了 MCP-Gateway 的开发,特别是利用 Shenyu 的 MCP-Plugin 来构建高效的请求转发网关。Shenyu 作为一个轻量级的微服务 API 网关,能够提供高性能的路由和负载均衡,而 MCP-Plugin 则让我能够将 Shenyu 的强大功能直接应用到我们系统中,特别是在请求的转发和处理方面。

余佳兴(MCP-Tools开发)

在这次项目中,我主要负责订单的增删改查功能的开发。在使用 SpringBoot 进行开发的过程中,我学习了如何构建一个基本的 Web 应用,包括如何搭建 SpringBoot 项目框架、配置数据库连接以及使用 Mybatis 进行数据持久化操作。我通过实现订单管理的基本功能,深入了解了 SpringBoot 的核心特性,如 依赖注入自动配置 和 RESTful API 的开发。在实现订单管理的过程中,我还学习了如何设计和优化数据库的增删改查操作,确保数据的完整性和操作的高效性。这个过程让我不仅掌握了 SpringBoot 的开发流程,还学会了如何将 Web 应用与数据库进行集成,以满足实际业务需求。

王浩楠(MCP-Tools开发)

本次小组作业是一次优秀的项目实践。在这之前,我正处于学习springboot阶段,对应用springboot框架开发有初步理解,但缺乏实践经验,有些知识模糊不清。而通过本次作业,以团队作业的方式进行实践,我对spring boot框架开发流程更加清晰,运用也更加熟练。通过对mcp的了解,使我认识到我也有机会实现一个语言模型。也希望接下来能更深入的学习使用mcp框架来制作并使用大模型,开启潘多拉魔盒。实践促学。通过本次实践,也从开发经验丰富的大佬身上学到了很多有用的技术,规范。我不仅学到了团队开发的方式方法还学习到可以使用软件apifox来测试接口,非常有趣。也是这个契机,我对前后端交互产生了兴趣。我开始学习前端是如何封装数据传给后端以及前端是如何读取后端传来的数据并渲染。

叶禹瞳(MCP-Tools开发)

在这次项目中,我负责商品信息的增删改查功能。在开发过程中,我使用 SpringBoot 搭建了商品管理模块,学习了如何使用 Mybatis 进行数据库操作,以及如何设计 RESTful API 来处理商品的增删改查请求。我了解了 SpringBoot 中的 Controller、Service 和 Repository 的层次架构,并将其应用到商品模块的设计中。在这个过程中,我学会了如何高效地与数据库进行交互,同时保持代码的清晰和可维护性。通过这次项目,我对 SpringBoot 的应用开发有了更深入的理解,并能够独立完成一个基本的 Web 应用模块的开发。

吴限(MCP-Frontend开发)

作为负责组织前端工作的人员,我的主要任务是确保前端与 MCP-Client 的顺利对接,并协调团队完成各项前端任务。在与后端进行数据交互时,我深入了解了如何使用 SSE 实现流式数据输出,确保用户能够实时接收到反馈。通过与团队成员的紧密合作,我不仅巩固了前端开发技能,还学会了如何高效组织前端开发工作,确保项目按时高质量完成。

翁俊龙(MCP-Frontend开发)

在这个项目中,我负责了文件上传和展示功能的开发。作为前端开发的新手,我在这个过程中学习了如何使用 Vue.js 进行页面的构建,并通过 Vuex 管理组件状态,从而提升了页面的响应速度和动态效果。通过与后端团队的紧密配合,我学到了如何确保前后端的数据交互高效稳定。这个项目让我不仅掌握了文件上传的技术,还深刻理解了前后端协作中的各种挑战,并积累了宝贵的经验。

翁思铖(MCP-Frontend开发)

在这次前端开发中,我的主要任务是负责页面其他功能的编写,并确保与后端系统的数据交互顺畅。作为前端开发的初学者,我通过使用 Vue.js 和 Vue Router 学习了如何实现页面的路由管理,使得用户在不同页面之间的跳转更加流畅。我还使用了 Element UI 设计了简洁优雅的用户界面,优化了用户体验。通过与后端团队的合作,我学会了如何将前端功能与后端接口高效对接,确保前后端的数据交互无缝连接。在这个过程中,我不仅加深了对前端框架的理解,还学到了如何处理前后端协作中的各种问题,为后续的开发积累了宝贵经验。

魏昀(测试)

作为测试人员,我的主要任务是对系统进行功能测试和性能测试。我学习了如何使用和 JUnit 完成功能自动化测试,并了解了构建 MCP 的基本流程。在整个过程中,我积累了大量的测试经验,学到了如何通过自动化测试提高测试效率,如何准确定位和报告问题。通过与开发人员的紧密合作,我进一步提高了自己的缺陷管理和问题追踪能力。

吴昕昀(测试)

在测试过程中,我负责系统功能和集成测试。我学习了如何使用 Apifox 和 JUnit 完成 API 测试,确保后端接口的稳定性和正确性。在项目中,我加深了对测试工具的掌握,也学会了如何与开发团队密切合作,确保问题的及时修复。通过这次项目,我不仅提升了自己的技术能力,还锻炼了团队合作和沟通能力。

李响(测试)

作为测试人员,我负责测试系统的各项功能和性能。在这个项目中,我使用了 JUnit 完成了功能自动化测试,并通过与开发团队的协作发现并修复了多个 bug。通过这次项目,我不仅提高了自己的测试技能,还学到了如何更好地与开发人员沟通,如何在开发过程中及时发现并解决问题。这让我对软件测试的整个流程有了更加深刻的理解。

posted @ 2025-10-23 20:18  shaoxiawjc  阅读(28)  评论(0)    收藏  举报