poc: adds audit logs
This commit is contained in:
parent
d9e010c65a
commit
59dfb4c0a0
2 changed files with 39 additions and 6 deletions
|
|
@ -29,9 +29,14 @@ log = logging.getLogger(__name__)
|
|||
|
||||
PR_IDS_REVIEWER_ROLE = "pull_request_ids_reviewer_role"
|
||||
PR_IDS_OBSERVER_ROLE = "pull_request_ids_observer_role"
|
||||
PR_ID = "pull_request_id"
|
||||
AI_MODEL = "ai_model"
|
||||
AI_MODEL_VERSION = "ai_model_version"
|
||||
|
||||
# action as key, and expected action_data as value
|
||||
ACTIONS_V1 = {
|
||||
"ai.code-review.start": {PR_ID: 0, AI_MODEL: "", AI_MODEL_VERSION: ""},
|
||||
"ai.code-review.finish": {PR_ID: 0, AI_MODEL: "", "error": False, "error_message": ""},
|
||||
"user.login.success": {"user_agent": ""},
|
||||
"user.login.failure": {"user_agent": ""},
|
||||
"user.logout": {"user_agent": ""},
|
||||
|
|
|
|||
|
|
@ -502,6 +502,8 @@ def start_ai_code_review(pull_request_id):
|
|||
if not settings_valid:
|
||||
return
|
||||
|
||||
ai_user = User.get_ai_user()
|
||||
|
||||
diffset = _get_diffset(pull_request)
|
||||
ai_model = rc_settings.get_setting_by_name("ai_model").app_settings_value
|
||||
ai_model_version = rc_settings.get_setting_by_name("ai_model_version").app_settings_value
|
||||
|
|
@ -520,11 +522,39 @@ def start_ai_code_review(pull_request_id):
|
|||
if instructions:
|
||||
instructions = instructions.app_settings_value.split("\r\n")
|
||||
|
||||
audit_logger.store(
|
||||
"ai.code-review.start",
|
||||
user=ai_user,
|
||||
action_data={
|
||||
audit_logger.PR_ID: pull_request_id,
|
||||
audit_logger.AI_MODEL: ai_model,
|
||||
audit_logger.AI_MODEL_VERSION: ai_model_version,
|
||||
},
|
||||
repo=pull_request.target_repo,
|
||||
)
|
||||
|
||||
response = service.code_review(diffset, instructions=instructions)
|
||||
_add_comments(response, pull_request, log)
|
||||
|
||||
error_msg = ""
|
||||
if response.error:
|
||||
error_msg = response.message
|
||||
|
||||
audit_logger.store(
|
||||
"ai.code-review.finish",
|
||||
user=ai_user,
|
||||
action_data={
|
||||
audit_logger.PR_ID: pull_request_id,
|
||||
audit_logger.AI_MODEL: response.model,
|
||||
"error": response.error,
|
||||
"error_message": error_msg,
|
||||
},
|
||||
repo=pull_request.target_repo,
|
||||
)
|
||||
|
||||
_add_comments(response, pull_request, log, ai_user)
|
||||
|
||||
|
||||
def _add_comments(response: Response, pull_request: PullRequest, log: Logger | Any):
|
||||
def _add_comments(response: Response, pull_request: PullRequest, log: Logger | Any, ai_user: User):
|
||||
log.debug(
|
||||
"Response from AI service: %s",
|
||||
response.message,
|
||||
|
|
@ -538,16 +568,14 @@ def _add_comments(response: Response, pull_request: PullRequest, log: Logger | A
|
|||
line_code = review_line.get("line_code")
|
||||
suggestion = review_line.get("suggestion")
|
||||
log.debug("%s | %s | %s", line_number, line_code, suggestion)
|
||||
insert_comment(line_number, suggestion, file_name, pull_request)
|
||||
insert_comment(line_number, suggestion, file_name, pull_request, ai_user)
|
||||
|
||||
|
||||
def insert_comment(line_number: int, text: str, f_path: str, pull_request):
|
||||
def insert_comment(line_number: int, text: str, f_path: str, pull_request: PullRequest, ai_user: User):
|
||||
target_repo: Repository = pull_request.target_repo
|
||||
repo_id = target_repo.repo_id
|
||||
line_number_formatted = "n%s" % line_number
|
||||
|
||||
ai_user = User.get_ai_user()
|
||||
|
||||
comment_type = "note"
|
||||
|
||||
CommentsModel().create(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue