|
9 | 9 | from utils.logger import log |
10 | 10 |
|
11 | 11 |
|
12 | | -def chat_review(changes, model): |
| 12 | +def chat_review(changes, generate_review, *args, **kwargs): |
13 | 13 | log.info('开始code review') |
14 | 14 | with concurrent.futures.ThreadPoolExecutor() as executor: |
15 | 15 | review_results = [] |
16 | 16 | result_lock = threading.Lock() |
17 | 17 |
|
18 | 18 | def process_change(change): |
19 | | - result = generate_review_note(change, model) |
| 19 | + result = generate_review(change, *args, **kwargs) |
20 | 20 | with result_lock: |
21 | 21 | review_results.append(result) |
22 | 22 |
|
@@ -68,14 +68,16 @@ def generate_review_note(change, model): |
68 | 68 |
|
69 | 69 |
|
70 | 70 | class MainReviewHandle(ReviewHandle): |
71 | | - def merge_handle(self, changes, merge_info, hook_info, reply, model): |
| 71 | + def merge_handle(self, gitlabMergeRequestFetcher, gitlabRepoManager, hook_info, reply, model): |
| 72 | + changes = gitlabMergeRequestFetcher.get_changes() |
| 73 | + merge_info = gitlabMergeRequestFetcher.get_info() |
72 | 74 | self.default_handle(changes, merge_info, hook_info, reply, model) |
73 | 75 |
|
74 | 76 | def default_handle(self, changes, merge_info, hook_info, reply, model): |
75 | 77 | maximum_files = 50 |
76 | 78 | if changes and len(changes) <= maximum_files: |
77 | 79 | # Code Review 信息 |
78 | | - review_info = chat_review(changes, model) |
| 80 | + review_info = chat_review(changes, generate_review_note, model) |
79 | 81 | if review_info: |
80 | 82 | reply.add_reply({ |
81 | 83 | 'content': review_info, |
@@ -136,64 +138,4 @@ def default_handle(self, changes, merge_info, hook_info, reply, model): |
136 | 138 | log.error(f"获取merge_request信息失败,project_id: {hook_info['project']['id']} |" |
137 | 139 | f" merge_iid: {hook_info['object_attributes']['iid']}") |
138 | 140 |
|
139 | | -if __name__ == '__main__': |
140 | | - main_handle = MainReviewHandle() |
141 | | - from gitlab_integration.gitlab_fetcher import GitlabMergeRequestFetcher |
142 | | - from reply_module.reply import Reply |
143 | | - fetcher = GitlabMergeRequestFetcher(9885, 18) |
144 | | - changes = fetcher.get_changes() |
145 | | - info = fetcher.get_info() |
146 | | - reply = Reply({'type': 'merge_request', |
147 | | - 'project_id': 9885, |
148 | | - 'merge_request_iid': 18}) |
149 | | - from large_model.llm_generator import LLMGenerator |
150 | | - model = LLMGenerator.new_model() |
151 | | - hook_info = { |
152 | | - "object_kind": "merge_request", |
153 | | - "event_type": "merge_request", |
154 | | - "user": { |
155 | | - "id": 1, |
156 | | - "name": "John Doe", |
157 | | - "username": "johndoe", |
158 | | - "avatar_url": "https://example.com/uploads/user/avatar/1/index.jpg" |
159 | | - }, |
160 | | - "project": { |
161 | | - "id": 15, |
162 | | - "name": "Example Project", |
163 | | - "description": "An example project", |
164 | | - "web_url": "https://example.com/example/project", |
165 | | - "avatar_url": None, |
166 | | - "git_ssh_url": "[email protected]:example/project.git", |
167 | | - "git_http_url": "https://example.com/example/project.git", |
168 | | - "namespace": "Example", |
169 | | - "visibility_level": 20, |
170 | | - "path_with_namespace": "example/project", |
171 | | - "default_branch": "main", |
172 | | - "homepage": "https://example.com/example/project", |
173 | | - "url": "https://example.com/example/project.git", |
174 | | - "ssh_url": "[email protected]:example/project.git", |
175 | | - "http_url": "https://example.com/example/project.git" |
176 | | - }, |
177 | | - "object_attributes": { |
178 | | - "id": 99, |
179 | | - "iid": 1, |
180 | | - "target_branch": "main", |
181 | | - "source_branch": "feature-branch", |
182 | | - "source_project_id": 15, |
183 | | - "target_project_id": 15, |
184 | | - "title": "Merge feature-branch into main", |
185 | | - "state": "opened", |
186 | | - "merge_status": "can_be_merged", |
187 | | - "url": "https://example.com/example/project/-/merge_requests/1", |
188 | | - "created_at": "2025-02-10T12:34:56Z", |
189 | | - "updated_at": "2025-02-10T12:34:56Z" |
190 | | - }, |
191 | | - "changes": { |
192 | | - "total_changes": 51, |
193 | | - "files": [ |
194 | | - {"old_path": "file1.txt", "new_path": "file1.txt", "a_mode": "100644", "b_mode": "100644", "diff": "diff content"}, |
195 | | - # ... 50 more file changes ... |
196 | | - ] |
197 | | - } |
198 | | - } |
199 | | - main_handle.merge_handle(changes, info, hook_info, reply, model) |
| 141 | + |
0 commit comments