feat: 根目录文档、脚本、gitignore
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""6月数据核对:Bug密度单位 / 检出率>20%合理性 / 线上Bug率‰ / 版本计划工时vs指数"""
|
||||
import io, sys, pymysql
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
conn = pymysql.connect(host='192.168.1.161', user='devgps', password='dev@2021GPS',
|
||||
database='zentao_dev', charset='utf8mb4')
|
||||
cur = conn.cursor()
|
||||
|
||||
def q(sql, args=None):
|
||||
cur.execute(sql, args or ())
|
||||
return cur.fetchall()
|
||||
|
||||
print("### 0. 库时区/月份确认(2026-06)")
|
||||
print(q("SELECT NOW()"))
|
||||
|
||||
print("\n### 1. Bug密度:按开发者(assignedTo) 6月done任务 分子=Bug数 分母=estimate")
|
||||
rows = q("""
|
||||
SELECT t.assignedTo, u.realname,
|
||||
COUNT(DISTINCT t.id) tasks, SUM(t.estimate) est,
|
||||
(SELECT COUNT(*) FROM zt_bug b WHERE b.task IN (SELECT id FROM zt_task t2 WHERE t2.assignedTo=t.assignedTo AND t2.status='done' AND t2.finishedDate>='2026-06-01' AND t2.finishedDate<'2026-07-01' AND t2.deleted='0')) bugs
|
||||
FROM zt_task t LEFT JOIN zt_user u ON u.account=t.assignedTo
|
||||
WHERE t.status='done' AND t.finishedDate>='2026-06-01' AND t.finishedDate<'2026-07-01' AND t.deleted='0' AND t.assignedTo!='' AND t.assignedTo!='closed'
|
||||
GROUP BY t.assignedTo ORDER BY est DESC
|
||||
""")
|
||||
print("account | name | done任务 | Σestimate(h) | Bug数 | ×100=% | ×1000=‰")
|
||||
for r in rows:
|
||||
est = float(r[3] or 0); bugs = r[4] or 0
|
||||
p100 = bugs/est*100 if est else None
|
||||
p1000 = bugs/est*1000 if est else None
|
||||
print(f"{r[0]} | {r[1]} | {r[2]} | {est:.1f} | {bugs} | {('%.2f'%p100) if p100 is not None else 'NA'} | {('%.1f'%p1000) if p1000 is not None else 'NA'}")
|
||||
|
||||
print("\n### 2. 线上Bug率:6月上线需求(releaseddate) 关联 prod Bug + devel任务estimate合计")
|
||||
rows = q("""
|
||||
SELECT s.product, COUNT(DISTINCT s.id) stories, SUM(s.estimate) story_est
|
||||
FROM zt_story s
|
||||
WHERE s.releaseddate>='2026-06-01' AND s.releaseddate<'2026-07-01' AND s.deleted='0'
|
||||
GROUP BY s.product
|
||||
""")
|
||||
print("product | 上线需求数 | Σstory.estimate")
|
||||
for r in rows: print(r)
|
||||
print("-- devel任务工时合计(按需求):")
|
||||
rows = q("""
|
||||
SELECT s.product, SUM(t.estimate) devel_est, COUNT(DISTINCT t.id) devel_tasks
|
||||
FROM zt_story s JOIN zt_task t ON t.story=s.id AND t.type='devel' AND t.deleted='0'
|
||||
WHERE s.releaseddate>='2026-06-01' AND s.releaseddate<'2026-07-01' AND s.deleted='0'
|
||||
GROUP BY s.product
|
||||
""")
|
||||
for r in rows: print(r)
|
||||
print("-- 这些上线需求关联的Bug(zt_bug.story IN):")
|
||||
rows = q("""
|
||||
SELECT s.product, b.severity, COUNT(*) cnt
|
||||
FROM zt_bug b JOIN zt_story s ON b.story=s.id
|
||||
WHERE s.releaseddate>='2026-06-01' AND s.releaseddate<'2026-07-01' AND s.deleted='0' AND b.deleted='0'
|
||||
GROUP BY s.product, b.severity
|
||||
""")
|
||||
for r in rows: print(r)
|
||||
|
||||
print("\n### 3. 缺陷检出率:测试需求(6月releaseddate)开发工时 vs Bug(普通×1+重大×5)")
|
||||
rows = q("""
|
||||
SELECT s.id, s.title, s.assignedTo, e.test_person, s.product,
|
||||
(SELECT SUM(t.estimate) FROM zt_task t WHERE t.story=s.id AND t.type='devel' AND t.deleted='0') devel_est,
|
||||
(SELECT COUNT(*) FROM zt_bug b WHERE b.story=s.id AND b.deleted='0' AND b.severity IN (3,4)) normal_bugs,
|
||||
(SELECT COUNT(*) FROM zt_bug b WHERE b.story=s.id AND b.deleted='0' AND b.severity IN (1,2)) major_bugs
|
||||
FROM zt_story s LEFT JOIN zt_story_expand e ON e.story=s.id
|
||||
WHERE s.releaseddate>='2026-06-01' AND s.releaseddate<'2026-07-01' AND s.deleted='0'
|
||||
ORDER BY s.id
|
||||
""")
|
||||
tot_dev=0; tot_weight=0
|
||||
for r in rows:
|
||||
dev = float(r[5] or 0); w = (r[6] or 0)*1 + (r[7] or 0)*5
|
||||
tot_dev += dev; tot_weight += w
|
||||
print(f"story {r[0]} prod={r[4]} test={r[3]} devel_h={dev:.1f} 普通Bug={r[6]} 重大={r[7]} 加权={w}")
|
||||
print(f"合计: Σ开发工时={tot_dev:.1f} Σ加权Bug={tot_weight}")
|
||||
if tot_dev:
|
||||
print(f"检出率 ×100 = {tot_weight/tot_dev*100:.2f}% ×1000 = {tot_weight/tot_dev*1000:.1f}‰")
|
||||
|
||||
print("\n### 4. 版本计划:6月发布需求 工时加权 vs 指数加权")
|
||||
rows = q("""
|
||||
SELECT s.id, s.releaseddate, s.estimate, e.workload_index,
|
||||
(SELECT SUM(t.estimate) FROM zt_task t WHERE t.story=s.id AND t.deleted='0') task_est
|
||||
FROM zt_story s LEFT JOIN zt_story_expand e ON e.story=s.id
|
||||
WHERE s.releaseddate>='2026-06-01' AND s.releaseddate<'2026-07-01' AND s.deleted='0'
|
||||
""")
|
||||
n=len(rows); with_idx=sum(1 for r in rows if r[3] not in (None,'','0'))
|
||||
sum_est=sum(float(r[4] or 0) for r in rows); sum_task=sum(float(r[2] or 0) for r in rows)
|
||||
print(f"发布需求数={n} 有指数={with_idx} Σtask.estimate={sum_task:.1f} Σstory.estimate={sum_est:.1f}")
|
||||
Reference in New Issue
Block a user