[P0] [버그] 자리배치도 회귀 오류: 상세 프로필 seat preview, 비관리자 진입 화면, 관리자 DnD 배치 미동작 #11

Closed
opened 2026-03-27 18:05:25 +09:00 by hyunho · 2 comments
Owner

현상

이전에는 정상 동작하던 자리배치도 기능이 현재 작업용 환경에서 회귀한 상태입니다. 아래 3가지 오류가 모두 재현되며, 아직 해결되지 않았습니다.

오류 1. 조직현황 비관리자 모드 상세 프로필의 재석위치 preview 오류

  • 조직현황 비관리자 모드에서 대상 인원을 클릭하면 재석위치 영역에 해당 인원의 자리로 줌인된 seat preview가 보여야 함
  • 현재는 seat preview 대신 오류 응답이 그대로 노출됨
  • 확인된 예시 응답:
    • {"detail":"Seat map not found."}

오류 2. 조직현황 비관리자 모드에서 + 버튼으로 자리배치도 진입 시 메인 화면 비정상

  • 조직현황 비관리자 모드에서 우측 하단 + 버튼으로 자리배치도를 열면
    • 자리배치도 메인 화면
    • 배치 인원 목록
    • seat viewer
      가 정상적으로 보여야 함
  • 현재는 빈 화면에 가까운 비정상 상태로 열림
  • 메인 seatmap viewer / 배치 인원 표시가 기대대로 나오지 않음

오류 3. 관리자 자리배치도에서 미배치 인원 드래그앤드롭 미동작

  • 관리자 모드 자리배치도에서 미배치 인원을 드래그해서 메인 화면의 chair에 드롭하면
    • 해당 chair 위치에 인원이 즉시 반영되어야 함
  • 현재는 드래그앤드롭 후 아무 변화가 없음
  • 정상 동작 기준:
    • 드롭 즉시 chair 경로에 대상 인원이 표시되어야 함
    • 이후 저장 시 seat assignment가 반영되어야 함

기대 동작

  1. 상세 프로필 재석위치에서 대상 인원의 seat preview가 정상 표시될 것
  2. 비관리자 자리배치도 진입 시 메인 seatmap / 배치 인원 UI가 정상 표시될 것
  3. 관리자 자리배치도에서 미배치 인원 DnD가 즉시 반영될 것

비고

  • 세 오류 모두 '원래 되던 기능이 현재 안 되는' 회귀 성격의 문제임
  • 자리배치도 기능 전체 검증 시 우선 확인 필요
  • 공개용/작업용 DB 차이와 무관하게, 최종적으로 사용자 관점에서 위 3개 증상이 모두 없어져야 완료로 판단 가능
## 현상 이전에는 정상 동작하던 자리배치도 기능이 현재 작업용 환경에서 회귀한 상태입니다. 아래 3가지 오류가 모두 재현되며, 아직 해결되지 않았습니다. ## 오류 1. 조직현황 비관리자 모드 상세 프로필의 재석위치 preview 오류 - 조직현황 비관리자 모드에서 대상 인원을 클릭하면 `재석위치` 영역에 해당 인원의 자리로 줌인된 seat preview가 보여야 함 - 현재는 seat preview 대신 오류 응답이 그대로 노출됨 - 확인된 예시 응답: - `{"detail":"Seat map not found."}` ## 오류 2. 조직현황 비관리자 모드에서 `+` 버튼으로 자리배치도 진입 시 메인 화면 비정상 - 조직현황 비관리자 모드에서 우측 하단 `+` 버튼으로 자리배치도를 열면 - 자리배치도 메인 화면 - 배치 인원 목록 - seat viewer 가 정상적으로 보여야 함 - 현재는 빈 화면에 가까운 비정상 상태로 열림 - 메인 seatmap viewer / 배치 인원 표시가 기대대로 나오지 않음 ## 오류 3. 관리자 자리배치도에서 미배치 인원 드래그앤드롭 미동작 - 관리자 모드 자리배치도에서 미배치 인원을 드래그해서 메인 화면의 `chair`에 드롭하면 - 해당 chair 위치에 인원이 즉시 반영되어야 함 - 현재는 드래그앤드롭 후 아무 변화가 없음 - 정상 동작 기준: - 드롭 즉시 chair 경로에 대상 인원이 표시되어야 함 - 이후 저장 시 seat assignment가 반영되어야 함 ## 기대 동작 1. 상세 프로필 `재석위치`에서 대상 인원의 seat preview가 정상 표시될 것 2. 비관리자 자리배치도 진입 시 메인 seatmap / 배치 인원 UI가 정상 표시될 것 3. 관리자 자리배치도에서 미배치 인원 DnD가 즉시 반영될 것 ## 비고 - 세 오류 모두 '원래 되던 기능이 현재 안 되는' 회귀 성격의 문제임 - 자리배치도 기능 전체 검증 시 우선 확인 필요 - 공개용/작업용 DB 차이와 무관하게, 최종적으로 사용자 관점에서 위 3개 증상이 모두 없어져야 완료로 판단 가능
Author
Owner

진행 메모 업데이트

현재까지 확인한 내용:

  1. 재현 상태
  • 이슈 본문에 적은 3가지 증상은 작업 중에도 계속 재현됨
  • 즉, 임시 수정 이후에도 최종 사용자 기준으로는 해결 완료 상태가 아님
  1. 확인된 DB 문제
  • 작업용/공개용 DB 차이로 인해 원인 분석이 크게 흔들렸음
  • 특히 한 시점에 작업용 DB는 아래처럼 깨진 상태였음
    • members.seat_label 값은 남아 있음
    • 실제 seat_positions 는 비어 있음
  • 이 상태에서는 상세 프로필 seat preview, 비관리자 seatmap 진입, 관리자 편집 검증 결과가 모두 왜곡될 수 있음
  1. 공개용/작업용 DB 정리 조치
  • 요청 기준으로 공개용 DB의 seat_positions 를 전부 비움
  • 공개용 DB의 members.seat_label 도 전부 빈 값으로 정리함
  • 이후 작업용 DB를 공개용 기준으로 다시 맞춤
  • 현재 기준 양쪽 공통 상태
    • seat_positions = 0
    • members.seat_label != '' 인원 수 = 0
  • 주요 테이블 수량도 공개용/작업용 간 다시 맞춘 상태
  1. 구조적으로 확인된 문제
  • 공개용과 작업용의 seat_positions 스키마가 다름
  • 공개용 seat_positions 에는 x, y, floor_label 컬럼이 있고, 작업용 현재 스키마에는 없음
  • 이 차이 때문에 기존 동기화 스크립트가 중간에 실패하거나, 일부 테이블만 복원된 채 멈출 수 있음
  • 즉, 현재 DB 동기화 절차 자체가 안정적이지 않음
  1. 프론트/화면 쪽 확인 사항
  • 상세 프로필 seat preview 쪽에서는 실제 배치 정보를 못 찾았을 때도 members.seat_label 문자열만 보고 /api/seat-maps/0/viewer 를 여는 fallback 버그가 확인되었음
  • 이 경우 화면에 {"detail":"Seat map not found."} 가 그대로 노출될 수 있음
  • 관리자 DnD 경로도 어제 버전 방식으로 되돌려 보았지만, 최종 사용자 기준에서는 여전히 정상 동작 확인이 안 됨
  1. 현재 판단
  • 이번 문제는 단일 프론트 버그 1건이 아니라
    • DB 정합성 문제
    • DB 스키마 차이 문제
    • seat preview fallback 버그
    • seatmap 편집/진입 회귀
      가 섞인 상태로 보는 것이 맞음

남은 작업 후보:

  • seat_positions 스키마 차이 정리 또는 호환 레이어 추가
  • 작업용 DB 동기화 스크립트 안정화
  • 비관리자 상세 seat preview / 비관리자 seatmap 진입 / 관리자 DnD를 공개용 기준 데이터 상태에서 재검증
  • 재현 기준을 기술개발센터 / 6층 / 7층별로 분리해서 확인
진행 메모 업데이트 현재까지 확인한 내용: 1. 재현 상태 - 이슈 본문에 적은 3가지 증상은 작업 중에도 계속 재현됨 - 즉, 임시 수정 이후에도 최종 사용자 기준으로는 해결 완료 상태가 아님 2. 확인된 DB 문제 - 작업용/공개용 DB 차이로 인해 원인 분석이 크게 흔들렸음 - 특히 한 시점에 작업용 DB는 아래처럼 깨진 상태였음 - `members.seat_label` 값은 남아 있음 - 실제 `seat_positions` 는 비어 있음 - 이 상태에서는 상세 프로필 seat preview, 비관리자 seatmap 진입, 관리자 편집 검증 결과가 모두 왜곡될 수 있음 3. 공개용/작업용 DB 정리 조치 - 요청 기준으로 공개용 DB의 `seat_positions` 를 전부 비움 - 공개용 DB의 `members.seat_label` 도 전부 빈 값으로 정리함 - 이후 작업용 DB를 공개용 기준으로 다시 맞춤 - 현재 기준 양쪽 공통 상태 - `seat_positions = 0` - `members.seat_label != ''` 인원 수 = 0 - 주요 테이블 수량도 공개용/작업용 간 다시 맞춘 상태 4. 구조적으로 확인된 문제 - 공개용과 작업용의 `seat_positions` 스키마가 다름 - 공개용 `seat_positions` 에는 `x`, `y`, `floor_label` 컬럼이 있고, 작업용 현재 스키마에는 없음 - 이 차이 때문에 기존 동기화 스크립트가 중간에 실패하거나, 일부 테이블만 복원된 채 멈출 수 있음 - 즉, 현재 DB 동기화 절차 자체가 안정적이지 않음 5. 프론트/화면 쪽 확인 사항 - 상세 프로필 seat preview 쪽에서는 실제 배치 정보를 못 찾았을 때도 `members.seat_label` 문자열만 보고 `/api/seat-maps/0/viewer` 를 여는 fallback 버그가 확인되었음 - 이 경우 화면에 `{"detail":"Seat map not found."}` 가 그대로 노출될 수 있음 - 관리자 DnD 경로도 어제 버전 방식으로 되돌려 보았지만, 최종 사용자 기준에서는 여전히 정상 동작 확인이 안 됨 6. 현재 판단 - 이번 문제는 단일 프론트 버그 1건이 아니라 - DB 정합성 문제 - DB 스키마 차이 문제 - seat preview fallback 버그 - seatmap 편집/진입 회귀 가 섞인 상태로 보는 것이 맞음 남은 작업 후보: - `seat_positions` 스키마 차이 정리 또는 호환 레이어 추가 - 작업용 DB 동기화 스크립트 안정화 - 비관리자 상세 seat preview / 비관리자 seatmap 진입 / 관리자 DnD를 공개용 기준 데이터 상태에서 재검증 - 재현 기준을 기술개발센터 / 6층 / 7층별로 분리해서 확인
Author
Owner

2026-03-30 확인 메모

지난 세션 마지막에 8081 기준으로 아래 3가지를 다시 확인했고 정상 동작으로 판단했습니다.

  • 조직현황 상세 프로필 재석위치 seat preview 정상 표시
  • 비관리자 seatmap 진입 시 메인 viewer / 배치 인원 표시 정상
  • 관리자 seatmap 미배치 인원 DnD 및 저장 정상

이번에 코드도 다시 점검했습니다.

확인한 포인트:

  • legacy/static/organization.js
    • seat preview가 더 이상 members.seat_label 문자열 fallback으로 잘못된 seat map id를 열지 않음
    • 3개 office_key 기준으로 active layout을 조회하고, 실제 placement + slot 기준으로 preview를 구성함
  • backend/app/main.py
    • slot 기반 저장 시 seat_slot_id / seat_label 동기화 경로가 일관됨
    • 저장 후 members.seat_label 동기화도 유지됨
    • fixed office active 조회도 office_key 기준으로 분리되어 있음
  • frontend/public/app.js
    • 메인 seatmap도 office_key 기준 active map을 읽는 구조로 정리되어 있음

현재 판단:

  • 이 이슈 본문에 적힌 3개 회귀 증상은 해결된 상태로 본다.
  • 남은 seatmap 작업은 회귀 수정이 아니라 #3, #7, #8 같은 고도화/UX 범위로 분리하는 것이 맞다.

주의:

  • 오늘은 코드 재점검 + 지난 세션의 실제 수동 검증 결과를 기준으로 판단했다.
  • DB sync 절차와 seat_positions 스키마 정리는 별도 이슈 #12, #13 범위로 계속 관리한다.
2026-03-30 확인 메모 지난 세션 마지막에 `8081` 기준으로 아래 3가지를 다시 확인했고 정상 동작으로 판단했습니다. - 조직현황 상세 프로필 `재석위치` seat preview 정상 표시 - 비관리자 seatmap 진입 시 메인 viewer / 배치 인원 표시 정상 - 관리자 seatmap 미배치 인원 DnD 및 저장 정상 이번에 코드도 다시 점검했습니다. 확인한 포인트: - `legacy/static/organization.js` - seat preview가 더 이상 `members.seat_label` 문자열 fallback으로 잘못된 seat map id를 열지 않음 - 3개 `office_key` 기준으로 active layout을 조회하고, 실제 placement + slot 기준으로 preview를 구성함 - `backend/app/main.py` - slot 기반 저장 시 `seat_slot_id` / `seat_label` 동기화 경로가 일관됨 - 저장 후 `members.seat_label` 동기화도 유지됨 - fixed office active 조회도 `office_key` 기준으로 분리되어 있음 - `frontend/public/app.js` - 메인 seatmap도 `office_key` 기준 active map을 읽는 구조로 정리되어 있음 현재 판단: - 이 이슈 본문에 적힌 3개 회귀 증상은 해결된 상태로 본다. - 남은 seatmap 작업은 회귀 수정이 아니라 `#3`, `#7`, `#8` 같은 고도화/UX 범위로 분리하는 것이 맞다. 주의: - 오늘은 코드 재점검 + 지난 세션의 실제 수동 검증 결과를 기준으로 판단했다. - DB sync 절차와 seat_positions 스키마 정리는 별도 이슈 `#12`, `#13` 범위로 계속 관리한다.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: hyunho/MH-DashBoard-organization#11