diff --git a/search/generate_job_posting.py b/search/generate_job_posting.py index 1fb2c28..f1f29dc 100644 --- a/search/generate_job_posting.py +++ b/search/generate_job_posting.py @@ -19,7 +19,7 @@ TOWN_FIELD = "EMD_NAME" # 읍면동 # 3. 생성할 데이터 수 -N = 1000 +N = 50000 # 4. 직종, 교육, 요일, 급여 등 더미 값 목록 main_keywords = ["외식·음료"] @@ -43,20 +43,17 @@ employment_types = ["정규직", "비정규직"] experiences = ["경력", "무관"] -co = CompanyInfo.objects.first() -# 5. 특정 회사 UUID (고정값) -COMPANY_ID: uuid.UUID | Any = co.company_id if co else None -company = CompanyInfo.objects.get(company_id=COMPANY_ID) +companies = CompanyInfo.objects.all() def run_dummy_job_posting(): created = 0 - + JobPosting.objects.all().delete() while created < N: polygon = gdf.sample(1).iloc[0] try: point = polygon.geometry.representative_point() # 중심 근처 랜덤 포인트 - + random_company = random.choice(companies) JobPosting.objects.create( job_posting_title=f"공고 {created+1}", address="대한민국 어디쯤", @@ -72,7 +69,7 @@ def run_dummy_job_posting(): job_keyword_main=random.choice(main_keywords), job_keyword_sub=random.choice(sub_keywords), number_of_positions=random.randint(1, 10), - company_id=company, + company_id=random_company, education=random.choice(educations), deadline=datetime.today().date() + timedelta(days=random.randint(1, 30)), time_discussion=random.choice([True, False]), diff --git a/search/views/search_views.py b/search/views/search_views.py index f0c49e5..db6ed3c 100644 --- a/search/views/search_views.py +++ b/search/views/search_views.py @@ -77,7 +77,8 @@ def get(self, request: HttpRequest) -> JsonResponse: if query.town_no: district_filter |= Q(emd_no__in=query.town_no) - districts = District.objects.filter(district_filter).distinct() + # 지역 객체 조회 + districts = District.objects.filter(district_filter) # 변환 매핑 생성 city_code_to_name = {d.city_no: d.city_name for d in districts} @@ -89,12 +90,10 @@ def get(self, request: HttpRequest) -> JsonResponse: qs = qs.filter(city__in=city_code_to_name.values()) if query.district_no: qs = qs.filter(district__in=district_code_to_name.values()) - if query.town_no: - qs = qs.filter(town__in=town_code_to_name.values()) # 6. 공간 필터링 (읍면동 기준, 3km 반경) if query.town_no and district_filter: buffered_regions = [] - districts_to_buffer = District.objects.filter(district_filter) + districts_to_buffer = districts for district in districts_to_buffer: if district.geometry: buffered_regions.append(district.geometry.buffer(3000)) @@ -110,7 +109,7 @@ def get(self, request: HttpRequest) -> JsonResponse: # 7. 북마크 여부 if current_user: - bookmarked_qs = JobPostingBookmark.objects.filter( + bookmarked_qs = JobPostingBookmark.objects.select_related("user_id").filter( user_id=current_user.common_user_id, job_posting_id=OuterRef("pk"), )