Commit Graph

160 Commits

Author SHA1 Message Date
6ffa04f847 docs: music-lab Suno API 전체 기능 확장 설계 스펙
Suno API 미사용 기능 분석 후 3단계 점진 확장 설계.
Phase 1(생성 강화), Phase 2(후처리), Phase 3(리믹스) 구조.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 03:13:41 +09:00
262c088c8a feat(realestate-lab): 청약 가점제 계산 (84점 만점)
- calculate_subscription_points(): 무주택기간(32) + 부양가족(35) + 통장기간(17)
- 프로필 GET/PUT 응답에 subscription_points 포함
- 매칭 결과 API에 my_points 포함 (가점 비교용)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 00:27:53 +09:00
074dd4041f feat(realestate-lab): 공고 목록에 매칭 점수 포함
- _enrich_items()로 통합: 가격 범위 + match_score/reasons/eligible_types
- 프로필 기반 매칭 점수가 공고 카드에 바로 표시됨

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 23:51:06 +09:00
243c101981 feat(realestate-lab): 즐겨찾기 + 가격 표시 + 일정 없는 공고 필터링
- announcements 테이블에 is_bookmarked 컬럼 추가 (마이그레이션 포함)
- PATCH /announcements/{id}/bookmark 토글 API 추가
- 공고 목록에 모델 기반 가격 범위(min_price, max_price_display) 포함
- 대시보드에 즐겨찾기 목록 + 개별 이벤트 일정 형식 반환
- 지역 검색을 LIKE 부분 매칭으로 변경
- 수집 시 일정 정보 없는 공고 건너뛰기

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 23:38:57 +09:00
011eac7682 fix(realestate-lab): 매칭 재계산 DB lock 오류 수정
- sqlite3.connect timeout=10 추가 (기본 0초 → 즉시 실패 방지)
- run_matching() 단일 connection으로 통합 (프로필 조회~매칭~저장)
- matches/refresh 엔드포인트 에러 핸들링 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 04:51:06 +09:00
535ffea45a refactor: 전체 코드베이스 감사 기반 리팩토링 — 버그 수정, 데드코드 제거, 보안 강화
P0 버그 수정:
- stock-lab: trade 엔드포인트 NameError 수정 (resp 미정의)
- deployer: 동시 배포 시 HTTP 200 → 503 반환

P1 데드코드 제거:
- stock-lab: fetch_overseas_news(), get_broker_cash() 제거
- blog-lab: 미사용 urlparse import 제거
- lotto-lab: 중복 inline import json 7곳 제거

P2 성능/효율 개선:
- lotto-lab: 가중 샘플링 3중 복사 → utils.weighted_sample_6() 통합
- lotto-lab: DB 인덱스 3개 추가 (recommendations, purchase_history)
- stock-lab: Pydantic .dict() → .model_dump() 호환
- blog-lab: 페이지네이션 상한(le=100) 추가

P3 보안/인프라:
- nginx: X-Frame-Options, X-Content-Type-Options, Referrer-Policy 헤더 추가
- docker-compose: travel-proxy CORS 와일드카드 → localhost 전용
- Dockerfile: music-lab, blog-lab, realestate-lab에 PYTHONUNBUFFERED 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 04:10:14 +09:00
9d5583935d docs: pet-lab 구현 계획서 추가
5개 Task: config → eye_tracker → pet_widget → interaction → main

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 03:27:41 +09:00
a2bd26682e feat(music-lab): 파일 해시 기반 라이브러리 동기화 — rename 시 태그 보존
- music_library에 file_hash(MD5) 컬럼 추가
- _sync_library_with_disk를 3단계로 변경:
  1. 파일명 매칭 (빠른 경로)
  2. 해시 비교로 rename 감지 → 기존 레코드 업데이트 (태그 보존)
  3. 나머지 → 삭제/추가
- 파일명 변경 시 audio_url 업데이트 → 다운로드도 새 이름 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 03:26:41 +09:00
a588a26144 docs: pet-lab 데스크톱 펫 애플리케이션 설계 문서 추가
PyQt5 기반 Windows 데스크톱 펫 — 화면 하단 고정, 마우스 시선 추적,
클릭/우클릭 상호작용. 독립 프로젝트(workspace/pet-lab)로 분리.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 03:24:00 +09:00
14674c4e9a fix(blog-lab): AI 생성 콘텐츠에 현재 날짜 컨텍스트 추가
Claude API 호출 시 시스템 프롬프트에 현재 날짜를 포함하여
2024년이 아닌 실제 날짜 기준으로 콘텐츠가 생성되도록 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 02:09:49 +09:00
74891eaa60 docs: CLAUDE.md에 blog-lab 파이프라인 변경사항 반영 2026-04-07 01:03:53 +09:00
4cc802ed95 test(blog-lab): 4단계 파이프라인 통합 테스트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 01:02:40 +09:00
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