销售端近期版本变动汇总与项目交接总结

自1.1起版本变化分析

模块名 变化版本与情况
首页 v1.1 v1.2(首页布局调整) v1.3(引入任务系统)
我的超市 v1.1 v1.2(调整名称、拆分拜访/打点任务、引入地图) v1.3(引入任务系统) v1.3.1(增加显示大图与显示高德地图中超市功能、新增待拜访超市)
未注册超市 v1.1(后续未再进行调整)
我的 v1.2(增加邀请码等功能) v1.3(引入钉钉推送,到货提醒)
登录 v1.0 v1.3.1(引入钉钉免登绑定)

后续的开发重点集中在 我的超市我的 两个功能模块中, 首页 更多的可能性是显示字段的调整,但不排除大调整的可能。

本周内可能会进行 销售端v1.4 的评审,向 @雪琪 了解主要内容预期为销售拜访流程调整首页打点详情变动,预计新增上传发票资质证明功能,调整cookie过期时间等,待需求最终确定后会有相应的原型和需求说明。

业务核心与技术难点

  • 销售端的核心是销售,所有需求的提出和功能的开发与调整都是为销售服务的

销售端开发过程中时刻需要思考的问题是,销售真正需要的功能是什么,开发出的功能销售是否真的用得到,对于业绩的提升是否有实际的帮助;页面的交互是否友好,能否优化用户体验;销售实际使用过程中的场景是怎样的,是否考虑了在信号不佳的情况下可能出现的异常状况,一定要从技术用户需求两个方向去思考问题,单独从哪一个方面进行都是不合适的。

  • 定位与地图

销售在使用过程中对定位的需求频率是很高的,同时要求精度也很高,所以在开发之初和开发过程中对定位和地图的使用技能有一定要求,同时需要持续关注和提升;定位问题主要集中在三个方面:定位精度定位功能定位限制,就这一问题的解决上有两个方法,使用 高德地图API 或者 钉钉地图接口高德地图API 提供的功能更全,但其实我们用到的仅仅是一小部分,在钉钉中使用也并没有做相应优化;钉钉地图接口 其实使用的也是自家高德的地图服务,但是它做了相应定制化的优化工作,同时依托于钉钉它能调用硬件底层的接口(比如直接使用GPS功能而不是wifi或ip方式),使用起来更方便,而现阶段之所以没有使用是考虑到了钉钉接口不十分稳定,之前的测试过程中出现过接口异常的情况,这样无法很好地保证功能的稳定性,如果日后的开发过程中需要更高精度的数据可以考虑使用,但一定要做好全面的测试工作,思考各种突发情况的解决办法 在使用高德地图API时需要注意的方面有何时加载地图?如何进行组件加载?如何获取定位?相关地图功能实现(例如临近搜索),这些问题在开发过程中都经常会碰到,需要持续积累。

  • 图片处理

这里包括但不限于图片上传、图片压缩、照片信息提取、点击查看大图与轮播展示等。销售在工作中经常需要汇报自己的拜访情况,商家的实际情况等销售推广工作细节,拍照是最好的实现形式,而图片处理过程中存在的问题是很多的,比如:图片上传来源,可能是相册,也可能是实时拍照,根据原生方法是无法实现单入口上传的,而引入钉钉接口又会有各种各样的系统、机型兼容性问题,这需要持续关注;要上传什么样的图片,压缩还是不压缩,用什么方法和形式来压缩图片也是问题;就拍照上传这一点上,AndroidiOS设备就有拍照是否旋转是否包含其他信息能否调用摄像头等区别,具体情况分析更是复杂。

  • 钉钉接口使用

现在测试过的钉钉接口有:钉钉免登钉钉定位与地图钉钉拍照上传三个,除了第一个外都存在测试过程中出现接口不稳定的情况,因为风险不可控导致开发完的功能都没有上线,因此日后在调研钉钉接口时一定要充分考虑其风险及可能存在的问题,一旦出现特殊情况有没有备用办法也要思考清楚;但同时也应该清楚了解钉钉接口都提供了哪些功能,这样一旦业务有需求我们才能够及时进行反馈。

需要重点关注的通用组件

  1. address-dialog.js map.js 主要是涉及了地图定位的使用,包括但不限于地址校准,附近超市搜索,超市打点与拜访,显示高德地图中超市等,主要涉及的页面有 viewmapmarketinfoaddrecordnearby
  2. upload-image.js image-info.js 前者是涉及了图片上传,后者主要是针对iOS系统不会自行旋转竖向拍摄的照片而引入的 提取照片信息 组件,v1.3和v1.3.1中对图片上传策略调整较多,包括开放超市详情页上传图片入口和查看大图功能
  3. dingding-login.js dingding-map.js 由于销售端是嵌入在钉钉中进行相关开发的,因此这两个组件前者是v1.3.1引入的钉钉免登策略,后者是之前杰哥写的一个例子(这里其实还有一个中间版本写的dingding-camera.js,由于风险和不可控因素太强,因此没有上线,有兴趣看的话可以切换到wmx-dingUploadImagef分支去查看),如果日后有引入新的钉钉接口可以参考这两个内容

重点理解的功能

  1. 路由回退机制 由于销售端中部分页面可能出现页面层级较深需要回退的情况(例如:我的超市-超市列表-超市详情-拜访记录-修改拜访记录未注册超市-区域筛选/销售筛选列表-超市列表-超市详情-新增拜访记录 等),而销售端使用backbone实现的是单页面应用,因此不能使用传统意义上的页面回退;同时一个页面可能有多个入口(例如:新增未注册超市页面 可能是从超市列表页进入的,也可能是从区域筛选列表页进入的),入口的判断也是个问题。这里需要着重看一下页面间参数是如何保存与使用的,如何判断页面回退逻辑的(之前有单独发过这一块的分析和总结)。
  2. queryString 页面间的参数传递和使用 与优供商城和之前的司机端不同,视图间的参数传递使用了queryString的方式,可以按需索取,处理机制都是在router中进行的,在第一次串讲过程中也对这方面做了简单的解释,需要体会一下这样做的好处。
  3. 用户登录与用户资料更新的实现形式,将销售端账号与钉钉绑定的策略 与优供商城不同,销售端的用户登录也是在单页面应用的体系中实现的,所以用户信息的更新与登录状态的调整都需要由前端来调整,这点区别需要理解和学习一下。

需要了解的内容

  1. 销售端中的部分图标使用了iconfont,即阿里的在线图标库,进行项目开发前可以找杰哥申请加入到项目组中,文件位于widget/common/css-base/src/iconfont中,每次更新后进行替换和调整即可
  2. 后续不排除使用套壳的方式单独发布销售端的可能
  3. v1.3.1后若在pc上进行测试,则需要取消勾选关联并绑定当前钉钉账号

销售端函数命名规范

获取数据前缀为get,例如getListgetInfo。 视图间跳转查看详情前缀为view,例如viewRaningDetailsviewMarketInfo。 渲染视图前缀为render,例如renderListrenderSales。 返回视图前缀为back,例如backPageHomebackToList。 用户操作前缀为action,例如actionOpenTaskListactionSwitchTab。 表示状态完成后执行前缀为on,例如onUpdateSuccessactionAddCancel

不符合规范的函数已优化完成。

各模块视图分析

首页 /home

总览 /home/summary 易出现调整

该内容易出现 名称 显示字段 的调整,需要注意

今日打点 /home/mark
排名详情/home/rank

该内容可能出现 统计字段调整

本月任务 /home/task 易出现调整

该内容易出现 名称 显示字段 的调整,需要注意


我的超市 /mymarket

打点计划 /mymarket/markplan?uid=&flag= 易出现调整

uid:销售唯一标识 flag:用户类型

拜访计划 /mymarket/visitplan?uid=&user_type= 易出现调整

uid:销售唯一标识 user_type:用户类型

以上两块内容在 v1.3.1中都进行了调整,同时根据销售需求调换了两者顺序

超市详情 /mymarket/marketinfo?uid=&user_type=&address_id=&planfrom= 易出现调整

v1.3.1中调整了查看图片方式,引入新页面查看大图

uid:销售唯一标识 user_type:用户类型 address_id:超市唯一标识 planfrom:页面来源,主要是为了解决回退问题,1为拜访计划,2为打点计划

新增拜访记录 /mymarket/addrecord?address_id=

address_id:超市唯一标识

拜访记录详情 /mymarket/recordinfo?address_id=&id= 销售使用频率低

address_id:超市唯一标识 id:记录唯一标识

编辑拜访记录 /mymarket/editrecord?address_id=&id= 销售使用频率低

address_id:超市唯一标识 id:记录唯一标识

查看大图 /mymarket/viewimage?address_id= v1.3.1新增

address_id:超市唯一标识

查看地图 /mymarket/viewmap v1.3.1调整

未注册超市 /unregistered 销售使用频率低,很少使用

统计超市列表 /unregistered/countlist?date_begin=&date_end=&sort_by=&uid=0&rid= 主管能查看

date_begin:开始查询时间 date_end:结束查询时间 sort_by:超市排序顺序,sales为按销售,area为按区域 uid:销售唯一标识 rid:地区唯一标识

超市列表 /unregistered/marketlist?date_begin=&date_end=&uid=&rid=&q=

date_begin:开始查询时间 date_end:结束查询时间 uid:销售唯一标识 rid:地区唯一标识 q:搜索参数

超市详情 /unregistered/marketinfo?id=

id:未注册超市唯一标识

附近未注册超市 /unregistered/nearby?nearfrom=

nearfrom:用于判断从哪个入口进入附近未注册超市,1为从统计超市列表2为从超市列表

新增拜访记录 /unregistered/addrecord?id=

id:未注册超市唯一标识

新增未注册超市 /unregistered/addmarket

我的 /my

功能展示页 /my/info/view
销售邀请码 /my/code/view
热销商品 /my/hot/view
高价报备页 /my/report/list
价格/规格变动页 /my/change/list
24小时内到货页 /my/remind/list 由钉钉push推送可到达