개발
코드 / 아키텍처 / 디버깅
-
slot 점검 배치에 재시도·자동화 인프라를 구축한 과정
slot 리소스를 주기적으로 체크하는 인프라를 첫 번째 버전으로 구축했다. 단순한 기능 추가가 아니라, 분산 환경에서 실제로 도는 시스템이 얼마나 많은 순간적 장애를 견뎌내야 하는지를 다시 한 번 생각하게 된 작업이었다.
읽기 → -
구매·선물·쿠폰 전 결제 흐름에 본인 재확인 팝업 일관 적용
구매와 선물 흐름 전반에 걸쳐 본인 재확인 팝업을 추가했다. 단순히 기능을 더한 게 아니라, 어느 지점에, 어떻게 일관되게 배치할지가 생각보다 복잡한 작업이었다.
읽기 → -
동적 라우트 파라미터와 데이터 조회 인자 불일치 버그 수정
동적 라우트에서 파라미터와 데이터 조회 함수의 인자 타입이 맞지 않는 실수를 고쳤다. /p/[id].astro 페이지에서 URL 파라미터로 받은 id를 그대로 findPostById() 함수에 전달해야 하는데, 어딘가에서 slug를 넘기고 있었다.
읽기 → -
HUD 캐시를 깃이그노어에 추가해 팀 머지 충돌 해소
OMC HUD 캐시 디렉토리를 .gitignore에 추가했다. 간단하지만 팀 협업에서 꽤 중요한 작업이다.
읽기 → -
블로그 URL을 슬러그에서 ID 기반으로 바꿔 SEO 안정성 확보
배경: slug 변경이 만드는 SEO 문제
읽기 → -
로그인 페이지 검색 노출 차단을 위한 노인덱스 태그 적용
signin 페이지에 meta description과 noindex 태그를 추가했다. 간단해 보이는 작업이지만 검색 엔진 최적화(SEO)와 서비스 보안 사이의 균형을 맞추는 의사결정이 담긴 변경이다.
읽기 → -
Astro 메타 설명 따옴표 버그가 SEO 전반에 미친 영향
메인 페이지 메타 설명을 다시 손봤다. 내용은 부실했고, Astro 컴포넌트 내 따옴표 처리도 빠졌다. 작은 수정처럼 보이지만, 이 종류 버그가 사실 얼마나 광범위한 영향을 주는지 회고해본다.
읽기 → -
리뷰 자동화 루프의 페르소나 거부를 시스템 프롬프트로 해결
review_loop.py에서 persona 설정이 Claude Code의 거부(refusal)를 트리거했다. 이 이슈를 system-prompt 옵션으로 옮겨서 해결한 작업이다.
읽기 → -
interlink 하이퍼링크를 서버에서 HTML로 변환해 렌더링 일관성 확보
interlink 기능에서 문서 내 하이퍼링크를 렌더링할 때, raw markdown 문자열을 그대로 내려주던 방식을 개선했다. 이번 fix는 마크다운을 서버 단계에서 HTML <aside> 요소로 변환해서 emit 하도록 변경한 작업이다.
읽기 → -
블로그 포스트 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 호출 시 타임아웃과 재시도 로직을 추가했다. 단순해 보이는 변경이지만, 프로덕션 안정성 관점에서는 꽤 중요한 결정이었다.
읽기 →