——着重总结技术开发阶段
以“专注明天”和“定制推荐”为主推功能的一款极简to-do-list类手机应用软件
担当角色:服务端开发人员
工作职责:数据库和接口设计
【技术角度- 需求分析】
首先,作为技术人员,在项目立项阶段的讨论中,当组内成员讨论一个功能需求点时,我会需要从技术实现的角度考虑实现的可行性。比如:
用户是否需要注册,如果不注册那么怎么唯一标识每位用户。当时我想的是用设备号来唯一标识,这时想到的问题是二手手机的使用问题,解决办法很简单粗暴,在软件中设置一键清除所有数据的功能,会将服务端的数据一并清除。
用于分类的标签,是全部预定义的,还是可以用户手动更新,那么这个更新是指在本设备有效还是会及时更新标签库;
定制推送怎么实现,怎么使推送内容既有价值又不失趣味性;
绑定功能。
【工作大致方向】
功能点技术分析
周报
设计数据库,决定接口界面
PHP后台接口
【接口逻辑——代码细节整理】
TO-DO项目
主要功能包括用户注册,管理todolist包括增删改,日历表管理,全局搜索,定制推荐。
User表todolist表calendar表 recommend表
接口有9个。
用户登录接口,我们采取非注册方式,不需要用户提供用户名注册,直接用设备号唯一识别每一位用户。缺点就是当用户更换设备时,无法同步原有信息。这里提供一个一键清除所有记录的功能,当设备被当作二手设备出售时,重新安装该应用也不会获取到以前的记录。同时会更新用户的最后一次登录时间。
User表的uuid字段是用户设备号,id是自增序列auto_increment属性。
【?】怎么样让带有auto_increment属性的id列中一些记录被删除之后,后面的id自动把前面的填充满呢?在网上搜索之后,貌似并没有什么特别好的方法,总结来说,这样的需求也没有什么必要。【引用网友回答】
·
·
·
定制推荐接口,一开始是预先在数据库中置入20条推荐。每次用户获取推荐时,会根据客户端的要求产生指定不重复的1-20的随机数个数,再发送该推荐todo。
【?】问题是,如果要实现定制推荐,要怎么做?导师给推荐的一篇文章《个性化推荐系统中的用户建模及特征选择》。概括来说,根据用户特征生成关键字和权值,再建立推荐todo库,对每条todo也设置关键字和权值,根据余弦夹角衡量相似度。
随之而来的问题是(1)怎么生成各个关键字和相应权重?(2)能不能根据用户对我们所推荐的todo的感兴趣程度对用户的特征关键字的权值进行反馈调整?
第一个问题我现在还没有想到比较好的办法;第二个问题我的解决方法的逻辑是这样的:1.当用户采取某一条todo的时候,将此条todo权值最高的两个关键字在用户那的权值做正向反馈;2.用户忽略的todo的最高权值的关键字做记录,十次为标准,对用户那的权值做负向反馈。
好吧,这样貌似很粗糙。
管理todo的接口,insert,search,delete,update,get;
我们app的界面有今天的todo,明天的todo,以及calendar;
1. todo事件的时间的存储格式是时间戳,所以每次获取todo时客户端给服务端post指定那天零点的时间戳,服务端再返回该时间戳+24小时内的所有todo。
2. calendar表中存的字段有id,uid,year,12个month等。以32位二进制表示该月的每一天是否有todo,例如01100(…)表示该月2,3号有todo,在客户端界面会有标志。
【!】有一个点,就是当insert和delete时,需要对日历表有所更新,insert就直接在那个月或1就可以了;但是delete的话,如果只是delete一条todo,那就需要检查该日期是否还有todo,才能对那个月与0。
【新接触工具】
版本控制工具SVN、 GIT
OO_Input客户各种文件,以文件日期命名
SA需求分析
UI 用户界面
SS接口文档(概要设计)
PS详细设计
PG代码
PT单体测试
IT系统测试