Skip to content

Commit a650270

Browse files
committed
DATARQ-6255 Global Slack User Map 제거 - 라이브러리는 최대 슬랙 유저 1000명 제한으로 추측됨
1 parent 4f2e7bf commit a650270

File tree

3 files changed

+8
-26
lines changed

3 files changed

+8
-26
lines changed

app.py

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import sentry_sdk
1313
from slack_bolt import App
1414
from pydantic import ValidationError
15-
from cachetools import cached, TTLCache
1615
from slack_bolt.adapter.socket_mode import SocketModeHandler
1716

1817
from 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-
264245
def 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

middleware/laas/jira_operator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ def get_user_id_from_email(self, email):
2424
"""
2525
Slack 유저 정보를 바탕으로 Jira 유저 ID를 가져옵니다.
2626
"""
27+
if not email:
28+
return None
2729
resp = self.client.get(
2830
self.client.resource_url('user/search'),
2931
params={'query': email},

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ sentry-sdk
33
slack_bolt
44
atlassian-python-api
55
pydantic
6-
cachetools

0 commit comments

Comments
 (0)