Skip to content

Refactor(Client): CI 단계에서 이벤트 스크립트 최신화 검증 레이어 추가#839

Merged
gwagjiug merged 2 commits intodevelopfrom
refactor/event-ci
Mar 25, 2026
Merged

Refactor(Client): CI 단계에서 이벤트 스크립트 최신화 검증 레이어 추가#839
gwagjiug merged 2 commits intodevelopfrom
refactor/event-ci

Conversation

@gwagjiug
Copy link
Copy Markdown
Member

@gwagjiug gwagjiug commented Mar 25, 2026

📌 Summary

관련 있는 Issue를 태그해주세요. (e.g. > - #100)

해당 PR에 대한 작업 내용을 요약하여 작성해주세요.

📚 Tasks

  • 이벤트 정의를 바꿨는데 pnpm analytics:generate 결과를 따로 반영하지 않으면 사람이 놓치기 쉬운 흐름이어서, 이 부분을 CI가 자동으로 잡아주도록 analytics:check 단계를 추가했어요.
  • analytics:check에서는 액션이 돌 때 현재 코드 기준으로 pnpm analytics:generate를 다시 실행하고, 그렇게 새로 만들어진 산출물이 기존에 커밋된 파일과 완전히 같은지 비교하도록 구성했어요. 그래서 이벤트를 추가하거나 수정했는데 생성 결과를 반영하지 않은 경우에는 CI가 바로 실패하게 만들었어요.
  • 생성 결과가 실제로는 같은데도 generatedAt만 바뀌면서 계속 diff가 생기지 않도록, rows 내용이 동일하면 기존 타임스탬프를 유지하도록 보완했어요. 이 단계가 없으면 CI에서 비교할 때 거짓 변경처럼 보일 수 있어서 같이 정리할 필요가 있었어요.
  • 기존 generate-analytics-catalog.mjs 파일이 너무 커서 한 파일 안에 AST 유틸, 라우트 파싱, 이벤트 파싱, 사용처 스캔, 카탈로그 조합, 출력 로직이 모두 섞여 있었는데, 이런 구조는 나중에 규칙을 하나만 바꿔도 어디를 건드려야 할지 찾기 어렵다고 느껴져서 책임 기준으로 파일을 분리했어요.
  • 그래서 지금은 AST 공통 유틸, 라우트 해석, 이벤트 정의 파싱, 로깅 사용처 스캔, 카탈로그 row 조합, 출력 포맷 및 파일 쓰기 로직을 각각 별도 모듈로 나눴고, 엔트리 스크립트는 전체 파이프라인만 읽히도록 얇게 정리했어요.
  • 추가로 pnpm analytics:generate를 실행할 때마다 prettier 결과와 생성 포맷 차이 때문에 파일이 계속 흔들리고, 그 영향으로 lint나 build 흐름까지 불안정해지던 문제가 있었어요. 이 부분은 생성 파일을 만든 직후 repo의 prettier 설정으로 바로 포맷한 뒤 그 결과를 기준으로 비교하게 바꿔서 해결했어요.
  • 그래서 이제는 한 번 최신 상태로 맞춘 뒤에는 pnpm analytics:generate를 다시 실행해도 내용이 같으면 analytics catalog이 이미 최신 상태예요.만 출력되고, 불필요한 포맷 변경이나 generatedAt 변경이 계속 생기지 않도록 정리했어요.
  • 마지막으로 리팩토링 이후에도 기존 동작이 유지되는지 확인하려고 pnpm analytics:generatepnpm --filter @confeti/admin build 기준으로 직접 검증했어요.

👀 To Reviewer

이번 작업은 크게 보면 두 가지를 같이 해결하려고 했어요. 하나는 이벤트 최신화 누락을 사람이 기억하지 않아도 CI가 대신 잡아주게 만드는 것이고, 다른 하나는 생성 스크립트 자체가 너무 커서 이후 유지보수가 어려워질 수 있는 구조를 조금 더 읽기 쉬운 형태로 정리하는 것이었어요.

특히 이번에 같이 손본 포인트 중 하나가, 생성 스크립트를 실행할 때마다 포맷 차이 때문에 산출물이 계속 바뀌는 문제였어요. 이 부분이 남아 있으면 CI 체크를 넣어도 개발자가 계속 불필요한 diff를 마주치게 되어서, 단순히 검증만 추가하는 것보다 생성 결과를 안정적으로 만드는 작업이 같이 필요하다고 판단했어요. 그래서 이번 PR에서는 “누락을 잡는 장치”와 “생성 결과를 흔들리지 않게 만드는 정리”를 같이 묶어서 반영했어요.

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 25, 2026

⚠️ No Changeset found

Latest commit: 0a115af

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@gwagjiug gwagjiug self-assigned this Mar 25, 2026
@gwagjiug gwagjiug added 🛠️ Refactor 코드 리팩토링 지욱 🥁 지욱 labels Mar 25, 2026
@gwagjiug gwagjiug marked this pull request as ready for review March 25, 2026 08:46
@gwagjiug gwagjiug requested a review from a team as a code owner March 25, 2026 08:46
@gwagjiug gwagjiug merged commit 0c2785e into develop Mar 25, 2026
5 checks passed
@gwagjiug gwagjiug deleted the refactor/event-ci branch March 25, 2026 09:25
@github-actions github-actions bot mentioned this pull request Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

지욱 🥁 지욱 🛠️ Refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant