爱可深思▼ 2020▼ Quiz Java Sql Report Scenario

内测019:门店营收数据看板

#Quiz #Java #Sql #Report #Scenario

1.数据看板

服务好加盟主,做好门店营收看板,越简单越一针见血,就越好。 为了简化场景,如下原型图中的名词及解读做了简化处理。

① 门店下拉框,数据变化时,切换门店。

  • 加盟主名下有多家店时,可以下拉切换,否则只读。
  • 门店名字以地理位置命名,可读性优先。
  • 切换,影响②至⑦

② 当日(today)营收,热数据,本地时区。

  • 日期可以切换,默认当日,不可选未来日
  • 不早于成立日,不超过门店注销日
  • 金额汇总于当前时点的已完成的有效订单
  • 切换,影响③至⑦

③ 冷数据看板,提供日/月/年的对比数据

  • 昨天(yesterday),指②中的today -1 day
  • 当月(thisMonth),指 month(昨天),从1日到昨天(含)
  • 今年(thisYear),指 year(昨天),从1月1日到昨天(含)
  • 切换,影响④至⑦

④ 营收,指已完成的有效订单金额汇总

  • 已完成,表示客人已收货
  • 有效,为正常完成,非取消,异常等

⑤ 来客数,指④中的订单数

  • 假设同一客人买N单,来客数是N

⑥ 同比,环比,排除部分季节因素看增长

  • 同比(YoY), year-1,2020-03 vs 2019-03
  • 同比增长,(本期 - 同期) ÷ 同期 x 100%
  • 环比(MoM), month-1,2020-03 vs 2020-02
  • 环比增长,(本期 - 上期) ÷ 上期 x 100%
  • 增长用红色和上箭头,下降用绿色和下箭头

⑦ 汇总信息

  • 平均客单价,④中订单金额平均值
  • 门店总数,止于昨天的门店总数,不受①影响
  • 会员数,止于昨天的订单的独立客人数,不受①影响
  • 外卖占比,④中订单数中的外卖订单比例

2.日时问题

在统计订单时,需要进行日期时间(datetime)比较和处理。 日期比较,推荐用以00:00:00.0的闭开区间进行。

考虑闰年,不考虑时区,夏令时和闰秒(知识点翻往期视频分享)。

  • Yoy的规则是 year - 1
  • Mom的规则是 Month - 1
  • 昨天的规则是 Day -1
  • 当月的规则是 当月1日到昨天
  • 今年的规则是 1月1日到昨天
  • 没有对应日则月末对齐,如闰年,大小月

举例A,today=2020-03-01,则 yesterday=2020-02-29

  • 同比:昨日本期,thisDayYoy=2020-02-29
  • 同比:昨日同期,thatDayYoy=2019-02-28
  • 同比:当月本期,thisMonthYoy=2020-02-01-2020-02-29
  • 同比:当月同期,thatMonthYoy=2019-02-01-2019-02-28
  • 同比:今年本期,thisYearYoy=2020-01-01-2020-02-29
  • 同比:今年同期,thatYearYoy=2019-01-01-2019-02-28
  • 环比:昨日本期,thisDayMom=2020-02-29
  • 环比:昨日上期,thatDayMom=2020-01-29
  • 环比:当月本期,thisMonthMom=2020-02-01-2020-02-29
  • 环比:当月上期,thatMonthMom=2020-01-01-2020-01-29
  • 环比:今年本期,thisYearMom=2020-01-01-2020-02-29
  • 环比:今年上期,thatYearMom=2020-01-01-2020-01-29

举例B,today=2020-03-31,则 yesterday=2020-03-30

  • 同比:昨日本期,thisDayYoy=2020-03-30
  • 同比:昨日同期,thatDayYoy=2019-03-30
  • 环比:昨日本期,thisDayMom=2020-03-30
  • 环比:昨日上期,thatDayMom=2020-02-29

通过例A和例B,应该可以清晰的发现规律,不做赘述。

3.任务说明

本任务重点在于数据处理能力,对于知识点不清楚的,可以google。

① 写程序mock出样本数据,模拟门店,顾客,订单

  • 保存成csv格式,utf8编码(后面有用)
  • 日期从2019-01-01(含)至2020-03-31(含)
  • 每月新开业1个门店,开业日期当月随机,一共15个
  • 门店命名,测试店#,其中#[A-Z]
  • 从门店开业日起,每天随机10-20个完成的有效订单
  • 订单金额10-30随机,新老客人随机下单
  • 每天随机新增1-5个客人,同老客人一起下单
  • 客人会员码,固定12位数字,唯一递增可不连续
  • 订单号固定12位,要求唯一,最好有业务含义

csv中都是都是有效已完成订单,简化后,应该包含,

  • 订单号
  • 门店id及名称
  • 订单完成日期时间,精确到秒
  • 订单客人,会员码
  • 订单金额,人民币,精确到分

② 上传csv,并保存到数据库(mysql,utf8mb4)

  • 创建数据表,使用合适的数据结构和数据类型
  • 写一个server端,通过 http post接受 csv文件
  • 解析csv文件,保持到数据库
  • 如果csv文件中有一天数据错误,则全文件失败
  • 尽可能给客服端显示失败原因和数据位置
  • 如有重复数据,以完成时间为准,新覆盖旧

③ 从数据库中,生成看板需要数据

  • 如前后端分离,则构造json接口
  • 如不分离,直接展示功能,不要颜值。
  • 可考虑缓存或预处理

根据个人技术栈,自由完成以上任务,不限时,不限完成度。

编程能力强者,建议多发挥,写高质量的工程代码 数据能力强者,可写sql 界面能力强者,可以实现看板的页面功能

总之,需要自己构造简单的数据,完成基础的test case

※ 我们的征途是星辰大海 ※

《内测019:门店营收数据看板》 服务好加盟主,做好门店营收看板,越简单越一针见血,就越好。 为了简化场景,如下原型图中的名词及解读做了简化处理
题图:一周拼上线的首台自助点餐机。重点是周董亲自摸过,很舒服,现已搬到门店,欲摸从速。