@@ -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