function renderPWarLeaderboard(data) { const container = document.getElementById('p-war-table-container'); if (!container) return; const sortedData = [...data].sort((a, b) => a.p_war - b.p_war); container.innerHTML = `
${sortedData.map((p, idx) => { const status = getStatusInfo(p.p_war, p.is_auto_delete); const avi = p.p_war; const vci = p.risk_count; const oci = p.oci_score || 0; const rowId = `project-${idx}`; let rhythmLabel = ""; let rhythmColor = ""; if (oci >= 80) { rhythmLabel = "정기적"; rhythmColor = "#059669"; } else if (oci >= 50) { rhythmLabel = "안정적"; rhythmColor = "#1e5149"; } else if (oci >= 20) { rhythmLabel = "간헐적"; rhythmColor = "#f59e0b"; } else { rhythmLabel = "불규칙"; rhythmColor = "#dc2626"; } // 존재 신뢰도 패널티 (ECV) 텍스트 준비 let ecvText = "100% (데이터 신뢰)"; let ecvClass = "highlight-val"; let ecvDesc = "충분한 성과물이 존재합니다."; if (p.file_count === 0) { ecvText = "5% (유령 프로젝트)"; ecvClass = "highlight-penalty"; ecvDesc = "성과물이 전무하여 시스템 가치가 소멸되었습니다."; } else if (p.file_count < 10) { ecvText = "40% (소규모 껍데기)"; ecvClass = "highlight-penalty"; ecvDesc = "최소 수준의 데이터만 존재하여 가치가 낮게 평가됩니다."; } // 활동 품질 텍스트 준비 const qualityLabel = p.log_quality >= 1.0 ? '성과물 직결 실무 활동' : p.log_quality >= 0.7 ? '시스템 구조적 활동' : '단순 행정적 활동'; return ` `; }).join('')}
프로젝트명 파일 수 방치일 상태 판정 활력 지수 (AVI) 가치 기여 (VCI) 업무 집중도 운영 일관성 (OCI)
${p.project_nm} ${p.file_count.toLocaleString()}개 ${p.days_stagnant}일 ${status.label} ${avi.toFixed(1)}% ${vci >= 0 ? '+' : ''}${vci.toFixed(2)}
${p.work_effort}%
${oci}% ${rhythmLabel}
⚙️ AI 위험 적응형 모델(AAS) 산출 시뮬레이션
📊 실질 업무 집중도 분석 (Job Focus) 집중도 ${p.work_effort}%
최근 30개 수집 이력 중 단순 로그 갱신이 아닌 실제 파일 수의 변동이 포착된 날의 비율입니다. 현재 이 프로젝트는 ${p.work_effort >= 70 ? '매우 밀도 높은 실무' : p.work_effort <= 30 ? '형식적 관리 위주의 정체' : '간헐적인 성과물'} 상태를 보이고 있습니다.
1
동적 위험 계수(λ) 산출
자산 규모(${p.file_count}개) 및 부서 위험도를 합산한 하락 속도입니다.
λ = ${p.ai_lambda.toFixed(4)}
4
활동 품질 검증 (Quality)
최근 로그 분석 결과 ${qualityLabel}으로 판명되었습니다.
Factor = ${(p.log_quality * 100).toFixed(0)}%
2
방치 시간 감쇄 적용
${p.days_stagnant}일간의 정체로 인한 가치 보존율입니다.
Result = ${((avi / (p.file_count === 0 ? 0.05 : p.file_count < 10 ? 0.4 : 1) / p.log_quality) || 0).toFixed(1)}%
3
존재 진정성 (ECV)
${ecvDesc}
Factor = ${ecvText}
가치 기여도 (VCI): ${vci >= 0 ? '+' : ''}${vci.toFixed(2)}
* AVI 70% 대비 프로젝트의 실질적 자산 하중 반영
최종 AVI: ${avi.toFixed(1)}%
`; }