불필요 main api 정리

master
jaehwang 2025-08-19 15:14:22 +09:00
parent 3d1f8683a4
commit cb5dd5f25f
4 changed files with 44 additions and 113 deletions

View File

@ -1,5 +1,4 @@
import os import os
from typing import Optional
from fastapi import FastAPI, HTTPException from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
@ -7,7 +6,7 @@ from fastapi.responses import FileResponse
from dotenv import load_dotenv from dotenv import load_dotenv
import uvicorn import uvicorn
from models import RealEstateQuery, ParsedRealEstate from models import RealEstateQuery
from openai_parser import OpenAIParser from openai_parser import OpenAIParser
from public_data_api import PublicDataAPIClient from public_data_api import PublicDataAPIClient
@ -39,40 +38,6 @@ async def serve_index():
"""메인 페이지 제공""" """메인 페이지 제공"""
return FileResponse("../frontend/index.html") 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") @app.post("/api/search")
async def search_real_estate(query: RealEstateQuery): async def search_real_estate(query: RealEstateQuery):
"""자연어 검색 후 실거래가 데이터 조회""" """자연어 검색 후 실거래가 데이터 조회"""
@ -94,7 +59,6 @@ async def search_real_estate(query: RealEstateQuery):
transaction_type=parsed.transaction_type, transaction_type=parsed.transaction_type,
region_code=parsed.region_code region_code=parsed.region_code
) )
print(listings)
return { return {
"parsed": parsed, "parsed": parsed,

View File

@ -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"
}

View File

@ -47,6 +47,26 @@
- docs/project_plan.md 업데이트 (API 가이드 문서 추가) - docs/project_plan.md 업데이트 (API 가이드 문서 추가)
- 웹 검색 및 브라우저를 통한 실제 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] 프론트엔드 실거래가 표시 기능 변경 완료 [2025-08-19 14:25:44] 프론트엔드 실거래가 표시 기능 변경 완료
- frontend/script.js 수정 - frontend/script.js 수정
- /api/parse에서 /api/search로 엔드포인트 변경 - /api/parse에서 /api/search로 엔드포인트 변경

View File

@ -14,18 +14,19 @@
C:\o2o\RealEstateSearch\ C:\o2o\RealEstateSearch\
├── docs/ ├── docs/
│ ├── project_plan.md │ ├── project_plan.md
│ └── project_logs.txt │ ├── project_logs.txt
│ └── api_guide.md
├── backend/ ├── backend/
│ ├── main.py (FastAPI 서버) │ ├── main.py (FastAPI 서버)
│ ├── openai_parser.py (OpenAI 파싱 로직) │ ├── openai_parser.py (OpenAI 파싱 + 지역코드 변환)
│ └── models.py (데이터 모델) │ ├── models.py (데이터 모델)
│ └── public_data_api.py (공공데이터 API 클라이언트)
├── frontend/ ├── frontend/
│ ├── index.html │ ├── index.html
│ ├── style.css │ ├── style.css
│ └── script.js │ └── script.js
├── data/ ├── data/
│ ├── region_codes.json (전체 시군구 코드) │ └── region_codes.json (시군구 코드)
│ └── region_codes_simple.json (간략 버전)
├── requirements.txt ├── requirements.txt
├── .env (API 키 저장) ├── .env (API 키 저장)
├── .gitignore (Git 제외 파일) ├── .gitignore (Git 제외 파일)
@ -39,3 +40,20 @@ C:\o2o\RealEstateSearch\
- [x] OpenAI 파싱 로직 구현 - [x] OpenAI 파싱 로직 구현
- [x] 프론트엔드 개발 - [x] 프론트엔드 개발
- [x] README.md 업데이트 - [x] README.md 업데이트
- [x] 지역 코드 변환 기능
- [x] 공공데이터 API 연동
- [x] 실거래가 표시 UI
- [x] 불필요한 코드 정리
## API 엔드포인트
### 1. GET `/`
- 메인 페이지 (index.html) 제공
### 2. POST `/api/search`
- 자연어 검색 및 실거래가 조회
- 요청: `{"text": "강남 아파트 전세"}`
- 응답: 파싱 결과 + 실거래가 목록
### 3. GET `/static/*`
- CSS, JS 등 정적 파일 제공