deployer 내부(/runtime)와 NAS 호스트(/volume1/docker/webpage)에서 docker compose
실행 시 디렉토리명 기반 프로젝트명이 달라져 컨테이너 관리가 불가능한 문제 수정.
name: webpage으로 고정하여 어디서 실행해도 동일한 프로젝트로 인식.
deprecated version: "3.8" 제거.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docker ps --filter 방식이 Synology에서 불안정하여
docker compose stop/rm으로 compose 관리 컨테이너를 먼저 정리하고,
이름 기반 docker rm으로 고아 컨테이너도 추가 정리하는 2단계 방식으로 변경.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
deployer 컨테이너 내부에서 docker compose up 실행 시 상대 경로(./data/music)가
/runtime/data/music으로 해석되어 호스트에서 bind mount 실패하는 문제 수정.
${RUNTIME_PATH}/data/<service> 패턴으로 통일하여 NAS 환경에서도 호스트 절대
경로(/volume1/docker/webpage/data/*)가 정확히 전달되도록 함.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- update_purchase에서 numbers/is_real 타입 변환 추가 (런타임 에러 방지)
- purchase_manager에서 evolve_after_check 호출하여 EMA 피드백 루프 활성화
- checker.py 중복 recalculate_weights 호출 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- backend/app/purchase_manager.py 신규 생성
- check_purchases_for_draw(): 회차별 미채점 구매 건 자동 채점
- checker._calc_rank 재사용, RANK_PRIZE 상수 정의
- 채점 후 strategy_performance 자동 upsert (전략별 집계)
- backend/tests/test_purchase_manager.py에 통합 테스트 2건 추가
- test_check_purchases_for_draw: 1등/낙첨 결과 검증
- test_check_purchases_updates_strategy_performance: 성과 테이블 갱신 검증
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
네이버 검색 API 키워드 분석 + Claude AI 글 생성 + 품질 리뷰 + 수익 추적
- blog-lab/ 서비스 전체 (FastAPI, SQLite 5테이블, 18 엔드포인트)
- docker-compose.yml: blog-lab 서비스 (port 18700)
- nginx: /api/blog-marketing/ 라우팅 추가
- .env.example: NAVER_CLIENT_ID/SECRET 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- saved_lyrics 테이블 (id, title, text, prompt, created_at, updated_at)
- GET /api/music/lyrics/library — 저장된 가사 목록 조회
- POST /api/music/lyrics/library — 가사 저장
- PUT /api/music/lyrics/library/:id — 가사 수정
- DELETE /api/music/lyrics/library/:id — 가사 삭제
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1A:
- mutagen으로 MP3 실제 재생시간 추출 (sync + startup backfill)
- update_track_duration() DB 헬퍼 추가
Phase 2:
- GET /api/music/models — Suno 모델 목록 (V4~V5)
- GET /api/music/credits — 잔여 크레딧 조회
- POST /api/music/extend — 곡 연장 (continueAt 지점부터)
- POST /api/music/vocal-removal — 보컬/인스트루멘탈 분리
- GenerateRequest에 model 필드 추가 (하드코딩 V4 제거)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dockerfile: docker.io → docker-ce-cli + docker-compose-plugin (Docker 공식 저장소)
- python:3.12-slim에서 docker.io가 제대로 동작하지 않던 문제 해결
- root 유저로 실행하여 Docker 소켓 접근 보장
- deploy.sh: 헬스체크 URL을 서비스명:내부포트로 변경
- 컨테이너 내부에서 localhost:18000 접근 불가 문제 해결
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- GET /api/music/library 호출 시 디스크 .mp3 파일과 DB 자동 동기화
- 디스크에 없는 트랙 → DB에서 삭제
- DB에 없는 .mp3 → 새 트랙으로 자동 등록
- NAS에서 파일명 변경 시 웹에 자동 반영
- _v2_v2 파일명 중복 버그 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>