likes
comments
collection
share

数据工厂系列(29)数据报表展示

作者站长头像
站长
· 阅读数 19

大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like

回顾

在上篇中,整个数据工厂的核心已经是开发完毕了,但是平台的话,肯定得有一些数据报表,好看的报表可以给你升职加薪带来帮助···

数据报表

数据报表有几个指标,大家可以看看下图

数据工厂系列(29)数据报表展示 用户数、场景数、项目数、业务线数、调用成功率、调用量···

数据工厂系列(29)数据报表展示 执行状态、调用方式、业务线分布饼图

数据工厂系列(29)数据报表展示

最后有最近7天场景调用量、创建量、成功数、异常数、失败数···

  • 最上面6个指标

直接调用BaseCrud.get_with_count方法即可,直接查询出数量

数据工厂系列(29)数据报表展示

数据工厂系列(29)数据报表展示

  • 中间饼图指标

数据工厂系列(29)数据报表展示

数据工厂系列(29)数据报表展示

运行状态和调用方式直接查log表,进行分组统计数量,业务线分布查case表,方式同上···

  • 最近7天场景趋势图

这里指标有调用量、成功数、失败数、异常数、创建数,其中除了创建数,其他指标都可以通过log查询得出

先通过开始时间和结束时间进行筛选数据,开始时间为今天,结束时间为今天-6天,再通过日期进行分组,通过函数case_whensum算出成功数、失败数、异常数,通过count算出总数,但是这里需要注意一点,有些日期确实没有数据,这时候需要手动补充数据,通过while,从开始日期开始算起,如果在源数据取不到数据,就默认补充0,循环结束条件为开始日期大于结束日期···

数据工厂系列(29)数据报表展示

数据工厂系列(29)数据报表展示

最终效果图

数据工厂系列(29)数据报表展示

数据工厂系列(29)数据报表展示

git Webhook同步项目

因为我们的服务跟项目进行解耦了,项目存放在git上,每次我们更新代码,是不是都得在平台上执行一下同步项目,长久下来确实比较繁琐,为此,我们可以使用git的webhook功能,每当有push代码时,通过webhook调用数据工厂的api,执行同步项目···

我们可以来看看gitee的webhook功能,简介地址:gitee.com/help/articl…

  • WebHook 简介 数据工厂系列(29)数据报表展示

简单来讲就是我们只要维护一个api,每次push时,post请求这个api,就能实现同步项目功能

  • WebHook 密钥验证和验证算法

gitee webhook文档有说到,webhook可使用签名方式,什么是签名呢?通俗来讲就是服务端确认收到的请求完整且可信任,才执行操作,这种就是防止恶意刷api

数据工厂系列(29)数据报表展示

这里采用了HmacSHA256算法计算签名,下面也给了个demo,但是demo只支持Python2,不得不不吐槽一下···不过问题不大,自己另写一个呗,签名算法代码如下

class Sha256(object):

    @classmethod
    def encrypt(cls, timestamp: str):
        secret = constants.SECRET
        data = f"{timestamp}\n{secret}"
        sign = base64.b64encode(
            hmac.new(secret.encode('utf-8'), data.encode('utf-8'), digestmod=sha256).digest()).decode()
        return sign
  • 同步逻辑代码改造

将之前的sync_project_logic方法改造一下,判断是哪个sys过来的请求,如果是平台上就通过主键id查出项目信息,执行人默认为请求的那个人,如果是gitee的webhook就通过git的项目名称查出项目信息,执行人为admin用户,后续的逻辑跟之前一样

数据工厂系列(29)数据报表展示

数据工厂系列(29)数据报表展示

上面已经写了个签名方法,我们只需要验证gitee传过来的签名数据是否与后端服务加密生成的签名数据一致,一致即可后续的操作···

这里我们只需要从request中获取请求头信息,再进行校验好了,check逻辑比较简单,大家可看看下面的代码

数据工厂系列(29)数据报表展示

其实这里校验逻辑可以放在中间件里做,但是就这么一个api没什么必要···具体原因可看看解释哈,溜达哥yyds!!!

最终sync_project_logic_by_git逻辑如下 数据工厂系列(29)数据报表展示

路由函数这里就不截图,直接看看源码好了···比较简单,添加路由

数据工厂系列(29)数据报表展示

最后记得给这个路由加上白名单

数据工厂系列(29)数据报表展示

其他优化点

脚本执行引入运行日志,日志的话,需要手工注入进去,然后最后return回来,平台只负责接收日志

数据工厂系列(29)数据报表展示

最后给大家看看内部数据工厂的日志吧,后续我也把相关日志装饰器放上去,在funcase项目哦~

数据工厂系列(29)数据报表展示

总结

今天到这里的话,数据工厂已经开发完了,大家还有什么需求或者想法可以咨询我,大家一起交流学习哈~下篇我们来进行部署上线,继续补充使用说明文档、功能介绍文档和部署文档等等···