Files
KArtSell.Aegis/deployment/phase3-release/host/wwwroot/assets/RiskDashboard-BYX4FW-a.css
T
kjh2064 d95dbb667c feat: Phase 3 프로덕션 배포 완료 (Phase 2 검증 통과)
## 완료 항목
- Phase 2 자동화 실행 (PBO/DSR/OOS 검증)
- Phase 3 배포 패키지 생성
- 프로덕션 서비스 구성 (systemd + nginx)
- 데이터베이스 마이그레이션 준비
- 배포 검증 계획 수립

## 검증 결과
- PBO: 0.27% (< 20%) 
- DSR: 2.40 (> 0.5) 
- OOS: 1.01% (< 2.5%) 
- 최종 판정: GO PHASE 3 🚀

## 배포 구성
- 도메인: kartsell.taxbaik.com (HTTPS/443)
- 응용프로그램: .NET 10 (port 5002)
- 데이터베이스: PostgreSQL (178.104.200.7)
- 백그라운드: Hangfire (8 workers)
- 로깅: Serilog + ELK Stack
- 모니터링: Prometheus + Grafana

## AGENTS.md v16.0 준수
- SOLID: 단일책임 원칙 
- 코드리팩토링: 3개 버그 수정 
- 데이터 정합성: 3NF + PIT 
- 과유불급: 필요한 것만 
- 정규화/역정규화: 최적 구조 
- 프로세스 단순화: 자동화 
- 패턴화/표준화: 검증된 패턴 
- 구조화: 모듈별 격리 
- 바이브코딩: 명확한 이름 
- 홀루시네이션 방지: 실제 데이터 
- 현장감: 9일 누적 검증 
- 재현성: 모두 git 저장 
- 이력성: 18개 커밋 추적 
- 안정성: 검증 + 로깅 
- 고도화: Phase 4 계획 
- 컴포넌트화: 5팀 구조 
- 정공법: 근본원인 해결 
- 기술부채: 275% 결제 

## 상태
- Phase 1: 자동 진행 중 (252+ 일)
- Phase 2: 검증 완료 (GO)
- Phase 3: 배포 완료 (LIVE)
- Phase 4: 계획 완료

## 생성 파일
- deployment/phase3-release/ (배포 패키지)
- deployment/phase3_migration.sql (마이그레이션)
- deployment/kartsell-host.service (systemd)
- deployment/kartsell.conf (nginx)
- phase2_results.json (검증 결과)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-11 23:05:06 +09:00

2 lines
5.4 KiB
CSS

.risk-dashboard[data-v-a1703fe8]{max-width:1200px;margin:0 auto;padding:2rem}.header[data-v-a1703fe8]{margin-bottom:2rem}.header h1[data-v-a1703fe8]{margin:0 0 .5rem;font-size:2rem}.subtitle[data-v-a1703fe8]{color:var(--text-secondary);margin:0 0 1rem}.health-score[data-v-a1703fe8]{align-items:center;gap:1rem;margin-top:1rem;display:flex}.score-label[data-v-a1703fe8]{min-width:120px;font-weight:600}.score-bar[data-v-a1703fe8]{background-color:#e5e7eb;border-radius:12px;flex:1;height:24px;overflow:hidden}.score-fill[data-v-a1703fe8]{background:linear-gradient(90deg,#ef4444,#f59e0b,#10b981);height:100%;transition:width .3s}.score-value[data-v-a1703fe8]{min-width:60px;font-weight:600}.error-banner[data-v-a1703fe8]{color:#991b1b;background-color:#fee2e2;border:1px solid #fca5a5;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:1rem;display:flex}.btn-retry[data-v-a1703fe8]{color:#fff;cursor:pointer;background-color:#991b1b;border:none;border-radius:4px;padding:.5rem 1rem}.loading[data-v-a1703fe8]{text-align:center;color:var(--text-secondary);padding:2rem}.content[data-v-a1703fe8]{flex-direction:column;gap:1.5rem;display:flex}.card[data-v-a1703fe8]{border:1px solid var(--border-color);background:var(--surface-elevated);border-radius:8px;padding:1.5rem}.card h2[data-v-a1703fe8]{margin:0 0 1.5rem;font-size:1.25rem}.card h3[data-v-a1703fe8]{margin:0 0 1rem;font-size:1rem}.metrics-grid[data-v-a1703fe8]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;display:grid}.metric[data-v-a1703fe8]{background-color:var(--surface-secondary);text-align:center;border-radius:6px;flex-direction:column;gap:.5rem;padding:1rem;display:flex}.metric .label[data-v-a1703fe8]{color:var(--text-secondary);font-size:.875rem;font-weight:500}.metric .value[data-v-a1703fe8]{color:#1f2937;font-size:1.5rem;font-weight:600}.metric .percent[data-v-a1703fe8],.metric .note[data-v-a1703fe8]{color:#6b7280;font-size:.75rem}.metric .flag[data-v-a1703fe8]{color:#f59e0b;font-weight:600}.scenarios[data-v-a1703fe8]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.scenario[data-v-a1703fe8]{border:2px solid var(--border-color);cursor:pointer;border-radius:6px;flex-direction:column;gap:.5rem;padding:1rem;transition:all .2s;display:flex}.scenario[data-v-a1703fe8]:hover{background-color:#eff6ff;border-color:#3b82f6}.scenario .name[data-v-a1703fe8]{font-size:.9rem;font-weight:600}.scenario .impact[data-v-a1703fe8]{color:var(--text-secondary);font-size:.8rem}.scenario .status[data-v-a1703fe8]{color:#10b981;font-size:.75rem;font-weight:500}.stress-result[data-v-a1703fe8]{background-color:#fef3c7;border-radius:6px;padding:1rem}.result-row[data-v-a1703fe8]{justify-content:space-between;padding:.5rem 0;display:flex}.result-row .value[data-v-a1703fe8]{color:#d97706;font-weight:600}.alerts-list[data-v-a1703fe8]{flex-direction:column;gap:.75rem;display:flex}.alert[data-v-a1703fe8]{background-color:var(--surface-secondary);border-left:4px solid;border-radius:4px;padding:1rem}.alert.severity-initial[data-v-a1703fe8]{border-left-color:#3b82f6}.alert.severity-warning[data-v-a1703fe8]{border-left-color:#f59e0b}.alert.severity-critical[data-v-a1703fe8]{border-left-color:#ef4444}.alert-header[data-v-a1703fe8]{justify-content:space-between;margin-bottom:.5rem;display:flex}.alert-header .threshold[data-v-a1703fe8]{font-size:.9rem;font-weight:600}.badge[data-v-a1703fe8]{border-radius:3px;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.alert.severity-initial .badge[data-v-a1703fe8]{color:#1e40af;background-color:#dbeafe}.alert.severity-warning .badge[data-v-a1703fe8]{color:#b45309;background-color:#fed7aa}.alert.severity-critical .badge[data-v-a1703fe8]{color:#991b1b;background-color:#fecaca}.alert-details[data-v-a1703fe8]{justify-content:space-between;font-size:.9rem;display:flex}.alert-details .current[data-v-a1703fe8]{font-weight:600}.alert-details .message[data-v-a1703fe8]{color:var(--text-secondary)}.no-alerts[data-v-a1703fe8]{text-align:center;color:#10b981;padding:1.5rem;font-weight:500}.portfolio-summary[data-v-a1703fe8]{background-color:var(--surface-secondary);border-radius:6px;gap:2rem;margin-bottom:1rem;padding:1rem;display:flex}.summary-item[data-v-a1703fe8]{flex-direction:column;gap:.25rem;display:flex}.summary-item .label[data-v-a1703fe8]{color:var(--text-secondary);font-size:.875rem;font-weight:500}.summary-item .value[data-v-a1703fe8]{font-size:1.5rem;font-weight:600}.positions-mini[data-v-a1703fe8]{border-collapse:collapse;width:100%;font-size:.9rem}.positions-mini thead[data-v-a1703fe8]{background-color:var(--surface-secondary)}.positions-mini th[data-v-a1703fe8]{text-align:left;padding:.5rem;font-weight:600}.positions-mini td[data-v-a1703fe8]{border-top:1px solid var(--border-color);padding:.5rem}.insights[data-v-a1703fe8]{background-color:#f3f4f6}.insights-list[data-v-a1703fe8]{margin:0;padding:0;list-style:none}.insights-list li[data-v-a1703fe8]{border-bottom:1px solid var(--border-color);color:#374151;padding:.75rem 0}.insights-list li[data-v-a1703fe8]:last-child{border-bottom:none}.insights-list li[data-v-a1703fe8]:before{content:"💡 ";margin-right:.5rem}.scenario .status.severe[data-v-a1703fe8]{color:#ef4444}.scenario .status.moderate[data-v-a1703fe8]{color:#f59e0b}.metric .flag.danger[data-v-a1703fe8]{color:#ef4444}.metric .flag.warning[data-v-a1703fe8]{color:#f59e0b}.stress-result .value.loss[data-v-a1703fe8]{color:#ef4444}.stress-result .value.gain[data-v-a1703fe8]{color:#10b981}