diff --git a/pr_review/src/handle/pull_request.py b/pr_review/src/handle/pull_request.py index 3139f4826c74df5b9a75856df5cfd59e4ae6f7bd..6b2c79360c145c5acd0907f399afabde6d31553a 100644 --- a/pr_review/src/handle/pull_request.py +++ b/pr_review/src/handle/pull_request.py @@ -2,8 +2,8 @@ from loguru import logger from review_code.review_task import review_task -comment_method = {"@pr-review": review_task} - +comment_method = {"/pr-review": review_task} +language_map = {"zh": "Chinese", "en": "English"} def merge_request_hooks(data): pass @@ -35,9 +35,18 @@ def note_hooks(data): logger.error("no comment body") return - comment_fuc = comment_method.get(str(comment_body).strip()) + comments = comment_body.lower().split(" ") + comment_fuc = comment_method.get(comments[0].strip()) if comment_fuc is None: logger.error("system not suport this comment") return - comment_fuc(data) + language = 'Chinese' + if len(comments) > 1: + language = language_map.get(comments[1]) + + if not language: + logger.error("language error") + return + + comment_fuc(data, language) diff --git a/pr_review/src/review_code/input.py b/pr_review/src/review_code/input.py index f12af0e485d7ecb8f75238fae3e3c9893de35191..a484836e220fc76fcf8ad0234597f741e4baea03 100644 --- a/pr_review/src/review_code/input.py +++ b/pr_review/src/review_code/input.py @@ -2,7 +2,7 @@ from loguru import logger import requests class Input: - def __init__(self, data): + def __init__(self, data, language): self.systemMessage = '' self.title = data.get("title", None) self.description = '' @@ -17,10 +17,13 @@ class Input: self.diff = '' self.commentChain = '' self.comment = '' + self.language = language def render(self, content): if not content: return '' + if self.language: + content = content.replace('$language', self.language) if self.systemMessage: content = content.replace('$systemMessage', self.systemMessage) if self.title: diff --git a/pr_review/src/review_code/prompts.py b/pr_review/src/review_code/prompts.py index fc34dc6d04e9ef062e7026232edb26a76746a04f..b10555653b59f74cbea0d837cdcd1dd59a1503a4 100644 --- a/pr_review/src/review_code/prompts.py +++ b/pr_review/src/review_code/prompts.py @@ -33,6 +33,7 @@ class Prompts: - Focus solely on offering specific, objective insights based on the given context and refrain from making broad comments about potential impacts on the system or question intentions behind the changes. + - You MUST respond in $language. If there are no issues found on a line range, you MUST respond with the text `LGTM!` for that line range in the review section. diff --git a/pr_review/src/review_code/review.py b/pr_review/src/review_code/review.py index 426891221839f98f739a8eedc2bc1565be1b5429..0db4855cbec8a5c281f6ce057a5840d040be81e8 100644 --- a/pr_review/src/review_code/review.py +++ b/pr_review/src/review_code/review.py @@ -13,12 +13,12 @@ IGNORE_KEYWORD = '@PRReviewAI: ignore' class CodeReview: - def __init__(self, data): + def __init__(self, data, language): self.options = Options() self.prompts = Prompts() self.bot = Bot() self.giteeApi = GiteeApi(data) - self.input = Input(data) + self.input = Input(data, language) self.commenter = Commenter(self.giteeApi) self.commits = [] self.pr_diff = data.get("pull_request").get("diff_url", None) @@ -375,6 +375,6 @@ class CodeReview: # Modifications were made to the first four lines of the file or not def modifications_position(self, patch): patch_lines = self.patchStartEndLine(patch) - if patch_lines['newHunk']['startLine'] <= 4 or patch_lines['newHunk']['startLine'] <= 4: + if patch_lines['oldHunk']['startLine'] <= 4 or patch_lines['newHunk']['startLine'] <= 4: return True return False \ No newline at end of file diff --git a/pr_review/src/review_code/review_task.py b/pr_review/src/review_code/review_task.py index 2e974e4617178f6812b083e3002ab2af9fe5574b..03f2b67c2a94a8701f9028b1eacbbb751c3b0d2c 100644 --- a/pr_review/src/review_code/review_task.py +++ b/pr_review/src/review_code/review_task.py @@ -2,8 +2,8 @@ from review_code.review import CodeReview -def review_task(data): +def review_task(data, language): if data.get('noteable_type', None) == 'PullRequest': - codeReview = CodeReview(data) + codeReview = CodeReview(data, language) codeReview.code_review()