diff --git a/backend/main.py b/backend/main.py index f197852..789bee6 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,5 +1,4 @@ import os -from typing import Optional from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles @@ -7,7 +6,7 @@ from fastapi.responses import FileResponse from dotenv import load_dotenv import uvicorn -from models import RealEstateQuery, ParsedRealEstate +from models import RealEstateQuery from openai_parser import OpenAIParser from public_data_api import PublicDataAPIClient @@ -39,40 +38,6 @@ async def serve_index(): """메인 페이지 제공""" return FileResponse("../frontend/index.html") -@app.post("/api/parse", response_model=ParsedRealEstate) -async def parse_real_estate(query: RealEstateQuery): - """자연어 입력을 파싱하여 부동산 정보 추출""" - if not parser: - raise HTTPException( - status_code=500, - detail="OpenAI API key not configured. Please set OPENAI_API_KEY in .env file" - ) - - try: - result = await parser.parse_real_estate_query(query.text) - return result - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) - -@app.get("/api/real-estate-data") -async def get_real_estate_listings( - property_type: str = "아파트", - transaction_type: str = "매매", - region_code: str = "11680", - deal_ymd: Optional[str] = None -): - """공공데이터 API를 통한 실거래가 조회""" - try: - data = public_data_client.get_real_estate_data( - property_type=property_type, - transaction_type=transaction_type, - region_code=region_code, - deal_ymd=deal_ymd - ) - return {"data": data, "count": len(data)} - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) - @app.post("/api/search") async def search_real_estate(query: RealEstateQuery): """자연어 검색 후 실거래가 데이터 조회""" @@ -94,7 +59,6 @@ async def search_real_estate(query: RealEstateQuery): transaction_type=parsed.transaction_type, region_code=parsed.region_code ) - print(listings) return { "parsed": parsed, diff --git a/data/region_codes_simple.json b/data/region_codes_simple.json deleted file mode 100644 index e56658f..0000000 --- a/data/region_codes_simple.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "종로구": "11110", - "중구": "11140", - "용산구": "11170", - "성동구": "11200", - "광진구": "11215", - "동대문구": "11230", - "중랑구": "11260", - "성북구": "11290", - "강북구": "11305", - "도봉구": "11320", - "노원구": "11350", - "은평구": "11380", - "서대문구": "11410", - "마포구": "11440", - "양천구": "11470", - "강서구": "11500", - "구로구": "11530", - "금천구": "11545", - "영등포구": "11560", - "동작구": "11590", - "관악구": "11620", - "서초구": "11650", - "강남구": "11680", - "송파구": "11710", - "강동구": "11740", - "수원시": "41110", - "성남시": "41130", - "의정부시": "41150", - "안양시": "41170", - "부천시": "41190", - "광명시": "41210", - "평택시": "41220", - "안산시": "41270", - "고양시": "41280", - "과천시": "41290", - "구리시": "41310", - "남양주시": "41360", - "오산시": "41370", - "시흥시": "41390", - "군포시": "41410", - "의왕시": "41430", - "하남시": "41450", - "용인시": "41460", - "파주시": "41480", - "이천시": "41500", - "안성시": "41550", - "김포시": "41570", - "화성시": "41590", - "광주시": "41610", - "양주시": "41630", - "포천시": "41650", - "여주시": "41670", - "분당구": "41135", - "수정구": "41131", - "중원구": "41133", - "장안구": "41111", - "권선구": "41113", - "팔달구": "41115", - "영통구": "41117", - "만안구": "41171", - "동안구": "41173", - "상록구": "41271", - "단원구": "41273", - "덕양구": "41281", - "일산동구": "41285", - "일산서구": "41287", - "처인구": "41461", - "기흥구": "41463", - "수지구": "41465" -} \ No newline at end of file diff --git a/docs/project_logs.txt b/docs/project_logs.txt index 11b7d68..62fe61e 100644 --- a/docs/project_logs.txt +++ b/docs/project_logs.txt @@ -47,6 +47,26 @@ - docs/project_plan.md 업데이트 (API 가이드 문서 추가) - 웹 검색 및 브라우저를 통한 실제 API 정보 수집 +[2025-08-19 15:12:44] 사용하지 않는 API 엔드포인트 제거 작업 완료 +- backend/main.py 정리 + - /api/parse 엔드포인트 제거 (사용 안함) + - /api/real-estate-data 엔드포인트 제거 (사용 안함) + - /api/search 엔드포인트만 유지 (메인 API) + - 불필요한 import 제거 (Optional, ParsedRealEstate) + - 디버그용 print 문 제거 +- data/region_codes_simple.json 삭제 (사용 안함) +- docs/project_plan.md 업데이트 + - 폴더 구조 현행화 + - API 엔드포인트 섹션 추가 + - 작업 단계 업데이트 +- 최종 API 구조: + - GET / : 메인 페이지 + - POST /api/search : 자연어 검색 + 실거래가 조회 + - GET /static/* : 정적 파일 + +[2025-08-19 15:10:35] 사용하지 않는 API 엔드포인트 제거 작업 시작 +- 불필요한 엔드포인트 정리 + [2025-08-19 14:25:44] 프론트엔드 실거래가 표시 기능 변경 완료 - frontend/script.js 수정 - /api/parse에서 /api/search로 엔드포인트 변경 diff --git a/docs/project_plan.md b/docs/project_plan.md index 85474dc..a14e7fc 100644 --- a/docs/project_plan.md +++ b/docs/project_plan.md @@ -14,18 +14,19 @@ C:\o2o\RealEstateSearch\ ├── docs/ │ ├── project_plan.md -│ └── project_logs.txt +│ ├── project_logs.txt +│ └── api_guide.md ├── backend/ │ ├── main.py (FastAPI 서버) -│ ├── openai_parser.py (OpenAI 파싱 로직) -│ └── models.py (데이터 모델) +│ ├── openai_parser.py (OpenAI 파싱 + 지역코드 변환) +│ ├── models.py (데이터 모델) +│ └── public_data_api.py (공공데이터 API 클라이언트) ├── frontend/ │ ├── index.html │ ├── style.css │ └── script.js ├── data/ -│ ├── region_codes.json (전체 시군구 코드) -│ └── region_codes_simple.json (간략 버전) +│ └── region_codes.json (시군구 코드) ├── requirements.txt ├── .env (API 키 저장) ├── .gitignore (Git 제외 파일) @@ -39,3 +40,20 @@ C:\o2o\RealEstateSearch\ - [x] OpenAI 파싱 로직 구현 - [x] 프론트엔드 개발 - [x] README.md 업데이트 +- [x] 지역 코드 변환 기능 +- [x] 공공데이터 API 연동 +- [x] 실거래가 표시 UI +- [x] 불필요한 코드 정리 + +## API 엔드포인트 + +### 1. GET `/` +- 메인 페이지 (index.html) 제공 + +### 2. POST `/api/search` +- 자연어 검색 및 실거래가 조회 +- 요청: `{"text": "강남 아파트 전세"}` +- 응답: 파싱 결과 + 실거래가 목록 + +### 3. GET `/static/*` +- CSS, JS 등 정적 파일 제공