# moe_kee_apiend
**Repository Path**: Xinyi-media/moe_kee_apiend
## Basic Information
- **Project Name**: moe_kee_apiend
- **Description**: API项目的期末产品——萌记app的完整介绍及界面交互。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 0
- **Created**: 2022-07-06
- **Last Updated**: 2025-12-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 萌记
|项目名称|萌记_产品需求文档|
|---|---|
|产品名称|萌记|
|产品描述|萌记是一款以青年用户为主,将Q版宠物拟人化的方式帮助用户控制体重的记录型APP。|
|产品版本|3.0版本|
|产品现状|进行中|
|文档作者|刘心怡、唐子君、李桂华|
## 价值宣言
本项目是对萌记产品的一个需求分析文档,本产品使用了API技术,使用了百度智能云菜品识别和语音识别,用户不仅可以通过搜索的方式记录自己的饮食,同时可以使用拍照上传的方式,智能识别出用户的食物,帮助用户快速实现饮食记录的同时,还能识别出菜品的卡路里等一系列详细信息.
## 一、问题需求
### (一)用户需求
萌记作为一款控制体重的记录型APP,饮食记录功能目的是为了帮助用户快速记录,食谱功能目的是为了推荐适合用户当前身体需求的减肥食谱。传统的记录类软件需要用户手动输入食物名称并进行甄选,对于用户来说,一些食物可能并不知晓其具体名称,也无从下手记录,不仅用户体验不友好,效率也较低。而萌记API的拍照识图功能不仅不需要用户知晓具体的食谱名称,还拓展了萌记的功能,不仅能在饭后拍照记录,也能在识图知晓具体食物食谱。
### (二)价值主张画布
### (三)需求概述
#### 1.产品背景
随着新业态和新场景与健康话题的不断融合,传统而不科学的瘦身方式,比如药物减肥、饥饿减肥法、抽脂缩胃手术等极端方法已逐渐被公众摒弃。低卡类、低热量类、抗糖类、健身类、代餐类、运动营养类、运动类、体脂监测类等一切与塑形、体型相关的新消费细分领域,顺应着消费者生活方式习惯的重视及改变,时尚健康的社会风潮应运而生。
#### 2.产品市场
大健康观念的普及,使得减肥且保持高品质的健康生活开始成为减肥群体的刚需。据iiMedia Research的《2020中国健康瘦身行业发展监测及分析报告》显示,分别有68.9%和53%的受访网民通过健身和饮食调配这两种健康的方式达到瘦身目标。在瘦身相关的付费意愿方面,91.6%的受访网民表示愿意为瘦身进行付费,其中近六成愿意付费1000元以上,若根据中国超重人口数而预测市场规模的话,有望在2021年超过万亿规模。
从针对健康瘦身类APP的调研报告得知,对于整体减肥人群中有53%希望减肥方法和膳食配方是合理科学的。有61%表示难以忍受饥饿与美食的诱惑,48%的瘦身者难以坚持运动,改变生活方式存在一定的挑战。由此说明,减肥人群的低自律性是目前减肥瘦身的核心痛点。
#### 3.产品介绍
萌记针对减肥人群的低自律性这一核心痛点,开发了三个核心功能。一是通过Q版宠物IP形象帮助用户降低对自己体重管理的焦虑性,同时以云养宠物的模式提高用户记录和自律的积极性;二是利用拍照识图API帮助用户快速记录饮食,简化用户的记录步骤提高效率。三是结合API的食谱推荐,(根据用户痛点和核心价值进行补充)
#### 4.竞品分析
**直接竞品:饭橘**
饭橘是一款用于记录每日体重、饮食、运动的生活类APP
【功能介绍】
* 每日体重、饮食、运动记录,数据长期保存,随时可查周期内的体重变化和热量积累。
* 分享:把识别结果以精美海报的形式分享给微信好友或朋友圈,让大家见证你的改变。
* 饮食记录:海量食物库,营养元素和卡路里热量精准查询,让你吃的明白。
* 体重记录:记录你的体重曲线,减肥历程一览无余。
* 运动记录:上百种运动热量消耗查询,连走路、洗碗也不放过~
* 心情记录:减肥心情自由切换,不管是开心减肥、还是自暴自弃,都会帮你记录。
* 计划:提供丰富的减肥饮食食谱,制定适合的饮食计划,让你在减肥的过程中不再拒绝美 食,在营养均衡的基础上塑造完美身材,开启减重、美食两不误的健康生活吧!
**间接竞品:薄荷健康**
薄荷健康是一款健康减肥工具,给专业瘦身指导
【功能介绍】
* 健康高效管理系统: 管理减肥过程,高效、科学、健康定制减肥方案、减脂食谱,记录体重、体脂、围度等多维数据变化,符合中国饮食习惯,健康高效管理。
* 食物数据库:海量食物数据库,热量、营养成分随时查,吃得明白。涵盖80万+条食物的热量及营养素数据,以中国食物为主,方便实用。
* 记录:摄入和消耗,便捷记录、专业分析,高效管理三餐热量、运动消耗、身体数据随手记, HealthKit、智能手表绑定后可同步数据,记录更加便捷准确。
* 减肥社区:优质的减肥社区,结伴减肥、饮食记录、运动打卡。
#### 5.目标用户群
|目标用户群|群体|
|---|---|
|目标用户|18-40岁的青年用户|
|核心用户|18-40岁的女性用户|
|潜在用户|有减肥需求的广大用户|
#### 6.用户痛点和核心加值
|用户痛点|功能|API加值|
|---|---|---|
|不清楚如何通过饮食调配方式减肥|食谱推荐| 智能推荐系统 |
|对摄入食物的热量不清楚|分析卡路里|百度智能平台菜谱识别|
|字太多不想看|朗读文章|语音识别api|
#### 7.用户画像与使用场景
使用场景:苏三三先是被萌记的IP形象秋田犬吸引了,于是她好奇地进行了每日记录,因为萌记有拍照识图记录,因此饮食记录对她来说也不算麻烦。而且萌记有食谱推荐功能,能根据她的身体情况和她的需求(爱吃)给她推荐好吃顶饱但热量又不高的食物。她兴趣不减,持续进行了一个月每日记录,她的体重在合理的饮食和运动下终于有减少,她在这个途中也惊奇的发现,她那只肥肥的秋田犬的体型也轻微的变瘦了。
#### 8.用户旅程地图
### (四)需求列表
#### 1.API产品对比
|API平台|产品名|价格|请求参数|支持语言|
|:-:|:-:|:--|:--|---|
|百度智能云|菜品识别|免费/1000次
7元/10000次
34元/50000次
66元/100000次|access_token
Content-Type
image|bash
PHP
Java
Python
CPP
C#|
|阿里云视觉智能开放平台|菜品识别|0.0007元/次|Action
ImageURL|无说明|
|NeuHub京东人工智能开放平台|菜品识别|免费/500次
170元/100000次
7500元/500000次
|appkey
timestamp
sign
image|无说明|
|百度智能云|语音识别|免费/50000次
2400元/1000000次
19200元/1000000次|sampleRate
numberOfChannels
|bash
PHP
Java
Python
CPP
C#|
|讯飞开放文档|语音合成|免费/500000次
5800元/1000000次
|app_id
signa
ts
file_len
file_name
slice_num|Python
Java
nodejs
PHP|
#### 2.API产品优先级排序
|序号|API技术|用户场景|优先级|
|:-:|:-:|:-:|:-:|
| 1 |百度智能云菜品识别|用户通过手机拍照或者上传图片|A(重要)|
|2|讯飞语音合成|朗读文章内容|A(重要)|
|3|智能推荐系统|通过用户数据在首页智能推荐用户可能感兴趣的内容|B(次要)|
## 二、解决方案:界面流程及交互
### (一)界面流程及关键交互
#### 1.交互设计
[产品原型交互设计图](https://modao.cc/app/Q44KRhggrdf29bXrfbZq6V)
#### 2.页面流程图
#### 3.三性分析
### (二)数据流程及关键智能API使用
#### 1.产品功能结构图
## 三、编程思路、方法及流程
### 1.编程思路及方法流程
**点击识别页面(cv.wmxl)的拍照上传按钮,进行拍照或者上传图片,然后点击识别按钮,在下方可以识别出菜谱中对应的食物名字和卡路里,然后拍照上传按钮和点击识别按钮会隐藏**
> 具体实现:
>
> ①使用**wx:if 和 wx:else**,当content不为空的时候,显示按钮,当为空的时候,隐藏按钮
>
> ②使用**for**循环来循环遍历返回的数据情况
```html
{{item.name}}{{item.keyword}}
卡路里: {{item.calorie}}
```
> 菜品识别(CV.js) -->获取数据
```js
// cv.js
//获取token
getToken: function (callback) {
wx.request({
url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=cxb09hxA168RMCdyxNFx7zZ8&client_secret=85Nca1YweSadYpekXRxGGmiT5Gi4Xj3T',
data: {},
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
success(res) {
var token = res.data.access_token;
return callback(token);
}
});
},
// 菜品识别
generalTap: function (e) {
const imgB64 = that.data.imgB64;
if (!imgB64) {
that.setData({
ishow: true
});
return;
};
that.getToken(function (token) {
that.getGeneralTapResult(token);
});
},
getGeneralTapResult: function (token) {
wx.request({
url: 'https://aip.baidubce.com/rest/2.0/image-classify/v2/dish?access_token=' + token,
method: "post",
data: {
image: that.data.imgB64,
baike_num: 5
},
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
success(res) {
console.log(res);
that.setData({
content: res.data.result
});
}
});
},
```
**拍照识别完之后可以按重新选择按钮,来进行重新选择图片上传**
> 具体实现: 为button按钮设置一个again函数,将content里的内容清空
```js
// cv.js
again: function () {
this.setData({
content: ''
})
}
```
**点击相对应的食物,可以跳转前往对应数据的详情页面(demo.wxml)**
> 具体实现: 设置一个goMore函数,点击对应的食物,可以跳转到demo页面,同时将食物的名字 图片 和相关描述传递到demo页面
```js
// cv.js
goMore: function (e) {
console.log(e);
var title = e.currentTarget.dataset.title;
var image = e.currentTarget.dataset.baike.image_url;
var description = e.currentTarget.dataset.baike.description;
wx.navigateTo({
url: '/pages/demo/demo?title=' + title + '&image=' + image + '&description=' + description,
})
},
```
**在详情页面(demo.wxml),可以看到相关食物的图片和描述**
> 具体实现:
> ①通过onLoad函数可以拿到从cv.wxml页面传递过来的参数
```js
// demo.js
onLoad(options) {
console.log(options);
var that = this;
that.setData({
title: options.title,
image: options.image,
description: options.description,
})
},
```
```html
{{title}}
{{description}}
```
**同时在最下方可以点击播放按钮,实现语音播放文章内容**
>具体实现:为播放按钮和结束播放按钮分别设置begin和end函数
```js
// demo.js
onReady(e) {
//创建内部 audio 上下文 InnerAudioContext 对象。
this.innerAudioContext = wx.createInnerAudioContext();
this.innerAudioContext.onError(function (res) {
console.log(res);
wx.showToast({
title: '语音播放失败',
icon: 'none',
})
})
},
change:function(){
var that = this;
that.robot()
},
// 文字转语音
begin:function (e) {
var that = this;
var msg = this.data.description
plugin.textToSpeech({
lang: "zh_CN",
tts: true,
content: msg,
success: function (res) {
console.log(res);
console.log("succ tts", res.filename);
that.setData({
src: res.filename
})
that.yuyinPlay();
},
fail: function (res) {
console.log("fail tts", res)
}
})
},
//播放语音
yuyinPlay: function (e) {
if (this.data.src == '') {
console.log(暂无语音);
return;
}
this.innerAudioContext.src = this.data.src //设置音频地址
this.innerAudioContext.play(); //播放音频
},
// 结束语音
end: function (e) {
this.innerAudioContext.pause();//暂停音频
},
```
**有些食物可能没有图片和内容描述,避免传递过来的参数出现undefined的情况**
> 具体实现: 在onLoad函数中用**if条件语句**判断 description 中的内容是否为undefined,如果是,则将 description 中的内容修改成其他
```js
// demo.js
onLoad(options) {
console.log(options);
var that = this;
that.setData({
title: options.title,
image: options.image,
description: options.description,
})
console.log(that.data.description);
if (that.data.description === 'undefined') {
that.setData({
image: '../../images/plant.jpg',
description:'暂时没有相关信息噢~~~'
})
}
console.log('LATER',that.data.description);
},
```
### 2.视频演示
[点击观看视频](https://www.bilibili.com/video/BV1BN4y1M7W7?share_source=copy_web)
## 四、产品未来规划
### 发展理念
一款根据用户实时体重进行记录并展示的记录型app,在满足用户日常记录需求的同时,还需兼顾用户的良好体验,我们将持续的推出新功能,在主功能保持不变的前提下,使萌记更加贴近用户的使用需求。
### 产品迭代
## 五、心得总结及感谢
### 心得总结:
* 在本学期的API、机器学习与人工智能课程中,不仅学到了如何调用API接口进行相关程序的开发,而且了解到一份完整的产品需求文档需要不断的打磨、版本迭代,才能呈现出最终的效果。
* 更加深刻的了解到产品经理与API的关系,一名产品经理需要对团队进行良好的规划,产品需求文档是势在必得的。
* 能够调用百度api实现语音识别、语音合成等功能,通过调用图灵机器人实现人与机器的交流。
* 当今时代科技飞速发展,越来越多的高科技被应用于学习、生活之中。作为网络与新媒体这个新兴专业的一名成员,我认为前景是十分光明的,在学习API之后,对于后续的小程序或是技术开发这方面也会有很大的帮助。
### 感谢:
本文档的撰写参考了往届师兄师姐的作品,在此表示由衷的感谢:
* [张渚师兄的仓库地址](https://gitee.com/zhang_zhu/api-final-project)
* [刘心如师姐的仓库地址](https://gitee.com/liuxinrujiayou/api_final_project)
同时非常感谢百度AI提供的免费资源调用:
* [菜品识别接口](https://ai.baidu.com/tech/imagerecognition/dish)
感谢Process on提供的流程图及数据图的绘制:
* [Process on](https://www.processon.com/)
感谢墨刀提供的原型图绘制及交互功能的使用:
* [墨刀](https://modao.cc/brand)
**再次进行由衷的感谢,谢谢!**