feat: 세이버메트릭스 기반 프로젝트 자산 가치 분석 시스템 고도화 (AVI/VCI 도입)

- analysis_service.py: AVI 및 VCI(자산 기여도) 산출 로직 구현
- prediction_service.py: 정체 프로젝트 AI 예보 최적화
- js/analysis.js: 전략 매트릭스 및 VCI 등급 시스템 시각화
- templates/analysis.html: UI 용어 최신화 및 스타일 통합
- ANALYSIS_REPORT.md: 분석 지표 공식 및 가이드라인 상세 기술
This commit is contained in:
2026-03-24 17:54:01 +09:00
parent be3210463f
commit dff3305da1
11 changed files with 481 additions and 322 deletions

View File

@@ -30,11 +30,11 @@
<header class="analysis-header">
<div class="title-group">
<div class="ai-badge">AI Sabermetrics</div>
<h2>시스템 운영 빅데이터 분석</h2>
<p>수집된 활동 로그 및 자산 데이터를 기반으로 한 통계적 성능 지표 (Beta)</p>
<h2>시스템 운영 자산 가치 분석</h2>
<p>수집된 활동 로그 및 자산 데이터를 기반으로 한 통계적 활력 지표 (Beta)</p>
</div>
<div class="analysis-actions">
<button class="btn-refresh" onclick="location.reload()">데이터 갱신</button>
<button class="btn btn-primary" onclick="location.reload()">데이터 갱신</button>
</div>
</header>
@@ -47,12 +47,12 @@
<div class="card-body">
<div class="model-desc-vertical">
<div class="model-item-vertical">
<span class="model-tag">알고리즘</span>
<p>최근 9회차 시계열의 Velocity 및 가속도 분석</p>
<span class="model-tag">분석 모델</span>
<p>최근 9회차 시계열의 Velocity 및 변화율 분석</p>
</div>
<div class="model-item-vertical">
<span class="model-tag">판단 로직</span>
<p>활동 시 '선형 추세', 정체 시 '지수 감쇄' 가중치 적용</p>
<span class="model-tag">가중치 로직</span>
<p>활동 시 '선형 유지', 정체 시 '지수 감쇄' 동적 적용</p>
</div>
</div>
</div>
@@ -65,16 +65,16 @@
<div class="card-body">
<div class="soi-info-columns">
<div class="soi-info-column">
<h6>1. AI 자산 가치 평가</h6>
<p>자산 규모를 감지하여, 대형 프로젝트 방치 시 데이터 가치 하락 속도를 <strong>가속(Acceleration)</strong>시킵니다.</p>
<h6>1. 자산 가치 변동 추적</h6>
<p>규모를 감지하여, 대형 프로젝트 정체 시 데이터 가치 하락 속도를 <strong>가속(Acceleration)</strong>시킵니다.</p>
</div>
<div class="soi-info-column">
<h6>2. 조직 위험 전염</h6>
<p>소속 부서의 전반적인 활동성이 낮을 경우, 개별 위험 지수를 상향 조정하여 <strong>시스템적 붕괴</strong>를 예보합니다.</p>
<h6>2. 조직 위험 전염</h6>
<p>소속 부서의 전반적인 활이 낮을 경우, 개별 위험 지수를 상향 조정하여 <strong>시스템적 붕괴</strong>를 예보합니다.</p>
</div>
<div class="soi-info-column">
<h6>3. 동적 위험 계수</h6>
<p>프로젝트마다 <strong>개별화된 위험 곡선</strong>을 생성하여 현장에 가장 밀착된 가치 보존율을 제공합니다.</p>
<h6>3. 동적 가치 계수</h6>
<p>프로젝트마다 <strong>개별화된 감쇄 곡선</strong>을 생성하여 현장에 가장 밀착된 보존율을 제공합니다.</p>
</div>
</div>
</div>
@@ -84,11 +84,11 @@
<!-- 메인 분석 차트 영역 -->
<div class="analysis-charts-grid">
<div class="chart-container-box">
<h5>건강 상태 분포 (Project Distribution)</h5>
<h5>운영 활력 분포 (Activity Distribution)</h5>
<canvas id="statusChart"></canvas>
</div>
<div class="chart-container-box">
<h5>프로젝트 SWOT 매트릭스 (Strategic Analysis)</h5>
<h5>자산 가치 전략 매트릭스 (Strategic Analysis)</h5>
<canvas id="forecastChart"></canvas>
</div>
</div>
@@ -97,19 +97,19 @@
<div class="analysis-card timeline-analysis">
<div class="card-header">
<div style="display: flex; flex-direction: column; gap: 4px;">
<h4>Project Stagnation Objective Index (P-SOI Status)</h4>
<p style="font-size: 11px; color: #888; margin: 0;">이상적 관리 상태(100%) 대비 활동 보존율 및 미래 예측 리더보드</p>
<h4>Project Activity Vitality Leaderboard (AVI Status)</h4>
<p style="font-size: 11px; color: #888; margin: 0;">운영 표준(AVI 70%) 대비 파일 보존율 및 미래 가치 기여 리더보드</p>
</div>
<div class="card-tools">
<span id="avg-system-info" style="font-size: 11px; color: #888;">* SOI (Project Health Score)</span>
<span id="avg-system-info" style="font-size: 11px; color: #888;">* AVI (Activity Vitality Index)</span>
</div>
</div>
<div class="card-body">
<div class="d-war-guide">
<div class="guide-item active-low"><span>70%↑</span> 정상</div>
<div class="guide-item warning-mid"><span>30~70%</span> 주의</div>
<div class="guide-item danger-high"><span>10~30%</span> 위험</div>
<div class="guide-item hazard-critical"><span>10%↓</span> 사망</div>
<div class="guide-item active-low"><span>70%↑</span> 정상 운영</div>
<div class="guide-item warning-mid"><span>30~70%</span> 관리 주의</div>
<div class="guide-item danger-high"><span>10~30%</span> 위험 노출</div>
<div class="guide-item hazard-critical"><span>10%↓</span> 중단/방치</div>
</div>
<div id="p-war-table-container">
@@ -124,7 +124,7 @@
<div class="modal-content">
<div class="modal-header">
<h3 id="modalTitle">분석 상세</h3>
<button class="btn-close" onclick="closeAnalysisModal()">×</button>
<span class="modal-close" onclick="closeAnalysisModal()">&times;</span>
</div>
<div class="modal-body" id="modalBody">
<!-- 내용 동적 삽입 -->