禅道统计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 ...
随机推荐
- Codeforces Round 914 (Div. 2)A~C
A 反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的 #include <bits/stdc++.h> #define ...
- vscode 文件上传快捷键 shift+alt+s (ftp专用)插件用的 ftp-sync
vscode 文件上传快捷键 shift+alt+s (ftp专用)插件用的 ftp-sync { "key": "shift+alt+s", "co ...
- c 的头文件标准格式
前记: C语言的头文件是嵌入式系统中常用的,也是很多人没有注意的,但是写的很差的,这里给出一个经典的模板,仅供参考. 正文: 经典的格式: /***************************** ...
- day07-1MySQL约束
MySQL约束 基本介绍 约束用于确保数据库的数据满足特定的商业规则 在mysql中,约束包括:not null,unique,primary key,foreign key 和check 5种 1. ...
- leetcode数据库sql之Rising Temperature
leetcode原文引用: Given a Weather table, write a SQL query to find all dates' Ids with higher temperatur ...
- Mysql中数据类型括号中的数字代表的含义
相信大家不管是看别人的代码,还是自己的代码总会在定义表的数据类型时,会需要在数据类型后面加一个括号,里面写一个参数,例如int(3),smallint(5),char(5)等,但是括号里面的数字到底是 ...
- spring boot 配置文件的加载顺序
加载顺序为... 互为补充
- Garnet发布 Redis不再是唯一选择
Garnet 是 Microsoft Research 的远程缓存存储,提供强大的性能(吞吐量和延迟).可扩展性.存储.恢复.集群分片.密钥迁移和复制功能. Garnet 可以与现有的 Redis 客 ...
- 记录--Canvas实现打飞字游戏
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 打开游戏界面,看到一个画面简洁.却又富有挑战性的游戏.屏幕上,有一个白色的矩形框,里面不断下落着各种单词,而我需要迅速地输入这些单词.如果 ...
- MacOS安装 JDK 及动态切换版本
MacOS安装 JDK 及动态切换版本 JDK下载 我自己使用的是Mac m2系列.无所谓用的哪一种开源的OPEN JD,按需下载,我下载了8,11,17三个版本. 安装完成后,终端输入 java ...