@@ -163,7 +163,7 @@ def feature_card_cosine_similarity(card1, card2):
163163 return result [0 ][1 ].item ()
164164
165165
166- async def fetch_data (user_id , card_type ):
166+ async def fetch_data (user_id , card_type , want_to_find ):
167167
168168 location_cluster = [{'강서구' , '양천구' }, {'구로구' , '영등포구' , '금천구' }, {'동작구' , '관악구' }, {'서초구' , '강남구' },
169169 {'송파구' , '강동구' }, {'은평구' , '서대문구' , '마포구' }, {'종로구' , '중구' , '용산구' }, {'중랑구' , '동대문구' , '성동구' , '광진구' },
@@ -187,41 +187,47 @@ async def fetch_data(user_id, card_type):
187187 cluster_index = i
188188 break
189189
190- user_cards = []
191- post_cards = []
192- for location in location_cluster [cluster_index ]:
193- query = f"""
194- SELECT member_id AS id, location, member_features::jsonb AS features, gender, 'my' AS card_type, birth_year
195- FROM member_account
196- JOIN feature_card
197- ON member_account.my_card_id = feature_card.feature_card_id
198- WHERE location like '%{ location } %' and gender IN ('{ user_gender .lower ()} ', '{ user_gender .upper ()} ')
199- UNION ALL
200- SELECT member_id as id, location, member_features::jsonb AS features, gender, 'mate' AS card_type, birth_year
201- FROM member_account
202- JOIN feature_card
203- ON member_account.mate_card_id = feature_card.feature_card_id
204- WHERE location like '%{ location } %' and gender IN ('{ user_gender .lower ()} ', '{ user_gender .upper ()} ')
205- """
206- user_cards .extend ([dict (record ) for record in await database .fetch_all (query )])
207-
190+ cards = []
191+
192+ if want_to_find == 'member' :
193+ for location in location_cluster [cluster_index ]:
194+ if card_type == 'my' :
195+ query = f"""
196+ SELECT member_id as id, location, member_features::jsonb AS features, gender, 'mate' AS card_type, birth_year
197+ FROM member_account
198+ JOIN feature_card
199+ ON member_account.mate_card_id = feature_card.feature_card_id
200+ WHERE location like '%{ location } %' and gender IN ('{ user_gender .lower ()} ', '{ user_gender .upper ()} ')
201+ """
202+ cards .extend ([dict (record ) for record in await database .fetch_all (query )])
203+
204+ elif card_type == 'mate' :
205+ query = f"""
206+ SELECT member_id AS id, location, member_features::jsonb AS features, gender, 'my' AS card_type, birth_year
207+ FROM member_account
208+ JOIN feature_card
209+ ON member_account.my_card_id = feature_card.feature_card_id
210+ WHERE location like '%{ location } %' and gender IN ('{ user_gender .lower ()} ', '{ user_gender .upper ()} ')
211+ """
212+ cards .extend ([dict (record ) for record in await database .fetch_all (query )])
213+
214+ if want_to_find == 'post' :
208215 query = f"""
209216 SELECT id, location, member_features::jsonb AS features, gender, 'room' AS card_type, member_account.birth_year
210217 FROM shared_room_post
211218 JOIN feature_card ON shared_room_post.room_mate_card_id = feature_card.feature_card_id
212219 JOIN member_account ON member_account.member_id = shared_room_post.publisher_id
213220 WHERE location like '%{ location } %' and gender IN ('{ user_gender .lower ()} ', '{ user_gender .upper ()} ')
214221 """
215- post_cards .extend ([dict (record ) for record in await database .fetch_all (query )])
222+ cards .extend ([dict (record ) for record in await database .fetch_all (query )])
216223
217- return user_cards , post_cards , dict (user )
224+ return cards , dict (user )
218225
219226def fill_missing_values (df ):
220227 imputer = SimpleImputer (strategy = 'mean' )
221228 return imputer .fit_transform (df )
222229
223- async def clustering (user_cards , post_cards , user_card ):
224- cards = [* user_cards , * post_cards ]
230+ async def clustering (cards , user_card ):
225231
226232 if cards == []:
227233 cards = [{'id' : 'male_default' , 'features' : None , 'gender' : 'MALE' , 'card_type' : 'my' , 'birth_year' : '1999' },
@@ -327,26 +333,26 @@ async def root():
327333@app .get ("/recommendation/update" )
328334async def update ():
329335 start = time .time ()
330- user_cards , post_cards , user_card = (
331- await fetch_data ("kakao_0" , "my" )
336+ cards , user_card = (
337+ await fetch_data ("kakao_0" , "my" , "member" )
332338 )
333339
334340 print ('fetch complete' )
335341
336- await clustering (user_cards , post_cards , user_card )
342+ await clustering (cards , user_card )
337343
338344 print ("clustering complete" )
339345 print ("time : " , time .time () - start )
340346 return {"detail" : "ok" }
341347
342348@app .get ("/fetch" )
343349async def fetch ():
344- user_cards , post_cards = (
345- await fetch_data ("kakao_0" , "my" )
350+ cards , user_card = (
351+ await fetch_data ("kakao_0" , "my" , "member" )
346352 )
347353
348- print (user_cards )
349- print (generate_df_data (post_cards ))
354+ print (cards )
355+ print (generate_df_data (cards ))
350356
351357@app .get ("/insert" )
352358async def insert ():
0 commit comments