Skip to content

Commit e043d47

Browse files
committed
refactor generate automatic comment job
1 parent e7c2d8b commit e043d47

File tree

1 file changed

+41
-24
lines changed

1 file changed

+41
-24
lines changed

app/jobs/generate_automatic_comments_job.rb

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,55 @@ def perform(request_for_comment, current_user)
77
chat_gpt_service = ChatGptService::ChatGptRequest.new
88
chat_gpt_disclaimer = I18n.t('exercises.editor.chat_gpt_disclaimer')
99
request_for_comment.submission.files.each do |file|
10-
prompt = ChatGptHelper.construct_prompt_for_rfc(request_for_comment, file)
11-
response = chat_gpt_service.make_chat_gpt_request(prompt, true)
12-
response_data = ChatGptHelper.format_response(response)
10+
response_data = perform_chat_gpt_request(request_for_comment, file, chat_gpt_service)
1311
next unless response_data.present?
1412

15-
# Create comment for combined 'requirements' comments
16-
if response_data[:requirements_comments].present?
17-
Rails.logger.debug "Requirements comments found."
18-
comment = create_comment(
19-
text: "#{response_data[:requirements_comments]}\n\n#{chat_gpt_disclaimer}",
20-
file_id: file.id,
21-
row: '0',
22-
column: '0',
23-
user: chat_gpt_user
24-
)
25-
send_emails(comment, request_for_comment, current_user, chat_gpt_user) if comment.persisted?
26-
end
13+
create_general_comments(
14+
response_data,
15+
file,
16+
chat_gpt_user,
17+
chat_gpt_disclaimer,
18+
request_for_comment,
19+
current_user
20+
)
2721

2822
# Create comments for each line-specific comment
29-
response_data[:line_specific_comments].each do |line_comment_data|
30-
create_comment(
31-
text: "#{line_comment_data[:comment]}\n\n#{chat_gpt_disclaimer}",
32-
file_id: file.id,
33-
row: (line_comment_data[:line_number].positive? ? line_comment_data[:line_number] - 1 : line_comment_data[:line_number]).to_s,
34-
column: '0',
35-
user: chat_gpt_user
36-
)
37-
end
23+
create_line_specific_comments(response_data, file, chat_gpt_user, chat_gpt_disclaimer)
3824
end
3925
end
4026

4127
private
28+
29+
def perform_chat_gpt_request(request_for_comment, file, chat_gpt_service)
30+
prompt = ChatGptHelper.construct_prompt_for_rfc(request_for_comment, file)
31+
response = chat_gpt_service.make_chat_gpt_request(prompt, true)
32+
ChatGptHelper.format_response(response)
33+
end
34+
35+
def create_general_comments(response_data, file, chat_gpt_user, chat_gpt_disclaimer, request_for_comment, current_user)
36+
if response_data[:requirements_comments].present?
37+
comment = create_comment(
38+
text: "#{response_data[:requirements_comments]}\n\n#{chat_gpt_disclaimer}",
39+
file_id: file.id,
40+
row: '0',
41+
column: '0',
42+
user: chat_gpt_user
43+
)
44+
end
45+
send_emails(comment, request_for_comment, current_user, chat_gpt_user) if comment.persisted?
46+
end
47+
48+
def create_line_specific_comments(response_data, file, chat_gpt_user, chat_gpt_disclaimer)
49+
response_data[:line_specific_comments].each do |line_comment|
50+
comment = create_comment(
51+
text: "#{line_comment[:comment]}\n\n#{chat_gpt_disclaimer}",
52+
file_id: file.id,
53+
row: (line_comment[:line_number].positive? ? line_comment[:line_number] - 1 : line_comment[:line_number]).to_s,
54+
column: '0',
55+
user: chat_gpt_user
56+
)
57+
end
58+
end
4259

4360
def create_comment(attributes)
4461
Comment.create(

0 commit comments

Comments
 (0)