12
12
import sentry_sdk
13
13
from slack_bolt import App
14
14
from pydantic import ValidationError
15
- from cachetools import cached , TTLCache
16
15
from slack_bolt .adapter .socket_mode import SocketModeHandler
17
16
18
17
from middleware .laas import jira_summary_generator
@@ -60,11 +59,6 @@ def __init__(self, event, say, trigger_emoji):
60
59
self .messages = None
61
60
self .file_data = None
62
61
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
-
68
62
def set_conversation_data (self ):
69
63
"""
70
64
스레드의 모든 메시지를 가져와 정제합니다
@@ -82,8 +76,8 @@ def set_conversation_data(self):
82
76
for message in conversations ["messages" ]:
83
77
# Process each message in the thread
84
78
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" , "" )} """'
87
81
images = []
88
82
89
83
# conversation 에 대한 모든 첨부파일을 복제합니다.
@@ -248,19 +242,6 @@ def validate_gpt_response_json(self, gpt_response, say):
248
242
raise e
249
243
250
244
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
-
264
245
def check_emoji (event , say , emoji ):
265
246
"""
266
247
이미 스레드에 이모지, 즉 생성된 이슈가 있는지 확인합니다.
@@ -359,8 +340,8 @@ def laas_jira(event, say, collection: PICollection):
359
340
)
360
341
gpt_metadata = slack .validate_gpt_response_json (gpt_response , say )
361
342
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' )
364
345
365
346
try :
366
347
issue = Issue .model_validate (gpt_metadata )
@@ -406,8 +387,8 @@ def laas_jira(event, say, collection: PICollection):
406
387
407
388
jira = JiraOperator ()
408
389
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 ) ,
411
392
slack .link ,
412
393
)
413
394
0 commit comments