第三次软工作业

作业所属课程 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 产品目标

本系统的总体目标包括:

  1. 支持用户通过文字或语音快速记账
  2. 支持系统自动提取金额、备注和消费类别
  3. 支持用户对账单进行查看、修改和删除
  4. 支持系统自动统计消费数据并生成分析结果
  5. 支持通过 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 文字记账

功能描述

用户在首页输入一句自然语言消费描述,系统将其发送到后端进行解析,返回金额、类别和备注,并允许用户保存为账单。

输入示例
image

  • 今天中午吃饭花了25元
  • 买了一杯奶茶18元
  • 打车花了12元

输出结果
image

  • 类型:支出
  • 金额:数值
  • 分类:餐饮 / 交通 / 购物等
  • 备注:提炼后的消费说明

前端要求

  • 提供输入框
  • 提供“解析这句话”按钮
  • 显示解析结果
  • 提供“保存账单”按钮

后端要求

  • 接收文本内容
  • 提取金额
  • 调用分类逻辑
  • 返回结构化 JSON

7.1.2 语音记账

功能描述

用户在首页录音,说出消费内容,系统上传音频到后端,由百度语音识别转为文字,再进入解析流程。

前端要求

  • 提供“开始录音”“结束录音”“识别录音”按钮
  • 请求录音权限
  • 上传录音文件
  • 接收识别文字并自动进入解析流程

后端要求

  • 接收音频文件
  • 进行格式处理
  • 调用百度语音识别接口
  • 返回识别文字

关键流程

录音 → 上传 → 语音识别 → 返回文字 → 自动解析 → 显示解析结果


7.1.3 最近账单预览

image

功能描述

首页显示最近 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 前端交互要求

  1. 页面风格统一,使用柔和粉色系和圆角卡片

  2. 首页应支持文本输入和语音录入两种方式

  3. 所有主要操作应有可见反馈,例如:

    • 解析成功
    • 识别成功
    • 保存成功
    • 删除成功
  4. 统计页应清晰展示消费数据

  5. 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 基础功能验收

  1. 用户可通过文字输入一句消费描述并成功解析
  2. 用户可通过语音录音完成一笔记账
  3. 用户可保存账单并在账单列表中查看
  4. 用户可编辑账单并保存修改
  5. 用户可删除账单

11.2 智能能力验收

  1. 系统可对典型消费语句进行 AI 分类
  2. AI 分类结果在歧义场景下优于纯规则分类
  3. 统计页可生成 AI 消费分析与建议
  4. AI 分析结果可在页面卡片中正确显示

11.3 统计功能验收

  1. 系统可统计总支出
  2. 系统可统计账单数量
  3. 系统可按分类汇总金额
  4. 系统可显示分类横向占比条

11.4 前后端联调验收

  1. 小程序前端可正确请求 Flask 后端
  2. 真机可访问局域网后端
  3. 语音识别、分类、分析链路均可正常运行

12. 后续优化方向

  1. 增加月度/周度维度统计
  2. 增加预算预警和消费提醒
  3. 增加分类选择器,减少手输分类
  4. 支持云端存储与多端同步
  5. 增加图表可视化,如饼图、柱状图
  6. 优化 AI 提示词与分类稳定性

二.Github链接

https://github.com/7788-noodles

三.小组分工

李佳琪:负责小程序的核心功能设计与实现,需求文档编写
程天润:小程序的核心功能设计,答辩PPT制作,博客编写
莫仕明:答辩演讲,需求整理,资料收集

posted @ 2026-04-24 13:00  程天润  阅读(5)  评论(0)    收藏  举报