@@ -140,8 +140,28 @@ function RecommendContent() {
140140 router . back ( ) ;
141141 } ;
142142
143- const handleOpenKakaoMap = ( e : React . MouseEvent , placeUrl ?: string ) => {
143+ const handleOpenKakaoMap = (
144+ e : React . MouseEvent ,
145+ placeUrl ?: string ,
146+ place ?: ( typeof places ) [ 0 ]
147+ ) => {
144148 e . stopPropagation ( ) ;
149+
150+ // 카카오맵에서 보기 클릭 시 GA 전송 (external_map_opened)
151+ if ( typeof window !== 'undefined' && meetingId && place ) {
152+ const browserId = localStorage . getItem ( 'browser_id' ) ;
153+ const isHost = localStorage . getItem ( `is_host_${ meetingId } ` ) === 'true' ;
154+ const userRole = isHost ? 'host' : 'participant' ;
155+ const candidateId = `place_${ String ( place . id ) . padStart ( 2 , '0' ) } ` ;
156+
157+ sendGAEvent ( 'event' , 'external_map_opened' , {
158+ meeting_url_id : meetingId ,
159+ user_cookie_id : browserId ,
160+ role : userRole ,
161+ candidate_id : candidateId ,
162+ } ) ;
163+ }
164+
145165 if ( placeUrl ) {
146166 window . open ( placeUrl , '_blank' , 'noopener,noreferrer' ) ;
147167 } else {
@@ -262,7 +282,7 @@ function RecommendContent() {
262282 { /* 하단 버튼은 조건부 렌더링 */ }
263283 { selectedPlaceId === place . id ? (
264284 < button
265- onClick = { ( e ) => handleOpenKakaoMap ( e , place . placeUrl ) }
285+ onClick = { ( e ) => handleOpenKakaoMap ( e , place . placeUrl , place ) }
266286 className = "bg-gray-8 w-full rounded py-2 text-[15px] text-white"
267287 >
268288 카카오맵에서 보기
0 commit comments