- 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>
볼륨 마운트가 ./data/music → /app/data 이므로,
/app/data/music/ 에 저장하면 호스트에서 ./data/music/music/ 이 되어
nginx 서빙 경로와 불일치. /app/data 로 통일.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Base URL: apicast.suno.ai → api.sunoapi.org/api/v1
- 생성: POST /generate (customMode, model, instrumental 필드)
- 폴링: GET /generate/record-info?taskId=xxx (PENDING→SUCCESS)
- 가사: /lyrics 비동기 폴링 방식으로 변경
- 응답 필드: camelCase (audioUrl, imageUrl, sunoData) 대응
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dockerfile: util-linux 패키지 추가 (flock 명령어 제공)
- deploy.sh: 헬스체크 URL을 Docker 서비스명 → localhost 호스트 포트로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- backend/main.py: logging 모듈 도입, print() 제거
- stock-lab/main.py: print() → logger 전환, _calc_portfolio_totals 공용 함수 추출
- stock-lab/scraper.py: logging 모듈 도입, print() 제거
- docker-compose.yml: 전 서비스 healthcheck 블록 추가 (30s 간격, 3회 재시도)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- POST /api/stock/ai-coach: Anthropic API 프록시 (API 키 서버 보관)
- trade/balance, trade/order: ADMIN_API_KEY 헤더 인증 추가
- print() → logging 모듈 전환 (stock-lab)
- .env.example: ADMIN_API_KEY, ANTHROPIC_API_KEY, CORS_ALLOW_ORIGINS 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- travel-proxy: get_thumb NameError 수정 및 경로 조작 방어
- stock-lab, music-lab: CORS allow_origins=* → 환경변수 기반 도메인 제한
- travel-proxy, deployer: /health 엔드포인트 추가
- 전 서비스 .dockerignore 추가 (.git, __pycache__, .env 제외)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- analyzer.py: generate_combined_recommendation() 함수 추가
빈도Z(25%)·조합지문(30%)·갭(20%)·공동출현(15%)·다양성(10%) 가중 투표
- main.py: GET /api/lotto/recommend/combined 엔드포인트 추가
결과를 태그 "종합추론"으로 recommendations 테이블에 저장
- main.py: GET /api/lotto/recommend/combined/history 엔드포인트 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
프롬프트 생성/복사 방식으로 전환하여 더 이상 불필요한
/api/stock/ai-analysis 엔드포인트, ai_analyst.py, google-generativeai 패키지 제거
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docker-compose.yml stock-lab environment에 GEMINI_API_KEY, GEMINI_MODEL 추가.
.env에 값이 있어도 컨테이너에 전달 안 됐던 문제 수정.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>