feat: 프로젝트 활성도 분석 시스템 및 크롤링 인증/중단 기능 구현 - DB 연결 최적화, 활성도 위젯 및 내비게이션, 관리자 인증 모달, 중단 기능, UI 레이아웃 최적화, 코드 리팩토링 및 파일 정리

This commit is contained in:
2026-03-11 14:03:26 +09:00
parent 4a995c11f4
commit 9f06857bea
26 changed files with 587 additions and 1323 deletions

View File

@@ -42,7 +42,14 @@
</div>
</header>
<!-- 실시간 로그 콘솔 추가 -->
<!-- 프로젝트 활성도 대시보드 (전체 너비 래퍼) -->
<div class="activity-dashboard-wrapper">
<div id="activityDashboard" class="activity-dashboard">
<!-- JS에서 동적 삽입 -->
</div>
</div>
<!-- 실시간 로그 콘솔 (본문 내부로 복구) -->
<div id="logConsole" class="log-console" style="display:none;">
<div class="log-console-header">실시간 수집 로그 [PM Overseas]</div>
<div id="logBody"></div>
@@ -53,8 +60,57 @@
</div>
</main>
<!-- 모달 레이어 (최외각 유지) -->
<div id="authModal" class="activity-modal-overlay" style="display:none;">
<div class="auth-modal-content">
<div class="auth-header">
<i class="fas fa-lock"></i>
<h3>크롤링 권한 인증</h3>
<p>시스템 동기화를 위해 관리자 계정으로 로그인하세요.</p>
</div>
<div class="auth-body">
<div class="input-group">
<label>관리자 아이디</label>
<input type="text" id="authId" placeholder="아이디를 입력하세요">
</div>
<div class="input-group">
<label>비밀번호</label>
<input type="password" id="authPw" placeholder="비밀번호를 입력하세요" onkeyup="if(event.key==='Enter') submitAuth()">
</div>
<div id="authErrorMessage" class="error-text" style="display:none;">크롤링을 할 수 없습니다.</div>
</div>
<div class="auth-footer">
<button class="cancel-btn" onclick="closeAuthModal()">취소</button>
<button class="login-btn" onclick="submitAuth()">인증 및 실행</button>
</div>
</div>
</div>
<div id="activityDetailModal" class="activity-modal-overlay" style="display:none;" onclick="closeActivityModal(event)">
<div class="activity-modal-content" onclick="event.stopPropagation()">
<div class="modal-header">
<h3 id="modalTitle">상세 목록</h3>
<button class="close-btn" onclick="closeActivityModal()">&times;</button>
</div>
<div class="modal-body">
<table class="data-table">
<thead>
<tr>
<th>프로젝트명</th>
<th>담당부서</th>
<th>담당자</th>
</tr>
</thead>
<tbody id="modalTableBody">
<!-- JS에서 동적 삽입 -->
</tbody>
</table>
</div>
</div>
</div>
<script src="js/common.js"></script>
<script src="js/dashboard.js"></script>
</body>
</html>
</html>