-
Discord embed 호출을 단일 함수로 통합해 일관성 확보
여러 스크립트에서 반복되고 있던 Discord embed 호출을 하나의 함수로 통합했다. learn-update, publish-progress, traffic-watcher 세 파일에서 각각 raw embed를 만들던 방식을 discord_kind() 함수로 교체한 작업이다.
읽기 → -
봇 버튼 상호작용을 큐로 안정적으로 처리하는 구조 설계
최근에 listener 모듈에 interactive button handler를 추가하고, 이를 bot_action_queue와 함께 구현했다. 사용자의 버튼 클릭 같은 상호작용을 체계적으로 처리하기 위한 작업인데, 이 과정에서 이벤트 기반 아키텍처와 큐 메커니즘이 얼마나 중요한지 다시 한번 깨달았다.
읽기 → -
Discord 메시지 종류 판단 로직을 단일 함수로 통합해 봇 모듈 중복
텔레봇 시스템에서 여러 봇 모듈이 Discord 메시지를 처리할 때 반복되던 종류(kind) 판단 로직을 discord_kind() 함수로 통합하는 리팩토링을 진행했다.
읽기 → -
Discord 메시지 타입 분기 로직을 단일 헬퍼로 통합
Discord 메시지 발송 로직을 정리하다 보니 같은 타입 처리가 여러 군데 중복되고 있었다. 이번엔 이를 discord_kind() 라는 단일 헬퍼 함수로 통합해 정리했다.
읽기 → -
결제 플랫폼 신규 화면을 피그마 디자인과 1:1로 재현한 과정
이커머스 PG 플랫폼에 새로운 기능 화면이 필요했고, 디자이너가 피그마에 정리한 디자인을 1:1로 재현하는 작업을 마쳤다. 단순히 "기능을 구현했다"라기보다, 디자인 가이드와 실제 웹 화면 사이의 갭을 최소화하는 데 신경 쓴 시간이었다.
읽기 → -
로그인 페이지에 광고 도입하며 수익화 확장
AdSense 수익화 전략의 일환으로 로그인 페이지에 광고를 노출시키는 작업을 진행했다. 서비스 초기 단계에서 비용 부담을 줄이기 위해 트래픽이 집중된 페이지들을 차례로 수익화 대상으로 삼는 중인데, 이번에는 로그인 페이지라는 신규 진입점을 활용하게 됐다.
읽기 → -
패키지 버전 릴리즈에 담긴 팀의 배포 원칙
0.9.4 버전으로 릴리즈를 준비했다. 언뜻 package.json과 package-lock.json 두 파일의 버전 번호만 올리는 작은 작업처럼 보이지만, 이 과정에서 팀 차원의 여러 고민과 원칙이 담겨 있다.
읽기 → -
패키지 의존성 고정과 버전 릴리스 워크플로 정착
버전 릴리스 커밋이다. 0.9.3으로 버전을 올리고 의존성을 고정한 작업인데, 이걸 단순한 버전 번호 변경이라고만 보면 놓치는 부분이 꽤 많다.
읽기 → -
패키지 버전을 올리며 배운 릴리즈 관리의 의미
0.9.2로 버전을 올렸다. 간단해 보이는 작업이지만, 릴리즈 관리 관점에서 짚고 넘어갈 게 꽤 있다.
읽기 → -
Flutter 웹에 애드센스와 개인정보 동의 스크립트 통합하기
Flutter 웹 애플리케이션에 광고 수익화 기능을 추가하면서 AdSense와 개인정보 정책 메시징 스크립트를 index.html의 head에 직접 추가했다. 이는 네이티브 웹 개발과 달리 Flutter 웹 프로젝트에서 글로벌 HTML 설정을 어떻게 관리할지에 대한 작은 하지만 중요한 결정이었다.
읽기 → -
Turbopack 전환 시 서버 패키지 번들 오류 해결
Next.js 프로젝트에서 Turbopack으로의 번들러 전환 과정 중에, 서버 환경에서만 사용되는 특정 라이브러리들이 제대로 번들되지 않는 문제를 만났다. openapi-to-postmanv2 패키지를 serverExternalPackages 설정에 추가한 작업인데, 이건 단순한 설정 수정을 넘어서 번들러 마이그레이션에서 자주 마주치는 호환성 문제를 어떻
읽기 → -
Astro 사이트에 광고와 개인정보 동의 스크립트를 함께 도입한 이유
Astro 기반 웹사이트에 AdSense 광고 플랫폼과 Privacy Messaging 스크립트를 Base 레이아웃에 추가했다. 단순해 보이는 script 추가지만, 이 결정 뒤에는 제품 수익화, 규정 준수, 성능 최적화를 모두 고려한 팀의 논의가 있었다.
읽기 → -
쉘 스크립트 자동화에서 stderr 출력 누락 버그를 잡다
최근 codex 인증 체크 스크립트를 보다가 로그인 상태 명령이 예상과 다르게 동작하는 걸 발견했다. 문제는 간단했지만, 그 과정에서 배운 게 꽤 있어서 정리해본다.
읽기 → -
codex OAuth 토큰 만료를 자동 감지해 재로그인하는 cron 자동화
codex OAuth 토큰 만료를 자동으로 감지하고 재로그인하는 cron 작업과 스크립트를 추가했다. 개발 환경의 인증 문제가 반복되지 않도록 하는 작업이었다.
읽기 → -
구독 API 안정성을 높인 폴백·교차검증 래퍼 설계
구독 관련 외부 API 호출을 더 안정적으로 처리하기 위해 Codex CLI 래퍼를 만들었다. 단순한 인터페이스 개발이 아니라, 팀이 운영하며 마주할 수 있는 여러 장애 시나리오를 고민해서 설계한 작업이다.
읽기 → -
listener에 즉시 재쓰기 트리거 명령어 패턴 추가
listener 에서 prefix 기반 명령어 처리를 개선했다. !fix 프리픽스를 인식하면 재쓰기 작업을 바로 실행하도록 변경했는데, 이게 단순한 플래그 추가보다는 listener 의 반응성 패턴을 어떻게 설계할지에 대한 작은 결정이었다.
읽기 → -
리뷰 경고 상태를 기한 초과 시 자동 결격 처리로 전환
review_loop.py에서 WARN 상태를 결격 처리로 자동 전환하는 로직을 구현했다. 경고 상태가 일시적이라는 걸 명확히 하면서도, 계속 방치되면 자동으로 처리하는 흐름이 필요했다.
읽기 → -
콘텐츠 검토 정확도와 판정 규칙을 명시적 정책으로 개선
review_loop.py를 리팩토링하면서 모델 업그레이드와 판정 규칙을 정책 문서 수준으로 명시했다.
읽기 → -
Playwright 산출물 7일 자동 삭제로 디스크 용량 문제 해결
Playwright 테스트 실행 시마다 쌓이는 스크린샷, 비디오, 트레이스 파일들을 7일 뒤 자동으로 삭제하는 cron 작업을 추가했다. 저장소 용량이 계속 증가하던 문제를 근본적으로 해결한 일이다.
읽기 → -
스크립트 실행 권한 누락이 팀 협업과 자동화에 미치는 영향
스크립트에 실행 권한을 추가하는 작은 변경이지만, 생각보다 많은 팀 협업 이슈를 담고 있다. chmod +x scripts/slot-checkup.py라는 한 줄짜리 커밋이 왜 필요했고, 어떤 교훈을 얻을 수 있는지 정리해 본다.
읽기 →