# 访客需求整理 ## 车行 ### v2计划 #### 概述 - 相比V1的设计,V2同样设置了车场,车位预约。并且做了一些优化。 - 优化一:添加车场以天,周为单位的清场机制扩展。车场设置了清场机制,则在清场周期开始,总预约车位数刷新为设置的最大值。 - 优化二:对于一个预约周期内,相同的车辆在不同时间内,预约相同的车场(车场级预约),区域(车位级预约),则不锁定多个车位,只锁定一个车位。当预约靠前的记录使出的时候也不释放车位数。可以限制相同的车辆预约太多锁定了太多车位的问题。 - 优化三:对于相同车辆预约相同的车场(车场级预约),区域(车位级预约),如果前一次预约的还没有使出,但是超过了后一次预约的最后驶入时间,则自动作废后一次预约记录,多次预约以此类推。 - 优化四:对于爽约的车辆加入惩罚机制,在某个周期内,多次爽约,限制其在一定时间内不能预约停车。 #### 详细设计 ##### 车场预约管理 - 车场预约信息包含 - 预约类型:车场预约 车位预约 - 预约车位数 - 可提前预约小时数 - 可预约停车时长 - 预约可提前入场时间 - 预约可延迟入场时间 - 预约车收费模版 - 是否开启预约 - 预约周期 自然天 自然周 全部时间段 - 违约判定周期 单位天 - 违约判定次数 - 违约限制天数 - 管理员可以通过页面设置预约信息。 - 平台将预约信息下发给E8。 ##### 区域预约管理 - 区域预约信息包含 - 区域名称 - 区域车位数 - 所属车场id - 所属车位起始编号 - 所属车位结束编号 - 车位编号列表 跟车位起始结束编号互斥。有限选择车位起始结束编号。 - 区域预约收费模版 为空则取车场预约收费模版 - 管理员可以通过页面设置区域预约信息。 - 平台将区域预约信息下发给E8。 - ps:所属车位应该在车位表中去关联区域。不在这里展示出来 - ps:车场的那几个预约参数,可以考虑在区域都有一份,细分每个区域,区域配置不存在,则使用车场配置。 ##### 车辆预约 - 用户可以通过小程序来预约车位。 - 需要选择的信息包含 - 预约的车场 - 预约的区域 可选 - 预约的车位 可选 - 预约入场时间 (小程序页面应该提醒最早,最晚入场时间) - 预约出场时间 (对应需要多次预约有用。相同时间段内) - 预约车牌号 - 平台收到预约信息后的处理 - 判断车场是否开启预约。没有开启预约则返回预约失败,错误信息:该车次不支持预约停车。 - 判断预约时间是否在车场预约周期内。不在则返回预约失败,错误信息:预约时间不在车场预约周期内。 - 判断预约时间是否在车场可提前预约小时数内。不在则返回预约失败,错误信息:预约时间不在车场可提前预约小时数内。 - 判断预约时间是否在车场可预约停车时长内。不在则返回预约失败,错误信息:预约时间不在车场可预约停车时长内。 - 判断是否已经存在预约记录,预约的周期包含当前的预约入场时间。 - 判断当前车辆是否在预约限制名单中,如果在则返回预约失败,错误信息:该车辆已被限制预约,${yyyy-HH-dd}后才可以预约。 - 如果是车场级预约: - 判断当前车辆在当前车场是否在当前预约周期是否已经存在预约记录。如果存在,则预约成功。不用操作车位数锁定。 - 如果当前预约周期没有存在预约记录。判断当前车场可预约车位数是否大于0。 - 如果可预约车位数大于0,则锁定车位。预约成功。 - 否则返回预约失败,错误信息:该车场已无可用停车位。 - 如果是车位级预约(区域): - 判断当前车辆在当前车场当前区域是否在当前预约周期是否已经存在预约记录。如果存在,则预约成功,并且指定的车位跟之前的保持一致。不用操作车位数锁定。 - 判断当前区域的可预约车位数是否大于0。 - 如果区域可预约车位数大于0,锁定车位。预约成功。 - 否则返回预约失败,错误信息:该车场已无可用停车位。 - 如果是车位级预约(车位): - 不支持多次预约不同的车位。提醒已经在当前车场存在其他预约记录,并且预约了其他车位。为了方便车位管理,只支持再预约这个车位。 - 对于上面的限制,可能有点不太合理,可以限制限制最多预约车位数来限制。 - 其他的同车位级预约(区域)。 - 预约成功后,将预约记录下发给E8。 ##### 取消预约 - 用户可以通过小程序来取消预约。 - 平台判断预约的记录是否存在。不存在则返回取消失败,错误信息:该预约记录不存在。 - 判断取消的预约记录是否已经驶入,已经驶入则返回取消失败,错误信息:该预约记录已驶入。 - 判断预约的记录是否已经过最后驶入时间,如果已经超过则返回取消失败,错误信息:该预约记录已超时。 - 取消预约成功,释放车位,更新预约记录。 - 如果当前车场当前周期存在多条预约记录,则不需要释放车位。 - 如果当前车场当前周期存在多条预约记录,并且是车位级预约(非区域),则不需要释放车位(需要根据车位预约的方式做调整)。 - 下发取消预约记录给E8。 ##### 修改预约 - 用户可以通过小程序来修改预约。 - 平台判断预约的记录是否存在。不存在则返回修改失败,错误信息:该预约记录不存在。 - 判断修改的预约记录是否已经驶入,已经驶入则返回修改失败,错误信息:该预约记录已驶入。 - 判断修改的预约记录是否已经过最后驶入时间,如果已经超过则返回修改失败,错误信息:该预约记录已超时。 - 如果修改为其他的预约周期,则不支持修改,需要取消预约,重新预约。 - 如果修改驶入时间,驶出时间周期内存在当前车辆已经预约的记录,则不支持修改。错误信息:该时间段内已有预约记录。 - 如果修改车牌,同样需要判断修改后的车牌是否存在时间交叉的停车记录。如果存在则不支持修改,错误信息:该车牌已存在预约记录。 - 不支持修改其他的车场。 - 修改区域,需要判断修改后的区域是否在车场中。 - 修改区域需要判断修改后的区域是否存在预约记录。存在的预约记录并且存在时间冲突,则不支持修改。错误信息:该区域已存在预约记录。 - 修改区域后需要判断区域的车位数,如果车位数不够,则不支持修改。错误信息:该区域已无可用停车位。 ##### 预约记录管理 - 平台需要提供预约记录管理接口,包括预约记录列表,查询预约记录详情。 - 小程序可以通过接口查询当前用户的预约记录列表,预约详情。 ##### 车辆驶入 - 车辆驶入,E8需要判断是否在当前时间段内存在预约记录。 - 不存在预约记录,则不予开闸。 - 存在预约记录,则判断是否已经驶入。已经驶入,给于开闸,记录多次驶入异常信息。 - 预约记录已经驶出,则不予开闸。 - 开闸后,E8将车辆驶入消息上传给平台。 - 平台更新预约驶入时间。(不确定这里应该跟E8怎么做这个同步关系。) ##### 车辆驶出 - E8上传车辆驶出记录。 - 平台收到记录后,更新预约驶出时间。 - 车场级预约: - 判断当前预约周期内是否存在其他未开始的预约记录。 - 存在则不需要释放车位数。 - 车位级预约(区域): - 判断当前预约周期内当前区域是否存在其他未开始的预约记录。 - 存在则不需要释放车位数。 - 车位级预约(车位): - 判断当前预约周期内当前车位是否存在其他未开始的预约记录。 - 存在则不需要释放车位数。 ##### 爽约检查任务 - 需要确定一件事情,爽约限制的是车,还是人。 - 平台需要提供爽约检查任务。 - 对于已经过了最晚预约驶入时间的车辆,修改状态为爽约。 - 平台需要提供爽约列表,查询爽约详情。 - 定时任务检测出预约记录设置的爽约限制天数内爽约次数超过爽约次数限制的人。 - 将达到爽约次数限制的人,假如到限制列表中去。 - 对于在爽约限制列表中的人: - 限制其预约 - 预约的时候判断爽约限制是否已经到期,到期则移除。 - 同时添加定时任务,将检测爽约到期的用户,移除爽约限制列表。 ##### 表结构设计 - 后续再提供 ## 人行 ### v1实现 在v1中,访客分为访客预约跟邀请访客两种模式。其中访客预约是访客主动预约访问某个项目通道。邀请访客则是项目管理员主动邀请客户来访。 #### 访客预约 ##### 新增预约 - 用户在小程序选择预约的项目。输入手机号码,姓名,被访人手机号码,开始时间,结束时间。随从人数,车辆,上传人脸。点击预约。 - 平台收到预约信息后,判断当前项目是否在预约时间段,不在则返回预约失败。 - 在预约时间段内,则预约成功。 ##### 预约审核 - 被访人,或者管理员收到预约访问请求,可以审核成功,审核失败。 - 用户会收到审核结果提醒,审核成功的则可以访问。 ##### 访客来访开闸 - 用户在预约时间段内,可以访问。 - 访问通行的鉴权方式可以是人脸,也可以是预约记录的二维码。 #### 邀请访客 ##### 新增邀请 - 业主,管理员在小程序选择邀请项目。输入手机号码,姓名,开始时间,结束时间。随从人数,车辆,点击邀请。 - 平台收到邀请信息后,判断当前项目是否在预约时间段,不在则返回邀请失败。 ##### 接收邀请 - 被邀请人,收到邀请访问请求,可以接收,可以拒绝。 ##### 访客来访开闸 - 用户在邀请时间段内,可以访问。 - 访问通行的鉴权方式是预约记录的二维码。 ### v2计划 #### 概述 V2也只实现访客预约跟邀请访客两种模式。做出以下优化: - 优化一:对于访客预约的时候,输入项目去查询项目是一个比较不友好的操作。用户不输入的时候,是没有可选的。可以提供通过被访人手机号码,通过被访人手机号码,自动定位到项目,供用户选择。这里存在的问题就是用户隐私。 也可以通过项目设置一个简单的项目预约编号,用户输入编号查询,或者直接输入项目预约编号预约。 - 优化二:用户预约之后,应该可以设置一个催办审核的按钮。用户在长时间没有得到审核,可以点击催办审核。 - 优化三:对于有些项目只想提供预约,或者只想提供邀请,可以设置项目预约模式。 #### 详细设计 ##### 项目预约管理 - 管理员可以通过页面设置项目预约信息。预约相关设置包含: - 预约时间周期 自然天 自然周 - 预约时间段 开始时间 结束时间 - 预约车场编号 前两万大写字母后四位数字 非必须 - 邀请是否自动接收 默认 否 - 预约模式 0 支持预约跟邀请 1 支持预约 2 支持邀请 - 平台将项目预约配置下发给E8。 ##### 访客预约 - 访客通过跟项目方的协商得到项目方的名称或者预约项目编号。 - 用户在小程序选择预约的项目。需要输入的参数有: - 手机号码 - 姓名 - 被访人手机号码 - 开始时间 - 结束时间 - 随行人数 - 随行车牌 - 人脸 - 判断项目是否存在。不存在则返回预约失败,错误信息:项目不存在。 - 判断被访人电话是否为业主,如果是不是业主则返回预约失败,错误信息:被访人不存在。 - 平台收到预约信息后,判断当前项目是否在预约时间段,不在则返回预约失败。错误信息:预约时间不在预约周期内。 - 判断预约时间段在不在项目的通行时间段内。不在则返回预约失败,错误信息:预约时间不在项目通行时间段内。 ps:通行时间段内,通道才可以打开。可以考虑通行时间段当成预约时间段,也可以校验通行时间段来限制预约时间段的设置。 - 预约提交成功,并同步给E8 - 同步给E8的时候还需要下发预约人脸凭证,二维码凭证 - 平台将生成审核消息给被访人。被访人打开小程序也可以看到审核消息。 ###### 预约审核 - 被访人收到预约请求,可以审核成功,审核失败。 - 当被访人存在多个预约请求,支持批量审核通过。 ###### 用户来访开闸 - 用户在预约时间段内,可以访问。 - 用户可以通过之前上传的人脸,通过用户人脸识别入场。 - 用户也可以通过预约的二维码入场。 - E8设备通过凭证判断用户是否可以入参。 - 如果用户有随行车辆,则E8识别车牌凭证入场。 - 开闸后,E8将开闸的消息同步给平台。 - 平台将预约记录更新已完成。 ##### 邀请访客 ###### 业主邀请 - 业主在小程序邀请人员。输入参数有: - 手机号码 - 姓名 - 开始时间 - 结束时间 - 随从人数 - 车牌 - 判断当前项目是否在预约时间段,不在则返回邀请失败。错误信息:邀请时间不在预约周期内。 - 判断预约时间段在不在项目的通行时间段内。不在则返回邀请失败,错误信息:预约时间不在项目通行时间段内。 - 平台收到邀请记录,如果项目设置邀请自动接收,则状态为已接收。否则状态为未接收。 - 平台将生成审核消息给被邀请人。被邀请人打开小程序也可以看到审核消息。 ###### 客户接收邀请 - 被邀请人收到邀请请求,可以接收,可以拒绝。 - 接收邀请后,平台将下发凭证到E8,同步邀请记录到E8。 ###### 用户来访开闸 - 同预约访客开闸部分,不重述。