b82a10e580
feat(blog-lab): 평가자 단계 — 6기준 60점 체계 + link_natural 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 01:00:21 +09:00
4646b79e6e
feat(blog-lab): 마케터 단계 — 전환율 강화 + 링크 삽입
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:57:50 +09:00
786033f202
feat(blog-lab): 작가 단계 — 크롤링 본문 + 브랜드 링크 참조 글 생성
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:54:48 +09:00
25f4f1f98b
feat(blog-lab): 브랜드커넥트 링크 CRUD API 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:51:01 +09:00
336bc90b4e
feat(blog-lab): 리서치 단계에 블로그 본문 크롤링 통합
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:48:55 +09:00
2980807587
feat(blog-lab): brand_links 테이블 및 CRUD 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:47:03 +09:00
7c7093d67c
test(blog-lab): _extract_text 직접 테스트 추가
2026-04-07 00:44:47 +09:00
2603c7ce20
feat(blog-lab): 네이버 블로그 본문 크롤링 모듈 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-07 00:42:55 +09:00
4f68b568a7
fix(compose): 프로젝트명 'webpage' 고정 — deployer/호스트 간 불일치 해결
...
deployer 내부(/runtime)와 NAS 호스트(/volume1/docker/webpage)에서 docker compose
실행 시 디렉토리명 기반 프로젝트명이 달라져 컨테이너 관리가 불가능한 문제 수정.
name: webpage으로 고정하여 어디서 실행해도 동일한 프로젝트로 인식.
deprecated version: "3.8" 제거.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 22:26:40 +09:00
fdb2fedd40
fix(deploy): compose stop/rm 후 재빌드로 컨테이너 충돌 근본 해결
...
docker ps --filter 방식이 Synology에서 불안정하여
docker compose stop/rm으로 compose 관리 컨테이너를 먼저 정리하고,
이름 기반 docker rm으로 고아 컨테이너도 추가 정리하는 2단계 방식으로 변경.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 22:22:32 +09:00
b0f12ba6c6
deployer: TZ 환경변수 추가 + 로그 시간대 표기 개선
...
- docker-compose.yml: deployer에 TZ=Asia/Seoul 환경변수 추가
- deployer/app.py: 로그 datefmt에 %Z 추가하여 KST 시간대 명시
- deployer 재시작 필요: docker compose up -d --build deployer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 22:17:27 +09:00
aee3937625
fix(compose): data 볼륨 상대 경로 → RUNTIME_PATH 절대 경로로 통일
...
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 >
2026-04-06 22:14:47 +09:00
d9bfd04c76
deployer: 배포 안정성 개선 — 헬스체크 실패 exit 1 + rsync 에러 핸들링 수정
...
- deploy.sh: 헬스체크 실패 시 exit 1 반환 (성공/실패 로그 추적 가능)
- deploy.sh: 릴리즈 백업에서 data/ 디렉토리 제외 (디스크 절약)
- deploy-nas.sh: rsync || [...] && true 셸 구문 오류 수정 (올바른 에러 핸들링)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 22:12:04 +09:00
cd292b2632
fix(deploy): --force-recreate로 컨테이너 이름 충돌 해결
...
docker rm -f가 deployer 내부에서 동작하지 않는 문제.
docker compose up --force-recreate로 기존 컨테이너를 자동 교체.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:58:06 +09:00
80ccb20f99
fix(deploy): docker rm -f로 컨테이너 강제 제거 후 빌드
...
docker compose down은 다른 프로젝트명으로 생성된 컨테이너를 인식 못함.
개별 docker rm -f로 확실하게 이름 충돌 제거.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:56:46 +09:00
ce4f7b3ef6
fix(deploy): 빌드 전 docker compose down으로 컨테이너 충돌 방지
...
신규 서비스 추가 시 기존 고아 컨테이너와 이름 충돌하는 문제 해결.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:55:03 +09:00
1b368e9896
fix(deploy): deploy.sh에 realestate-lab 빌드/헬스체크 추가
...
docker compose up --build 목록과 헬스체크 대상에 realestate-lab 누락 수정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:47:52 +09:00
a542b1af7d
fix(deployer): chown/chmod 실패 시 에러 무시 — 비root 사용자 호환
...
호스트에서 bgg8988으로 실행 시 root 소유 파일 chown 불가 허용.
deployer 컨테이너(root)에서는 정상 동작.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:39:18 +09:00
3ce93149d5
fix(deployer): rsync 타임스탬프 보존 제거 + non-critical 에러 허용
...
-t 플래그 제거 (Operation not permitted 방지), exit code 23 허용.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:38:03 +09:00
5530402604
fix(deployer): rsync에서 소유자/그룹 보존 비활성화 — chgrp 권한 오류 해결
...
-a 대신 -rlpt --no-owner --no-group 사용. 소유권은 이후 chown으로 설정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:36:59 +09:00
cb750f888b
fix(deployer): 배포 후 파일 권한 bgg8988:users 755로 설정
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:34:56 +09:00
598adcbeb5
fix(lotto-lab): 코드 리뷰 이슈 수정 — update_purchase JSON 직렬화, EMA 피드백 루프 연결
...
- 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 >
2026-04-06 21:25:27 +09:00
d67e1fcd67
docs: CLAUDE.md 신규 API + 테이블 + 파일 구조 업데이트
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:20:41 +09:00
7eda717326
lotto-lab: 구매/전략/스마트추천 API 엔드포인트 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:19:28 +09:00
28e3af12ec
lotto-lab: checker 연동 — 추첨 결과 시 purchase 자동 체크 + 가중치 재계산
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:17:52 +09:00
c9f10aca4a
lotto-lab: strategy_evolver — EMA/Softmax 가중치 진화 + 스마트 추천
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 21:15:42 +09:00
706ca410ca
feat(lotto-lab): purchase_manager — 구매 결과 자동 체크 + 전략 성과 집계
...
- 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 >
2026-04-06 21:12:43 +09:00
4c6e96d59c
lotto-lab: 구매 CRUD 확장 + strategy_performance/weights CRUD 추가
...
- _purchase_row_to_dict: numbers/is_real/source_detail/results/total_prize 신규 컬럼 포함
- add_purchase: numbers, is_real, source_strategy, source_detail 파라미터 추가
- get_purchases: is_real, strategy, checked 필터 추가
- get_purchase_stats: total/real/virtual/by_strategy 분리 통계 + 하위호환 필드 유지
- update_purchase: allowed 셋에 numbers/is_real/source_strategy 추가
- 신규: upsert_strategy_performance, get_strategy_performance
- 신규: get_strategy_weights, update_strategy_weight
- 신규: update_purchase_results (체커 연동용)
- 테스트 5건 추가 (TDD)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 21:09:59 +09:00
7cf4784c08
lotto-lab: DB 스키마 확장 — purchase_history ALTER + strategy 테이블 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 21:07:08 +09:00
afc159c84d
fix(realestate-lab): 최종 리뷰 이슈 수정 — FK CASCADE, 단일 연결, 동시성 가드
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:49:05 +09:00
bdfcdee5fd
fix(realestate-lab): 코드 리뷰 이슈 수정 — 신규 추적, 보안, 비동기, 매칭 상태 보존
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:43:27 +09:00
3b118725ca
docs: CLAUDE.md에 realestate-lab 서비스 정보 추가
...
서비스 목록, Docker 포트, Nginx 라우팅, 로컬 URL, API 목록 추가.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:35:35 +09:00
6344f957fa
refactor(lotto-backend): 청약 관련 코드 완전 제거 — realestate-lab으로 이관
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:34:12 +09:00
0be5693aee
infra: realestate-lab Docker/Nginx/배포 스크립트 통합
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:32:08 +09:00
5a493664f2
feat(realestate-lab): FastAPI 앱 + 스케줄러 + 전체 API 라우트
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:31:08 +09:00
c6328f7b04
Merge branch 'worktree-agent-a36803ff'
2026-04-06 08:30:11 +09:00
d6d6faf5c7
Merge branch 'worktree-agent-a395667a'
2026-04-06 08:29:55 +09:00
437838c28b
feat(realestate-lab): 프로필 기반 매칭 엔진
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:29:36 +09:00
4cb6296a3d
feat(realestate-lab): 공공데이터포털 API 수집기
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:29:19 +09:00
9e7efc3f12
feat(realestate-lab): DB 레이어 — 테이블 생성 + 전체 CRUD
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:27:11 +09:00
6b95c1e5a0
feat(realestate-lab): Pydantic 요청 모델 정의
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:26:01 +09:00
7d20527a17
feat(realestate-lab): 프로젝트 스캐폴딩 — Dockerfile, requirements, init
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-06 08:25:43 +09:00
e91a5e6be6
docs: realestate-lab 구현 계획서 작성
...
10개 Task — 스캐폴딩, 모델, DB, 수집기, 매칭, API, 인프라, lotto-backend 정리, 문서, 검증
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-05 22:16:43 +09:00
c4406b9ecd
lotto-lab: 구매 연동 + 전략 진화 시스템 구현 계획 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-05 22:10:16 +09:00
65ffdec7d2
docs: realestate-lab 설계 스펙 문서 추가
...
청약 공고 자동 수집 + 프로필 기반 자격 매칭 서비스 설계.
공공데이터포털 API 연동, 독립 서비스 분리, 매칭 엔진 정의.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-05 20:10:31 +09:00
8b916194aa
deployer: blog-lab 서비스 배포 스크립트에 추가
...
rsync 대상, docker compose up, 헬스체크에 blog-lab 포함
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-05 20:05:14 +09:00
caeb72d310
lotto-lab: 구매 연동 + 전략 진화 시스템 설계 문서 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-05 20:02:27 +09:00
ba33e00ce3
blog-lab: 블로그 마케팅 수익화 서비스 추가
...
네이버 검색 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 >
2026-04-05 19:59:25 +09:00
bb76e62774
music-lab: 가사 저장/수정/삭제 CRUD API 추가
...
- 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 >
2026-04-05 19:11:39 +09:00
649b99d143
music-lab: 서비스 고도화 — duration 수정 + 모델/크레딧/연장/분리 API 추가
...
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 >
2026-04-04 14:36:52 +09:00