之前发过禅道的各种数据统计报表,使用过程中优化了一些,反映最多的是项目bug的解决时长统计问题:

1.比如当天下班左右提交的bug,研发第二天来解决,晚上这段时间应该去掉,不应计算在内

2.节假日、周末这些时间也应该去掉

python有公用模块chinesecalendar可以解决解决第二个问题,不过这个模块有个缺陷,每年需要更新一下,获取当年的节假日,当然你也可以把节假日周末信息存入数据库动态调整获取。

common_workday.py  计算两个时间内的休息日天数
 1 ##common_workday.py
2
3
4 # coding = utf-8
5 # 计算周末、节假日时间天数
6
7 from datetime import datetime, timedelta
8 from chinese_calendar import is_workday
9
10
11 def workdays(start, end):
12 """
13 :param start:
14 :param end:
15 :return:
16 """
17 # 字符串格式日期的处理
18 if type(start) == str:
19 start = datetime.strptime(start, '%Y-%m-%d').date()
20 if type(end) == str:
21 end = datetime.strptime(end, '%Y-%m-%d').date()
22 # 开始日期大,颠倒开始日期和结束日期
23 if start > end:
24 start, end = end, start
25 counts = 0
26 while True:
27 if start > end:
28 break
29 # 计算两个日期间的节假日和周末数
30 if is_workday(start) is False:
31 counts += 1
32 start += timedelta(days=1)
33 return counts

bug_time_summary.py  统计汇总时间(从数据库查询出数据后直接处理)

## bug_time_summary.py

##*****代码片段*****##

mysql_l = deal_mysql(sys._getframe())
if len(mysql_l) > 0:
le = []
for i in mysql_l:
le.append(list(i))
for i in le:
# bug解决时间减去bug提交时间
ta = round(float((i[7] - i[6]).total_seconds() / 3600), 2)
# 两个时间之间的周末、节假日天数
tb = float(workday.workdays(i[6].date(), i[7].date()) * 24)
hour_sub = 0
if i[6].day != i[7].day and i[6].hour >= 17:
# 17点后提交的bug,计算需扣除的跨天小时数【8.5:计算方式自己动态调整,9点上班,考虑有人8点半来就修复bug了,所以取个8.5,提交bug分钟数舍弃计算,影响不大;另外17点之前提交的bug,不排除跨天时间】
hour_sub = 24 - i[6].hour + 8.5
# 最终结果
time_subtract = round(ta - tb - hour_sub, 2)
i.append(time_subtract)
end = []
name = ''
count = 0
avg_time = 0
for index, i in enumerate(le):
if index == 0:
name = i[5]
count = 1
avg_time = i[8]
else:
if i[5] == name:
count += 1
avg_time += i[8]
if index == len(le) - 1:
end.append([le[index][0], le[index][1], le[index][5], count, round(avg_time / count, 2)])
else:
end.append([le[index - 1][0], le[index - 1][1], le[index - 1][5], count, round(avg_time / count, 2)])
name = i[5]
count = 1
avg_time = i[8]
if index == len(le) - 1:
end.append([le[index][0], le[index][1], le[index][5], count, round(avg_time / count, 2)])
sum_p = 0
sum_time = 0
for i in end:
sum_p += i[3]
sum_time += i[4]*i[3]
avn = round(sum_time / sum_p, 2)
end = sorted(end, key=lambda x: x[3], reverse=True)
data = np.tile(end, 1)
d = data.T
# 获取列表合并算法
al = dt.find_same_column(d, 1)
# td 处理
td = deal_td(al)
# tr处理
tr = deal_tr(td)
s, h = deal_html(tr, avn)
##*****代码片段*****##

改进前:

改进后:

同样的详情表也可以这样处理~~

禅道统计BUG解决时长过滤节假日和跨天问题的更多相关文章

  1. 怎么解决禅道启动服务mysqlzt时的端口失败

    打开Windows任务管理器 查看服务是否有MySQL正在运行,停止服务 启动mysqlzt服务 重新启动禅道

  2. Hexo添加字数统计、阅读时长

    统计插件 配置 NexT 主题默认已经集成了文章[字数统计].[阅读时长]统计功能,如果我们需要使用,只需要在主题配置文件 _config.yml 中打开 wordcount 统计功能即可.如下所示: ...

  3. wamp服务下部署禅道或其它项目时访问缓慢的解决办法

    原因其实很简单: WAMP服务默认是不支持外网访问的,如果公司内外网在一起就会引起缓慢甚至超时的问题,直接修改WAPM的配置文件让它可以访问外网即可解决问题.   解决的方法/步骤   1.解决办法: ...

  4. 使用mediainfo工具统计每个视频文件(媒体文件)播放时长

    需求 1.运营那边需要统计大量视频文件的播放时长,并汇总记录到excel表中,问我有什么方法搞定 这边搜索了很多统计媒体文件时长的,主要有以下几种 1.使用java获取 2.使用python获取 3. ...

  5. 使用钉钉对接禅道的bug系统,实现禅道提的bug实时在钉钉提醒并艾特对应的开发人员处理

    现在公司测试中有一个痛点是每次测试人员提完bug后,需要定期去提醒开发人员查看禅道的bug记录及修复bug. 导致测试人员在项目测试中不仅要测试整个软件,还要负起实时监督提醒功能的“保姆角色”,身心疲 ...

  6. windows 7 下,如何统计某文件夹下 视频总时长

    由于项目需要,我需要给系统加权限,这真是一个让人头疼的问题,如果要每个业务方法都加上权限判断逻辑,那真的不敢想象是多么大的工作量,日后有变动的话,我会不会发疯? 所以我必须利用之前学到的AOP编程,在 ...

  7. Fragment时长统计那些事

    注:本文同步发布于微信公众号:stringwu的互联网杂谈 frament时长统计那些事 页面停留时长作为应用统计的北极星指标里的重要指标之一,统计用户在某个页面的停留时长则变得很重要.而Fragme ...

  8. iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计

    目       录 1.      概述... 2 2.      实时采集开停状态... 2 3.      增加虚拟设备... 2 4.      脚本统计和计算设备运行时长... 4 5.    ...

  9. python数据统计之禅道bug统计

    背景 通过定期输出 每条产品的 BUG 情况,以此来反馈开发解决问题.测试跟进问题的情况:钉钉群推送提醒开发及时解决 以此我这边开始着手准备编写一个小工具,最终达到目的:自动定期发送统计报告,报告维度 ...

  10. 禅道Bug管理工具环境搭建

    下载地址:http://sourceforge.net/projects/zentao/files/8.2/ZenTaoPMS.8.2.stable.exe/download 1.解压ZenTaoPM ...

随机推荐

  1. centos7 开机自动执行脚本

    1.因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2.赋予脚本可执行权限假设/usr/loc ...

  2. [VueJsDev] 基础知识 - Button的全局节流

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html Button的全局节流 ::: details 目录 目录 ...

  3. Jitpack发布Android库出现Direct local .aar file dependencies are not supported when building an AAR

    原文:Jitpack发布Android库出现Direct local .aar file dependencies are not supported when building an AAR - S ...

  4. 教你一招,解决Github图片不显示问题(2021.1.20测试可用)

    本文提供的是windows系统解决方法,linux系统和mac系统可以参考原理,修改DNS的ip地址为阿里云或者是修改hosts文件 问题 可能有些朋友和我遇到同样的问题,逛Github的时候会发现, ...

  5. C++ bind函数

    bind()是一个函数适配器,返回一个可调用对象,他可以将一个函数的参数列表做魔改. 设置默认参数 using namespace std::placeholders; void f(int a, i ...

  6. Java8的核心功能就是Lambda和Streaming API

    Java8的核心功能就是Lambda和Streaming API

  7. 3DCAT实时云渲染赋能聚好看科技,打造3D沉浸式互动视频云平台

    随着5G.云计算.XR等技术的发展,3D沉浸式互动视频已经成为了新一代的数字媒体形式,为各行各业带来了新的创新机遇和价值.然而,要实现高效.高质.高效率的3D沉浸式互动视频生产和传播,还需要强大的技术 ...

  8. 记录--canvas 复刻锤子时钟

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 canvas:使用脚本 (通常为 JavaScript) 来绘制图形的 HTML 元素. 本人遍历了以下两份文档,学习完就相当于有了 ...

  9. 记录--有关uni-app如何实现路由拦截的知识分享

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 随着业务的需求,项目需要支持H5.各类小程序以及IOS和Android,这就需要涉及到跨端技术,不然每一端都开发一套,人力成本和维护 ...

  10. Arch Linux 安装手记

    背景 今天尝试安装龙芯版 Linux,本来希望能安装 Debian 版,但只找到一些文档,没找到可安装版的 ISO. 后来顺着这篇文章找到了Arch Linux,就尝试安装了一下. 安装后发现竟然不会 ...