⚙️ KCB Cutover Dashboard - 관리자 가이드 (Admin Guide)
본 가이드는 KCB 재해복구(DR) 모의훈련 및 Cutover 작업의 통제관, PMO, 시스템 총괄 관리자를 위한 대시보드 제어 및 운용 가이드 문서입니다.
📑 목차
- 관리자 콘솔 개요 및 접속
- 관리자 인증 및 보안 설정
- 액티비티 상태 제어 (Status Management)
- 액티비티 편집 기능 (CRUD & Reorder)
- activity.json 일괄 업로드
- 데이터 백업 및 복구 관리
- 문제 해결 및 트러블슈팅 (Troubleshooting)
1. 관리자 콘솔 개요 및 접속
관리자 콘솔(Admin Console)은 Cutover 모의훈련 동안 각 단계별 작업의 진행 상황을 직접 업데이트하고, 신규 작업을 추가하거나 일정을 변경할 수 있는 전용 컨트롤 뷰입니다.
- 관리자 접속 URL:
http://<서버-IP>:3000/admin - 권장 디바이스: 데스크톱 PC, 노트북 (트리 조작 및 텍스트 편집 편의성)
2. 관리자 인증 및 보안 설정
2.1 관리자 로그인
/admin경로 접속 시 딥블루톤의 관리자 전용 인증 화면이 출력됩니다.- 관리자 비밀번호(
NEXT_PUBLIC_ADMIN_PASSWORD)를 입력합니다. (기본값:admin1234) - 로그인 성공 시 인증 쿠키(
cutover_admin)가 생성되어 세션이 유지됩니다.
[!CAUTION]
관리자 권한은 전체 훈련 상태를 직접 수정할 수 있으므로, 통제관 및 지정된 담당자 외에게 비밀번호가 유출되지 않도록 주의하십시오.
3. 액티비티 상태 제어 (Status Management)
관리자 콘솔에서는 각 액티비티 항목 옆의 상태 배지를 클릭하거나 드롭다운을 통해 작업 상태를 즉시 변경할 수 있습니다.
[대기] ──(클릭)──> [진행] ──(클릭)──> [완료]
│ ▲
└───────────────(지연 발생)──────────┘ (지연 처리 가능)
3.1 상태 변경 연동 규칙 (Automatic Cascade Rules)
KCB Cutover Dashboard는 사람의 실수를 방지하고 계층 구조 간 일관성을 유지하기 위해 스마트 트리 캐스케이딩 엔진이 내장되어 있습니다.
flowchart TD
A["관리자가 하위 액티비티 상태 변경"] --> B{"신규 상태가 무엇인가?"}
B -- "진행 또는 대기" --> C["상위(부모) 액티비티의 상태를 자동 '진행'으로 변경"]
B -- "완료" --> D{"동일 계층의 모든 형제 액티비티가 '완료'인가?"}
D -- "YES" --> E["상위(부모) 액티비티의 상태를 자동 '완료'로 변경"]
D -- "NO" --> F["상위(부모) 액티비티 상태 '진행' 유지"]
- 하위 작업
진행시: 상위 부모 작업이대기상태였다면 자동으로진행상태로 변경됩니다. - 하위 작업
완료시: 부모 항목 아래의 모든 하위(자식) 작업이완료로 변경되는 순간, 부모 항목도 자동으로완료처리됩니다. - 상위 작업 직접 변경 시: 상위 작업 상태를
완료로 변경하면, 포함된 모든 하위 작업도 일괄완료처리됩니다.
4. 액티비티 편집 기능 (CRUD & Reorder)
관리자 화면에서는 트리 항목 마우스 호버 시 편집 툴바가 노출됩니다.
4.1 액티비티 추가 및 하위 항목 생성
- 루트 액티비티 추가: 목록 하단의
+ 새 루트 액티비티 추가버튼 클릭 - 하위(자식) 액티비티 추가: 대상 액티비티의
+버튼 클릭 (자동으로 1레벨 아래 하위 항목 생성)
4.2 제목 및 예정 시간 수정
- 액티비티 항목의 시간 필드 또는 제목 필드를 클릭하면 즉시 편집 모드로 전환됩니다.
- 수정 후 엔터(
Enter) 키를 누르거나 외부를 클릭하면 변경 사항이 서버로 즉시 저장됩니다.
4.3 순서 이동 및 삭제
- 위/아래 이동 (
▲ / ▼): 동일 계층 내에서 작업의 우선순위 및 순서를 변경합니다. - 삭제 (
🗑️): 해당 액티비티 및 포함된 모든 하위 액티비티를 삭제합니다. (확인 팝업창 노출)
5. activity.json 일괄 업로드
관리자 화면의 activity.json 업로드 카드에서 JSON 파일을 선택하거나 끌어놓은 뒤 상황판에 반영을 누릅니다. 파일 크기는 최대 2MB이며, 반영 전 확인 창이 표시됩니다.
기본 파일 구조는 다음과 같습니다.
{
"dashboardTitle": "2026 재해복구 모의훈련 대시보드",
"activities": [
{
"id": "1",
"parentId": null,
"level": 1,
"time": "21:00 ~ 21:10",
"title": "[Task#1] 서비스 중지",
"status": "대기"
}
]
}
- 필수 최상위 필드:
activities배열 - 액티비티 필수 필드:
id,parentId,level,time,title,status - 상태값:
대기,진행,지연,완료(진행중은진행으로 자동 변환) - 루트 항목:
parentId는null,level은1 - 하위 항목:
parentId가 가리키는 부모가 반드시 존재하고level은 부모보다 1 커야 함 dashboardTitle이 없으면 현재 상황판 제목을 유지하며, 방문자 수 역시 항상 유지됨
업로드가 실패하면 화면에 activities[3].status 같은 정확한 오류 경로와 원인이 함께 표시됩니다. JSON 문법 위치, 필수 필드, 중복 ID, 존재하지 않는 부모 ID, level 불일치, 순환 참조, 허용되지 않은 상태값을 한 번에 최대 50건까지 확인할 수 있습니다. 검증에 실패한 파일은 현재 상황판에 전혀 반영되지 않습니다.
6. 데이터 백업 및 복구 관리
대시보드의 데이터는 서버 내 JSON 데이터 파일 또는 지정된 S3 버킷에 실시간 기록됩니다.
- 현재 데이터 파일: 프로젝트 루트의
data/activity.json - 업로드 직전 자동 백업: 프로젝트 루트의
data/activity.backup.json - 수동 백업 방법:
# 데이터 파일 복사 백업 cp data/activity.json data/activity-manual-backup-$(date +%Y%m%d_%H%M%S).json - Docker 운영:
/app/data를 볼륨으로 마운트해야 컨테이너를 교체해도 업로드 데이터가 유지됩니다. - 초기 데이터 리셋:
data/activity.json파일이 없으면 빈 상황판 데이터가 자동 생성됩니다.
7. 문제 해결 및 트러블슈팅 (Troubleshooting)
[!WARNING]
상황 1: 관리자 로그인 폼에서 비밀번호 오류가 계속 발생함
.env.local또는 Docker 실행 환경 변수NEXT_PUBLIC_ADMIN_PASSWORD설정을 확인하십시오.- 서버 재시작 후 브라우저 쿠키를 삭제하고 재접속하십시오.
[!WARNING]
상황 2: 상태 변경 시 화면 반영이 지연되는 현상
- 서버 로그를 통해 API 반응속도(
PUT /api/activities)를 점검하십시오.- Docker 컨테이너 메모리 제한 및 CPU 사용량을 확인하십시오.
[!WARNING] 상황 3: activity.json 업로드가 거부됨
- 관리자 화면에 표시된 오류 경로와 상세 원인을 먼저 확인하십시오.
- 세션 만료 오류라면 관리자 비밀번호로 다시 로그인하십시오.
- 저장 오류라면
data디렉토리의 쓰기 권한과 디스크 여유 공간을 확인하십시오.