Skip to content

[Feat] Firebase Analytics 지표 유실을 바로잡고 기능별 수요와 사용 방식을 남긴다 - #277

Merged
KiSeungMin merged 10 commits into
developfrom
feat/275-analytics-fix
Sep 21, 2026
Merged

KiSeungMin merged 10 commits into
developfrom
feat/275-analytics-fix

Conversation

@KiSeungMin

Copy link
Copy Markdown
Contributor

✔️ 연관 이슈

📝 작업 내용

Firebase Analytics 에 들어오던 지표가 일부는 버려지고 일부는 실패까지 세고 있어서, 새 기능과 개선을 판단할 수 있는 지표를 새 기능 말고는 다시 손대지 않아도 되게 한 번에 정리했습니다.

  • 버려지던 이벤트 복구: 40자를 넘는 이름 3개는 Firebase 가 에러 없이 버려서 한 번도 콘솔에 들어가지 않았습니다. 이름을 줄이고 이름 규칙을 테스트로 막았습니다.
  • 모든 화면 조회: 화면 이동에 이름이 없어서 하위 화면이 (not set) 으로만 잡혔습니다. 화면 42개 중 운영에서 열리는 화면은 전부 이름으로 남고, 빠뜨리면 테스트가 실패합니다.
  • 수요와 사용 방식: 잠긴 테마와 잠긴 치장을 눌러 본 것, 복습 인증의 정답 여부와 걸린 시간과 기분, 필기 캔버스 도구와 스타일러스, AI 추천 태그 수락률, 알림 종류별로 들어온 수를 남깁니다.
  • 개발 빌드 수집 차단: Firebase 프로젝트가 하나라 개발 빌드도 운영 통계에 섞였습니다. Sentry 가 production 으로 치는 빌드(릴리즈 + ENV=prod)만 보냅니다.

전체 목록과 콘솔 설정은 docs/애널리틱스 지표/이벤트 목록.md 에 있습니다.

1. 새 이벤트는 AppAnalytics.logEvent 하나로 보냅니다

  • 값 정리를 한곳에서: bool 은 Firebase 가 받지 않아서 문자열로 바꾸고, 100자 넘는 값은 자르고, 예외는 삼킵니다.
  • 파라미터 이름 재사용: 콘솔 맞춤 측정기준 한도가 50개라 source, mode, result, count 같은 이름을 여러 이벤트가 같이 씁니다. 사전은 문서 2절에 있습니다.
  • 예전 이벤트는 이어서 볼 수 있게 이름을 바꾸지 않았습니다.

2. 누른 순간이 아니라 끝난 순간을 셉니다

이벤트 예전 지금
login 토큰을 받기 전에 남아 실패도 셈 끝까지 성공한 뒤. 계정이 10분 안에 만들어졌으면 sign_up 도 남김
user_delete 게스트 로그아웃도 탈퇴로 셈 trigger 로 withdraw 와 guest_logout 을 가름
problem_delete, folder_move, problem_path_edit 요청 전에 남아 실패도 셈 성공한 뒤
theme_color_change_to_색이름 색마다 이벤트가 따로 생김 theme_color_change 하나에 color 파라미터
study_room_list_view 홈이 뜰 때 한 번 남아 앱을 켠 횟수와 같음 뺌. 탭 진입은 화면 조회로 봅니다

3. 화면 조회는 이동하는 쪽이 아니라 화면이 남깁니다

  • 들어오는 경로가 화면마다 여러 곳이라, 66곳의 push 에 이름을 다는 대신 화면이 initState 에서 한 번 남깁니다.
  • 하단 탭 5개는 예전처럼 탭 전환 때 남기고, 디버그 전용과 여는 곳이 없는 화면 6개는 이유와 함께 테스트에서 뺐습니다.

⚠️ 머지 전후로 해 주셔야 할 것

  • 콘솔 설정: 주요 이벤트 지정(sign_up, problem_created, problem_repeat, practice_session_completed), 맞춤 측정기준 등록, 이벤트 보관 기간 14개월. 측정기준은 등록한 날부터 쌓여서 4.1.0 출시 전에 해 두는 게 좋을 것 같습니다. 목록은 문서 6절에 있습니다.
  • 숫자가 줄어 보이는 이벤트: login, problem_delete, folder_move, problem_path_edit, user_delete 는 이번 버전부터 실패와 게스트 로그아웃이 빠져서 전 버전보다 적게 나옵니다.
  • 개발 빌드로는 콘솔에 안 들어옵니다: 확인하려면 ENV=prod 릴리즈 빌드가 필요합니다. 네이티브 SDK 가 앱 시작 직후 보내는 자동 이벤트는 차단 설정보다 먼저 나갈 수 있습니다.

🙏 전달사항

  • 가입 판단은 추정입니다: 서버가 로그인 응답에 신규 가입 여부를 주지 않아서 createdAt 이 10분 안이면 가입으로 봅니다. 정확하게 하려면 백엔드 응답에 필드가 필요합니다.
  • 검증: flutter analyze error 0, warning 0 (develop 대비 새 info 없음), flutter test 2153개 통과, 57개 skip, 실패 0. 실제 기기에서 콘솔에 들어오는지는 아직 확인하지 못했습니다.
  • UI 변경 없음: 화면과 동작은 그대로이고 이벤트만 더했습니다.

… 상세 더보기가 한 번도 콘솔에 들어가지 않았다, Firebase 는 규칙을 어긴 이름을 에러 없이 버려서 앱에서는 몰랐다, 코드에 적힌 이벤트 이름이 길이와 문자 규칙을 지키는지 소스를 훑는 테스트를 더했다 (#275)
…이벤트가 없어서 오답노트를 쓴 사람 수가 한 장씩 등록한 사람만 셌다, 몇 장을 올렸는지는 mode 와 count 로 가른다, 테마는 색 이름을 이벤트 이름에 붙여 색마다 이벤트가 따로 생겼고 주요 이벤트로 걸어 둔 theme_color_change 에는 하나도 안 잡혔다 (#275)
…sObserver 가 하위 화면을 하나도 못 남겼다, 들어오는 경로가 여러 곳이라 이동마다 이름을 다는 대신 문제 상세, 작성과 수정, 다중 등록, 복습 인증, 복습 세트, 복습 완료, 복습 추천 화면이 initState 에서 한 번 남긴다, Firebase 프로젝트가 하나라 개발 서버 빌드와 디버그 실행도 운영 통계에 섞여서 Sentry 가 production 으로 치는 빌드만 보내게 했다 (#275)
…서 직접 부르다 보니 bool 파라미터나 100자 넘는 값처럼 Firebase 가 받지 않는 값이 섞여도 막을 곳이 없었다, 예외를 삼키고 값을 정리해서 보낸다, 가입 판단과 기기 설정용 유저 속성도 여기에 둔다, 이벤트 이름 검사가 이 헬퍼로 보내는 이름도 보게 했다 (#275)
… 받기 전에 남아서 실패한 로그인도 셌다, 끝까지 성공한 뒤에 남기고 계정이 방금 만들어졌으면 sign_up 도 남긴다, 게스트는 로그아웃이 곧 계정 삭제라 user_delete 에 trigger 를 붙여 직접 탈퇴와 가른다, 로그인 버튼을 누른 것과 실패, 로그아웃, 첫 화면에서 서버에 닿지 못한 것도 남긴다 (#275)
…기고, 입어 본 것과 저장해서 실제로 입은 것을 가른다, 같은 색을 다시 적용한 것은 테마 변경으로 세지 않고 지금 쓰는 테마는 유저 속성으로 둔다, 미션 보상 받기와 레벨업, 치장 해금, 훈장 획득, 성취 카드 공유 결과도 남긴다 (#275)
… 기분, 개선 유형, 캔버스 사용 여부를 붙인다, 필기 캔버스는 한 번 푼 동안 쓴 도구와 스타일러스를 모아 제출하거나 나갈 때 한 번 남긴다, AI 추천 태그를 받아들이는지와 분석 결과, 검색, 이미지를 실제로 받은 장수, 촬영과 문서 스캔, 세트 시작과 삭제를 더했다, 삭제와 폴더 이동은 요청 전이 아니라 성공한 뒤에 남긴다 (#275)
…남긴다, FCM 이 자동으로 남기는 notification_open 은 콘솔에서 보낸 알림만 센다, 스터디룸 탭과 나가기, 챌린지 종류, 반응 이모지, 댓글 수정과 삭제, 공지를 어떻게 닫는지, 복습 알림 설정 변경을 더했다, 홈이 뜰 때 한 번 남아 앱을 켠 횟수와 같던 study_room_list_view 는 뺐다 (#275)
…ew 를 빠뜨리면 그 화면은 콘솔에 보이지 않는다, 하단 탭처럼 일부러 빼는 화면은 이유와 함께 적어 두고 지워진 화면이 목록에 남으면 실패한다 (#275)
…벤트 전체, 유저 속성, 화면 이름, 콘솔에 등록할 것, 궁금한 것별로 볼 이벤트를 한곳에 모았다, docs 는 커밋하지 않지만 코드 주석과 CLAUDE.md 가 가리키는 참고표라 따로 넣는다 (#275)
@KiSeungMin KiSeungMin added the enhancement New feature or request label Sep 21, 2026
@KiSeungMin KiSeungMin self-assigned this Sep 21, 2026
@KiSeungMin
KiSeungMin merged commit 35611fa into develop Sep 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant