之前发过禅道的各种数据统计报表,使用过程中优化了一些,反映最多的是项目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. [学习笔记]PostgreSQL数据库的安装和配置

    安装 安装源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat ...

  2. 微信小程序直播,腾讯云直播+微信小程序实现实时直播

    一:小程序代码端 小程序直播使用小程序组件 live-pusher 组件和live-player组件 首先开通直播权限 小程序开发工具内进行推流拉流都不会成功,所以需要使用两个手机进行推拉流测试: 1 ...

  3. 快速搭建Web安全测试环境

    快速搭建Web安全测试环境 1.虚拟机安装 2.网站搭建 一.虚拟机安装 下载VMware虚拟机,Windows 虚拟机 | Workstation Pro | VMware | CN 安装VMwar ...

  4. 【C语言复习笔记】一些要点

    [C语言复习笔记]一些要点 按学校教材复习的,整理的是我不熟悉的地方 最近C用的好少,快忘完了就赶紧整理一下(Python真好玩) 第一章 初识C语言 存储器 内存容量的大小,取决于地址总线的数量 \ ...

  5. 剖析云流送技术如何为3D应用带来用户使用便利

    在过去的十年中,云游戏技术的发展为云计算行业带来了新的机遇.随着Google Stadia和GeForce Now之类的服务逐步向公众开放,云流送(cloud streaming)技术得到更大范围的应 ...

  6. 03.Android崩溃Crash库之ExceptionHandler分析

    目录总结 00.异常处理几个常用api 01.UncaughtExceptionHandler 02.Java线程处理异常分析 03.Android中线程处理异常分析 04.为何使用setDefaul ...

  7. SpringBoot集成drools

    目录 1.背景 2.需求 3.实现 3.1 引入jar包 3.2 编写drools配置类 3.3 编写Person对象 3.4 编写drl文件 3.5 编写kmodule.xml文件 3.6 编写Co ...

  8. Unity中文字体获取

    Unity对中文字体支持较差,这里给出了几个可以使用的中文字体下载网站 后续会更新如何使用: 51Font -「免费字体发布平台」为您第一时间发布商用免费字体开源字体 (17font.com) fre ...

  9. java实战字符串+栈5:解码字符

    题目: 有形如 (重复字符串)<重复次数n> 的片段,解码后相当于n个重复字符串连续拼接在一起,求展开后的字符串.  求解: public static String zipString( ...

  10. Azkaban 2.5 Documentation

    Overview Azkaban was implemented at LinkedIn to solve the problem of Hadoop job dependencies. We had ...