第二次团队作业

作业所属课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/
作业要求 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/14580
作业的目标 通过真实调研理解用户需求,结合智能体构思开发一款软件,并进行答辩、展示,撰写博客
团队名称 哈基米噢南北绿豆
团队成员学号-名字 102301111-周韩煜、102301112-郑隆熙、102301118-许竣阳、102301126-苏郑熙凡、102301129彭志成、102301135-李文伟、102301143-曾义山、102301243-陈文嘉,102301428-刘佳、102301517-肖垲、102301540-陈昌昊、102301543-鲍晓鹏

本次作业的团队分工

image

原型设计

  1. 原型总览

image

对于原型设计,我们使用了Figma进行,总体配合技术栈总既定的Varlet UI进行绘制,初步设计了五大基础界面:课程表、代办、主页、知识库还有设置界面。总体设计美观优雅,并符合移动端的使用需求,以下为分页面的讲解:

  1. 全局交互与布局

2.1 导航结构 (Navigation)

  • 底部导航栏 (Bottom Navigation)

    • 适用设备: 移动端 (Mobile)。

    • 布局: 固定在屏幕底部,包含 5 个核心入口。

    • 入口项:

      • 课程表 (Curriculum): 图标 [📚]

      • 代办事项 (Todo): 图标 [✅]

      • 智能助手 (Home): 图标 [🏠] (居中,建议突出显示或使用悬浮按钮样式)

      • 知识库 (Knowledge): 图标 [📖]

      • 个人中心 (Profile): 图标 [👤]

    • 交互:

      • 点击图标切换主视图。

      • 当前选中项图标高亮,并显示文字标签。

      • 切换时带有轻微的缩放或颜色渐变动画。

2.2 响应式策略 (Responsive Strategy)

  • 移动端 (< 768px):

    • 采用底部导航栏。

    • 页面内容单列布局。

  • 平板端 (768****px - 1024px):

    • 底部导航栏可保留,或转为左侧收缩式图标栏。

    • 内容区域采用双列布局(如:左侧列表,右侧详情)。

  • 桌面端 (> 1024px):

    • 导航栏转为左侧固定侧边栏 (Sidebar),包含完整菜单项和Logo。

    • 内容区域利用宽屏优势,采用多列布局或悬浮面板。

2.3 全局规则

  • 主题模式: 支持明亮 (Light) / 暗黑 (Dark) 模式,支持主题颜色自定义。

    • 交互: 通过个人中心设置切换,或跟随系统自动切换。切换时全局颜色变量平滑过渡。
  • 加载状态: 数据请求期间,页面主要内容区显示骨架屏 (Skeleton) 或加载转圈 (Loading Spinner)。

  • 错误处理: 网络请求失败或数据异常时,显示统一的空状态 (Empty State) 或 Toast 提示,并提供“重试”按钮。

  1. 功能模块原型设计

3.1 课程表模块 (Curriculum)

image

界面描述

  • 周视图 (Week View):

    • 顶部显示当前周次(如“第 5 周”)。

    • 主体为表格布局,横轴为周一至周日,纵轴为课程节次。

    • 课程卡片填充在对应网格中,不同课程使用不同颜色区分。

  • 日视图 (Day View):

    • 顶部显示日期选择器。

    • 主体为时间轴列表,按时间顺序展示当日课程。

    • 课程卡片下方穿插展示该时间段相关的 Todo 任务。

交互设计

  • 视图切换: 点击顶部切换按钮或在屏幕上左右滑动,在周视图和日视图之间切换。

  • 查看详情: 点击课程卡片,弹出模态框 (Modal) 显示课程详细信息(教室、教师、考勤要求等)。

  • 添加作业:

    • 在日视图的课程卡片上点击“添加作业”按钮。

    • 跳转: 自动跳转至 代办事项添加页

    • 预填: 自动填充关联的课程名称作为标签,截止时间默认为下次上课前。

规则描述

  • 当前课程高亮: 根据系统时间,自动高亮当前正在进行或即将开始的课程。

  • 冲突检测: 用户手动添加课程时,若时间段与现有课程重叠,弹出确认提示。

3.2 智能代办模块 (Smart Todo)

image

界面描述

  • 列表视图:

    • 顶部包含搜索栏和分类筛选(全部、学习、生活、紧急)。

    • 列表项展示:复选框、标题、截止时间、优先级标签。

  • 四象限视图:

    • 将屏幕分为四个区域:重要紧急、重要不紧急、紧急不重要、不紧急不重要。

    • 任务以小卡片形式分布在对应象限。

  • 快速添加栏: 底部悬浮输入框,提示文本“输入任务,支持自然语言...”。

交互设计

  • 完成任务: 点击复选框,任务项出现删除线动画并下沉至底部或消失(取决于设置)。

  • 自然语言输入:

    • 用户输入:“明天下午三点交数学作业”。

    • 系统反馈:实时解析出 时间 (明天 15:00) 和 内容 (交数学作业),并高亮显示解析结果供用户确认。

  • 拖拽排序: 长按任务项,可上下拖动排序;在四象限视图中,可拖动任务改变象限属性。

规则描述

  • 智能排序: 默认按 优先级 > 截止时间 > 创建时间 排序。

  • 过期处理: 截止时间已过的任务,时间显示标红,并自动归类到“已过期”分组。

3.3 智能助手模块 (Home - AI Chat)

image

界面描述

  • 聊天区域: 占据主要屏幕空间,气泡式对话流。

  • 快捷操作区: 输入框上方横向滚动芯片 (Chips),包含:拍照搜题、上传文件、导出记录、学习建议。

  • 输入区域: 包含文本输入框、语音输入按钮、发送按钮。

交互设计

  • 语音交互:

    • 按住“语音输入”按钮说话,界面显示声波纹动画。

    • 松开按钮,语音自动转为文字填入输入框,用户确认后发送。

  • 导出到知识库:

    • 长按某条消息或点击右上角“选择模式”。

    • 勾选多条对话记录。

    • 点击“导出”按钮,跳转至 知识库-笔记编辑页,内容自动填充为Markdown格式。

  • 快捷****指令: 点击“拍照搜题”,调用系统相机,拍照后自动发送图片并附带OCR识别请求。

规则描述

  • 上下文记忆: AI 需保留当前会话的上下文信息,支持多轮对话。

  • 流式输出: AI 回复时,文字应逐字显示(打字机效果),减少用户等待焦虑。

3.4 知识库模块 (Knowledge)

image

界面描述

  • 三级导航: 顶部 Tab 切换 “官方库”、“社区”、“我的笔记”。

  • 分类树/标签: 左侧或顶部提供分类筛选。

  • 笔记列表: 展示笔记卡片,包含标题、摘要、标签、最后修改时间。

  • 笔记详情: Markdown 渲染页,右下角悬浮“编辑”和“批注”按钮。

交互设计

  • 智能导入:

    • 从聊天记录导入时,系统自动生成标题(基于内容摘要)。

    • 用户可对导入内容进行二次编辑、添加标签。

  • 批注功能:

    • 在详情页长按选中文本,弹出菜单选择“批注”。

    • 输入批注内容,原文该段落显示高亮下划线。点击可查看批注详情。

  • 社区互动: 在“社区”Tab下,点击笔记可进行点赞、收藏、评论。

规则描述

  • 权限控制:

    • “我的笔记”仅自己可见。

    • “发布到社区”需用户主动操作,并经过敏感词过滤。

  • 版本控制: 每次保存编辑,系统自动生成一个版本记录,支持查看历史版本和回退。

3.5 个人中心模块 (Profile)

image

界面描述

  • 用户信息卡片: 展示头像、昵称、签名。

  • 数据仪表盘: 图形化展示“本周学习时长”、“笔记数量”、“Todo完成率”。

  • 功能列表: 设置、主题切换、关于我们、退出登录。

交互设计

  • 编辑资料: 点击用户信息卡片进入编辑页,支持修改头像和昵称。

  • 主题切换: 点击“主题”开关,实时切换应用配色。

规则描述

  • 数据同步:

    • 应用启动时自动尝试同步云端数据。

    • 本地修改后,防抖触发自动保存同步。


概要设计

UML设计

课程表模块

  1. 多视图课程管理 课程表模块支持周视图和日视图切换,用户可以根据自己的需求灵活查看一周或某一天的课程安排。每个课程都以卡片形式展示,包含时间、地点、颜色标识等信息,方便用户快速识别和管理。

  2. 作业与待办联动 用户可在课程详情中直接添加作业,并自动同步生成待办事项。作业支持截止日期设置和完成状态标记,所有作业与课程、待办事项实现数据关联,确保学习任务有序推进。

  3. 课程提醒与笔记关联 课程表模块支持课程时间提醒,用户可设置上课前的提醒,避免错过重要课程。同时,课程可关联知识库笔记,方便用户在学习过程中记录重点内容,实现课程与知识的无缝衔接。

  4. 高效课程管理体验 通过弹窗快速添加课程、编辑课程信息和删除课程,用户可以高效地维护自己的课程表。所有操作均支持移动端和桌面端自适应,保证流畅的使用体验。

类图

image

用例图

image

智能代办模块

  1. 四象限任务管理 智能代办模块采用重要性与紧急性矩阵,将所有待办事项自动归类到四象限,帮助用户明确优先级,合理安排学习和生活任务。用户可一目了然地查看各类任务分布,提升时间管理效率。

  2. AI优先级与进度追踪 每个待办事项支持AI优先级推荐,结合任务属性智能排序,帮助用户聚焦最关键的事项。待办项支持进度条展示,用户可实时更新任务完成度,直观掌握任务进展。

  3. 番茄钟专注管理 模块集成番茄钟功能,用户可针对任意待办事项启动专注计时,系统自动记录专注与休息周期。番茄钟完成后,任务进度自动更新,帮助用户养成高效专注的学习习惯。

  4. 数据统计与分析 智能代办模块提供任务统计功能,包括总任务数、完成率、平均进度等数据分析,帮助用户全面了解自己的任务执行情况。未来还将支持图表分析和趋势展示,助力用户持续优化学习计划。

类图

image

用例图

image

智能助手模块

我们的智能助手模块是一个高度智能化、功能丰富的交互系统,旨在为用户提供高效、便捷且个性化的服务体验。核心功能如下:

  1. 多轮对话能力

本模块支持多轮对话,能够与用户进行流畅且连贯的交流。无论用户提出问题、请求帮助还是进行日常闲聊,智能助手都能准确理解并给出恰当的回应,确保对话的自然性和连贯性。

  1. 多模态输入

用户可以通过语音和图片与智能助手进行交互,无需手动输入文字。这一功能不仅方便快捷,还特别适合在运动或双手忙碌时使用,极大地提升了用户体验。

  1. 聊天记录管理

智能助手支持聊天记录管理,用户可以方便地查看历史对话,并选择将重要的对话片段导出到知识库中。这一功能不仅帮助用户整理和回顾重要信息,还能将知识沉淀下来,方便后续查阅和分享。

  1. 社区上传功能

用户可以将当前会话一键上传到社区,与其他用户分享交流。这一功能促进了用户之间的互动和知识共享,形成了一个积极的学习和交流环境。

类图

我们可以通过类图来描述系统中的类、接口以及它们之间的关系。如下所示:

image

用例图

我们可以通过用例图描绘系统的参与者(Actor)和用例(Use Case)以及它们之间的关系。如下图所示:

image

知识库模块

类图

image

用例图

image

个人中心模块

类图

image

用例图

image

数据库设计

hachimi-数据库


团队协作记录

前端部分

前端架构

后端部分

后端总得做点啥

协作过程记录

image

image

仓库贡献记录

image

项目管理平台

飞书+github


原型设计展示

https://www.figma.com/design/inRbUvJINRfafvXSRkzvG5/Knowlesail?node-id=0-1&t=K86XBcb70qTXdKE9-1

后端设计展示

  1. 整体架构概览

image

  1. 后端内部设计

  2. 分层结构

  • host服务

    • handler:接收HTTP协议,把请求转成领域调用

    • application:业务逻辑集中地(事务入口也一般在这里),调用repository的接口与外部client的方法进行逻辑的编排

    • repository:通过工厂模式封装对外部依赖的访问的接口

    • infra:对repository层接口的实现

  • mcp_server服务

    • API Handler由mcpCoreServer进行接管,只需注入tool即可

    • Internal service逻辑与host大体相同

  1. ORM & 事务设计

  • gorm-gen:

    • 自动生成模型和 query,避免手写 struct,字段直接跟 DB 同步

    • created_at / updated_at / deleted_at 通过ORM自动处理

  • db.DB[T] 泛型封装:

    • 为什么要用泛型 + context:

      • 统一事务管理;

      • 任何仓储只需要 db.Get(ctx),不用管现在是事务还是非事务。

    • Transaction(ctx, func(ctx) error)

      • 上层只管开事务;

      • 下层 repository 自动拿到 tx(透过 ctx)


  1. 其他设计

  • 安全

    • 我们的登录完全与福州大学OAuth对接,直接通过教务处学号密码来登录,同时也实现了对教务处的客户端模拟,可以直接向教务处发请求

    • 通过教务处下发的id与cookie可以获得一对双token,通过双token才能访问项目内的其他接口

  • 日志 & 监控

    采用了多个core的Tee,实现一个logger拥有两种不同的输出模式来进行分级别输出,我们是把error等级单独输出在一个文件中,另一个文件是包含所有(core还可以指定不同的输出形式,console/file/otlp,实现多环境通用),并且对数据库的日志接口implement转化为zap统一输出,每到0点会替换logger实例来重定向输出文件,防止日志堆积。未来可接入otel+zap->uptrace,用 OpenTelemetry 做链路追踪(traces)/指标

  • 配置管理

    使用 viper 加载 config.yaml,高效读取并且可扩展为热更新(更偏向于集群模式下直接重启节点来进行更新)

  • 性能 & 扩展

    • go语言天生高并发的特性使得其在小机器也能承受一个较高的QPS,并且占用内存极小,对服务器友好

    • 选用的HTTP框架hertz是字节跳动的高性能框架,相比其他的如gin更高效

    • 数据库对高频访问的内容添加索引,并且在设计时尽可能避免索引失效的情况,同时对于热点内容直接通过redis缓存,降低数据库压力

    • 未来可以通过搭建集群,重构微服务架构,分库分表来实现扩展,以面对更大的QPS


其他要求

  1. github团队仓库链接:

  2. 团队名称_系统设计说明书.pdf:哈基米噢南北绿豆组_系统设计说明书

  3. 团队名称_数据库设计说明书.pdf:哈基米噢南北绿豆组_数据库设计说明书

  4. 原型在线预览链接:https://www.figma.com/design/inRbUvJINRfafvXSRkzvG5/Knowlesail?node-id=0-1&t=K86XBcb70qTXdKE9-1

posted @ 2025-11-20 17:55  REREREGO  阅读(35)  评论(0)    收藏  举报