개발
코드 / 아키텍처 / 디버깅
-
블로그 포스트 SEO 메타데이터 자동 생성으로 휴먼에러 방지
사용자 입장에서 콘텐츠를 공유할 때 보이는 제목, 설명이 중요하다는 걸 처음 깨달았던 게 검색 결과와 SNS 링크 미리보기다. metaTitle과 metaDesc 없으면 브라우저나 플랫폼이 자의로 제목을 자르거나 본문 첫 문장을 띄우는데, 이게 사용자 클릭률에 미치는 영향은 생각보다 크다. 그런데 블로그 포스트를 INSERT할 때마다 이걸 수동으로 채워 넣
읽기 → -
CMS 봇 모듈 전체에 SEO 메타 정보 자동 생성 적용
CMS 포스트에 메타 제목과 설명을 일괄 추가했다. 단순해 보이지만 여러 봇 모듈에 걸친 일관성 있는 기능 확장이었다.
읽기 → -
CMS 포스트 등록 시 메타데이터를 LLM으로 자동 생성한 경험
CMS 플랫폼에서 포스트를 등록할 때 메타 제목과 메타 설명을 LLM이 자동으로 생성해서 직접 데이터베이스에 저장하도록 해봤다. generate.py에서 LLM 호출로 메타 데이터를 생성한 뒤, admin_db.py의 INSERT 로직에 끼워 넣는 식으로 처리했다.
읽기 → -
시드 스크립트 마스킹 범위 확대
bulk_seed.py는 개발/테스트 환경에 초기 데이터를 빠르게 적재하는 스크립트다. 이번 fix에선 이 스크립트의 마스킹 정책을 강화했다 — 마스킹 패턴을 더 포괄적으로 확대하고, 마스킹 후에도 민감 정보가 남아있지 않은지 검증하는 has_unsafe_residue 패턴을 추가했으며, 이제껏 마스킹 범위에서 놓쳤던 body_md 필드까지 적용했다.
읽기 → -
블로그 벌크 시딩의 한국어 제목 추출을 LLM으로 통일
블로그 벌크 시딩 스크립트에서 제목(title) 추출 로직을 LLM 기반으로 변경했다. 마크다운 첫 줄 H1에서 한국어 제목을 명시적으로 추출하도록 강제한 작업인데, 처음엔 단순한 버그 픽스처럼 보이지만 사실 콘텐츠 품질과 시스템 신뢰성에 꽤 깊은 이슈가 숨어 있었다.
읽기 → -
Claude API 인증을 OAuth 구독 모델로 전환한 리팩터링
Claude의 API 호출 방식을 전면 리팩터링했다. Anthropic 직접 호출에서 Claude Code OAuth 기반 구독 모델로 전환하면서 인증, 요청 처리, 의존성 관리 전반을 정리한 작업이다.
읽기 → -
인증 계정 교체와 세션 정리를 스크립트로 자동화해 운영 부담 해소
계정 교체와 세션 정리 자동화 스크립트를 두 개 추가해서 인증 관련 운영 작업 부담을 크게 줄였다.
읽기 → -
사이트맵에서 빠진 카테고리 인덱스 페이지를 추가해 SEO 개선
사이트맵에 카테고리 인덱스 페이지를 빠뜨렸던 걸 발견하고 수정했다.
읽기 → -
다언어 페이지 검색 색인 누락 SEO 버그 수정
다언어 페이지들이 검색 엔진에 제대로 색인되지 않던 문제를 고쳤다. 단순해 보이지만 SEO 관점에서는 꽤 중요한 변경이었다.
읽기 → -
결제 충전 부분 취소 상태 도입과 취소 가능 여부 사전 검증
결제 플랫폼의 충전 취소 기능을 다루면서, 부분 취소라는 새로운 상태를 도입했다. 단순한 상태 추가가 아니라 결제 수단별 취소 가능 여부를 사전 검증하는 로직까지 함께 들어간 작업이었다.
읽기 → -
운세 생성 API에 타임아웃과 재시도 로직을 추가해 안정성 개선
외부 API 호출 시 타임아웃과 재시도 로직을 추가했다. 단순해 보이는 변경이지만, 프로덕션 안정성 관점에서는 꽤 중요한 결정이었다.
읽기 → -
OpenAI 장애로 9일 먹통된 운세 서비스를 Claude 전환으로 복구
긴급하게 LLM 공급업체를 OpenAI에서 Anthropic Claude로 전환해야 했던 이유는 서비스 장애 때문이었다. 9일간 콘텐츠 생성 기능이 먹통이 돼서 사용자 경험이 완전히 망가진 상황이었고, 이를 신속하게 해결하기 위해 대체 모델로의 즉시 마이그레이션을 결정했다.
읽기 → -
디스코드 배포 알림에 변경 파일 목록과 로그 첨부 추가
디스코드 발행 알림에 파일 첨부 기능을 추가했다. 배포 완료 메시지가 단순 텍스트만 던지는 것에서 벗어나, 실제 변경된 파일 목록과 로그까지 함께 보낼 수 있게 개선한 작업이다.
읽기 → -
결제 플랫폼 토픽 풀 확장으로 30일 중복 제거 병목 해소
결제 플랫폼의 토픽 풀 크기를 28에서 100으로 확장하면서 30일 중복 제거 로직의 성능 병목을 풀어낸 작업이다.
읽기 → -
충전 취소 엔드포인트 개설과 환불 수수료 정책 유연화
충전 취소 흐름을 시스템에 정식으로 담으며 운영자의 환불 수수료 정책을 유연하게 적용할 수 있게 만든 작업이다.
읽기 → -
멀티테넌트 LLM 프록시로 테넌트별 사용량 추적 구현
멀티테넌트 환경에서 외부 LLM API 요청을 투명하게 프록시하면서 동시에 사용량을 추적하는 구조를 만들었다. 초반에는 간단한 작업처럼 보였지만, 팀 전체의 비용 관리와 테넌트별 할당량 제어에 영향을 미치는 꽤 중요한 인프라 변경이었다.
읽기 → -
이벤트 소싱에서 모델 정보의 진실 원천을 턴컨텍스트로 이전
이벤트 소싱 시스템에서 데이터를 읽어오는 경로를 바꾸는 작업이었다. 원래는 response_item에서 모델 정보를 가져오던 걸 turn_context events로 변경했다.
읽기 → -
여러 AI 코딩 도구 사용량을 통합 집계하는 멀티 프로바이더 추적 구현
여러 AI 코드 작성 도구를 함께 쓰는 팀이 생기면서, 사용 현황을 한 곳에서 추적해야 하는 상황이 생겼다. 기존에는 한 종류의 로그만 읽고 있었는데, 이제 다중 제공자(multi-provider)의 사용량을 함께 스캔하고 통합하는 기능을 만들었다.
읽기 → -
라이선스 키 인증을 실계정 시스템으로 전면 전환
라이선스 키 기반 로그인을 실계정(이메일+비밀번호+API 키) 시스템으로 완전히 바꿨다. 개발 초기에는 빠른 프로토타이핑을 위해 라이선스 키 하나로 모든 인증을 처리했는데, 서비스가 성장하면서 이 방식의 한계가 명확해졌다.
읽기 → -
어드민 패널 인증을 팀 대시보드 구조로 전환
웹 어드민 패널의 인증 방식을 email+key 기반에서 팀 대시보드 중심으로 전환했다. 단순해 보이지만 이 작업 뒤에는 관리 인터페이스의 구조 전환이라는 꽤 큰 의도가 담겨 있었다.
읽기 →