@hobby
2015-04-09T12:39:00.000000Z
字数 6234
阅读 1279
@(醋溜-广告系统)[分类|标签|电商]
| 日期 | 时间 | 修改内容 | 修改人 |
|---|---|---|---|
| 20150209 | 16:45 | 初版内容 | 尹志伟 |
| 20150210 | 11:20 | 更新weight相关信息 |
尹志伟 |
| 20150211 | 11:30 | 更新方案介绍4.2 API模块, 更新进度0. 分工和进度计划 |
尹志伟 |
| 20150211 | 13:45 | 更新设计4. 设计方案介绍 |
尹志伟/严伟森 |
| 20150211 | 19:58 | 新加章节4.3 API模块与微店模块的接口 |
尹志伟 |
| 20150226 | 14:45 | 新加章节2.6 上线版本的需求说明 |
尹志伟 |
| 20150227 | 11:00 | 更新工作内容0. 分工和进度计划 |
尹志伟 |
| 20150227 | 11:20 | 开发人员同步状态后, 更新工作内容0. 分工和进度计划 |
尹志伟 |
此分工是初步计划, 表格中单位为小时
第一阶段工作(春节后上线版本)
| 名称 | 描述 | 负责人 | 预计工作 | 完成时间 | 状态 | 附注 |
|---|---|---|---|---|---|---|
| 表设计和压测指标 | SQL表格设计,压测指标反馈给产品 | 伟森/凤坡 | 1 | 02/09 | 完成 | |
| 设计方案初步完成和评审 | 本文档初步评审 | 尹志伟 | 2 | 02/10 | 完成 | |
编码和自测工作 |
||||||
| 微店提供给API的接口 | 基于标签的 | 伟森 | 2 | 02/10 | 完成 | |
| 客户端接口 | API访问参数和模板等内容 | 尹志伟 | 2 | 02/11 | 完成 | |
| API缓存 | 主动缓存的实现和自测 | 伟森/志伟 | 30 | 02/11 | 完成 | |
| API与微店联调 | -- | 凤坡/伟森/志伟 | 8 | 02/13 | 完成 | |
| API模块的XB后台 | 新版分类对应的页面简单编辑,测试 | 志伟 | 2 ?? | 02/12 | 完成 | |
联调, 准备提交 |
=== | |||||
| 小编验货库商品批量导入标签库 | 使用脚本或程序批量操作, 在上线之前将正式库的验货产品批量导入(导入时, default_sort用小编验货时间) | 凤坡 | 02/28 | |||
| 标签库内默认排序字段 | default_sort字段需要有效值,第一版本来自ctime的归一化处理. | 凤坡 | 27日上午 | |||
| 标签权重调整后default_sort变更 | 允许小编通过调整权重干预排序 | 凤坡 | 02/27 | |||
| API模块进行压力测试 | 查看文件缓存和redis缓存的性能指标 | 志伟 | 02/27 | |||
| 小编后台试用和反馈 | 配置分类相关内容,有问题联系志伟 | 王玮 | 02/27 | |||
| 小二后台使用和反馈 | 配置标签表等内容,推广,有问题联系凤坡 | 王玮 | 02/27 | |||
| 入库时,标签库内商品的排序字段数值关联 | 商品的销量价格等信息, 入标签库的时候要带上. | 凤坡 | 02/28 | |||
| 低优先级, 第二个小版本 | === | |||||
| low pri 宝贝入标签库 | 基于某个商品的标签添加/调整(覆盖产品第2,3条需求) | 凤坡 | 6 | 02/11 | ||
| low pir 标签管理 | 标签的添加,删除,修改,CID关联到标签(覆盖产品第1条需求) | 志伟/伟森 | 6 | 02/12 | ||
| low pri 周期同步,标签库内商品的排序字段数值关联 | 商品的销量价格等信息, 入标签库的时候要带上. | 凤坡 | ||||
提测 |
||||||
| XB后台测试 | todo | |||||
| 功能测试 | todo |
提测
第二阶段工作
| 名称 | 描述 | 负责人 | 预计工作 | 完成时间 | 状态 | 附注 |
|---|---|---|---|---|---|---|
| 分类结果的排序-客户端 | 对于不同的排序类型(如综合排序,销量)设置相应的post参数 | ?? | ||||
| 分类结果的排序-服务端 | 对于不同的排序类型(如综合排序,销量), 进行相应的处理. 涉及API模块和微店模块 | 志伟/伟森 |
4.1 API模块设计). 主要原因是: 分类数据的获取刷新, 不得不选择主动缓存的策略.4.1 API模块设计). 主要原因是: 分类数据的获取刷新, 不得不选择主动缓存的策略.本设计文档中, 我们使用标签(Tag)来管理和支持系统内的商品分类.
todo 根据文档更新基于标签的搜索, 传入标签允许有多个吗, 还是只有一个?
传入标签总是一个, (首页展示商品 打 默认/全部 标签)
CID与标签(TAG)的数目对应关系?
目前需求是(双方向)一对一.
从扩展性和灵活性考虑, 软件设计应考虑将来可能会n:1(多个CID对应同一个标签)
排序功能要做到什么样?
权重是什么?
用于人为干预/控制商品展示的先后顺序. 商品的每个标签对应一个权重值, 小编可以手动配置 (per tag configuration).
TBA
TODO 产品的同事帮忙确认规格需求
主要参数的规格
| 名称 | 描述 | 当前规格 | 最大规格 | 附注 |
|---|---|---|---|---|
| 标签 | 系统中标签的个数 | 300-500 | ||
| 商品 | 需要支持分类的商品总数 | 20K-100K | ||
| 每个商品的标签数 | N/A | 5-10 | ||
| 一级分类数量 | ||||
| 二级分类数量 | ||||
| ... | ||||
| ======= | 设计规格 | |||
| 缓存页面数 | 单一分类缓存商品的最大页数 | 20? |
20150226 与王玮沟通的结果
TODO 参照 关键需求 - 规格
总体思路
与客户端的接口(query参数和template), 在分类V2.0版本的基础上复用和扩展.
缓存的设计, 需要考虑 高并发 和 功能模块的位置选择.
5.1 业务接口设计细节, 确定后需要更新到 楚楚街APP新版API 文档中.redis还是文件缓存
过实验初步验证, 就客户端响应时间这个指标, redis 和 文件 方式差异不大.
其他需要考虑/验证的因素: CPU占用, 磁盘负载, 多台服务器之间是否需要同步(文件方式为本地)
结论:
为了便于扩展, redis 和 文件 方式都会实现雏形, 第一阶段调试可能会首选 redis
缓存的页面数量
出于健壮性的考虑, 第一版本中设置最大缓存页数. 后期版本可以考虑, 基于查询数目动态设置缓存页面数.
主动缓存的实现策略
借鉴上一版本分类需求中, 微店的主动缓存机制.
todo: 缓存刷新的时间间隔: 5-10分钟? (产品的底线是1小时)
todo: 缓存的生命期
主动缓存对随机因子的支持问题:
主动缓存的 key 值选择, 参见下表, 需要在以下两个因素间平衡
| 字段 | 描述 | 格式 | 数值范围-当前 | 数值范围-未来 | 来源 | 附注 |
|---|---|---|---|---|---|---|
| ad_key | 模块名 (各级)分类总数 |
search-new-<tagId> |
60 = 6x10? | 300? | query: module query: function query: tagId |
|
| zone | 列表名 目前唯一 |
productList |
1 | 1? | N/A | |
| Gender | 性别 枚举值 |
gender=[female, male, all] |
3 | 3 | N/A | |
| Page | 当前获取的页码 整型: 1---n(十/百??) |
page={int} |
100? | 1000? | page | |
| ======== | 需要考虑和特殊处理 第一大版本可以不做如下内容 |
======= | ||||
| NewUser | 是否新用户 用户登入系统距今时间(天数) 数值范围: 1..n(百/千量级) |
NewUser=[0, 1]区分是否 今日首次登陆的用户 |
2 | <10 ?? | client->loginDays | |
| package_name | 客户端包名 枚举值,随时间累加(个/十) |
majorPackage=[0,1]区分是否为 主要版本 |
2 | < 10 ?? | client_>package_name | |
| channel | 客户端发布渠道 枚举值,(十/百) |
majorChannel=[0,1]区分是否为 主要渠道 |
2 | <10 >> | client->channel |
- TBA
标签表
| 字段 | 描述 | 类型 | 附注 |
|---|---|---|---|
| product_id | 产品id | int | |
| tag_id | 标签id | int | |
| weight | 标签权重(数字范围0-10,支持1位小数如"1.5",默认为1) | int | 20150210与郭超确认需求 |
| price | |||
| sale_count | |||
record_date |
|||
| default_sort | |||
| ... |
todo: 伟森/凤坡更新一下上表, 排序
标签名称表
| 字段 | 描述 | 类型 | 附注 |
|---|---|---|---|
| id | 标签id | int | |
| name | 标签名称, 小编后台展示的名称 | String |
CID到标签映射表
| 字段 | 描述 | 类型 | 附注 |
|---|---|---|---|
| cid | 商品分类(可能是一级/二级或其他级别) | int | |
| tag_id | 标签id | int |
**4.2.4 标签空间表**
TODO: 伟森
与API模块的接口包括如下参数
输入:
tagId, page, per_page
返回:
productList, info (total_num, per_page, total_page, page)
SQL查询
按如下步骤进行
1. 查询标签表, 根据传入的 tagId 或者 productId 的列表
2. 根据 productId 的列表, 依次访问各个库取出以下字段:
chuchuId, title, oldPrice, newPrice, shopId, imgUrl, saleCount
TODO: 凤坡/伟森
标签库 与 商品库的同步, 比如以下场景: 商品修改/删除, 商品上下架, 其他??
请求方法
dev-category-tag.wx-dev.chuchujie.com/api.php?s=Product/getRareCategoryDataTest
TODO: 表格格式的参数列表
返回结构
'chuchuId' => $values['chuchuId'],'title' => $values['title'],'oldPrice' => $values['oldPrice'],'newPrice' => $values['newPrice'],'shopId' => $values['shop_id'],/* addtime */'imgUrl' => $values['img'],'saleCount' => $values['saleCount'],/* shopUrl */
以下内容摘自文档
楚楚街APP新版API
2015-01-29 支持需求 新版分类 TAB 需求 v1.2, 此接口在 2.6 搜索-关键词搜索|分类搜索基础上扩展形成.
2015-02-11 支持需求 基于标签的新版分类, 接口调整变更
涉及需求版本:V1.0.1?? TODO: 更新版本
涉及需求:4?? TODO: 更新
以下页面复用此业务接口, 通过Query细节参数(category, , secCategorytagId)进行区分
- 分类首页
- 分类详情页
- 关键词结果页
Query参数
| Name | Type | Value | Desc | Note |
|---|---|---|---|---|
| module | String | search | 搜索模块 | |
| function | String | new | 功能-新版分类TAB | |
category |
String | default | 指定显示首页 或 详情页. 空-显示首页, 其他值-显示对应的详情页 |
|
tagId |
Int | - | 标签id | 20150211: 加入 |
secCategory |
String | - | 关键词 List 页的请求参数 |
20150130更新:废除不用 |
| String | - | 20150130更新: 加入. 20150211: 废弃不用 |
参数构造细节说明 (客户端无须关注此细节, 服务端 Query 传回约定)
| Page | category | tagId | Descriptoin |
|---|---|---|---|
| 分类首页 | 空 | 空 | 服务端填充default |
| 分类详情页 | 有效 | 有效 | |
| 关键词结果页 | 空 | 有效 |
POST参数
| Name | Type | Value | Desc | 附注 |
|---|---|---|---|---|
| page | int | 展示商品的页数 | 页数 |
| Name | Type | Desc | 附注 |
|---|---|---|---|
| categoryList | Array of Banner | 用于需求4.3、4.5中的一级分类 |
|
| bannerList | Array of Banner | 用于需求4.6中的分类List的顶部Banner |
|
| keywordList | Array of Banner | 用于需求4.6中的关键词列表 |
|
| productList | Array of Product | 用于需求x.x (TODO)分类TAB中的商品列表 |
|
| page | int | 当前页数-productList | |
| hasNext | int | 是否有下一页,0-没有、1-有 | |
| title | String | 关键词结果页, 页首显示文案 |