Skip to content

fix(stomp): 같은 계정 다른 탭에도 일정·북마크 변경을 탭 ID로 구분해 반영 - #260

Merged
minbros merged 8 commits into
fix/schedule-query-keysfrom
fix/stomp-tab-echo
Nov 8, 2026
Merged

minbros merged 8 commits into
fix/schedule-query-keysfrom
fix/stomp-tab-echo

Conversation

@KangShinGyu98

@KangShinGyu98 KangShinGyu98 commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

노션

변경 내용

  • fix(schedule): 일정 실시간 이벤트 응답 순서 보장 및 장소 목록을 서버 조회 기준으로 갱신 #250→#258의 dev 충돌 해결을 기존 스택에 반영했습니다. 탭 ID·actorUserId 반향 판정과 목적지별 경로 캐시를 유지했습니다.
  • 탭마다 탭 ID를 한 번 만들어 모듈 변수에 둡니다(randomUUID가 없는 비보안 컨텍스트는 getRandomValues로 v4). 이미 CORS preflight를 하는 PATCH·PUT·DELETE·JSON POST에만 X-Client-Tab-Id 헤더로 싣습니다.
  • 일정·북마크 STOMP 이벤트의 반향 판정을 isOwnEcho 하나로 모았습니다. originTabId가 이 탭이고 actorUserId도 나일 때만 건너뛰고, 같은 계정의 다른 탭이나 탭 ID가 없는 이벤트는 다른 사람의 변경처럼 받습니다.
  • 계정 단위 반향을 위해 두었던 SCHEDULE_ITEM_UPDATED 합류 분기와 invalidateSchedulePlanPlaces의 joinInFlight 옵션을 지웠습니다.

변경 이유

  • 계정 기준으로 본인 이벤트를 버려, 같은 계정으로 연 다른 탭·기기에 장소 추가·삭제·순서·일차 이동·이동수단·여행 날짜 변경과 북마크 변경이 반영되지 않았습니다.
  • 백엔드 PR https://github.com/uttae/backend-server/pull/220 에 의존하며 백엔드를 먼저 배포합니다. 프론트가 먼저 나가면 백엔드 배포 전까지 본인 변경마다 그 일차를 한 번 더 받습니다.

테스트

  • 충돌 해결본: 전체 테스트 217개 파일 / 1,766개 통과, lint·타입 검사·production build 통과
  • 새 head의 브라우저 검증은 미실행이며, 비활성 일차 캐시 경합은 수정하지 않았습니다.
  • npm run lint
  • npm test
  • npm run build
  • 기존 작성자 수동 검증 기록: 로컬에서 백엔드(백엔드 PR 브랜치)·프론트(이 브랜치)를 띄워 같은 계정 탭 2개·다른 계정 1개로 일정·북마크 변경 반영을 화면 확인

🤖 Generated with Claude Code

KangShinGyu98 and others added 7 commits November 6, 2026 17:02
- 탭마다 한 번 만드는 getTabId 추가(모듈 변수, randomUUID 없으면 getRandomValues로 v4)
- 이미 preflight를 하는 PATCH·PUT·DELETE·JSON POST에만 헤더를 붙임
- 백엔드가 이 값을 STOMP payload originTabId로 돌려줘 이 탭의 반향을 가려낼 수 있게 함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 이벤트 originTabId가 이 탭 ID와 같을 때만 반향으로 보고 건너뜀(isOwnEcho)
- originTabId가 없는 옛 이벤트는 지금처럼 actorUserId로 판정해 배포 순서와 무관
- SCHEDULE_ITEM_UPDATED: 이 탭 반향은 건너뛰고, 다른 탭 변경은 진행 중인 조회에 합류하지 않고 다시 받음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- bookmarks 이벤트도 isOwnEcho로 판정(originTabId 같을 때만 건너뜀, 없으면 actorUserId)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- isOwnEcho는 originTabId가 이 탭 ID와 같을 때만 반향으로 판정(계정 판정 제거)
- 탭 ID를 못 만든 탭의 변경도 같은 계정의 다른 탭이 놓치지 않게 함
- SCHEDULE_ITEM_UPDATED의 본인 반향 합류(joinInFlight) 분기 제거

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- case마다 반복하던 isOwnEcho를 한 번만 둬 새 이벤트 종류에서 빠뜨리지 않게 함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 반향은 originTabId가 이 탭이고 actorUserId도 나일 때만으로 판정
- 탭 ID는 방 멤버 모두에게 보이므로 서버가 인증으로 정한 actorUserId를 함께 봄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
frontend-server Ready Ready Preview Nov 8, 2026 11:13am UTC

Request Review

- 검증된 경로 캐시 부모 브랜치 병합
- 탭별 본인 변경 반향 처리와 시간 보존 동작 유지
@sonarqubecloud

sonarqubecloud Bot commented Nov 8, 2026

Copy link
Copy Markdown

@minbros
minbros merged commit 847cccb into fix/schedule-query-keys Nov 8, 2026
3 checks passed

This branch was successfully deployed

1 active deployment
Preview — 1be94fa1 Deployed Nov 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants