团队项目第一作业

声动 · 议行(MeetingAction)

团队项目第一次作业:团队展示、选题报告与需求分析

文档信息

项目 内容
所属课程 广东工业大学计算机学院 · 2024 级 56 班(Class56-Grade2024-CS)
作业要求 团队项目第一次作业:团队展示 + 选题报告 + 需求分析
团队名称 声动
项目名称 议行(MeetingAction)—— 智能会议纪要·行动项 Agent
团队成员 3124004063 梁峻豪、3123004583 王劲松
文档版本 v0.1(2026-11-08)

一、团队展示

1.1 队名与项目定位

队名「声动」,取自"声(会议录音)+ 动(行动落地)":会议里说的话不该只停在录音里,而应变成具体、有人认领、有截止时间的任务。

项目定位:一款开完会就能用的智能会议助手。把一段会议内容粘贴进去,它像会后秘书一样,整理出议题、结论和"谁做什么、几时交"的清单,并在没说清的地方主动追问。

项目口号:让每一次会议都有下文。

1.2 队员风采与分工

姓名 学号 软工角色 负责模块 性格 兴趣爱好
梁峻豪 3124004063 智能体与后端 多智能体编排、Spring Boot 接口、MySQL 细致认真 看小说、运动
王劲松 3123004583 前端与测试 Vue 3 页面、交互实现、功能测试 相对开朗 篮球、象棋

1.3 项目规划

时间 阶段 目标 交付物
10 月下旬 – 11 月上旬 选题与需求 选题、需求分析、答辩 需求文档、答辩材料
11 月中旬 – 12 月上旬 主链路 MVP 文字输入 → 纪要 → 行动项(无账号即可用) 可访问的前后端
12 月中旬 名单与匹配 导入名单、负责人匹配、看板与导出 名单匹配功能
12 月下旬 – 期末 账号与推送 注册登录、组织名单、站内推送、部署验收 最终版本与文档

1.4 团队首次合照

dead65816cd0d8479cc7a9d172df9707

1.5 团队愿景

我们希望做的不是一个"纪要生成器",而是一条从会议到行动的传送带:开完会,每个人打开页面就知道自己该做什么、什么时候交。希望"开完会就忘"这件事,能因为一个小工具少发生几次。


二、选题报告

2.1 痛点:开完会,事情就散了

  • 散会后没人记得定过什么:课程小组会、社团例会讨论得很热闹,散会后谁负责什么、什么时候交,只剩口头约定或聊天记录里一句"回头我弄一下"。
  • 纪要没人愿意写:整理纪要枯燥耗时,常常拖到最后不了了之。
  • 现有工具停在"记录":转写类只给文字稿,聊天类每次格式不一样,都不能变成可执行的任务。
  • 复合句难拆:"让小王改文档、让小李整理数据,周五前都要交"——一句话里两件事,整体总结没有意义。

2.2 需求来源

需求主要来自我们自己开小组会、社团例会的真实经历:讨论时很热闹,散会后任务却没有落到纸面。

2.3 产品定位与设计思路

定位:粘贴即用,注册后直接把任务派到人。

输入一段会议内容,拿到结构化纪要和"谁做什么"的清单。用的人手上条件不同,系统就按能拿到的信息办事:

你手上的条件 系统怎么做 拿到的结果
没有账号、没有名单 追问时手动填负责人,也可跳过 导出 Excel / Markdown / .ics
有名单、没有账号 导入名单,系统推测对应关系,判不准的从名单里选 导出
有账号、在组织里 会议成员拉进同一名单,确认后直接站内推送 推送 + 导出

设计思路:简单走规则,复杂交给大模型。

  • 规则先行:字数校验、空值判断、时间格式识别等确定性操作用规则处理,快且稳;
  • 大模型兜底:只有需要"理解口语、判断意图"的环节(拆行动项、判断谁负责)才调用 DeepSeek;
  • 失败可用:模型不可用时返回明确提示,而不是直接报错。

2.4 三大核心场景

场景 1:一句话整理小组会

粘贴:"周五前小王改完文档,小李整理测试数据,下周一一起对一遍。"
系统输出:纪要(结论:下周一对齐)+ 行动项两条(小王 / 改文档 / 周五;小李 / 整理测试数据 / 周五)。

场景 2:会后追问补全

原文只有"让小王改一下文档"。
系统追问:"'小王'指哪位成员?截止时间是?" 用户回答后回填,并记住这次映射。

场景 3:一键导出与分发

行动项确认后,导出 Excel、Markdown 或 .ics 日历,直接发到群里;也可复制成一段文字。

2.5 核心功能与差异化

  1. 行动项结构化抽取——"谁 / 做什么 / 何时"三要素,可直接派活。
  2. 追问补全——信息不全主动问,不硬猜。
  3. 从纪要到任务的闭环——可导出、可跟踪,补上"会议工具"与"任务工具"之间缺失的一环。
  4. 四段式纪要——议题 / 结论 / 争议 / 待确认,承认"没定的事"。
  5. 门槛低——没有账号也能粘贴即用;有账号后可以直接把任务派到人。

与现有工具相比:转写工具停在文字,聊天工具格式不稳;我们把"读完纪要"变成"拿到任务"。


三、需求分析

3.1 需求迭代记录

版本 日期 修订人 说明
v0.1 2026-11-08 全体 确定选题、功能 F01–F08、验收用例 A01–A10

3.2 项目标志

项目标志设计

3.3 功能架构(思维导图)

mindmap root((议行)) 会议输入 粘贴文字 输入校验 智能处理 纪要生成 行动项抽取 追问补全 行动项 看板 状态跟踪 编辑确认 分发 导出Excel 导出Markdown 日历ICS 系统 历史记录 时间显示

五个模块对应功能 F01–F08:输入、智能处理、行动项、分发、系统支撑。

3.4 核心类与数据结构

classDiagram class User { +Long id +String name +String account +String passwordHash } class Member { +Long id +Long meetingId +String name +Long userId } class Meeting { +Long id +String title +String status +String content +Long rosterId } class Minutes { +Long id +String topics +String conclusions +String disputes +String pending } class ActionItem { +Long id +String assigneeRaw +Long assigneeId +String task +LocalDate deadline +String status +boolean confirmed } class Notification { +Long id +Long actionItemId +Long userId +String status +LocalDateTime sentAt } class AgentOrchestrator { +generateMinutes(text) +extractActions(minutes) +generateQuestions(actions) } Meeting "1" --> "*" Member : 参会名单 Meeting "1" --> "1" Minutes Meeting "1" --> "*" ActionItem Member "*" --> "0..1" User : 注册后关联 ActionItem "*" --> "0..1" Member : 负责人 ActionItem "1" --> "*" Notification : 站内推送 AgentOrchestrator ..> Minutes AgentOrchestrator ..> ActionItem

实体随条件出现:没有账号时,User、Notification 不参与,Member 只存名字;有名单时多一张 member;有账号时 member.userId 关联账号,行动项确认后写 notification。meeting.rosterId 预留给将来的组织名单。

关键设计:ActionItem 同时保留 assigneeRaw(原文昵称)与 assigneeId(对应成员,可为空),用于身份消歧。

3.5 前端详细描述

前端使用 Vue 3 + Vite + Element Plus,响应式布局,桌面和手机均可查看。

  • 输入页 Input.vue:文本框粘贴、字数显示、空值拦截、提交后显示进度;
  • 报告页 Report.vue:四段式纪要(议题 / 结论 / 争议 / 待确认),支持原文对照;
  • 行动项看板 Board.vue:表格展示,行内编辑负责人与截止时间,状态切换(待确认 / 已确认 / 已完成 / 已取消),导出按钮;
  • 追问面板 Clarify.vue:逐条展示问题,用户回答后回填;
  • 历史记录 History.vue:浏览器本地存储,支持删除、清空、重看;
  • lib/api.ts:封装 REST 请求与错误提示;lib/history.ts:本地存储读写。

3.6 后端详细描述

后端使用 Java 17 + Spring Boot 3 + MySQL 8,调用 Dify 完成多智能体编排,大模型为 DeepSeek。

  • Controller 层:MeetingController(提交、查询纪要)、ActionController(更新、导出);
  • Service 层:MeetingService 负责校验、落库、调用编排;ActionService 负责状态流转;
  • 编排层 AgentOrchestrator:依次调用 Dify 的纪要、行动项、追问 workflow,用 JSON Schema 约束输出;
  • 失败处理:Dify 超时或失败时返回明确提示,不抛出 5xx;
  • 数据层:MySQL 存 meeting、member、minutes、action_item、notification;user 表只在注册后使用;meeting.rosterId 为将来的组织名单预留;
  • 不做的事:不持久保存会议原文之外的用户隐私数据;不做短信 / 邮件推送。

3.7 系统功能清单

编号 功能 前端实现 后端实现
F01 会议输入与校验 输入页、字数、提交 长度校验、接口
F02 纪要生成 报告页四段展示 调用 Dify / DeepSeek
F03 行动项抽取 行动项表格 JSON Schema 约束输出
F04 追问补全 追问面板 检测缺失字段、回填
F05 行动项看板 表格编辑、状态切换 更新接口
F06 导出与分发 导出按钮 生成 Excel / Markdown / ICS
F07 历史记录 本地存储列表 ——
F08 时间与状态 显示时间 UTC+8、健康检查
F09 名单导入 粘贴 / 上传名单 解析名单、写入 member
F10 账号注册与登录 注册 / 登录页 账号、JWT
F11 站内推送 "我的待办"页 生成 notification、状态更新

功能组合随条件变化:没有账号时只有 F01–F08;有名单时加 F09;有账号时再加 F10–F11。

3.8 接口设计

接口 方法 用途 响应
/api/health GET 健康检查 status、model
/api/meetings/check POST 提交会议内容 meeting_id、minutes、actions、questions、checked_at
/api/meetings/{id} GET 读取纪要 meeting_id、minutes
/api/meetings/{id}/actions GET 读取行动项 行动项列表
/api/actions/{id} PATCH 编辑 / 确认 / 改状态 更新后的行动项
/api/actions/export GET 导出 文件流
/api/members/import POST 导入名单 成员列表
/api/auth/register、/api/auth/login POST 注册 / 登录 token
/api/notifications GET 我的待办 通知列表

调用关系:check 返回 meeting_id 和每条行动项的 id,前端据此调用查询、更新、导出接口。

3.9 验收标准

编号 场景 输入 / 操作 验收指标
A01 普通会议 一段 5 分钟小组会文字 20 秒内输出纪要四段 + 行动项
A02 复合任务 "让小王改文档,让小李整理数据" 拆成 2 条行动项,负责人分别正确
A03 缺信息追问 "让小王改一下文档"(无截止时间) 至少返回 1 条追问
A04 边界拦截 空输入 / 超 5000 字 返回 400 + 中文提示
A05 导出 导出 Excel / Markdown / ICS 可下载,内容与看板一致
A06 状态持久 改状态后刷新 状态保留
A07 时间正确 任意一次处理 checked_at 与北京时间差 ≤ 1 分钟
A08 模型失败 Dify 不可用 返回提示,不返回 5xx
A09 历史持久 处理 1 次后刷新 历史仍显示 1 条
A10 接口闭合 调 check 返回 meeting_id 与行动项 id

3.10 非功能需求与风险

  • 性能:首屏 3 秒内;单次处理 ≤ 20 秒。
  • 安全:模型密钥只由服务端读取;不向大模型开放危险操作。
  • 隐私:历史记录仅存浏览器;后端不持久保存原文。
  • 兼容:Chrome / Edge / 移动端浏览器。
  • 风险:行动项抽取不准(人工确认兜底);身份消歧(成员名单 + 追问);两人工期紧(严格按 F01–F08 交付)。

运行环境:前端 Vue 3 + Vite;后端 Java 17 + Spring Boot 3 + MySQL 8;编排 Dify;大模型 DeepSeek;语音转写讯飞(第二阶段)。


四、现阶段进展与下一步

4.1 现阶段进展

本阶段聚焦选题与需求分析,已完成需求文档、功能清单、接口契约和验收用例;代码与部署尚未开始。

4.2 下一步计划

  1. 搭建 Spring Boot 后端与 Vue 前端骨架;
  2. 接入 Dify 与 DeepSeek,跑通"输入 → 纪要 → 行动项";
  3. 按 A01–A10 逐项复测;
  4. 主链路通过后,启动语音接入(讯飞)。
posted @ 2026-11-08 22:43  梁峻豪  阅读(5)  评论(0)    收藏  举报