-
Notifications
You must be signed in to change notification settings - Fork 3
08 11
dlsnfl0615 edited this page Aug 12, 2026
·
1 revision
📄 원본(노션): https://app.notion.com/p/3b919935b8ae80af89b8f859c090a322 — 최종 동기화 2026-08-12
회의 날짜: 2026-08-11
- 오전에 마무리
- 자체 데모데이
- 전부 merge
- 의도했던 것 중에서 뺄 거 결정하기 (기능명세 확인)
- ex) 고객센터
- 데모 하면서 수정할 거 다 잡기
- 할일 다 이슈화
-
동혁
- 매칭 보완
- conflict 풀었음
- 아직 버그 존재해서 아침에 버그 잡기
- 수강신청
-
석희
- 매칭 테스트 툴 정리해서 PR로 올리기 + 외부 API 종속된 것 추상화 작업
- 구현된 것 확인하면서 부족한 API 구현하기
-
현성
- SSE 안정화 완료
- 여러 가지 상황 시나리오 테스트
- 고칠 것
- 시작
- 드리미가 수락 팝업에서 수락 안 누름
- 옆에서 다른 탭 켜서 홈페이지 이동만 해도 팝업이 뜸. 근데 로그인 페이지는 또 활성화가 됨 → 로그인 페이지는 로그인했을 때 안 가지게
- 사소한 것들 다 수정
-
현서
- K6 스크립트 작성
- 드리미 관리자 페이지
계정 목록
| 구분 | 이메일 | 인원 |
|---|---|---|
| 부르미 |
boormi1@test.test ~ boormi100@test.test
|
100명 |
| 드리미 |
dreami1@test.test ~ dreami100@test.test
|
100명 (전원 DREAMI 테이블에도 등록, request_cd = APPROVED) |
-
이메일: 위 표의
boormiN@test.test/dreamiN@test.test -
비밀번호:
string(전 계정 공통)
세 계정만 실제 주문/정산 내역이 있고, 나머지 197개는 계정+지갑만 있고 주문 내역은 없습니다.
-
dreami1@test.test— 드리미(수행자)로서 완료 주문 10건, 2025-11~2026-08 한 달에 한 건씩. 요청자는 전부boormi2고정. -
boormi1@test.test— 부르미이면서 동시에 드리미이기도 한 겸업 계정입니다(DREAMI 테이블에도 별도로 등록됨). 두 가지 역할을 다 갖고 있습니다:-
부르미(요청자)로서 완료 주문 3건 — 수행자는
dreami2 -
드리미(수행자)로서 완료 주문 3건 — 요청자는
boormi3
-
부르미(요청자)로서 완료 주문 3건 — 수행자는
-
dreami2@test.test—boormi1이 요청한 위 3건을 수행한 드리미라, 드리미로서 완료 주문 3건이 있습니다.
액션 ↔ 큐 의도한 수도코드 (3초 주기)
"평소에는 큐에 들어오는 노드를 지체 없이 즉시 꺼내서 계속 처리하되, 3초 주기가 되면 노드 처리를 잠시 멈추고(동기화) 주기적 액션을 우선 수행해야 한다"는 요구사항이군요.
import java.util.concurrent.*;
public class PriorityNodeProcessor {
private final BlockingQueue<Node> queue = new LinkedBlockingQueue<>();
private volatile boolean running = true;
public void start() {
new Thread(() -> {
long lastPeriodicTime = System.currentTimeMillis();
while (running) {
long now = System.currentTimeMillis();
long elapsedTime = now - lastPeriodicTime;
// 1. 3초 이상 지났다면 주기적 액션을 우선 수행 (노드 꺼내기 자연스럽게 차단)
if (elapsedTime >= 3000) {
executePeriodicAction();
lastPeriodicTime = System.currentTimeMillis(); // 타이머 리셋
continue;
}
// 2. 다음 3초 주기까지 남은 시간 계산
long waitTime = 3000 - elapsedTime;
try {
// 남은 시간 동안만 큐를 대기하며 노드가 들어오면 즉시 꺼내서 수행
Node node = queue.poll(waitTime, TimeUnit.MILLISECONDS);
if (node != null) {
executeNodeAction(node); // 노드 액션 즉시 수행
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
}).start();
}
private void executeNodeAction(Node node) { /* 일반 노드 수행 */ }
private void executePeriodicAction() { /* 3초 주기 액션 수행 */ }
}- #323 드리미 지도 화면에서 "드리미", "픽업지" 등 라벨 붙이기
- #312 DB 쿼리 부하테스트 스크립트 작성하고 어떤 쿼리가 병목인지
- #331 배달 끝내고 활동 내역 볼 때에도 사진 연결하기 (등록한 물품 사진, 픽업 인증 사진, 배달 인증사진)
- #346 배달 완료페이지 일단 실제 리뷰 연결은 좀 나중에 하더라도, 적어도 물품 유형이랑 담당 드리미랑 소요 시간이랑 금액이랑 이런 건 맞춰야 함 > 🖼️ (첨부 이미지는 노션 참조 — 서명 URL이 만료되어 위키에는 옮기지 않음)
- #348 별점 동기화? 되어있는지 확인만 > 🖼️ (첨부 이미지는 노션 참조 — 서명 URL이 만료되어 위키에는 옮기지 않음) > (하위에 작성자가 "절대 위키에 올리지 말라"고 표시한 부하테스트 디버깅 로그가 있어 위키에서는 제외했습니다. 원본은 노션에서 확인하세요.)
- 배달 완료 후 실제 정산 로직 없음
- 부르미 메인 화면에서 총이용, 절감금액
- 부르미 배달 완료 후 드리미에게 리뷰 달기
- 부르미 지도 및 본인위치 주소로 띄워서 보여주기
- 부르미 화면에서 현재 위치칸 OfficeHub로 나오는 거 제거
-
부르미 메인 - 절감 금액 mock에서 교체 - 부르미 콜 등록 결제 화면에서 실제 데이터가 아님
- 부르미 화면에서 부름 등록(결제화면)에서 항상 12,400P로 표시됨 (보유포인트만 문제인 듯)
-
#350 GPS 관련 개선점 / 지도 개선
- #338 드리미는 드리미 시작하려면 GPS 권한 미리 점검 (위치 권한이 없으면 "드리미를 시작할 수 없어요"처럼)
🖼️ (첨부 이미지는 노션 참조 — 서명 URL이 만료되어 위키에는 옮기지 않음)
- #336
- 시나리오 대응 필요
- 시나리오1 : 배달(또는 픽업) 중간에 GPS 권한을 끊어버리는 경우
- 시나리오2 : 드리미가 그냥 브라우저를 닫거나 인터넷이 끊긴 경우
- 시나리오3 : 오히려 부르미가 인터넷이 끊겨버린 경우에 드리미가 연결이 끊긴 것으로 오해하면 안 됨
- 드리미 GPS 중간에 꺼지면 부르미도 인지할 수 있어야 할 듯? (부르미가 보는 화면: "드리미가 연결되지 않아요", 알림으로만, 모달X) → 이걸 띄우는 조건을 어떻게 할 것인가? → 예를 들어 클라이언트 단에서 N초 이상 SSE로 location 정보를 못 받은 경우? (이렇게 하면 재접속 상황에서는?) → 또는 오히려 부르미가 끊긴 건데 이걸 드리미가 끊긴 걸로 오해?
- (지금은 따로 부르미는 인지 못하다가 재접속하면 순간이동함)
- 시나리오 대응 필요
- #339 픽업지 또는 배달 완료 위치가 GPS 오차가 발생하면 클라이언트 단에서 단순히 경고 체크 메시지(Yes/No Dialog) — (배민에서도 음식 받고자 하는 위치가 지금 현재 사용자의 위치와 많이 다르면 주소 맞는지 확인 요청하는 것처럼) ⇒ 이걸로 결정함. 구현하기
- (선택) Dreami 위치 지도에 갱신할 때 이동 자연스럽게 연결 ⇒ 무조건 클라이언트에서 보정 ⇒ GPS 클라이언트 자체 보정은 부르미도 동일하게 하면 될 듯 ⇒ 특히 제일 중요한 건 가만히 있을 때 보정
- "부르미 찾는 중"에서 지도에 실시간으로 나타날 때 자연스럽게
- #338 드리미는 드리미 시작하려면 GPS 권한 미리 점검 (위치 권한이 없으면 "드리미를 시작할 수 없어요"처럼)
-
FCM 및 알람
- #334 FCM 알림 구현 (+ 시간 되면 문자 메시지도 (선택))
-
팝업 관련 수정할 것
- 동혁님 #258 끝나면 진행 330번까지 실수로... 해버림
- #330 드리미가 수락을 안 해서 타임아웃 걸린 경우에 알림이 안 내려감 ⇒ 심지어 몇 분 지난 콜을 잡아도 오류 메시지도 안 뜸.. (부르미도 부르미가 팝업 수락 안 하면 내려가는지 확인 필요)
- #342 팝업 화면 개선. 팝업 내려올 때 위에서 컴포넌트들 부자연스럽게 밀리는 듯(갤럭시 웹앱 + mac chrome 기준) + 팝업 사용하는 부분들 하나로 일관성 있게 공통 모듈로 + 애니메이션 자연스럽게 ⇒ "부르미 찾기" 부분은 자연스럽게 잘 되어있어서 참고하기
- 픽업완료 사진 부르미에게 전달 필요 ⇒ 새로운 팝업 만들긴 해야 될 듯 ⇒ 근데 여기서 알림 유실되면?
-
#333 백엔드 기타
- assignDreamiTest() 삭제
- DeliveryTestController에 @Profile("local") 주석 해제하기
- #335 (백엔드) 배송 완료 시간 대충 +5분정도 보정 (엘레베이터나 등등)
-
기타 간단한 거 여러 가지
- (선택) 다른 브라우저나 디바이스에서 로그인되면 로그아웃 될 때 메시지 출력
- 없는 페이지로 들어올 때 홈으로 리다이렉트
- 현금화 계좌를 등록해주세요 ⇒ 이거 mock? 아니면 실제로 구현?
🖼️ (첨부 이미지는 노션 참조 — 서명 URL이 만료되어 위키에는 옮기지 않음)
- #337 지금 결제하고 나서 부름등록 화면으로 초기화 되어버림 ⇒ 포인트가 부족해도 마찬가지.
- #340 프론트엔드 - PICKUP_DELAYED / PARTNER_HANDOFF_PENDING / TRANSFERRED_TO_PARTNER / RETURNING 상태에 대한 분기 처리 (#268)
- #327 "수익 페이지"에서는 수익이 보이는데, 메인페이지의 드리미 탭에서는 오늘의 수익이 안 보임
- 로고 비어있는 부분 수정
- 활동에서 취소 아이콘(취소상태) 이거 색깔 회색으로 바꾸기. 클릭 가능할 것처럼 보임
완료 #344 — 디자인 수정 부분
- #341 드리미측 매칭 팝업에서 "새로운 콜! #eeeed5a7"처럼 디버그 메시지 뜨는 거 제거
- #328 머니를 포인트로 전환할까요? 부분에 밑에 빈 줄 제거 (디자인)
- #343 안 쓰는 아이콘 제거 - 활동 페이지 돋보기 아이콘 제거 - 메인페이지에 우측 상단 종 아이콘 제거
- #332 대면 비대면 선택칸도 지우고, 서버에서는 비대면 고정으로
- 밴만 풀리고(시간 기준으로) 상태가 안 바뀜 → 상태 전이 오류 발생 중.
- 배달완료 한 번 했을 때 드리미가 잘 안 잡힘
- 종료 - 시작 하면 됨. cleanup이 안 되고 있었던 것 같으니까 한번 확인해보기 → 실제 원인 FE였음.
- apply cancel: 상태 검사를 하자.
- #258 현재
OfferPopupPayload는 Offer의 남은 시간을 TTL 형태로 전달합니다. 클라이언트에서 네트워크 지연과 이벤트 수신 시점을 고려하여 줄어드는 Progress Bar 또는 Ring을 정확하게 표시하려면, 상대적인 TTL보다 서버 기준의 절대 마감 시간이 필요합니다. - #329 부르미 매칭 팝업에서 - 픽업까지 ~~ 분 부분 채우기 - 거절 N건이랑 별점.
- 매칭은 설명할 때 제대로 설명해야 됨. 처음 듣는 사람 입장에서 이해하기가 매우 어려울 수 있음
-
석희
- 부하테스트(매칭) 작업 중 → 숨겨진 오류 찾아서 위키에 정리해야 함
- 모니터링 있던 거 인스턴스 옮김
- 프론트 간단한 설정함
- 미구현된 기능(4개 정도) 빨리 쳐내보겠습니다.
-
동혁
- 매칭 부분이 어제 거의 완성 안 되어있어서 아침 스크럼 부분이 많았음
- PR 리뷰 읽고 다른 분들 테스트 하는 걸 오늘 많이 했던 것 같습니다
- 부하테스트 로그 읽어보고 매칭 수정 돌아가서 진행할 예정
-
현성
- 프론트엔드 거의 함
- 드리미측 매칭 팝업에서 "새로운 콜! #eeeed5a7"처럼 디버그 메시지 뜨는 거 제거
- 머니를 포인트로 전환할까요? 부분에 밑에 빈 줄 제거 (디자인)
- 안 쓰는 아이콘 제거 - 활동 페이지 돋보기 아이콘 제거, 메인페이지에 우측 상단 종 아이콘 제거
- 대면 비대면 선택칸도 지우고, 서버에서는 비대면 고정으로
- SSE 연결 재시도 팝업을 Delivery에서 사용하는 모달 형태로 변경
- 로그인이 되어 있는 상태에서 기본페이지, 로그인페이지, 회원가입 페이지로 이동 시 /home으로 리다이렉트
- 배달 중 취소 불가 에러 메시지를 명확한 문구로 수정
- 네트워크 오류 시 axios 원본 대신 한글 폴백 메시지 노출
- 배달 완료·취소 응답에 따른 리뷰 대상·종료 상태 화면 분기
- 배달 화면(픽업 이후)에서 부르미 화면에서 배달 취소하기 버튼 제거
- 드리미 시작하기 및 물품 보내기에서 흰색 빈 줄 제거
- 회원가입 할 때 포맷 자동으로 맞추게 변경
-
현서
- 부하테스트 용도의 인스턴스 허가 받기
- 부하테스트 용도의 외부 API 목 연동해서 스크립트 수정
- PR 읽고
- 드리미 관리자 페이지 이상한 거 제보받아서 수정
- 부하테스트 진행
- ddl 테스트 계정 생성
Team 3 · 석희 · 현성 · 동혁 · 현서
Softeer Bootcamp 8th · WEB Team 3 · 이 위키는 팀 노션에서 동기화됩니다 📄
🏠 시작하기
🤝 협업
📋 기획안
🧠 기술 결정 기록 (ADR)
- 세션 vs 토큰
- 세션 및 다중 탭 처리 정책
- 실시간 배달 상태 전달에 SSE를 선택한 이유
- SSE 연결은 왜 1개였다가 5개가 되고, 다시 1개가 되었을까
- 드리미 GPS 끊김 감지 정책
- Redis 기반 로그인 대기열 도입기
- 카카오 API 응답 Redis 캐시 설계
- 활동 내역 조회를 커서 기반 페이지네이션으로 진행
- 알림 - WebPush 도입 이유와 SSE의 한계
- S3 Presigned URL 도입 결정
- 포인트, 머니 시스템 설계
🕸️매칭 시스템
- 매칭 시스템 설계
- Command와 Producer Consumer를 조합한 single writer 구조의 매칭 엔진
- 제안은 누구에게 해야 할까
- 쉼, 부름의 부르미‐드리미 매칭은 어떻게 동작할까
- 배정 정책에 Greedy 배정을 선택한 이유
- 매칭 시스템 구현
🧪 부하 테스트
- 매칭 부하테스트
- 매칭 부하테스트 보고서 (8.12)
- 매칭 부하테스트 보고서 (8.13)
- 매칭 부하테스트 보고서 (8.13 · 외부 API 트랜잭션)
- 매칭 부하테스트 보고서 (8.18 · 배포환경 720명)
🔧 트러블슈팅
- UploadSession - 옛 키 재사용 공격 방어 설계
- 8/6 · EC2 SSH 접속 불가
- 8/7 · 매칭 확정 후 Delivery가 생성되지 않는 고아 Order 문제
- 8/8 · 영속성 컨텍스트 detach로 dirty checking 미반영 문제 (@Modifying(clearAutomatically = true))
- 매칭 확정 후 Delivery가 생성되지 않는 고아 Order 문제
- 매칭이 성공하지 않았음에도 Orders 테이블에 PENDING으로 상태 변경하는 문제
- 부르미 확인 타임아웃 시 주문 DB·매칭 메모리 불일치
- 주변 콜 조회 시 반복되던 주문 조회 개선
- 드리미 오프라인 조회에 필요한 복합 인덱스 추가
- 매칭 단계 취소시 포인트 이중 환불 문제
- 로컬 DevStorage 사용시 로그인 상태에서도 401 UNAUTHORIZED 뜨던 문제
🗓️ 데일리 스크럼