--- name: products-calls description: 음성/화상 통화 기능 type: core --- # Products/Calls Domain ## 목적 / 책임 음성/화상 통화 기능을 담당한다. 통화 연결, 상태 관리, UI를 처리한다. ## 포함 경로 - `app/products/calls/` (전체) - `app/products/calls/actions/` - `app/products/calls/client/rest.ts` - `app/products/calls/components/` - `app/products/calls/constants.ts` - `app/products/calls/hooks/` - `app/products/calls/screens/` - `app/products/calls/store/` - `app/products/calls/types/` ## 제외 경로 - `app/products/agents/` (agents 도메인) - `app/products/playbooks/` (playbooks 도메인) ## 주요 구성 요소 - **Call Connection**: WebRTC 기반 통화 연결 관리 - **Call State**: Ephemeral store로 통화 상태 관리 - **Client (ClientMix)**: `app/products/calls/client/rest.ts` ## 유지할 패턴 - **ClientMix 패턴**: API 호출은 `client/rest.ts` 내에서만 수행 - **Ephemeral Store**: 통화 상태는 ephemeral store로 관리 (DB 아님) ## 다른 도메인과의 경계 - **messaging 도메인**: 채널 정보는 messaging 도메인 쿼리 사용 - **network 도메인**: ClientMix를 통해 NetworkManager와 연결 ## 금지 사항 - action 파일에서 직접 `client.doFetch()` 호출