前言

目前,在线组织的各种活动越来越多,例如:培训,会议,比赛等等。想做一个开源项目,实现一个基本的报名和签到框架。这个框架可以很容易的与业务应用整合,成为快速开发轻应用的一个组件,像嵌入的评论组件,分享组件一样。希望大家能够拍砖,一起研究研究,弄个大家收益的东西出来。后面我陆续把做这个产品过程中的想法、问题和经验分享出来,敬请关注。

分析

设计一个通用的报名签到平台,任何注册用户都可以发起报名签到活动,并且可以和已有的应用进行集成。活动分为两个阶段:报名和签到。用户在报名阶段填写与个人身份相关的信息,例如:姓名,单位,手机号,邮箱。签到阶段用户通过二维码等方式实现快速签到,签到时尽量避免用户再次输入报名信息。这两个阶段都支持参与用户都利用社交账号进行分享。其他一些功能包括:分组,多轮签到,签到状态统计,签到结果导出等。

通常用户是这样理解报名签到的:活动发起者给潜在参与者发报名表,收集汇总报名信息;给审核通过的报名者发一张“票”;活动参与者到现场凭票入场,签到就是给这张票打个标记或收走。总结起来就是给谁发票,票怎么发,票怎么检,身份怎么确认,结果怎么记录?

最直接的实现方式。报名阶段:活动发起者在平台注册一个平台账号,制作报名表和签到页;活动发起者通过各种渠道发送报名表,例如:邮箱、公众号、微博等;活动参与者注册一个平台账号,填写报名信息;活动发起者确定报名名单,向审核通过的报名者发送报名确认通知;活动现场用报名时注册的用户身份登录完成签到。

后面分析一些细节。

报名阶段

报名阶段的目标是形成活动人员名单。

报名表不一定要报名人直接填写,可以由活动的组织者集中(手工或导入)添加。这种方式带来一个问题,因为并不是用户本人进行的报名,所以没有办法将报名人和填写报名信息的用户(注册用户)关联起来,这样对后续的签到过程会产生影响。

如果在报名阶段需要给报名者发送“通知”,就需要建立通知渠道。通知的渠道可以是:人工,邮件,短信,微信公众号消息等。邮件和短信方式要求报名信息中必须包含报名者的邮箱或手机号。微信公众号方式报名,必须是用户自己报名,并且关注公众号。人工的方式需要系统生成好通知信息,由接口人向报名者发送信息。前3种方式可以针对报名人自动形成个性化信息,人工的方式只能提供统一的信息。各种通知方式都需要系统通知模版。如果不支持给报名者发送个性化通知,就不能把包含报名者信息的签到信息发送报名人,对后续的签到方式有影响。

如果是用户本人进行的报名,支持用户关联社交账号,分享报名信息。

签到阶段

签到阶段的目标是确定报名人时候按时到场,形成签到表,有两个核心问题要解决,人是否到场,到场的是否为本人。

最严格的方式一定是由活动组织者在现场人工签到,就像机场和火车站一样,检查签到人有没有票(在不在报名名单中),来的是不是本人(看身份证)。但是,这样活动组织者的就必须安排专人负责签到,签到的投入高和效率低。一般的场景中,是不是本人到场不好控制(例如:培训,会议),而且意义不大,可以降低要求。那么签到目标调整为:是不是有人在现场做了签到,而且不是其他人代签。假如没有代签的情况,且所有报名人都签到了,那么即使不是本人来也得找人代替来,这样报名方的造假成本也挺高。防止代签可以从限制签到终端的唯一性入手,假如只接受一种签到终端,且这种终端和个人身份关系密切,就可以很大程度上限制代签。目标继续调整为:限制签到终端和终端签到的次数。通过限制签到终端和签到终端的次数解决代签问题后,还要解决签到地点问题。解决这个问题就是要有一个和签到现场绑定的验证信息。签到用户当前的地理位置坐标可以作为一种验证信息,但是这受限于用户所处环境,准确性难以保证。另一种方式是在签到现场提供具备较短的的有效期,一次性有效,且不能传递的验证信息,只有获取了这个信息才能完成签到。(似乎没有太理想的方式)

除了设置限制成功签到的条件,还要解决报名信息和签到信息关联问题。因为在报名阶段,填写报名信息的人不一定是报名人本人,所以签到人必须绑定报名信息。基本实现方式是签到人首次签到时,输入手机、姓名等信息,如果对应的信息在报名清单中,则通过签到并绑定,后续的签到就不需要再输入报名信息了。如果报名阶段也能够限制报名终端和报名次数,并且这个终端与签到时的终端为同一终端,那么报名信息和签到信息可以自动实现绑定。

如果是用户本人进行的签到,支持用户关联社交账号,分享活动现场信息。

总结

从上面的分析可以总结出几点核心需求:1、如何限制终端的唯一性和操作次数(报名和签到);2、如何限制终端的使用位置(前场签到);3、如何通知活动信息(报名情况的通知);4、绑定社交账号进行分享(用户自选)。


游于藩篱
576 声望15 粉丝

研究产品和技术,实践编程技巧。