Muchos cambios
This commit is contained in:
@@ -129,6 +129,7 @@ function renderHealthWarnings(warnings = []) {
|
||||
const link = w.key ? `<a href="${getJiraUrl(w.key)}" target="_blank" class="jira-link">${w.key}</a>` : '';
|
||||
|
||||
if(w.type === 'stalled') { badge = 'ESTANCADO'; text = `🎟️ [${link}] ${w.summary.slice(0,50)}... (${w.devs.join(', ')})`; }
|
||||
if(w.type === 'expired') { badge = 'VENCIDO'; text = `🗓️ [${link}] ${w.summary.slice(0,50)}... (Vencido hace ${w.days} días)`; }
|
||||
if(w.type === 'done_no_sp') { badge = 'SIN SP'; text = `🎟️ [${link}] ${w.summary.slice(0,50)}... (Completado sin estimación)`; }
|
||||
if(w.type === 'unassigned_sp') { badge = 'HUÉRFANO'; text = `🎟️ [${link}] ${w.summary.slice(0,50)}... (${w.sp} SP sin dueño)`; }
|
||||
if(w.type === 'free_dev') { badge = 'DEV LIBRE'; text = `👤 ${w.summary}`; }
|
||||
@@ -312,9 +313,15 @@ function renderCRSection() {
|
||||
if (!data || !data.crData) return;
|
||||
|
||||
const cr = data.crData;
|
||||
const cur = data.currentStates || { codeReview: {count:0, sp:0} };
|
||||
|
||||
document.getElementById('kpi-cr-queue-now').textContent = cur.codeReview.count;
|
||||
document.getElementById('kpi-cr-queue-sp').textContent = cur.codeReview.sp + ' SP en espera';
|
||||
|
||||
document.getElementById('kpi-cr-tickets').textContent = cr.tickets ?? '—';
|
||||
document.getElementById('kpi-cr-avg').textContent = cr.avgTimeCr != null ? cr.avgTimeCr + 'hs' : '—';
|
||||
document.getElementById('kpi-cr-p50').textContent = cr.p50Cr != null ? cr.p50Cr + 'hs' : '—';
|
||||
document.getElementById('kpi-cr-p90').textContent = cr.p90Cr != null ? cr.p90Cr + 'hs' : '—';
|
||||
document.getElementById('kpi-cr-p99-sub').textContent = cr.p99Cr != null ? 'P99: ' + cr.p99Cr + ' hs' : 'P99: — hs';
|
||||
document.getElementById('kpi-cr-stalled').textContent = (cr.stalledIssues?.length) || '0';
|
||||
|
||||
const crMonths = Object.keys(cr.monthlyAvgCr || {}).sort();
|
||||
@@ -340,8 +347,15 @@ function renderQASection() {
|
||||
if (!data || !data.qaData) return;
|
||||
|
||||
const qa = data.qaData;
|
||||
const cur = data.currentStates || { readyToQa: {count:0, sp:0}, inQa: {count:0, sp:0} };
|
||||
|
||||
// ── KPIs ──────────────────────────────────────────────────────────────────
|
||||
// ── COLAS ACTUALES ─────────────────────────────────────────────────────────
|
||||
document.getElementById('kpi-qa-queue-now').textContent = cur.readyToQa.count;
|
||||
document.getElementById('kpi-qa-queue-now-sp').textContent = cur.readyToQa.sp + ' SP esperando';
|
||||
document.getElementById('kpi-qa-active-now').textContent = cur.inQa.count;
|
||||
document.getElementById('kpi-qa-active-now-sp').textContent = cur.inQa.sp + ' SP en prueba';
|
||||
|
||||
// ── KPIs DEL PERÍODO ──────────────────────────────────────────────────────
|
||||
document.getElementById('kpi-qa-tickets').textContent = qa.tickets ?? '—';
|
||||
document.getElementById('kpi-qa-avg').textContent = qa.avgTimeQa != null ? qa.avgTimeQa + 'hs' : '—';
|
||||
document.getElementById('kpi-qa-rtqa').textContent = qa.avgTimeRtqa != null ? qa.avgTimeRtqa + 'hs' : '—';
|
||||
|
||||
Reference in New Issue
Block a user