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

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

回顾

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

数据报表

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

用户数、场景数、项目数、业务线数、调用成功率、调用量···

执行状态、调用方式、业务线分布饼图

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

  • 最上面6个指标

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

  • 中间饼图指标

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

  • 最近7天场景趋势图

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

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

最终效果图

git Webhook同步项目

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

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

  • WebHook 简介

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

  • WebHook 密钥验证和验证算法

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

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

python 复制代码
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用户,后续的逻辑跟之前一样

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

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

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

最终sync_project_logic_by_git逻辑如下

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

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

其他优化点

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

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

总结

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

相关推荐
hubro16 小时前
.NET热门ORM真实的性能测试总结
测试·orm·性能化化
2601_9623413016 小时前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
云烟成雨TD17 小时前
LangFlow 1.x 系列【7】工作流创建与部署指南
人工智能·python·agent
月疯17 小时前
np.where()[0]的用法
开发语言·python·numpy
KaMeidebaby17 小时前
卡梅德生物技术快报|纳米抗体技术全套实操流程:AFB1 全合成文库淘选 + 分子对接定点突变参数手册
人工智能·python·tcp/ip·算法·机器学习
hnxaoli17 小时前
统信小程序(十六)xls转xlsx
开发语言·python·小程序
梦想三三17 小时前
Flask + PyTorch模型部署实战:从训练权重到API接口完整工程解析(附完整代码)
人工智能·pytorch·python·flask·模型推理·ai 工程化
用户2986985301418 小时前
Python 实现 Excel 与 TXT 文本的高效转换与导出
后端·python·excel
杨超越luckly18 小时前
Agent 应用指南:基于 OurAirports 的中国机场设施数据可视化
python·html·github·可视化·机场设施