VOICE_CHAT_ROOM_수다방 implementation progress 2026-05-23
- 문서 작성자: 덱스PM
- 문서 오너: 덱스PM
- 작성일: 2026-05-23
- 상태: In Progress
오늘 구현한 1차 완결 단위
오늘은 완벽한 Agora 음성 통합까지 욕심내지 않고, 수다방 Task를 실제 제품 루프로 전진시키는 1차 완결 단위를 우선 닫았다.
범위
- Flutter
mmx_player진입점에서 수다방 로비 진입 추가 - 수다방 로비 화면 추가
- 수다방 방 생성 UI 추가
- 수다방 방 입장 UI 추가
- 수다방 방 내부 텍스트 채팅 UI 추가
- 앱 서버에 수다방 전용 room/message API 추가
- 음성 연동은 Agora 연결 슬롯을 남겨 다음 단계로 분리
서버 구현
신규 테이블:
voice_chat_roomsvoice_chat_messages
신규 API:
GET /voice-chat/roomsPOST /voice-chat/roomsPOST /voice-chat/rooms/{roomCode}/joinGET /voice-chat/rooms/{roomCode}/messagesPOST /voice-chat/rooms/{roomCode}/messages
현재 정책:
- 비밀번호 방 지원
- 정원 제한 지원
- 입장 시 시스템 메시지 기록
- 채팅 전송 시 room updated timestamp 갱신
Flutter 구현
신규 화면/서비스:
voice_chat_lobby_screen.dartvoice_chat_room_screen.dartvoice_chat_service.dart
현재 사용자 루프:
- 홈에서 수다방 닉네임 입력
- 수다방 로비 진입
- 방 목록 조회
- 방 생성
- 비밀번호 방 포함 입장
- 방 내부 텍스트 채팅 송수신
- 음성 영역은 Agora 연결 예정 슬롯으로 노출
검증 결과
API
- Alembic migration 적용 성공
alembic checkclean 유지
Flutter
flutter pub get성공flutter analyze통과flutter build windows는 현재 Linux/WSL 작업 호스트 제약으로 직접 실행 불가
이번 단계에서 의도적으로 미룬 것
- Agora App ID / token-server 실연동
- active speaker 표시
- 실시간 push 기반 메시지 동기화
- 참여자 presence 정교화
- Android 이식
PM 판단
오늘은 수다방을 "문서만 있는 Task"에서 "실제 앱 루프와 서버 API가 붙은 Task"로 전진시키는 것이 우선이었다. 그래서 음성 엔진까지 한 번에 다 넣기보다, 방/채팅/입장 흐름을 먼저 닫고 Agora는 다음 구현 웨이브에 꽂을 수 있게 자리부터 만들었다.
이 판단은 완벽성보다 완결성을 우선한 선택이다.