poc: adds audit logs

This commit is contained in:
ievgenii vdovenko 2025-09-04 12:30:51 +02:00
parent d9e010c65a
commit 59dfb4c0a0
2 changed files with 39 additions and 6 deletions

View file

@ -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": ""},

View file

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