场景电台需求规格说明书

#场景电台需求规格说明书[SRS]

##1.需求描述

场景电台描述


  • 头部频道标题根据每日不同时段显示不同(建议服务器返回)

  • 上半页展示4个「当前场景」,由服务器返回

  • 最后一个在符合条件的情况下为天气电台,规则见下方

  • 底部「全部电台」,按照服务器返回「分类 - 列表」的形式呈现,服务端可随时调整

  • 每个电台都包含了中文名、英文名、背景图(只是出现在当前推荐时才会呈现该图);图片保存在服务器

  • 进入场景电台时,判断是否有当前正在播放?如有,则使用icon标识

「当前场景」规则说明:


  • 仅基于当前的时间(天气电台还需要地点)

  • 由服务端根据当前时间判断当前场景

  • 具体判断规则,由产品向服务端提供

「天气场景」规则说明:


  • 天气电台展示,需满足以下3个条件(否则不展示天气电台):

    • 成功获取用户所在区县+天气数据

    • 当前时间不属于20:00-08:00区间

    • 获取到的天气属于小雨、中雨、大雨、雷阵雨、小雪、中雪、大雪、晴、阴等枚举数据时,才展示(该集合需产品根据天气API的枚举来进行选取)



场景电台在客户端播放器形式:


  • 进入场景电台界面,必须点击一个场景,才可开始播放

  • 点击后展开全屏电台播放器,并自动播放此电台

  • 正在播放时,播放中场景有特殊icon标识,点击此场景则暂停播放(点击其他场景切换播放)

  • 关于播放列表规则:

    1. 开始播放时,一次性从该场景全部歌曲中随机取50首并顺序播放

    2. 参考私人FM,点开当前播放列表后,不显示歌单,仅展示播放历史

    3. 当前场景50首歌播放完毕(或者播放最后一首)时,重复本规则1。



场景电台包含如下接口:
|接口名|接口描述|
|–|–|
|/v1.0/content/indexscene.do|获取场景电台信息-业务页面|
|/v1.0/content/indexscenedetails.do|获取单个场景电台歌单信息|

##2. 需求描述

###2.1 获取场景电台信息-业务页面

####2.1.1 需求描述
通过用户首次进入app 乐库》推荐》场景电台》进入场景电台页面
场景电台页面本身为一个栏目,

  • 上半页的场景为当前场景和天气场景,通过获取电台接口(内容组件)
  • 下半页的场景列表为内容(通过querycontentbyid去获取)(内容组件)
  • 最后拼接后给前端返回
  • 存储结构与栏目一致,方便刷新统一管理
    场景列表需要缓存

####2.1.2 流程分析

      
      
1
2
3
4
5
6
7
      
      
Client->MIGU2.0: indexscene.do
MIGU2.0->MIGU2.0: 获取下半页n querycontentbyid
MIGU2.0->content: 获取上半页
content-->MIGU2.0: 返回
Note right of MIGU2.0: 根据当前时间n过滤上半页返回信息
Note left of MIGU2.0:拼接返回结果
MIGU2.0-->Client:

####2.1.3 内部实现逻辑(流程图)

####2.1.4 接口设计
Req:
|参数名称|说明|是否必须|备注|
|–|–|–|–|
|weather|天气信息|是|此处需要前端给出天气的枚举列表|
Rep:
|参数名称|说明|是否必须|备注|
|–|–|–|–|
|code|返回码|是|000000|
|info|返回描述|是|成功|
|now|ColumnInfo|是|当前场景|
|all|ColumnInfo|是|全部场景|

####2.1.5 表结构设计
将场景电台的栏目插入配置表

      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 大专栏   场景电台需求规格说明书div>
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
      
      
INSERT INTO `music`.`t_migu_columnid_url` (
`columnid`,
`columnname`,
`servicepath`,
`ua`,
`version`,
`test`,
`status`,
`inserttime`
)
VALUES
(
'xxxxx',
'场景电台',
'/v1.0/content/indexscene.do',
'Android_migu',
'1.0',
'01',
'1',
'2017-5-25 16:56:54'
);
INSERT INTO `music`.`t_migu_columnid_url` (
`columnid`,
`columnname`,
`servicepath`,
`ua`,
`version`,
`test`,
`status`,
`inserttime`
)
VALUES
(
'xxxxx',
'场景电台',
'/v1.0/content/indexscene.do',
'Ios_migu',
'1.0',
'01',
'1',
'2017-5-25 16:56:54'
);

创建tag表用来枚举天气的类型

      
      
1
2
3
4
5
6
7
      
      
CREATE TABLE `t_migu_tag` (
`columnid` int(20) NOT NULL COMMENT '栏目id' ,
`tag` varchar(255) NOT NULL COMMENT 'tag的描述' ,
`ua` varchar(255) NOT NULL COMMENT 'ua' ,
`test` varchar(2) NOT NULL ,
PRIMARY KEY (`columnid`)
);

####2.1.6 测试要点
1.对应的时间段返回对应的当前场景。
2.对应的天气返回对应的天气场景。
3.在限定时间段(20:00到次日8:00)内不返回天气场景。
4.不同channel 不同省份信息,test=01以及其他,cities.

####2.1.7 性能测试

###2.2 获取单个场景电台歌单信息

####2.2.1 需求描述
点击场景电台进入场景电台的播放页面,返回一个歌单类型的栏目,
需要将其中随机取50首歌曲发出。

####2.2.2 流程分析

      
      
1
2
3
4
      
      
Client->MIGU2.0: indexscenedetails.do
MIGU2.0->MIGU2.0: 获取场景电台的歌单n querycontentbyid
Note over MIGU2.0: 将原始数据取出后n拼出随机50首填回
MIGU2.0-->Client:返回结果

####2.2.3 内部实现逻辑(流程图)

####2.2.4 接口设计
Req:
|参数名称|说明|是否必须|备注|
|–|–|–|–|
|columnId|电台栏目id|是|必须是电台栏目id|
Rep:
|参数名称|说明|是否必须|备注|
|–|–|–|–|
|code|返回码|是|000000|
|info|返回描述|是|成功|
|columnInfo|ColumnInfo|是|栏目|
返回的样子跟现在querycontentbyid返回的样子一模一样。

####2.2.5 表结构设计

####2.2.6 测试要点
1.对应场景的id传错了
2.对应场景的歌曲少于50首
3.对应场景的歌曲多于50首

####2.2.7 性能测试

##3. 修订记录
|日期|修订版本|修改描述|作者|
|–|–|–|–|
|20170524|v1.0|初稿完成|王晟|

##4.常量描述
测试环境

Tagid Tag描述
15295581 下雨
15295739 大风
15295659 阴天
15295759
15295558 晴天
15295721 下雪

生产环境

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12346129.html