# 회귀 검증 체크리스트

## 목적

- 새 기능을 추가하거나 기존 기능을 수정할 때, 이전에 되던 핵심 기능이 깨졌는지 빠르게 확인한다.
- `8081` 작업용에서 검증한 결과를 신뢰할 수 있도록 `환경`, `데이터`, `핵심 시나리오`를 고정한다.
- 완료 판단을 감이 아니라 반복 가능한 체크 절차로 바꾼다.

## 적용 원칙

- 코드 수정은 먼저 `8081`에서 수행한다.
- 데이터 기준은 항상 `8080` 공개용 DB를 따른다.
- 검증 전에는 작업 범위에 맞는 DB 동기화를 먼저 수행한다.
- 기능 수정 후에는 관련 화면만 보지 말고, 이 문서의 핵심 시나리오를 함께 확인한다.

관련 문서:

- [DEV_PROD_DB_PROTOCOL.md](/home/hyunho/projects/mh-dashboard-organization/docs/DEV_PROD_DB_PROTOCOL.md)
- [INFRA_VALIDATION_CHECKLIST.md](/home/hyunho/projects/mh-dashboard-organization/docs/INFRA_VALIDATION_CHECKLIST.md)

## 작업 시작 전

### 1. 서버 상태 확인

- `8081` 작업용 접속 확인
- `8080` 공개용 접속 확인
- `docker compose ps`에서 `backend`, `frontend`, `proxy`, `db`가 정상인지 확인
- `8081`은 기본적으로 `docker compose -p mh-dashboard-organization-dev --env-file .env -f docker-compose.8081.yml up -d` 로 기동

### 2. 데이터 동기화 범위 결정

- 조직도, 관리자모드, 자리배치도 작업 전:
  - `./scripts/sync_prod_db_to_dev.sh minimal`
- 프로젝트별 분석, 팀/개인별 분석 작업 전:
  - `./scripts/sync_prod_db_to_dev.sh analysis`
- 공개용 기준 전체 데이터 재검증이 필요한 경우만:
  - `./scripts/sync_prod_db_to_dev.sh full`

### 3. 기준 고정

- 어느 서버에서 재현했는지 기록
- 어떤 데이터 동기화 범위로 검증했는지 기록
- 브라우저 캐시 영향을 피하려면 강력 새로고침 후 확인

## 공통 회귀 시나리오

기능 수정 후 아래 항목을 최소한 확인한다.

### A. 허브 및 공통 진입

- 메인 허브가 정상 렌더링된다.
- 상단 탭 이동이 정상 동작한다.
- 로그인 상태가 비정상적으로 풀리지 않는다.

### B. 조직현황

- 조직도 트리가 정상 표시된다.
- 관리자모드 진입이 가능하다.
- 대상인원 클릭 시 기본정보 모달이 열린다.
- `+` 신규 구성원 추가 모달이 열린다.
- 기본정보 저장이 정상 동작한다.

### C. 자리배치도

- `기술개발센터`, `한맥빌딩 6층`, `한맥빌딩 7층` 도면이 모두 열린다.
- 미배치 인원 목록이 정상 표시된다.
- 미배치 인원을 chair에 드래그앤드롭할 수 있다.
- 드롭 후:
  - 미배치 목록에서 사라진다.
  - chair에 배치 상태가 표시된다.
  - 이름/직급 표기가 보인다.
- 배치된 좌석 클릭 후 해제 또는 수정 흐름이 정상 동작한다.

### D. 조직도와 자리배치 연동

- 조직도에서 인원 클릭 시 상세 정보가 열린다.
- 재석위치 미리보기가 표시된다.
- 좌석이 배정된 인원은 해당 자리로 줌인된다.

### E. 프로젝트별 분석

- 월 선택이 정상 동작한다.
- 프로젝트 목록과 합계가 비어 있지 않다.
- `1월`, `2월` 데이터가 현재 기준값과 일치한다.

현재 기준 검증값:

- `2026-01`
  - 시간 `37,342.39`
  - 인건비 `1,391,966,625`
- `2026-02`
  - 시간 `29,060.59`
  - 인건비 `1,078,337,651`

### F. 팀/개인별 분석

- `전체`, `GPD`, `TDC` 버튼이 순서대로 보인다.
- `전체`에서 모든 팀이 노출된다.
- `GPD`, `TDC` 선택 시 각 소속 범위만 버튼 기준으로 보인다.
- 검색은 버튼 상태와 무관하게 전체 데이터를 검색한다.

## 작업 유형별 필수 추가 확인

### 조직도 / 관리자모드 수정 시

- 대상인원 수정 모달 레이아웃이 깨지지 않는지 확인
- 신규 구성원 추가 모달도 같은 레이아웃으로 보이는지 확인
- 저장 후 목록 반영이 정상인지 확인

### 자리배치도 수정 시

- viewer iframe 로드 여부 확인
- 드래그앤드롭 이후 배치 상태가 즉시 반영되는지 확인
- 조직도 상세 재석위치 preview까지 같이 확인

### 분석 로직 수정 시

- 작업 전에 반드시 `analysis` 또는 `full` 동기화 수행
- 월별 합계 검증값 재확인
- 원본 기준과 차이가 있으면 반올림, 제외 인원, 가공시간 규칙부터 점검

## 완료 처리 기준

수정 사항을 완료로 판단하려면 아래를 모두 만족해야 한다.

- 수정한 기능이 의도대로 동작한다.
- 관련 공통 회귀 시나리오가 깨지지 않는다.
- 필요한 경우 `8081`에서 검증 결과를 숫자 또는 화면 기준으로 기록한다.
- 이후에만 `8080` 공개용 반영 여부를 판단한다.

## 장애 원인 분류 기준

문제가 생기면 먼저 아래 셋 중 어디인지 분리한다.

- 코드 차이
  - `8080`, `8081`의 정적 파일 또는 백엔드 로직이 다름
- DB 차이
  - `members`, `seat_maps`, `integration_*` 등 기준 데이터가 다름
- 캐시 또는 런타임 상태
  - 정적 파일 캐시, 컨테이너 재시작 미반영, 브라우저 세션 상태 문제

이 분류를 먼저 해야 원인을 잘못 짚지 않는다.

## 권장 기록 방식

작업 종료 시 아래 형식으로 남긴다.

```text
작업 범위:
- 예: 조직현황 관리자모드 기본정보 모달 레이아웃 변경

검증 환경:
- 서버: 8081
- DB 동기화: minimal / analysis / full 중 무엇을 사용했는지

검증 결과:
- 조직도: 정상
- 관리자모드 모달: 정상
- 자리배치도 연동: 정상 또는 미검증
- 프로젝트별 분석: 정상 또는 미검증
```
