禅道统计BUG解决时长过滤节假日和跨天问题
之前发过禅道的各种数据统计报表,使用过程中优化了一些,反映最多的是项目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解决时长过滤节假日和跨天问题的更多相关文章
- 怎么解决禅道启动服务mysqlzt时的端口失败
打开Windows任务管理器 查看服务是否有MySQL正在运行,停止服务 启动mysqlzt服务 重新启动禅道
- Hexo添加字数统计、阅读时长
统计插件 配置 NexT 主题默认已经集成了文章[字数统计].[阅读时长]统计功能,如果我们需要使用,只需要在主题配置文件 _config.yml 中打开 wordcount 统计功能即可.如下所示: ...
- wamp服务下部署禅道或其它项目时访问缓慢的解决办法
原因其实很简单: WAMP服务默认是不支持外网访问的,如果公司内外网在一起就会引起缓慢甚至超时的问题,直接修改WAPM的配置文件让它可以访问外网即可解决问题. 解决的方法/步骤 1.解决办法: ...
- 使用mediainfo工具统计每个视频文件(媒体文件)播放时长
需求 1.运营那边需要统计大量视频文件的播放时长,并汇总记录到excel表中,问我有什么方法搞定 这边搜索了很多统计媒体文件时长的,主要有以下几种 1.使用java获取 2.使用python获取 3. ...
- 使用钉钉对接禅道的bug系统,实现禅道提的bug实时在钉钉提醒并艾特对应的开发人员处理
现在公司测试中有一个痛点是每次测试人员提完bug后,需要定期去提醒开发人员查看禅道的bug记录及修复bug. 导致测试人员在项目测试中不仅要测试整个软件,还要负起实时监督提醒功能的“保姆角色”,身心疲 ...
- windows 7 下,如何统计某文件夹下 视频总时长
由于项目需要,我需要给系统加权限,这真是一个让人头疼的问题,如果要每个业务方法都加上权限判断逻辑,那真的不敢想象是多么大的工作量,日后有变动的话,我会不会发疯? 所以我必须利用之前学到的AOP编程,在 ...
- Fragment时长统计那些事
注:本文同步发布于微信公众号:stringwu的互联网杂谈 frament时长统计那些事 页面停留时长作为应用统计的北极星指标里的重要指标之一,统计用户在某个页面的停留时长则变得很重要.而Fragme ...
- iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计
目 录 1. 概述... 2 2. 实时采集开停状态... 2 3. 增加虚拟设备... 2 4. 脚本统计和计算设备运行时长... 4 5. ...
- python数据统计之禅道bug统计
背景 通过定期输出 每条产品的 BUG 情况,以此来反馈开发解决问题.测试跟进问题的情况:钉钉群推送提醒开发及时解决 以此我这边开始着手准备编写一个小工具,最终达到目的:自动定期发送统计报告,报告维度 ...
- 禅道Bug管理工具环境搭建
下载地址:http://sourceforge.net/projects/zentao/files/8.2/ZenTaoPMS.8.2.stable.exe/download 1.解压ZenTaoPM ...
随机推荐
- [学习笔记]PostgreSQL数据库的安装和配置
安装 安装源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat ...
- 微信小程序直播,腾讯云直播+微信小程序实现实时直播
一:小程序代码端 小程序直播使用小程序组件 live-pusher 组件和live-player组件 首先开通直播权限 小程序开发工具内进行推流拉流都不会成功,所以需要使用两个手机进行推拉流测试: 1 ...
- 快速搭建Web安全测试环境
快速搭建Web安全测试环境 1.虚拟机安装 2.网站搭建 一.虚拟机安装 下载VMware虚拟机,Windows 虚拟机 | Workstation Pro | VMware | CN 安装VMwar ...
- 【C语言复习笔记】一些要点
[C语言复习笔记]一些要点 按学校教材复习的,整理的是我不熟悉的地方 最近C用的好少,快忘完了就赶紧整理一下(Python真好玩) 第一章 初识C语言 存储器 内存容量的大小,取决于地址总线的数量 \ ...
- 剖析云流送技术如何为3D应用带来用户使用便利
在过去的十年中,云游戏技术的发展为云计算行业带来了新的机遇.随着Google Stadia和GeForce Now之类的服务逐步向公众开放,云流送(cloud streaming)技术得到更大范围的应 ...
- 03.Android崩溃Crash库之ExceptionHandler分析
目录总结 00.异常处理几个常用api 01.UncaughtExceptionHandler 02.Java线程处理异常分析 03.Android中线程处理异常分析 04.为何使用setDefaul ...
- SpringBoot集成drools
目录 1.背景 2.需求 3.实现 3.1 引入jar包 3.2 编写drools配置类 3.3 编写Person对象 3.4 编写drl文件 3.5 编写kmodule.xml文件 3.6 编写Co ...
- Unity中文字体获取
Unity对中文字体支持较差,这里给出了几个可以使用的中文字体下载网站 后续会更新如何使用: 51Font -「免费字体发布平台」为您第一时间发布商用免费字体开源字体 (17font.com) fre ...
- java实战字符串+栈5:解码字符
题目: 有形如 (重复字符串)<重复次数n> 的片段,解码后相当于n个重复字符串连续拼接在一起,求展开后的字符串. 求解: public static String zipString( ...
- Azkaban 2.5 Documentation
Overview Azkaban was implemented at LinkedIn to solve the problem of Hadoop job dependencies. We had ...