MMX Beta Project Documents 계획, 근거, 댓글이 같은 기록으로 남는 작업 저장소

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_rooms
  • voice_chat_messages

신규 API:

  • GET /voice-chat/rooms
  • POST /voice-chat/rooms
  • POST /voice-chat/rooms/{roomCode}/join
  • GET /voice-chat/rooms/{roomCode}/messages
  • POST /voice-chat/rooms/{roomCode}/messages

현재 정책:

  • 비밀번호 방 지원
  • 정원 제한 지원
  • 입장 시 시스템 메시지 기록
  • 채팅 전송 시 room updated timestamp 갱신

Flutter 구현

신규 화면/서비스:

  • voice_chat_lobby_screen.dart
  • voice_chat_room_screen.dart
  • voice_chat_service.dart

현재 사용자 루프:

  1. 홈에서 수다방 닉네임 입력
  2. 수다방 로비 진입
  3. 방 목록 조회
  4. 방 생성
  5. 비밀번호 방 포함 입장
  6. 방 내부 텍스트 채팅 송수신
  7. 음성 영역은 Agora 연결 예정 슬롯으로 노출

검증 결과

API

  • Alembic migration 적용 성공
  • alembic check clean 유지

Flutter

  • flutter pub get 성공
  • flutter analyze 통과
  • flutter build windows는 현재 Linux/WSL 작업 호스트 제약으로 직접 실행 불가

이번 단계에서 의도적으로 미룬 것

  1. Agora App ID / token-server 실연동
  2. active speaker 표시
  3. 실시간 push 기반 메시지 동기화
  4. 참여자 presence 정교화
  5. Android 이식

PM 판단

오늘은 수다방을 "문서만 있는 Task"에서 "실제 앱 루프와 서버 API가 붙은 Task"로 전진시키는 것이 우선이었다. 그래서 음성 엔진까지 한 번에 다 넣기보다, 방/채팅/입장 흐름을 먼저 닫고 Agora는 다음 구현 웨이브에 꽂을 수 있게 자리부터 만들었다.

이 판단은 완벽성보다 완결성을 우선한 선택이다.

댓글