原型文档是产品经理的基本功。形式不重要,内核在于将心中的方案详细描述出来并能够让开发执行落地。
也只有将文档全面准确地写出来,才会避免开发按照自己理解去写,然后测试告诉你iOS和安卓两端同一个功能有大量不一致的窘境。
大到一个系统,小到一个页面,其实都会涉及到两部分:数据和交互。
数据是信息,通过人机交互的方式将信息流转起来,从而解决用户的问题,创造产品的价值。
数据
数据分为前置数据、页面展示和后置数据。
以一份表单举例,前置数据代表着表单的表头信息是从哪里来的,这些表头是文本框,还是单选框,又或是日期?页面展示代表这些数据是以什么顺序展示的,所有表头信息都消失时如何展示;而后置数据代表着当用户提交后,这些数据又去向哪里?是哪个数据库中的哪些字段,是单表增加还是多表增加……
别着急,下面将详细解释
前置数据:
功能不是无源之水,第一件事是说明数据的来源。
1、数据来源:
服务器数据
本地缓存数据
而服务器数据又分前端请求和后端推送。无论请求还是推送,要明确时机。比如前端请求是轮询,还是用户端手动触发?后端推送是触发条件后自动推送,还是工作人员在后台手动触发。
2、请求的数据范围
全量请求
分批次请求
对于大量数据,一般会采用批量请求的方式,不仅减少算力和时间,也会保证前端渲染的质量。一次行全量请求固然会消耗算力和时间,但是也会保证数据的准确性,不会因为数据的增删改而向用户提供错误的信息。
3、请求的逻辑
牵扯到后端以什么样的筛选条件或算法提供数据
4、包含哪些参数
5、加载中的一系列判断
5.1)加载动态
icon形式加载态
有进度条的加载态
当加载时间较长时一般会用带有进度条的加载态,但是进度条本身也需要一个接口来计算加载进度,其实是一种额外的算力消耗。
5.2)加载底图
5.3)无网、弱网判断
5.4)加载顺序
比如一道题目会优先加载文字,然后再加载图片。文字中又有可能先加载题型和题 干,最后加载选项。
5.5)加载方式
预加载
延时加载
实时加载
这些方式其实都是为了保证响应速度而在前端做的优化。比如预加载会在做第 49道题时,把从50~100道题预先加载到本地,以保证用户体验。
5.6)加载条数
当数据量过大时,分区间加载数据不仅减少响应时间,也会保证渲染质量。
6、兼容问题
老版本是否兼容新数据
老数据如何处理
新手最常犯的错误就是没有考虑好新老版本的兼容问题。如果老版本不兼容新数据,那么该数据是无法被展示的。还有就是老数据的清洗处理,如果后台一个默认选是的数据,改为可以选择是或否,那么老数据默认选是,还是默认选否——总之不能让业务部门一个一个把老数据再选择一遍吧:(
页面展示
1、常规状态
数据的时间范围
数据项是否会因为时间或角色的影响而增加、减少
比如移动联通的通话记录的范围仅限6个月,不会因为你买的是100元还是20元的套餐给你额外多加2月的记录。
2、异常状态
全空值页面
半空值页面
加载错误提示
阐述出来异常情况是基本要求。在异常页面上做合适的引导,让用户不迷路是对产品更高的要求。
3、数据限制
文本最大长度
敏感词限制
4、数据排序
如果是一种排序规则,那么一定以唯一标识作为排序规则;如果是多种排序规则,也一定会用唯一标识作为最后的规则。比如成绩单以分数高低排序,当出现同分的情况时,以用户ID作为排列顺序。
5、缓存机制
强缓存
对比缓存
删除&更换规则
缓存目的是减少请求次数和响应时间。而代价是数据的真实性。强缓存可以最大限度上减少向server请求的次数,但同时数据如果有变化却也无能为力。没有最好的机制,要因地制宜。
6、刷新规则
触发时机
比如进入、返回页面时请求数据;从后台唤醒时请求数据;手动刷新时请求数据
后置数据:
1、结果的返回
无论是前端请求还是后端推送,都需要将信息给到用户。既可以是成功信息,也可以是失败的信息,比如给出抢票失败的结果。但无论如何,对结果的引导和提示都是至关重要,如果抢票成功,需要在提示中再次提及票面的信息,向用户进行二次确认;如果是失败,那么也要引导用户对不同时间段/地点进行二次抢票等等……
2、数据的走向
增删改查4种行为对应着数据库中不同的数据走向。比如用户做完10道题后并选择付费批改,那么此时至少在刷题记录表、和订单信息表中同时增加两项内容。如果用户同时删除了一节过期课程和一节直播课程,那么数据库可能会分别将这一条信息逻辑删除和物理删除。
3、数据的处理
实时处理/异步处理
结果的计算
在很多英语学习软件中会向用户提供测评功能,会根据用户在测试中的听说读写来评价其英语水平。而这个结果(数据)就涉及到是一次性把所有题目都做完再给出测评结果,还是把听说读习其中一项完成后就进行判断,而后不断跟进其他项的结果进行调整。而最后的评价是如何计算的,其中涉及到哪些算法?可能会涉及正确率和答题用时等因素……
当涉及有关数据的内容时,如果拿不准,一定要多和开发同事多多协商讨论——毕竟他们对数据才最有经验。
交互
交互分为前置交互和后置交互
前置交互
1、功能的入口
入口的热区(具体大小由UI定义)
入口的禁用状态&非禁用状态
入口的提醒
比如消息的入口在底部tab栏,该入口永久出现,且不会出现禁用的状态。入口旁边 的红色数字会提醒你有几条未读的消息。
2、当前交互
交互手势
获取焦点后的展示
校验方式
失去焦点时校验
实时校验
提交时校验
是否有联动选项
后置交互
1、数据提交后的状态
成功和失败的提示
如果成功是否会进入新的页面
失败时的提示和
2、提交中的加载
3、返回逻辑
是原路返回,还是定向返回。比如取消支付后会来到订单页面,而不是商品详情页。此外,还要检查页面返回是否有完整路径,避免造成死循环。
最后
文档的细节特别多,以上内容在有的场景下可能也无法囊括。期待小伙伴如果有不同意见,不吝指教,大家共同进步。