团队项目第一作业
声动 · 议行(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 团队首次合照

1.5 团队愿景
我们希望做的不是一个"纪要生成器",而是一条从会议到行动的传送带:开完会,每个人打开页面就知道自己该做什么、什么时候交。希望"开完会就忘"这件事,能因为一个小工具少发生几次。
二、选题报告
2.1 痛点:开完会,事情就散了
- 散会后没人记得定过什么:课程小组会、社团例会讨论得很热闹,散会后谁负责什么、什么时候交,只剩口头约定或聊天记录里一句"回头我弄一下"。
- 纪要没人愿意写:整理纪要枯燥耗时,常常拖到最后不了了之。
- 现有工具停在"记录":转写类只给文字稿,聊天类每次格式不一样,都不能变成可执行的任务。
- 复合句难拆:"让小王改文档、让小李整理数据,周五前都要交"——一句话里两件事,整体总结没有意义。
2.2 需求来源
需求主要来自我们自己开小组会、社团例会的真实经历:讨论时很热闹,散会后任务却没有落到纸面。
2.3 产品定位与设计思路
定位:粘贴即用,注册后直接把任务派到人。
输入一段会议内容,拿到结构化纪要和"谁做什么"的清单。用的人手上条件不同,系统就按能拿到的信息办事:
| 你手上的条件 | 系统怎么做 | 拿到的结果 |
|---|---|---|
| 没有账号、没有名单 | 追问时手动填负责人,也可跳过 | 导出 Excel / Markdown / .ics |
| 有名单、没有账号 | 导入名单,系统推测对应关系,判不准的从名单里选 | 导出 |
| 有账号、在组织里 | 会议成员拉进同一名单,确认后直接站内推送 | 推送 + 导出 |
设计思路:简单走规则,复杂交给大模型。
- 规则先行:字数校验、空值判断、时间格式识别等确定性操作用规则处理,快且稳;
- 大模型兜底:只有需要"理解口语、判断意图"的环节(拆行动项、判断谁负责)才调用 DeepSeek;
- 失败可用:模型不可用时返回明确提示,而不是直接报错。
2.4 三大核心场景
场景 1:一句话整理小组会
粘贴:"周五前小王改完文档,小李整理测试数据,下周一一起对一遍。"
系统输出:纪要(结论:下周一对齐)+ 行动项两条(小王 / 改文档 / 周五;小李 / 整理测试数据 / 周五)。
场景 2:会后追问补全
原文只有"让小王改一下文档"。
系统追问:"'小王'指哪位成员?截止时间是?" 用户回答后回填,并记住这次映射。
场景 3:一键导出与分发
行动项确认后,导出 Excel、Markdown 或
.ics日历,直接发到群里;也可复制成一段文字。
2.5 核心功能与差异化
- 行动项结构化抽取——"谁 / 做什么 / 何时"三要素,可直接派活。
- 追问补全——信息不全主动问,不硬猜。
- 从纪要到任务的闭环——可导出、可跟踪,补上"会议工具"与"任务工具"之间缺失的一环。
- 四段式纪要——议题 / 结论 / 争议 / 待确认,承认"没定的事"。
- 门槛低——没有账号也能粘贴即用;有账号后可以直接把任务派到人。
与现有工具相比:转写工具停在文字,聊天工具格式不稳;我们把"读完纪要"变成"拿到任务"。
三、需求分析
3.1 需求迭代记录
| 版本 | 日期 | 修订人 | 说明 |
|---|---|---|---|
| v0.1 | 2026-11-08 | 全体 | 确定选题、功能 F01–F08、验收用例 A01–A10 |
3.2 项目标志

3.3 功能架构(思维导图)
五个模块对应功能 F01–F08:输入、智能处理、行动项、分发、系统支撑。
3.4 核心类与数据结构
实体随条件出现:没有账号时,
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 下一步计划
- 搭建 Spring Boot 后端与 Vue 前端骨架;
- 接入 Dify 与 DeepSeek,跑通"输入 → 纪要 → 行动项";
- 按 A01–A10 逐项复测;
- 主链路通过后,启动语音接入(讯飞)。

浙公网安备 33010602011771号