개발 로그
git 이력에서 자동으로 만든 기록이다 — 커밋 139개 · 21일 (2026-07-08 ~ 2026-09-22). 최신순.
2026년 9월
2026-09-22 · 커밋 4개
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