diff --git a/CLAUDE.md b/CLAUDE.md index 112d9a3..386fe8b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,7 +7,7 @@ ## 1. 프로젝트 개요 Synology NAS 기반의 개인 웹 플랫폼 백엔드 모노레포. -- **서비스**: lotto-lab, stock-lab, travel-album, music-lab, deployer +- **서비스**: lotto-lab, stock-lab, travel-album, music-lab, blog-lab, realestate-lab, deployer - **프론트엔드**: 별도 레포 (React + Vite SPA), 빌드 산출물만 NAS에 배포 - **인프라**: Docker Compose + Nginx(리버스 프록시) + Gitea Webhook 자동 배포 @@ -57,6 +57,7 @@ Synology NAS 기반의 개인 웹 플랫폼 백엔드 모노레포. | `stock-lab` | 18500 | 주식 뉴스·AI 분석·KIS API 연동 | | `music-lab` | 18600 | AI 음악 생성·라이브러리 관리 API | | `blog-lab` | 18700 | 블로그 마케팅 수익화 API | +| `realestate-lab` | 18800 | 부동산 청약 자동 수집·매칭 API | | `travel-proxy` | 19000 | 여행 사진 API + 썸네일 생성 | | `lotto-frontend` (nginx) | 8080 | 정적 SPA 서빙 + API 리버스 프록시 | | `webpage-deployer` | 19010 | Gitea Webhook 수신 → 자동 배포 | @@ -74,6 +75,7 @@ Synology NAS 기반의 개인 웹 플랫폼 백엔드 모노레포. | `/api/portfolio` | `stock-lab:8000` | trailing slash 유무 모두 매칭 | | `/api/music/` | `music-lab:8000` | AI 음악 생성·라이브러리 API | | `/api/blog-marketing/` | `blog-lab:8000` | 블로그 마케팅 수익화 API | +| `/api/realestate/` | `realestate-lab:8000` | 부동산 청약 API | | `/webhook`, `/webhook/` | `deployer:9000` | Gitea Webhook | | `/media/music/` | `/data/music/` (파일 직접 서빙) | 생성된 오디오 파일 | | `/media/travel/.thumb/` | `/data/thumbs/` (파일 직접 서빙) | 썸네일 캐시 | @@ -125,6 +127,7 @@ docker compose up -d | Travel API | http://localhost:19000 | | Stock Lab | http://localhost:18500 | | Blog Lab | http://localhost:18700 | +| Realestate Lab | http://localhost:18800 | --- @@ -267,6 +270,36 @@ docker compose up -d - CDN URL(`cdn1.suno.ai`)은 임시 → 반드시 로컬 다운로드 필요 - 가사 섹션 태그: `[Verse]`, `[Chorus]`, `[Bridge]`, `[Instrumental]` 등 +### realestate-lab (realestate-lab/) +- 공공데이터포털 API 연동: 한국부동산원 청약홈 분양정보 조회 서비스 +- DB: `/app/data/realestate.db` (announcements, announcement_models, user_profile, match_results, collect_log 테이블) +- 파일 구조: `main.py`, `db.py`, `collector.py`, `matcher.py`, `models.py` + +**환경변수** +- `DATA_GO_KR_API_KEY`: 공공데이터포털 API 키 (미설정 시 수동 등록만 가능) + +**스케줄러 job** +- 09:00 매일 — 청약 공고 수집 + 매칭 (`scheduled_collect`) +- 00:00 매일 — 상태 갱신 + 재매칭 (`scheduled_status_update`) + +**realestate-lab API 목록** + +| 메서드 | 경로 | 설명 | +|--------|------|------| +| GET | `/api/realestate/announcements` | 공고 목록 (region, status, house_type, matched_only, sort, page, size) | +| GET | `/api/realestate/announcements/{id}` | 공고 상세 (주택형별 포함) | +| POST | `/api/realestate/announcements` | 수동 공고 등록 | +| PUT | `/api/realestate/announcements/{id}` | 공고 수정 | +| DELETE | `/api/realestate/announcements/{id}` | 공고 삭제 | +| POST | `/api/realestate/collect` | 수동 수집 트리거 | +| GET | `/api/realestate/collect/status` | 마지막 수집 결과 | +| GET | `/api/realestate/profile` | 내 프로필 조회 | +| PUT | `/api/realestate/profile` | 프로필 수정 (upsert) | +| GET | `/api/realestate/matches` | 매칭 결과 목록 | +| POST | `/api/realestate/matches/refresh` | 매칭 재계산 | +| PATCH | `/api/realestate/matches/{id}/read` | 신규 알림 읽음 처리 | +| GET | `/api/realestate/dashboard` | 요약 (진행중 공고수, 신규 매칭수, 다가오는 일정) | + ### travel-proxy (travel-proxy/) - 원본 사진: `/data/travel/` (RO) - 썸네일 캐시: `/data/thumbs/` (RW)