개발 로그
git 이력에서 자동으로 만든 기록이다 — 커밋 169개 · 23일 (2026-07-08 ~ 2026-09-30). 최신순.
2026년 9월
2026-09-30 · 커밋 8개
8aadf33fix: ffmpeg 를 pip 뒤 레이어로 — 운영 빌드가 디스크를 채우고 죽던 문제dcbf528docs: 전체 설명서8df2981feat: OCR 을 제품 쪽 ocr 앱으로 옮긴다 — 수업 분리로 끊길 뻔한 것a07f40ffix: 처음 온 사람이 테스트 음원부터 만나던 문제 · 남은 수업 화면 정리e21bb0bfeat: 발성 진단을 결과 화면에 보여준다77978e5feat: 다음 곡 추천이 약점을 본다 — 빠르기와 무너진 음역까지b671b78feat: 발성 진단 — 어디가 어떻게 무너졌는지 재고, 그에 맞춰 다음 곡을 고른다75518f5fix: 세션이 끊긴 제출이 조용히 익명으로 저장되던 문제
2026-09-28 · 커밋 13개
19a7725docs: 2026-09-29 인수인계서 — 수업 분리 결과와 내일 할 일7f09f71refactor: 수업 과제를 이 저장소에서 떼어내 lesson/class-projects 브랜치로 넘긴다315de9cchore: 세션 메모리 디렉터리를 git 에서 제외한다a3d7b10feat: 곡을 올리면 재생용 MP3 를 자동으로 만든다b33510aperf: 재생은 MP3 로 — 무압축 WAV 를 그대로 내려보내던 것을 고친다7436d58perf: Vercel 함수를 서울(icn1)에서 실행 — 태평양 왕복 제거872f769fix: 탭을 옮기면 곡이 배경에서 계속 나오던 문제 — 일시정지 추가9f12f78feat: 리듬 게임 배경 — 바닥 격자·네온 기둥·도시 실루엣, 박자와 콤보에 반응675daf6fix: 노트가 소리보다 늦던 문제 — 비트 격자를 드럼에 맞춘다3eeb27afeat: 채보를 곡의 박에 맞춘다 — 박자 위계로 노트 자리 선택d3fbe0ffeat: 리듬 게임 난이도 낮춤 — 노트 밀도 25% 축소, 판정 창 확대e171d6fdocs: 인수인계서에 frontmatter 추가 (하네스 검사 통과)71c53c3docs: 2026-09-28 인수인계서 — 리듬 게임·노래방·테마 현황과 다음 할 일
2026-09-22 · 커밋 13개
2237825feat: 리듬 게임 키 설정 — 4키·7키 레인별 키를 직접 지정49ee746feat: 리듬 게임 난이도 낮춤 — 노트 밀도·동시치기 줄이고 판정 창 넓힘c9e4348feat: 리듬 게임 3D 원근 무대와 타격 효과, 키 배치 변경5aae88bchore: Node 버전을 Vercel 설정과 같은 24.x 로 고정 (자동 대형 업그레이드 경고 제거)5a23c12chore: 실수로 들어간 빈 문서 파일을 저장소에서 뺌 (로컬 파일은 그대로)f646a14feat: 사이트 전체 신스웨이브 테마 + 애니메이션 (시안 A3)25e741afeat: 리듬 게임을 챌린지에서 떼어 별도 메뉴로 (/rhythm)0e4f190feat: 리듬 게임(오투잼식 4키·7키) — 원곡으로 채보 자동 생성, 서버 재채점, 채보별 랭킹f535a27feat: 개발 기록 사이트 배포 (demo.woojeongalex.cloud, EC2 nginx)db5475fstyle: song_prep 스크립트 ruff 규칙 맞춤 (동작 동일 — 곡 #7 결합 결과 바이트 단위 일치)c186cadfeat: 곡 준비 도구(song_prep)와 개발 기록 사이트(Jekyll)e2f58dbfeat: 실제 보컬용 정답 멜로디 후처리 (조각 합치기 · 튀는 음 교정)3be75b6feat: 노래방·연주 모드 — 실시간 채점 화면, 서버 재채점, 랭킹
2026-09-21 · 커밋 9개
b55927afeat: 노래방 모드 1단계 — 정답 멜로디 추출 + 가사 타이밍 스튜디오a335e99feat: 홈·내비게이션을 핵심 루프 중심으로 재구성 (Phase 2)154e27bfeat: 내 도전 기록 · 점수 추이 (GET /music_challenge/submissions/me)3171cd9feat: 챌린지에 마이크 녹음 제출 추가47bc579feat: 채점을 librosa 객관 지표 + Gemini 코칭 결합으로 교체0bc921cfeat: 다음 챌린지 추천을 실제 추천으로 교체897080cfeat: 제출물에 사용자 연결 (Phase 1)ab58bfefix: Gemini 모델 하드코딩 제거 — 평가가 항상 폴백되던 문제9eeecabchore: 로컬 개발용 compose 오버라이드 추가
2026년 8월
2026-08-27 · 커밋 1개
ae75e4cfix: music_challenge ORM 을 SQLModel Field 스타일로 교체
2026-08-24 · 커밋 5개
6b2b40efeat(db): music_challenge 테이블 마이그레이션 추가 (20260824_0008)61d7c3afeat: 운영자용 챌린지 등록 화면 추가 (/music-challenge/new)c92ecc0feat: MENU 드롭다운에 챌린지(/music-challenge) 진입점 추가1ee5e61style: music-challenge 컴포넌트 Props 타입을 {ComponentName}Props 로 분리7573563feat: music_challenge 프론트엔드 화면 추가
2026-08-21 · 커밋 1개
031f1b3feat: music_challenge 앱 신규 추가 (헥사고날 아키텍처)
2026-08-06 · 커밋 2개
989fea7docs: alexview CLAUDE.md를 라우터로 교체, 내용을 _docs/ 7개 파일로 분리87b5c1fdocs: woojeongai CLAUDE.md를 라우터로 교체, 내용을 _docs/ 9개 파일로 분리
2026-08-05 · 커밋 1개
e6291d7fix: Service Worker 자기 언레지스터로 교체, index.html에 SW 강제 제거 추가
2026-08-04 · 커밋 11개
ac1212afix: presigned URL이 리전 엔드포인트로 서명되도록 s3v4+virtual 지정8919c07perf: OCR S3 왕복 제거·이미지 축소·업로드와 인식 병렬화, presigned URL로 이미지 열람 가능하게1a24ff9fix: OCR API 엔드포인트를 EC2(aws-api)로 변경55c38c0fix: OCR 엔진을 Textract에서 Tesseract로 교체 (계정 미구독 대응)6e966c7fix: app.woojeongalex.cloud CORS 추가, 카메라 dart:html로 교체321fed8feat: 메인 홈 화면 + 카메라 OCR 기능 추가8c4f0bcfix: 카카오 모바일 토큰 검증을 user/me 우선으로 변경b2d82b4debug: 카카오 모바일 토큰 검증 로깅 추가 (임시)971b1f8fix: auth CORS에 app.woojeongalex.cloud 추가55a3c27refactor: 디자인 시스템을 alexview/DESIGN.md로 분리de6650efeat: Flutter 카카오 OAuth 로그인, S3 이미지 업로드, 디자인 시스템 통합
2026-08-03 · 커밋 2개
97f74c9feat: 인트로 영상을 실제 콘텐츠로 교체8bac365feat: Flutter 앱 추가 (인트로 영상·스톱워치·카운터 예제 화면)
2026년 7월
2026-07-30 · 커밋 2개
4249e61fix: AWS Neo4j 최소 비밀번호 길이 제한으로 인한 크래시 루프 수정3062ae8feat: AWS docker-compose에 pgvector·neo4j 컨테이너 추가
2026-07-28 · 커밋 4개
652e46adocs: LangGraph 하네스 보강 및 Neo4j Docker 전략 문서 추가8687ca7chore: AWS 배포용 docker-compose.aws.yml 추가b1c5850feat: 레트로 LangChain 채팅 UI 추가, 시멘틱 라우터를 star_craft로 이전 후 Gemini 연동27a6283feat: neo4j-graphrag 의존성 추가 및 silicon_valley LangChain 하네스/전략 문서 추가
2026-07-24 · 커밋 1개
ad1e187feat: AWS S3 접근용 S3Manager 추가 — Keymaker 기반 자격증명 로딩
2026-07-22 · 커밋 11개
9cf7212fix: 소셜 로그인 URL을 auth gateway로 수정f24f6b9fix: backend startup alembic hanging 제거 — init_engine으로 교체d25d90efix: /api/auth/me HS256→RS256 get_current_user 교체 — 소셜 로그인 토큰 검증 호환45b716efix: fetch 함수 반환 dict에서 provider 키 제거 — router에서 이미 명시적으로 전달3349c89fix: auth router except 블록에 exception 로깅 추가f8b9eeefix: auth 컨테이너 startup시 alembic 마이그레이션 제거 — backend가 담당60590ccfeat: vocal analyzer/recorder/searcher + login event tracking + cloudflared container migration4d0fcebfeat: /db-check require_admin → RS256 RoleChecker(Role.ADMIN)00311eefix: rename 1.image_classifier_interactor.py → importable module nameb06bb0afix: remove duplicate harness file with trailing spaceea5a22bfeat: auth gateway — apps/auth, core/security (RS256), core/dependencies, auth_main, docker-compose
2026-07-21 · 커밋 6개
12a21b7fix: restore quotes in social-callback page (broken by merge conflict)b39b3e8feat: add star_craft agent docs and interactors994ac38feat: RBAC 프론트엔드 — admin role 기반 Admin 메뉴/페이지 접근 제어d1ff80bfeat: RBAC — get_current_user/require_admin 공유 의존성 추가, /db-check 관리자 전용5244ad9fix: 카카오 토큰 교환 요청에 client_secret 추가ced6c3cfix: backend 서비스에 env_file 추가하여 루트 .env 로드
2026-07-20 · 커밋 4개
042ed5bfeat: Naver/Kakao/Google OAuth + JWT Redis session systemcd8223bstyle: auth 페이지에서 Apple·Instagram 소셜 버튼 제거334ce98feat: JWT 토큰 저장 및 자동 갱신 프론트엔드 연동42c8a88feat: JWT + Redis 세션 시스템 추가
2026-07-16 · 커밋 23개
db9eb0fstar_craft: extract only real list-row content when crawling chart-style pages008c245style: ruff format star_craft empty-keyword fixb0b4803star_craft: treat empty keyword as “collect everything” instead of an errorb943f89alexview: move crawler/scraper banner from home to Lesson page as tabs5bf5420alexview: crawler/scraper banner takes a natural-language command5156dd9star_craft: make keyword matching case-insensitive356ade0star_craft: understand natural-language commands via Gemini before crawlingfa761e7alexview: add a crawler/scraper banner to the home page0d637dbstar_craft: add submit endpoints for one-shot crawl/scrape from the UIed7bfefalexview: switch Titanic page accent color from green to white83b75c8star_craft: send a User-Agent on crawl/scrape requests497bb88core: RedisClient loads .env itself instead of relying on load order69caf28star_craft: switch crawl/scrape output from CSV to JSONL, split by folder2a6940fDockerfile: swap opencv-python for opencv-python-headlessde81461star_craft: add boto3/ultralytics – vision_router’s import chain needs both958c2cbstar_craft: fix broken import in vision_provider.py blocking app startupd5a8077main: register star_craft_router (was never wired into the app)92595ecstar_craft: fix mypy type narrowing in bs4_web_crawl_gateway40a04c8star_craft: add crawler/scraper pipeline reading targets from Redisb09e2faalexview: sync pnpm-lock.yaml after removing @google/generative-ai2c1905dalexview: remove the weather widget67872f9alexview+silicon_valley: route the Gemini practice banner through the backend3b4031bchore: trigger fresh Vercel deployment after reconnecting correct repo
2026-07-15 · 커밋 19개
a6dbf98dev: run alexview dev server through WSL where node/pnpm actually livef7c3fb6silicon_valley: fix person-question misrouting and grounding-quota fallbackddff2b1silicon_valley: enable Google Search grounding for Gemini general-question path594a76calexview: point EXAONE chat banner at the new semantic router endpoint42a40c3silicon_valley: apply ruff format to semantic router filese945169silicon_valley: add semantic intent router (music -> local EXAONE, else -> Gemini)809f553silicon_valley: document that the embed endpoint is a temporary substituteb8ce95amusic: patch EXAONE get/set_input_embeddings for newer transformers/peft35d7dcemusic: add QLoRA training script for EXAONE-2.4B music recommendation adapter740d940music: ground QLoRA dataset generation in real catalog_songs to kill hallucinationf09b75bmusic: strengthen QLoRA dataset filter (Korean-char ratio, min length, strip)a6adad9add filter_music_qlora_dataset.py: drop garbled examples, cap dataset sizefc487fcfix: load woojeongai/.env correctly (same off-by-one path bug as backfill script)dc9e29efix: proxy routes must not forward raw upstream Response through Cloudflare52ec12dadd generate_music_qlora_dataset.py: synthesize mood-based song recommendation pairs via ship’s EXAONE-7.8B for the 2.4B QLoRA fine-tune training set68c41e7add rag_search_test.py / rag_answer_test.py: hands-on two-step RAG demoab0b127fix: backfill script should read LOCAL_LLM_EMBED_BASE_URL, matching the split-endpoint client06b83c5refactor: RAG chat calls two independent chat/embed endpoints, no runtime mode-switchingb4c1122fix: controller must invoke the vllm console script, not python -m vllm
2026-07-14 · 커밋 15개
2c20730silicon_valley: vector RAG chat (EXAONE embed/chat mode swap) + frontend bannerda2e724fix: use core.matrix.database_manager directly (get_session_factory doesn’t exist)21556fafix: load woojeongai/.env, not the repo-root .env unreachable in the container83c8d4bfix: backfill script needs both woojeongai root and apps/ on sys.pathd0be348music: add pgvector embedding column to catalog_songs for RAG0ffa787fix: local LLM client must use vLLM’s served-model-name, not the HF repo id185173fsilicon_valley: add local LLM adapter, wire EXAONE chat into Hendricks CEOb5ac295handoff doc: reflect completed SSH setup + desktop WSL user rename to shipdf0018fhandoff doc: auto-detect clone vs pull, inspect code after sync19cc00bhandoff doc: auto-detect clone vs pull, inspect code after sync2eeb2ebhandoff doc: sync latest progress + add git-pull-first instruction2dcdc35handoff doc: add explicit git-pull-first instruction for next Claude0056327update infra handoff doc with current progressdd31ba7add infra handoff doc to friend branch8790f64alexview: fix homepage jank/scroll, convert theme to grayscale, redesign home/analyze/instrument/speech/auth/admin/mypage; add infra handoff doc
2026-07-13 · 커밋 13개
350ac45Make Alembic the sole schema authority; stop raw create_all() on startupe177cdeDrop dead titanic_persons, repoint titanic_bookings FK to titanic_passengersae5e1efMount woojeongai source into backend container, fix container DATABASE_URL291c1a7Add users + music domain tables migration23ac23fDocument docker compose exec requirement for alembic/psql commands25cfbd3Add soccer ERD migration; fix stale ORM import path in alembic envd85c6faAdd .gitattributes to normalize line endings to LFfc70a2eAdd soccer database design doc0cd763fAdd soccer ERD diagramb10233dAdd soccer app scaffold6238217Stop tracking .claude/settings.local.json83931faAdd star_craft vision/yolo scaffolding9889445Remove frontend service from docker-compose
2026-07-10 · 커밋 2개
80ca2e57.10.7011ff77.10.
2026-07-08 · 커밋 3개
3f8e2887.8.2.67294a27.8.e9f41b5Complete Monolithic integration first push