1212import sentry_sdk
1313from slack_bolt import App
1414from pydantic import ValidationError
15- from cachetools import cached , TTLCache
1615from slack_bolt .adapter .socket_mode import SocketModeHandler
1716
1817from middleware .laas import jira_summary_generator
@@ -60,11 +59,6 @@ def __init__(self, event, say, trigger_emoji):
6059 self .messages = None
6160 self .file_data = None
6261
63- self .user_map = {
64- x ['id' ]: {'real_name' : x ['real_name' ], 'email' : x ['profile' ].get ('email' )}
65- for x in get_all_slack_user_list () if not x ['deleted' ]
66- }
67-
6862 def set_conversation_data (self ):
6963 """
7064 스레드의 모든 메시지를 가져와 정제합니다
@@ -82,8 +76,8 @@ def set_conversation_data(self):
8276 for message in conversations ["messages" ]:
8377 # Process each message in the thread
8478 message_dt = datetime .fromtimestamp (float (message ['ts' ])).isoformat ()
85- user_name = self . user_map . get ( message ['user' ], { 'real_name' : 'Unknown' })[ 'real_name' ]
86- text = f'{ message_dt } { user_name } : """{ message .get ("text" , "" )} """'
79+ message_user_info = app . client . users_info ( user = message ['user' ])
80+ text = f'{ message_dt } { message_user_info [ "user" ][ "real_name" ] } : """{ message .get ("text" , "" )} """'
8781 images = []
8882
8983 # conversation 에 대한 모든 첨부파일을 복제합니다.
@@ -248,19 +242,6 @@ def validate_gpt_response_json(self, gpt_response, say):
248242 raise e
249243
250244
251- @cached (cache = TTLCache (maxsize = 1 , ttl = 60 * 60 * 24 ))
252- def get_all_slack_user_list ():
253- return app .client .users_list ()['members' ]
254-
255-
256- @app .event ("team_join" )
257- def onboarding (event , say ):
258- """
259- 워크스페이스에 누군가 새로 들어올 때마다 캐시 초기화
260- """
261- get_all_slack_user_list .cache_clear ()
262-
263-
264245def check_emoji (event , say , emoji ):
265246 """
266247 이미 스레드에 이모지, 즉 생성된 이슈가 있는지 확인합니다.
@@ -359,8 +340,8 @@ def laas_jira(event, say, collection: PICollection):
359340 )
360341 gpt_metadata = slack .validate_gpt_response_json (gpt_response , say )
361342
362- reporter_email = slack . user_map . get ( slack .item_user , {}) .get ('email' ) or outside_slack_jira_user_map ( slack . item_user )
363- assignee_email = slack . user_map . get ( slack .reaction_user , {}) .get ('email' ) or outside_slack_jira_user_map ( slack . reaction_user )
343+ reporter_email = app . client . users_info ( user = slack .item_user )[ 'user' ][ 'profile' ] .get ('email' )
344+ assignee_email = app . client . users_info ( user = slack .reaction_user )[ 'user' ][ 'profile' ] .get ('email' )
364345
365346 try :
366347 issue = Issue .model_validate (gpt_metadata )
@@ -406,8 +387,8 @@ def laas_jira(event, say, collection: PICollection):
406387
407388 jira = JiraOperator ()
408389 refined_fields = issue .refined_fields (
409- jira .get_user_id_from_email (reporter_email ),
410- jira .get_user_id_from_email (assignee_email ),
390+ jira .get_user_id_from_email (reporter_email ) or outside_slack_jira_user_map ( slack . item_user ) ,
391+ jira .get_user_id_from_email (assignee_email ) or outside_slack_jira_user_map ( slack . reaction_user ) ,
411392 slack .link ,
412393 )
413394
0 commit comments