members.seat_label 과 실제 seat_positions 가 어긋난 상태가 발생 가능
이 상태에서 조직현황/자리배치도 검증 결과가 왜곡됨
배경
현재 운영 방식은
공개용 8080: 운영 기준 데이터
작업용 8081: 기능 검증용
이므로, 작업용 DB는 반복 가능하고 신뢰 가능한 방식으로 공개용 기준에 맞춰져야 합니다.
해야 할 일
공개용 -> 작업용 DB 동기화 스크립트 정비
실패 시 중간 상태를 남기지 않도록 절차 보강
members.seat_label 같은 파생 필드는 원본 기준으로 재생성
최소 동기화 범위와 전체 동기화 범위를 명확히 구분
실행 후 검증 항목(row count / seat 관련 테이블 / auth 관련 영향)을 자동 출력
완료 조건
작업용 DB를 공개용 기준으로 반복 실행 가능하게 동기화할 수 있을 것
동기화 후 주요 테이블 수량과 seat 관련 상태를 신뢰할 수 있을 것
조직현황/자리배치도 검증 전에 이 절차를 표준으로 사용할 수 있을 것
## 문제
작업용 `8081` DB를 공개용 `8080` 기준으로 맞추는 절차가 현재 안정적이지 않습니다.
실제 확인된 문제:
- 동기화 중 `seat_positions` 스키마 차이로 중간 실패 가능
- 일부 테이블만 복원되고 나머지는 비정상 상태로 남을 수 있음
- `members.seat_label` 과 실제 `seat_positions` 가 어긋난 상태가 발생 가능
- 이 상태에서 조직현황/자리배치도 검증 결과가 왜곡됨
## 배경
현재 운영 방식은
- 공개용 `8080`: 운영 기준 데이터
- 작업용 `8081`: 기능 검증용
이므로, 작업용 DB는 반복 가능하고 신뢰 가능한 방식으로 공개용 기준에 맞춰져야 합니다.
## 해야 할 일
- 공개용 -> 작업용 DB 동기화 스크립트 정비
- 실패 시 중간 상태를 남기지 않도록 절차 보강
- `members.seat_label` 같은 파생 필드는 원본 기준으로 재생성
- 최소 동기화 범위와 전체 동기화 범위를 명확히 구분
- 실행 후 검증 항목(row count / seat 관련 테이블 / auth 관련 영향)을 자동 출력
## 완료 조건
- 작업용 DB를 공개용 기준으로 반복 실행 가능하게 동기화할 수 있을 것
- 동기화 후 주요 테이블 수량과 seat 관련 상태를 신뢰할 수 있을 것
- 조직현황/자리배치도 검증 전에 이 절차를 표준으로 사용할 수 있을 것
sync 전에 8081의 proxy/frontend/backend 를 잠시 멈춰 deadlock / partial read 방지
seat_positions portable restore 유지
복원 후 members.seat_label, auth.users, history backfill 재정렬
실행 후 주요 테이블/seat 정합성 수치 자동 출력
실제 검증
./scripts/sync_prod_db_to_dev.sh minimal 실행 완료
출력 결과
members=227
member_retirements=9
seat_maps=21
seat_slots=57308
seat_positions=0
seat_positions_without_slot=0
members_with_seat_label=0
seat_label_mismatch=0
auth_users=228
현재 판단:
이 절차는 이제 8081 검증 전 표준 절차로 사용할 수 있는 상태다.
이후 analysis, full 범위는 같은 구조로 확장해서 사용하면 된다.
2026-03-30 정리
작업용 DB 동기화 절차를 현재 8081 운영 방식 기준으로 다시 고정했습니다.
반영 내용:
- 저장소에 `docker-compose.8081.yml` 추가
- `8081` 작업용 stack을 repo 안에서 바로 올릴 수 있게 정리
- 기본 project name: `mh-dashboard-organization-dev`
- `scripts/sync_prod_db_to_dev.sh` 보강
- 기본 대상 stack을 `docker-compose.8081.yml` 기준으로 사용
- sync 전에 `8081`의 `proxy/frontend/backend` 를 잠시 멈춰 deadlock / partial read 방지
- `seat_positions` portable restore 유지
- 복원 후 `members.seat_label`, `auth.users`, history backfill 재정렬
- 실행 후 주요 테이블/seat 정합성 수치 자동 출력
- 실제 검증
- `./scripts/sync_prod_db_to_dev.sh minimal` 실행 완료
- 출력 결과
- `members=227`
- `member_retirements=9`
- `seat_maps=21`
- `seat_slots=57308`
- `seat_positions=0`
- `seat_positions_without_slot=0`
- `members_with_seat_label=0`
- `seat_label_mismatch=0`
- `auth_users=228`
현재 판단:
- 이 절차는 이제 8081 검증 전 표준 절차로 사용할 수 있는 상태다.
- 이후 `analysis`, `full` 범위는 같은 구조로 확장해서 사용하면 된다.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
문제
작업용
8081DB를 공개용8080기준으로 맞추는 절차가 현재 안정적이지 않습니다.실제 확인된 문제:
seat_positions스키마 차이로 중간 실패 가능members.seat_label과 실제seat_positions가 어긋난 상태가 발생 가능배경
현재 운영 방식은
8080: 운영 기준 데이터8081: 기능 검증용이므로, 작업용 DB는 반복 가능하고 신뢰 가능한 방식으로 공개용 기준에 맞춰져야 합니다.
해야 할 일
members.seat_label같은 파생 필드는 원본 기준으로 재생성완료 조건
2026-03-30 정리
작업용 DB 동기화 절차를 현재 8081 운영 방식 기준으로 다시 고정했습니다.
반영 내용:
docker-compose.8081.yml추가8081작업용 stack을 repo 안에서 바로 올릴 수 있게 정리mh-dashboard-organization-devscripts/sync_prod_db_to_dev.sh보강docker-compose.8081.yml기준으로 사용8081의proxy/frontend/backend를 잠시 멈춰 deadlock / partial read 방지seat_positionsportable restore 유지members.seat_label,auth.users, history backfill 재정렬./scripts/sync_prod_db_to_dev.sh minimal실행 완료members=227member_retirements=9seat_maps=21seat_slots=57308seat_positions=0seat_positions_without_slot=0members_with_seat_label=0seat_label_mismatch=0auth_users=228현재 판단:
analysis,full범위는 같은 구조로 확장해서 사용하면 된다.