第三次软工作业
| 作业所属课程 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24 |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24/homework/15655 |
| 作业目标 | 开发一个基于智能体或者多智能体的软件 |
| 团队名称 | Code Nova |
| 团队成员学号-名字 | 3224004495-程天润 3224004457-李佳琪 3124004436-莫仕明 |
一.说明文档
1. 文档概述
1.1 编写目的
本文档用于明确“喵喵记账”小程序的业务目标、系统边界、功能需求、前后端职责、数据流转、验收标准和迭代过程,为后续开发、测试、答辩展示和团队协作提供统一依据。
1.2 参考规范
本文档结构参考国家标准《计算机软件需求规格说明规范》GB/T 9385-2008 以及《计算机软件文档编制规范》GB/T 8567-2006 的常见组织方式整理。GB/T 9385-1988 已被 GB/T 9385-2008 全部替代;GB/T 8567-2006 仍是相关软件文档编制的国家标准之一。([全国标准信息公共服务平台][1])
1.3 项目背景
传统记账软件普遍存在输入繁琐、分类复杂、坚持成本高的问题。本项目希望通过“自然语言 + 语音输入 + AI 理解”的方式,降低用户记账门槛,使用户能够通过一句话完成记账,并获得自动分类、消费统计和智能建议。
1.4 目标用户
本系统面向以下用户群体:
- 学生群体
- 刚工作的年轻用户
- 希望管理日常消费但不愿手动逐项输入的普通用户
- 希望通过轻量方式了解自己消费习惯的用户
2. 项目标志
2.1 项目标识名称
喵喵记账
2.2 项目标识说明
“喵喵记账”以猫咪元素作为产品形象,体现轻松、友好、低压力的使用体验;整体风格采用柔和粉色系与圆角卡片布局,突出“可爱、轻量、易用”的产品定位。
2.3 项目口号
说一句话,轻松记下一笔开销。
2.4 项目定位
本项目定位为一款“面向普通用户的 AI 语音记账小程序”,重点不是专业财务管理,而是降低记账门槛,帮助用户建立基础消费记录与分析习惯。
3. 迭代记录表
| 迭代版本 | 时间 | 主要内容 | 结果 |
|---|---|---|---|
| V0.1 | 初始阶段 | 完成小程序项目创建,搭建首页和账单列表页 | 跑通页面基础结构 |
| V0.2 | 第一阶段 | 实现文字记账、假解析、账单保存与列表展示 | 跑通最小闭环 |
| V0.3 | 第二阶段 | 接入 Flask 后端,实现基础文本解析 | 前后端联调成功 |
| V0.4 | 第三阶段 | 接入百度语音识别,实现语音转文字 | 真机语音记账可用 |
| V0.5 | 第四阶段 | 支持账单删除、账单编辑 | 实现账单增删改查 |
| V0.6 | 第五阶段 | 新增统计页,实现总支出、账单数量、分类汇总 | 支持基础消费统计 |
| V0.7 | 第六阶段 | 接入百炼大模型,实现 AI 智能分类 | 分类准确性提升 |
| V0.8 | 第七阶段 | 新增 AI 消费分析与建议接口 | 支持消费分析生成 |
| V0.9 | 第八阶段 | 优化首页、列表页、统计页 UI 风格 | 视觉风格统一 |
| V1.0 | 当前阶段 | 形成语音记账 + AI 分类 + 统计分析完整闭环 | 可用于课程演示与团队试用 |
4. 总体描述
4.1 产品目标
本系统的总体目标包括:
- 支持用户通过文字或语音快速记账
- 支持系统自动提取金额、备注和消费类别
- 支持用户对账单进行查看、修改和删除
- 支持系统自动统计消费数据并生成分析结果
- 支持通过 AI 输出消费分析与建议
4.2 系统边界
系统主要由三部分构成:
- 微信小程序前端
- Flask 后端服务
- 第三方智能服务接口
其中:
- 百度智能云用于语音识别
- 阿里云百炼用于 AI 分类与 AI 消费分析
4.3 运行环境
前端:
- 微信开发者工具
- 微信真机环境
后端:
- Python 3.10+
- Flask
第三方依赖:
- 百度语音识别 API
- 阿里云百炼大模型 API
5.系统思维导图
喵喵记账小程序
├── 首页
│ ├── 文字记账
│ ├── 语音记账
│ ├── 最近3条账单
│ ├── 查看账单列表
│ └── 查看消费统计
├── 账单管理
│ ├── 保存账单
│ ├── 查看账单
│ ├── 编辑账单
│ └── 删除账单
├── 智能能力
│ ├── 语音识别
│ ├── AI 智能分类
│ ├── AI 消费分析
│ └── AI 消费建议
├── 统计分析
│ ├── 总支出
│ ├── 账单数量
│ ├── 分类汇总
│ └── 分类占比条
└── 系统支撑
├── 前端页面交互
├── Flask 接口
├── 本地账单存储
├── 百度语音识别
└── 百炼大模型
6.系统类图
7. 功能需求说明
7.1 首页模块
7.1.1 文字记账
功能描述
用户在首页输入一句自然语言消费描述,系统将其发送到后端进行解析,返回金额、类别和备注,并允许用户保存为账单。
输入示例

- 今天中午吃饭花了25元
- 买了一杯奶茶18元
- 打车花了12元
输出结果

- 类型:支出
- 金额:数值
- 分类:餐饮 / 交通 / 购物等
- 备注:提炼后的消费说明
前端要求
- 提供输入框
- 提供“解析这句话”按钮
- 显示解析结果
- 提供“保存账单”按钮
后端要求
- 接收文本内容
- 提取金额
- 调用分类逻辑
- 返回结构化 JSON
7.1.2 语音记账
功能描述
用户在首页录音,说出消费内容,系统上传音频到后端,由百度语音识别转为文字,再进入解析流程。
前端要求
- 提供“开始录音”“结束录音”“识别录音”按钮
- 请求录音权限
- 上传录音文件
- 接收识别文字并自动进入解析流程
后端要求
- 接收音频文件
- 进行格式处理
- 调用百度语音识别接口
- 返回识别文字
关键流程
录音 → 上传 → 语音识别 → 返回文字 → 自动解析 → 显示解析结果
7.1.3 最近账单预览

功能描述
首页显示最近 3 条账单,便于用户快速查看最新记录。
前端要求
- 从本地存储读取账单
- 显示最近 3 条数据
- 显示分类、金额、备注和时间
后端要求
- 无强依赖,由前端本地数据完成
7.2 账单列表模块
7.2.1 查看账单列表
功能描述
展示用户已保存的所有账单。
前端要求
- 列表卡片化展示
- 显示分类、金额、备注、时间
- 风格与首页统一
后端要求
- 当前版本可由前端本地存储读取
- 后续可扩展为数据库读取
7.2.2 删除账单
功能描述
用户点击删除按钮后,可删除某条账单。
前端要求
- 提供删除按钮
- 删除前弹出确认框
- 删除后立即刷新列表
后端要求
- 当前版本由前端本地更新
- 后续可扩展为删除接口
7.2.3 编辑账单
功能描述
用户可修改账单的金额、分类和备注。
前端要求
- 从账单列表跳转到编辑页
- 自动带入原有账单数据
- 保存后返回列表页并更新显示
后端要求
- 当前版本由前端本地更新
- 后续可扩展为修改接口
7.3 统计模块
7.3.1 总支出与账单数量
功能描述
统计全部账单的金额总和与账单数量。
前端要求
- 在统计页显示总支出与账单数量
- 使用卡片样式展示
后端要求
- 当前版本可由前端基于本地数据计算
- 后续可扩展为后端汇总
7.3.2 按分类汇总
功能描述
统计各消费分类的金额及占比。
前端要求
- 显示分类名称
- 显示分类金额
- 显示百分比
- 显示横向占比条
后端要求
- 当前版本由前端按账单数据汇总
- 支持金额降序排序
7.4 AI 智能分类模块
7.4.1 AI 分类
功能描述
当用户输入一句消费描述时,后端调用百炼大模型进行语义分类,解决规则分类在边界场景下的误判问题。
典型场景
- 雪糕3元:餐饮或购物的歧义判断
- 茶瀑布18元:品牌语义理解
- 酸菜鱼30元:餐饮类自动识别
前端要求
- 无额外交互
- 解析成功后直接显示 AI 分类结果
后端要求
- 将文本传给大模型
- 要求模型输出 JSON
- 若 AI 调用失败则自动回退到规则分类
7.5 AI 消费分析模块
7.5.1 生成消费分析
功能描述
用户在统计页点击按钮后,系统基于账单统计结果调用 AI,生成消费分析与建议。
输出内容
- 消费分析
- 消费建议
前端要求
-
提供“生成 AI 消费分析”按钮
-
支持按钮状态切换:
- 生成 AI 消费分析
- 分析生成中...
- 重新生成 AI 分析
-
结果显示为页面卡片而非弹窗
后端要求
- 接收账单列表
- 先由程序做统计
- 再调用 AI 生成分析文本
- 返回结构化 JSON
8. 前端需求详细说明
8.1 页面清单
- 首页
pages/index - 账单列表页
pages/bills - 编辑页
pages/edit - 统计页
pages/stats
8.2 前端交互要求
-
页面风格统一,使用柔和粉色系和圆角卡片
-
首页应支持文本输入和语音录入两种方式
-
所有主要操作应有可见反馈,例如:
- 解析成功
- 识别成功
- 保存成功
- 删除成功
-
统计页应清晰展示消费数据
-
AI 分析结果应嵌入页面显示,不应仅依赖弹窗
8.3 前端数据要求
前端需维护以下状态:
- 当前输入文本
- 解析结果
- 录音路径
- 识别文字
- 最近 3 条账单
- 统计数据
- AI 分析结果
- 按钮加载状态
9. 后端需求详细说明
9.1 后端接口清单
| 接口 | 方法 | 功能 |
|---|---|---|
/parse_bill |
POST | 解析文字账单 |
/speech_to_text |
POST | 语音转文字 |
/analyze_bills |
POST | 生成 AI 消费分析与建议 |
9.2 /parse_bill
输入
{
"text": "酸菜鱼30元"
}
输出
{
"success": true,
"data": {
"type": "支出",
"amount": 30,
"category": "餐饮",
"remark": "酸菜鱼"
}
}
要求
- 支持阿拉伯数字金额提取
- 支持中文数字金额提取
- 支持 AI 分类
- AI 失败时支持规则回退
9.3 /speech_to_text
输入
- 音频文件
输出
{
"success": true,
"text": "今天中午吃饭花了二十五元"
}
要求
- 接收小程序上传的录音文件
- 完成转码与格式适配
- 调用百度语音识别
- 返回文字结果
9.4 /analyze_bills
输入
{
"bills": [...]
}
输出
{
"success": true,
"data": {
"analysis": "……",
"suggestion": "……"
}
}
要求
- 统计总支出、账单数量、分类数据
- 调用大模型生成自然语言分析
- 模型异常时回退到基础分析模板
10. 非功能需求
10.1 易用性
- 新用户应在 1 分钟内完成首次记账
- 核心流程步骤尽量控制在 3 步以内
10.2 可维护性
- 分类逻辑应独立封装,便于后续替换模型
- AI 分析逻辑应与统计逻辑分离
10.3 安全性
- API Key 不得上传到公共仓库
- 配置文件应通过
.gitignore排除 - 示例配置应使用
config.example.py
10.4 可扩展性
- 当前本地存储后续可升级为数据库
- 当前简化统计后续可扩展为月度/周度报表
- 后端模型服务可替换
11. 验收标准
11.1 基础功能验收
- 用户可通过文字输入一句消费描述并成功解析
- 用户可通过语音录音完成一笔记账
- 用户可保存账单并在账单列表中查看
- 用户可编辑账单并保存修改
- 用户可删除账单
11.2 智能能力验收
- 系统可对典型消费语句进行 AI 分类
- AI 分类结果在歧义场景下优于纯规则分类
- 统计页可生成 AI 消费分析与建议
- AI 分析结果可在页面卡片中正确显示
11.3 统计功能验收
- 系统可统计总支出
- 系统可统计账单数量
- 系统可按分类汇总金额
- 系统可显示分类横向占比条
11.4 前后端联调验收
- 小程序前端可正确请求 Flask 后端
- 真机可访问局域网后端
- 语音识别、分类、分析链路均可正常运行
12. 后续优化方向
- 增加月度/周度维度统计
- 增加预算预警和消费提醒
- 增加分类选择器,减少手输分类
- 支持云端存储与多端同步
- 增加图表可视化,如饼图、柱状图
- 优化 AI 提示词与分类稳定性
二.Github链接
https://github.com/7788-noodles
三.小组分工
李佳琪:负责小程序的核心功能设计与实现,需求文档编写
程天润:小程序的核心功能设计,答辩PPT制作,博客编写
莫仕明:答辩演讲,需求整理,资料收集

浙公网安备 33010602011771号