From 43e5f43127d474850580fe9e4ec82c4a36fa3f24 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Sun, 28 Dec 2025 19:53:44 +0800 Subject: [PATCH 1/3] Update dev version * Update Prompts * Update icon --- .../editor_main/main_ui.py | 2 +- .../extend_multi_language/extend_english.py | 34 +++++- .../extend_traditional_chinese.py | 35 +++++- .../menu/tools/tools_menu.py | 80 ++++++++++--- .../main_prompt_edit_widget.py | 107 ++++++++---------- .../prompt_templates/first_code_review.py | 12 +- .../prompt_templates/first_summary_prompt.py | 12 +- .../prompt_templates/global_rule.py | 32 +++++- .../prompt_edit_gui/prompt_templates/judge.py | 39 ++++++- .../prompt_templates/total_summary.py | 12 +- exe/AutomationIDE_Icon.ico | Bin 0 -> 118333 bytes exe/auto_py_to_exe_setting.json | 12 +- exe/je_driver_icon.ico | Bin 4286 -> 0 bytes pyproject.toml | 13 ++- dev.toml => stable.toml | 11 +- 15 files changed, 297 insertions(+), 104 deletions(-) create mode 100644 exe/AutomationIDE_Icon.ico delete mode 100644 exe/je_driver_icon.ico rename dev.toml => stable.toml (86%) diff --git a/automation_ide/automation_editor_ui/editor_main/main_ui.py b/automation_ide/automation_editor_ui/editor_main/main_ui.py index 398d183..8f4b15f 100644 --- a/automation_ide/automation_editor_ui/editor_main/main_ui.py +++ b/automation_ide/automation_editor_ui/editor_main/main_ui.py @@ -45,7 +45,7 @@ def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = False) for widget_name, widget in EDITOR_EXTEND_TAB.items(): self.tab_widget.addTab(widget(), widget_name) # Icon - self.icon_path = Path(os.getcwd() + "/je_driver_icon.ico") + self.icon_path = Path(os.getcwd() + "/AutomationIDE_Icon.ico") self.icon = QIcon(str(self.icon_path)) self.system_tray = QSystemTrayIcon() self.system_tray.setIcon(self.icon) diff --git a/automation_ide/automation_editor_ui/extend_multi_language/extend_english.py b/automation_ide/automation_editor_ui/extend_multi_language/extend_english.py index acc8053..05c319b 100644 --- a/automation_ide/automation_editor_ui/extend_multi_language/extend_english.py +++ b/automation_ide/automation_editor_ui/extend_multi_language/extend_english.py @@ -190,7 +190,39 @@ def update_english_word_dict(): "ai_code_review_gui_message_error": "Error", "ai_code_review_gui_status_accepted": "[Accepted]", "ai_code_review_gui_status_rejected": "[Rejected]", - "ai_code_review_gui_status_save_failed": "Save failed" + "ai_code_review_gui_status_save_failed": "Save failed", + # Prompt Editor + "prompt_editor_window_title": "Prompt Editor", + "prompt_editor_groupbox_edit_file_content": "Edit File Content", + "prompt_editor_button_create_file": "Create File", + "prompt_editor_button_save_file": "Save", + "prompt_editor_button_reload_file": "Reload", + "prompt_editor_msgbox_info_title": "Info", + "prompt_editor_msgbox_success_title": "Success", + "prompt_editor_msgbox_error_title": "Error", + "prompt_editor_msgbox_file_exists": "File {filename} already exists, no need to create", + "prompt_editor_msgbox_file_created": "File {filename} has been created", + "prompt_editor_msgbox_file_saved": "File {filename} saved", + "prompt_editor_msgbox_no_file_selected": "No file selected", + "prompt_editor_file_not_exist": "(File {filename} does not exist)", + # Extend Menu + "extend_tools_menu_tools_menu": "Tools", + "extend_tools_menu_tools_ssh_menu": "SSH", + "extend_tools_menu_tools_ai_menu": "AI", + "extend_tools_menu_ssh_client_tab_action": "SSH Client Tab", + "extend_tools_menu_ssh_client_tab_label": "SSH Client", + "extend_tools_menu_ai_code_review_tab_action": "AI Code-Review Tab", + "extend_tools_menu_ai_code_review_tab_label": "AI Code-Review", + "extend_tools_menu_prompt_editor_tab_action": "Prompt Editor", + "extend_tools_menu_prompt_editor_tab_label": "Prompt Editor", + "extend_tools_menu_dock_ssh_menu": "SSH", + "extend_tools_menu_dock_ai_menu": "AI", + "extend_tools_menu_ssh_client_dock_action": "SSH Client Dock", + "extend_tools_menu_ai_code_review_dock_action": "AI Code-Review Dock", + "extend_tools_menu_prompt_editor_dock_action": "Prompt Editor Dock", + "extend_tools_menu_ssh_client_dock_title": "SSH Client", + "extend_tools_menu_ai_code_review_dock_title": "AI Code-Review", + "extend_tools_menu_prompt_editor_dock_title": "PromptEditor", } ) diff --git a/automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py b/automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py index 9c1bfb9..447892f 100644 --- a/automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py +++ b/automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py @@ -190,6 +190,39 @@ def update_traditional_chinese_word_dict(): "ai_code_review_gui_message_error": "錯誤", "ai_code_review_gui_status_accepted": "[已接受]", "ai_code_review_gui_status_rejected": "[已拒絕]", - "ai_code_review_gui_status_save_failed": "儲存失敗" + "ai_code_review_gui_status_save_failed": "儲存失敗", + # Prompt Editor + "prompt_editor_window_title": "提示編輯器", + "prompt_editor_groupbox_edit_file_content": "編輯檔案內容", + "prompt_editor_button_create_file": "建立檔案", + "prompt_editor_button_save_file": "儲存", + "prompt_editor_button_reload_file": "重新載入", + "prompt_editor_msgbox_info_title": "資訊", + "prompt_editor_msgbox_success_title": "成功", + "prompt_editor_msgbox_error_title": "錯誤", + "prompt_editor_msgbox_file_exists": "檔案 {filename} 已存在,無需建立", + "prompt_editor_msgbox_file_created": "檔案 {filename} 已建立", + "prompt_editor_msgbox_file_saved": "檔案 {filename} 已儲存", + "prompt_editor_msgbox_no_file_selected": "尚未選擇檔案", + "prompt_editor_file_not_exist": "(檔案 {filename} 不存在)", + # Extend Menu + "extend_tools_menu_tools_menu": "工具", + "extend_tools_menu_tools_ssh_menu": "SSH", + "extend_tools_menu_tools_ai_menu": "AI", + "extend_tools_menu_ssh_client_tab_action": "SSH 用戶端分頁", + "extend_tools_menu_ssh_client_tab_label": "SSH 用戶端", + "extend_tools_menu_ai_code_review_tab_action": "AI 程式碼審查分頁", + "extend_tools_menu_ai_code_review_tab_label": "AI 程式碼審查", + "extend_tools_menu_prompt_editor_tab_action": "提示詞編輯器", + "extend_tools_menu_prompt_editor_tab_label": "提示詞編輯器", + "extend_tools_menu_dock_ssh_menu": "SSH", + "extend_tools_menu_dock_ai_menu": "AI", + "extend_tools_menu_ssh_client_dock_action": "SSH 用戶端停駐窗格", + "extend_tools_menu_ai_code_review_dock_action": "AI 程式碼審查停駐窗格", + "extend_tools_menu_prompt_editor_dock_action": "提示詞編輯器停駐窗格", + "extend_tools_menu_ssh_client_dock_title": "SSH 用戶端", + "extend_tools_menu_ai_code_review_dock_title": "AI 程式碼審查", + "extend_tools_menu_prompt_editor_dock_title": "提示詞編輯器", + } ) diff --git a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py b/automation_ide/automation_editor_ui/menu/tools/tools_menu.py index bba0345..5d2cc02 100644 --- a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py +++ b/automation_ide/automation_editor_ui/menu/tools/tools_menu.py @@ -3,11 +3,13 @@ from typing import TYPE_CHECKING from PySide6.QtGui import QAction, Qt +from je_editor import language_wrapper from je_editor.pyside_ui.main_ui.dock.destroy_dock import DestroyDock from je_editor.utils.logging.loggin_instance import jeditor_logger from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_main_widget import SSHMainWidget from automation_ide.automation_editor_ui.connect_gui.url.ai_code_review_gui import AICodeReviewClient +from automation_ide.automation_editor_ui.prompt_edit_gui.main_prompt_edit_widget import PromptEditor if TYPE_CHECKING: from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor @@ -15,44 +17,83 @@ def build_tools_menu(ui_we_want_to_set: AutomationEditor): # Menus - ui_we_want_to_set.tools_menu = ui_we_want_to_set.menu.addMenu("Tools") - ui_we_want_to_set.tools_ssh_menu = ui_we_want_to_set.tools_menu.addMenu("SSH") - ui_we_want_to_set.tools_ai_menu = ui_we_want_to_set.tools_menu.addMenu("AI") + ui_we_want_to_set.tools_menu = ui_we_want_to_set.menu.addMenu(language_wrapper.language_word_dict.get( + "extend_tools_menu_tools_menu" + )) + ui_we_want_to_set.tools_ssh_menu = ui_we_want_to_set.tools_menu.addMenu(language_wrapper.language_word_dict.get( + "extend_tools_menu_tools_ssh_menu" + )) + ui_we_want_to_set.tools_ai_menu = ui_we_want_to_set.tools_menu.addMenu(language_wrapper.language_word_dict.get( + "extend_tools_menu_tools_ai_menu" + )) - ui_we_want_to_set.tools_ssh_client_tab_action = QAction("SSH Client Tab") + ui_we_want_to_set.tools_ssh_client_tab_action = QAction(language_wrapper.language_word_dict.get( + "extend_tools_menu_ssh_client_tab_action" + )) ui_we_want_to_set.tools_ssh_client_tab_action.triggered.connect(lambda: ui_we_want_to_set.tab_widget.addTab( - SSHMainWidget(), "SSH Client" + SSHMainWidget(), language_wrapper.language_word_dict.get("extend_tools_menu_ssh_client_tab_label") )) ui_we_want_to_set.tools_ssh_menu.addAction(ui_we_want_to_set.tools_ssh_client_tab_action) - ui_we_want_to_set.tools_ai_code_review_action = QAction("AI Code-Review Tab") + ui_we_want_to_set.tools_ai_code_review_action = QAction(language_wrapper.language_word_dict.get( + "extend_tools_menu_ai_code_review_tab_action" + )) ui_we_want_to_set.tools_ai_code_review_action.triggered.connect(lambda: ui_we_want_to_set.tab_widget.addTab( - AICodeReviewClient(), "AI Code-Review" + AICodeReviewClient(), language_wrapper.language_word_dict.get( + "extend_tools_menu_ai_code_review_tab_label" + ) )) ui_we_want_to_set.tools_ai_menu.addAction(ui_we_want_to_set.tools_ai_code_review_action) + ui_we_want_to_set.tools_ai_prompt_editor_action = QAction(language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_tab_action" + )) + ui_we_want_to_set.tools_ai_prompt_editor_action.triggered.connect(lambda: ui_we_want_to_set.tab_widget.addTab( + PromptEditor(), language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_tab_label" + ) + )) + ui_we_want_to_set.tools_ai_menu.addAction(ui_we_want_to_set.tools_ai_prompt_editor_action) + def extend_dock_menu(ui_we_want_to_set: AutomationEditor): # Sub menu ui_we_want_to_set.dock_ssh_menu = ui_we_want_to_set.dock_menu.addMenu( - "SSH" + language_wrapper.language_word_dict.get("extend_tools_menu_dock_ssh_menu") ) ui_we_want_to_set.dock_ai_menu = ui_we_want_to_set.dock_menu.addMenu( - "AI" + language_wrapper.language_word_dict.get("extend_tools_menu_dock_ai_menu") ) # SSH - ui_we_want_to_set.tools_ssh_client_dock_action = QAction("SSH Client Dock") + ui_we_want_to_set.tools_ssh_client_dock_action = QAction( + language_wrapper.language_word_dict.get("extend_tools_menu_ssh_client_dock_action") + ) ui_we_want_to_set.tools_ssh_client_dock_action.triggered.connect( - lambda: add_dock(ui_we_want_to_set, "SSH") + lambda: add_dock(ui_we_want_to_set, language_wrapper.language_word_dict.get( + "extend_tools_menu_dock_ssh_menu" + )) ) ui_we_want_to_set.dock_ssh_menu.addAction(ui_we_want_to_set.tools_ssh_client_dock_action) # AI - ui_we_want_to_set.tools_ai_code_review_dock_action = QAction("AI Code-Review Dock") + ui_we_want_to_set.tools_ai_code_review_dock_action = QAction(language_wrapper.language_word_dict.get( + "extend_tools_menu_ai_code_review_dock_action" + )) ui_we_want_to_set.tools_ai_code_review_dock_action.triggered.connect( - lambda: add_dock(ui_we_want_to_set, "AICodeReview") + lambda: add_dock(ui_we_want_to_set, language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_dock_action" + )) ) ui_we_want_to_set.dock_ai_menu.addAction(ui_we_want_to_set.tools_ai_code_review_dock_action) + ui_we_want_to_set.tools_prompt_editor_dock_action = QAction(language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_dock_action")) + ui_we_want_to_set.tools_prompt_editor_dock_action.triggered.connect( + lambda: add_dock(ui_we_want_to_set, language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_dock_action" + )) + ) + ui_we_want_to_set.dock_ai_menu.addAction(ui_we_want_to_set.tools_prompt_editor_dock_action) + def add_dock(ui_we_want_to_set: AutomationEditor, widget_type: str = None): jeditor_logger.info("build_dock_menu.py add_dock_widget " f"ui_we_want_to_set: {ui_we_want_to_set} " @@ -63,11 +104,20 @@ def add_dock(ui_we_want_to_set: AutomationEditor, widget_type: str = None): dock_widget = DestroyDock() if widget_type == "SSH": - dock_widget.setWindowTitle("SSH Client") + dock_widget.setWindowTitle(language_wrapper.language_word_dict.get( + "extend_tools_menu_ssh_client_dock_title" + )) dock_widget.setWidget(SSHMainWidget()) elif widget_type == "AICodeReview": - dock_widget.setWindowTitle("AI Code-Review") + dock_widget.setWindowTitle(language_wrapper.language_word_dict.get( + "extend_tools_menu_ai_code_review_dock_title" + )) dock_widget.setWidget(AICodeReviewClient()) + elif widget_type == "PromptEditor": + dock_widget.setWindowTitle(language_wrapper.language_word_dict.get( + "extend_tools_menu_prompt_editor_dock_title" + )) + dock_widget.setWidget(PromptEditor()) # 如果成功建立了 widget,將其加到主視窗右側 Dock 區域 # If widget is created, add it to the right dock area of the main window diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/main_prompt_edit_widget.py b/automation_ide/automation_editor_ui/prompt_edit_gui/main_prompt_edit_widget.py index eaa0492..3c59665 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/main_prompt_edit_widget.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/main_prompt_edit_widget.py @@ -1,11 +1,11 @@ import os -import sys from PySide6.QtCore import QFileSystemWatcher from PySide6.QtWidgets import ( - QApplication, QWidget, QVBoxLayout, QHBoxLayout, - QComboBox, QTextEdit, QLineEdit, QPushButton, QLabel, QGroupBox, QMessageBox + QWidget, QVBoxLayout, QHBoxLayout, + QComboBox, QTextEdit, QPushButton, QGroupBox, QMessageBox ) +from je_editor import language_wrapper from automation_ide.automation_editor_ui.prompt_edit_gui.prompt_templates.first_code_review import FIRST_CODE_REVIEW from automation_ide.automation_editor_ui.prompt_edit_gui.prompt_templates.first_summary_prompt import \ @@ -35,7 +35,9 @@ def __init__(self, prompt_files=None, parent=None): "total_summary.md": TOTAL_SUMMARY_TEMPLATE, } - self.setWindowTitle("Prompt Editor") # 視窗標題:Prompt 編輯器 + self.setWindowTitle(language_wrapper.language_word_dict.get( + "prompt_editor_window_title" + )) # 視窗標題:Prompt 編輯器 # --- Layouts (版面配置) --- main_layout = QVBoxLayout(self) @@ -43,45 +45,36 @@ def __init__(self, prompt_files=None, parent=None): editor_layout = QHBoxLayout() bottom_layout = QHBoxLayout() - # --- AI URL input box (AI URL 輸入框) --- - self.url_label = QLabel("AI URL:") - self.url_input = QLineEdit() - top_layout.addWidget(self.url_label) - top_layout.addWidget(self.url_input) - # --- ComboBox for selecting files (下拉選單選擇檔案) --- self.file_selector = QComboBox() self.file_selector.addItems(self.prompt_files) self.file_selector.currentIndexChanged.connect(self.load_file_content) # --- Left Editable panel (左邊編輯區塊) --- - self.left_editor = QTextEdit() - left_group = QGroupBox("Edit File Content") # 左邊編輯檔案內容 - left_layout = QVBoxLayout() - left_layout.addWidget(self.left_editor) - left_group.setLayout(left_layout) - - # --- Right Editable panel (右邊可編輯區塊) --- - self.editable_panel = QTextEdit() - editable_group = QGroupBox("Edit Prompt (Editable)") # 編輯 Prompt (可編輯) - editable_layout = QVBoxLayout() - editable_layout.addWidget(self.editable_panel) - editable_group.setLayout(editable_layout) - - editor_layout.addWidget(left_group, 1) - editor_layout.addWidget(editable_group, 1) + self.middle_editor = QTextEdit() + prompt_group = QGroupBox(language_wrapper.language_word_dict.get( + "prompt_editor_groupbox_edit_file_content" + )) # 左邊編輯檔案內容 + middle_layout = QVBoxLayout() + middle_layout.addWidget(self.middle_editor) + prompt_group.setLayout(middle_layout) - # --- Buttons --- - self.send_button = QPushButton("Send") - self.send_button.clicked.connect(self.send_prompt) + editor_layout.addWidget(prompt_group, 1) - self.create_button = QPushButton("Create File") + # --- Buttons --- + self.create_button = QPushButton(language_wrapper.language_word_dict.get( + "prompt_editor_button_create_file" + )) self.create_button.clicked.connect(self.create_file) - self.save_button = QPushButton("Save") + self.save_button = QPushButton(language_wrapper.language_word_dict.get( + "prompt_editor_button_save_file" + )) self.save_button.clicked.connect(self.save_file) - self.reload_button = QPushButton("Reload") + self.reload_button = QPushButton(language_wrapper.language_word_dict.get( + "prompt_editor_button_reload_file" + )) self.reload_button.clicked.connect(lambda: self.load_file_content(self.file_selector.currentIndex())) bottom_layout.addWidget(self.file_selector) @@ -89,7 +82,6 @@ def __init__(self, prompt_files=None, parent=None): bottom_layout.addWidget(self.reload_button) bottom_layout.addWidget(self.save_button) bottom_layout.addWidget(self.create_button) - bottom_layout.addWidget(self.send_button) # --- Combine layouts (組合版面配置) --- main_layout.addLayout(top_layout) @@ -110,22 +102,30 @@ def load_file_content(self, index): if os.path.exists(filename): with open(filename, "r", encoding="utf-8") as f: content = f.read() - self.left_editor.setPlainText(content) + self.middle_editor.setPlainText(content) else: - self.left_editor.setPlainText(f"(File {filename} does not exist)") + self.middle_editor.setPlainText(language_wrapper.language_word_dict.get( + "prompt_editor_file_not_exist" + ).format(filename=filename)) def create_file(self): """建立目前選擇的檔案,若不存在則用模板內容建立""" filename = self.current_file if os.path.exists(filename): - QMessageBox.information(self, "Info", f"File {filename} already exists, no need to create") + QMessageBox.information( + self, + language_wrapper.language_word_dict.get("prompt_editor_msgbox_info_title"), + language_wrapper.language_word_dict.get("prompt_editor_msgbox_file_exists").format(filename=filename)) return template_content = self.templates.get(filename, "") with open(filename, "w", encoding="utf-8") as f: f.write(template_content) - QMessageBox.information(self, "Success", f"File {filename} has been created") + QMessageBox.information( + self, + language_wrapper.language_word_dict.get("prompt_editor_msgbox_success_title"), + language_wrapper.language_word_dict.get("prompt_editor_msgbox_file_created").format(filename=filename)) self.load_file_content(self.file_selector.currentIndex()) def on_file_changed(self, path): @@ -136,32 +136,17 @@ def on_file_changed(self, path): def save_file(self): """將左邊編輯區內容儲存到目前檔案""" if not hasattr(self, "current_file"): - QMessageBox.warning(self, "Error", "No file selected") + QMessageBox.warning( + self, + language_wrapper.language_word_dict.get("prompt_editor_msgbox_error_title"), + language_wrapper.language_word_dict.get("prompt_editor_msgbox_no_file_selected")) return - content = self.left_editor.toPlainText() + content = self.middle_editor.toPlainText() with open(self.current_file, "w", encoding="utf-8") as f: f.write(content) - QMessageBox.information(self, "Success", f"File {self.current_file} saved") - - def send_prompt(self): - """模擬發送 prompt 到 AI URL""" - ai_url = self.url_input.text().strip() - prompt_text = self.editable_panel.toPlainText().strip() - - if not ai_url: - QMessageBox.warning(self, "Warning", "Please enter AI URL") - return - if not prompt_text: - QMessageBox.warning(self, "Warning", "Please enter the prompt to send") - return - - # 成功提示 - QMessageBox.information(self, "Sending Prompt", - f"Sending prompt to {ai_url}:\n\n{prompt_text}") - -if __name__ == "__main__": - app = QApplication(sys.argv) - editor = PromptEditor() - editor.showMaximized() - sys.exit(app.exec()) + QMessageBox.information( + self, + language_wrapper.language_word_dict.get("prompt_editor_msgbox_success_title"), + language_wrapper.language_word_dict.get("prompt_editor_msgbox_file_saved").format( + filename=self.current_file)) diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py index eb07aeb..5c5531a 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py @@ -1 +1,11 @@ -FIRST_CODE_REVIEW = "" +FIRST_CODE_REVIEW = """ +Please perform a first-step code review focusing on the following aspects: +1. Code readability (indentation, formatting, comments). +2. Clarity and descriptiveness of variable, function, and class names; avoid overly vague or cryptic naming. +3. Adherence to basic software engineering standards (modularity, maintainability, avoidance of duplicate code). +4. Identification of obvious logical errors or potential bugs. +5. Provide specific improvement suggestions with brief explanations. +6. Focus only on the most obvious issues and avoid deep analysis at this stage. + +Respond in a structured, bullet-point format, keeping the feedback concise and professional. +""" diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py index 517efcf..73b0ecf 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py @@ -1 +1,11 @@ -FIRST_SUMMARY_PROMPT = "" +FIRST_SUMMARY_PROMPT = """ +Please generate a first-step Pull Request summary (PR Summary) focusing on: +1. Key changes: Briefly describe the core modifications or new features. +2. Impact scope: Identify affected modules, files, or functionalities. +3. Purpose of changes: Explain why these modifications are needed (e.g., bug fix, performance optimization, feature addition). +4. Risks and considerations: Highlight potential impacts on existing functionality or areas requiring extra testing. +5. Items to confirm: List specific points that reviewers should pay attention to or validate. +6. Avoid excessive technical detail; keep the summary at a high level for quick team understanding. + +Write in a structured, bullet-point format, keeping the summary concise and professional for quick team understanding. +""" diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/global_rule.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/global_rule.py index c967395..e35e4ec 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/global_rule.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/global_rule.py @@ -1 +1,31 @@ -GLOBAL_RULE_TEMPLATE = "" \ No newline at end of file +GLOBAL_RULE_TEMPLATE = """ +Please conduct a code review according to the following global rules: + +1. Readability & Consistency + - Check indentation, formatting, and comments for clarity. + - Ensure code style follows team conventions (naming rules, formatting tools). + +2. Naming Conventions + - Variable, function, and class names must be descriptive and meaningful. + - Maintain semantic clarity and consistency across the codebase. + +3. Software Engineering Standards + - Code should be modular, maintainable, and testable. + - Avoid duplicate code; encourage refactoring and abstraction. + +4. Logic & Correctness + - Verify correctness of program logic and identify potential bugs. + - Check boundary conditions and exception handling. + +5. Performance & Security + - Assess for unnecessary performance bottlenecks. + - Review for security risks (e.g., input validation, resource management). + +6. Documentation & Testing + - Ensure necessary comments and documentation are present. + - Verify sufficient unit and integration tests are included. + +7. When scoring, balance conciseness with comprehensiveness; avoid penalizing completeness for being less concise.” + +Provide review feedback in a structured bullet-point format, keeping it professional, concise, and with actionable improvement suggestions. +""" diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/judge.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/judge.py index f0a1655..5143cfd 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/judge.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/judge.py @@ -1 +1,38 @@ -JUDGE_TEMPLATE = "" \ No newline at end of file +JUDGE_TEMPLATE = """ +Please conduct a code review for the Pull Request using the following scoring mechanism: + +Score range: Minimum 1, Maximum 5. + +Six evaluation dimensions: +1. Readability + - 1: Code is hard to understand, lacks comments and consistency. + - 3: Code is generally clear, naming is reasonable, but improvements are needed. + - 5: Code is highly readable, well-structured, with complete naming and documentation. + +2. Maintainability + - 1: Code is tightly coupled, lacks modularity, and is difficult to maintain. + - 3: Code has basic modularity, maintainable but with duplication or potential issues. + - 5: Code is well-designed, modular, and easy to extend and maintain. + +3. Correctness + - 1: Contains obvious logical errors or bugs, insufficient testing. + - 3: Code is mostly correct, with minor edge cases unhandled. + - 5: Code is logically sound, thoroughly tested, and highly stable. + +4. Conciseness + - 1: Code is verbose, with unnecessary duplication. + - 3: Code is fairly concise but could be optimized further. + - 5: Code is highly concise, avoids redundancy, and is elegantly structured. + +5. Comprehensiveness + - 1: Missing essential functionality or tests, insufficient coverage. + - 3: Functionality and tests are mostly complete but with some gaps. + - 5: Functionality and tests are fully comprehensive, with complete documentation. + +6. Relevance + - 1: Changes do not align with requirements, unnecessary code included. + - 3: Changes mostly align with requirements but with minor deviations. + - 5: Changes fully align with requirements, precisely addressing the problem. + +Reviewers should assign a score (1–5) for each dimension, provide brief reasoning, and conclude with an average score and overall recommendation. +""" \ No newline at end of file diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/total_summary.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/total_summary.py index d235c90..5b24e29 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/total_summary.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/total_summary.py @@ -1 +1,11 @@ -TOTAL_SUMMARY_TEMPLATE = "" \ No newline at end of file +TOTAL_SUMMARY_TEMPLATE = """ +Please generate the final code-review summary (PR Total Summary) for this Pull Request, covering: + +1. Overall conclusion: Briefly state the overall review outcome and whether it meets merge criteria. +2. Comprehensive evaluation: Summarize code quality, maintainability, and alignment with team standards. +3. Decision recommendation: Clearly indicate the final recommendation (e.g., approve merge, request changes, comment only). +4. Team follow-up: Suggest any necessary next steps (e.g., additional testing, documentation updates, performance improvements). +5. Do not repeat earlier details; concentrate solely on the final conclusion and recommendation. + +Keep the summary concise and professional, avoid repeating earlier review details, and focus on the final conclusion. +""" \ No newline at end of file diff --git a/exe/AutomationIDE_Icon.ico b/exe/AutomationIDE_Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3c804ffd4536023b0af4e070c3e554a253434377 GIT binary patch literal 118333 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 Pjrd0gJov*Un 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∋o3VuxTz)?v2XZcxVIzSe3de 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 diff --git a/pyproject.toml b/pyproject.toml index f99ea83..0d164fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to dev version +# This is dev version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide" -version = "0.0.54" +name = "automation_ide_dev" +version = "0.0.67" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,9 +14,9 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je-editor", "je_auto_control", "je_web_runner", + "je_editor_dev", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", - "automation-file", "PySide6==6.10.0", "test_pioneer", "paramiko" + "automation-file", "PySide6==6.10.1", "test_pioneer", "paramiko" ] classifiers = [ "Programming Language :: Python :: 3.10", @@ -35,5 +35,6 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" + [tool.setuptools.packages] find = { namespaces = false } diff --git a/dev.toml b/stable.toml similarity index 86% rename from dev.toml rename to stable.toml index d33f3f8..fdbb630 100644 --- a/dev.toml +++ b/stable.toml @@ -1,12 +1,12 @@ -# Rename to dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide_dev" -version = "0.0.66" +name = "automation_ide" +version = "0.0.54" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je_editor_dev", "je_auto_control", "je_web_runner", + "je-editor", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.1", "test_pioneer", "paramiko" ] @@ -35,6 +35,5 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" - [tool.setuptools.packages] find = { namespaces = false } From 3c0d11842984180a0938924f35d99288dfb91d93 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Sun, 28 Dec 2025 20:10:01 +0800 Subject: [PATCH 2/3] Update stable version Update stable version --- .../prompt_templates/first_code_review.py | 12 ++++++++++++ .../prompt_templates/first_summary_prompt.py | 10 ++++++++++ stable.toml => dev.toml | 11 ++++++----- pyproject.toml | 11 +++++------ 4 files changed, 33 insertions(+), 11 deletions(-) rename stable.toml => dev.toml (86%) diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py index 5c5531a..75e74c9 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_code_review.py @@ -1,4 +1,10 @@ FIRST_CODE_REVIEW = """ +# Code Review Template + +## PR Description +{pr_description}} + +## Review Rules Please perform a first-step code review focusing on the following aspects: 1. Code readability (indentation, formatting, comments). 2. Clarity and descriptiveness of variable, function, and class names; avoid overly vague or cryptic naming. @@ -8,4 +14,10 @@ 6. Focus only on the most obvious issues and avoid deep analysis at this stage. Respond in a structured, bullet-point format, keeping the feedback concise and professional. + +## Code diff to review: +```diff +# Paste your code diff here +{code_diff} +``` """ diff --git a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py index 73b0ecf..610e138 100644 --- a/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py +++ b/automation_ide/automation_editor_ui/prompt_edit_gui/prompt_templates/first_summary_prompt.py @@ -1,4 +1,8 @@ FIRST_SUMMARY_PROMPT = """ +## PR Description +{pr_description}} + +## Summary Rules Please generate a first-step Pull Request summary (PR Summary) focusing on: 1. Key changes: Briefly describe the core modifications or new features. 2. Impact scope: Identify affected modules, files, or functionalities. @@ -8,4 +12,10 @@ 6. Avoid excessive technical detail; keep the summary at a high level for quick team understanding. Write in a structured, bullet-point format, keeping the summary concise and professional for quick team understanding. + +## Code diff to review: +```diff +# Paste your code diff here +{code_diff} +``` """ diff --git a/stable.toml b/dev.toml similarity index 86% rename from stable.toml rename to dev.toml index fdbb630..0d164fd 100644 --- a/stable.toml +++ b/dev.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to dev version +# This is dev version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide" -version = "0.0.54" +name = "automation_ide_dev" +version = "0.0.67" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je-editor", "je_auto_control", "je_web_runner", + "je_editor_dev", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.1", "test_pioneer", "paramiko" ] @@ -35,5 +35,6 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" + [tool.setuptools.packages] find = { namespaces = false } diff --git a/pyproject.toml b/pyproject.toml index 0d164fd..76ec76f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ -# Rename to dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide_dev" -version = "0.0.67" +name = "automation_ide" +version = "0.0.55" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je_editor_dev", "je_auto_control", "je_web_runner", + "je-editor", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.1", "test_pioneer", "paramiko" ] @@ -35,6 +35,5 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" - [tool.setuptools.packages] find = { namespaces = false } From 7f51775e110d01b3b600df777aafe8f08aa7e102 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Mon, 29 Dec 2025 00:58:42 +0800 Subject: [PATCH 3/3] Update stable version * Add logger * New Icon --- .../editor_main/main_ui.py | 51 +++++++++++------- automation_ide/utils/logging/__init__.py | 0 automation_ide/utils/logging/logger.py | 50 +++++++++++++++++ exe/auto_py_to_exe_setting.json | 2 +- ...omationIDE_Icon.ico => automation_ide.ico} | Bin pyproject.toml | 2 +- 6 files changed, 85 insertions(+), 20 deletions(-) create mode 100644 automation_ide/utils/logging/__init__.py create mode 100644 automation_ide/utils/logging/logger.py rename exe/{AutomationIDE_Icon.ico => automation_ide.ico} (100%) diff --git a/automation_ide/automation_editor_ui/editor_main/main_ui.py b/automation_ide/automation_editor_ui/editor_main/main_ui.py index 8f4b15f..6dcf610 100644 --- a/automation_ide/automation_editor_ui/editor_main/main_ui.py +++ b/automation_ide/automation_editor_ui/editor_main/main_ui.py @@ -4,6 +4,8 @@ from pathlib import Path from typing import List, Dict, Type +from automation_ide.utils.logging.logger import automation_ide_logger + environ["LOCUST_SKIP_MONKEY_PATCH"] = "1" from PySide6.QtCore import QTimer, QCoreApplication @@ -24,33 +26,46 @@ class AutomationEditor(EditorMain): - def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = False): - super().__init__(debug_mode, show_system_tray_ray) + def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = False, extend: bool = False) -> None: + super().__init__(debug_mode, show_system_tray_ray, extend=True) + self.current_run_code_window: List[QWidget] = list() # Project compiler if user not choose this will use which to find self.python_compiler = None # Delete JEditor help if self.help_menu: self.help_menu.deleteLater() - # System tray change - if self.show_system_tray_ray: - self.system_tray.main_window = self - self.system_tray.setToolTip(language_wrapper.language_word_dict.get("automation_editor_application_name")) + # Update language_dict update_language_dict() + + # Title + self.setWindowTitle(language_wrapper.language_word_dict.get("automation_editor_application_name")) + self.setToolTip(language_wrapper.language_word_dict.get("automation_editor_application_name")) + + # Windows 系統專用:設定應用程式 ID + # Windows only: set application ID + if not extend: + self.id = language_wrapper.language_word_dict.get("automation_editor_application_name") + if sys.platform in ["win32", "cygwin", "msys"]: + from ctypes import windll + windll.shell32.SetCurrentProcessExplicitAppUserModelID(self.id) + + # Icon + if not extend: + self.icon_path = Path(os.getcwd() + "/automation_ide.ico") + self.icon = QIcon(str(self.icon_path)) + if not self.icon.isNull(): + self.setWindowIcon(self.icon) + # Menu add_menu_to_menubar(self) syntax_extend_package(self) + # Tab for widget_name, widget in EDITOR_EXTEND_TAB.items(): self.tab_widget.addTab(widget(), widget_name) - # Icon - self.icon_path = Path(os.getcwd() + "/AutomationIDE_Icon.ico") - self.icon = QIcon(str(self.icon_path)) - self.system_tray = QSystemTrayIcon() - self.system_tray.setIcon(self.icon) - # Title - self.setWindowTitle(language_wrapper.language_word_dict.get("automation_editor_application_name")) + if debug_mode: close_timer = QTimer(self) close_timer.setInterval(10000) @@ -76,14 +91,14 @@ def start_editor(debug_mode: bool = False, **kwargs) -> None: Start editor instance :return: None """ - new_editor = QCoreApplication.instance() - if new_editor is None: - new_editor = QApplication(sys.argv) + new_ide = QCoreApplication.instance() + if new_ide is None: + new_ide = QApplication(sys.argv) window = AutomationEditor(debug_mode=debug_mode, **kwargs) - apply_stylesheet(new_editor, theme="dark_amber.xml") + apply_stylesheet(new_ide, theme="dark_amber.xml") window.showMaximized() try: window.startup_setting() except Exception as error: print(repr(error)) - sys.exit(new_editor.exec()) + sys.exit(new_ide.exec()) diff --git a/automation_ide/utils/logging/__init__.py b/automation_ide/utils/logging/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_ide/utils/logging/logger.py b/automation_ide/utils/logging/logger.py new file mode 100644 index 0000000..962763c --- /dev/null +++ b/automation_ide/utils/logging/logger.py @@ -0,0 +1,50 @@ +import logging +from logging.handlers import RotatingFileHandler + +# 設定 root logger 等級 Set root logger level +logging.root.setLevel(logging.DEBUG) + +# 建立 AutoControlGUI 專用 logger Create dedicated logger +automation_ide_logger = logging.getLogger("AutomationIDE") + +# 日誌格式 Formatter +formatter = logging.Formatter( + "%(asctime)s | %(name)s | %(levelname)s | %(message)s" +) + + +class AutomationIDELogger(RotatingFileHandler): + """ + AutoControlGUILoggingHandler + 自訂日誌處理器,繼承 RotatingFileHandler + - 支援檔案大小輪替 + - 預設輸出到 AutoControlGUI.log + """ + + def __init__( + self, + filename: str = "AutomationIDE.log", + mode: str = "w", + max_bytes: int = 1073741824, # 1GB + backup_count: int = 0, + ): + super().__init__( + filename=filename, + mode=mode, + maxBytes=max_bytes, + backupCount=backup_count, + ) + self.setFormatter(formatter) # 設定格式器 + self.setLevel(logging.DEBUG) # 設定等級 + + def emit(self, record: logging.LogRecord) -> None: + """ + Emit log record. + 輸出日誌紀錄 + """ + super().emit(record) + + +# 建立並加入檔案處理器 Add file handler to logger +file_handler = AutomationIDELogger() +automation_ide_logger.addHandler(file_handler) diff --git a/exe/auto_py_to_exe_setting.json b/exe/auto_py_to_exe_setting.json index 896c27d..f1a4bd8 100644 --- a/exe/auto_py_to_exe_setting.json +++ b/exe/auto_py_to_exe_setting.json @@ -19,7 +19,7 @@ }, { "optionDest": "icon_file", - "value": "C:/CodeWorkspace/Python/AutomationIDE/exe/AutomationIDE_Icon.ico" + "value": "C:/CodeWorkspace/Python/AutomationIDE/exe/automation_ide.ico" }, { "optionDest": "name", diff --git a/exe/AutomationIDE_Icon.ico b/exe/automation_ide.ico similarity index 100% rename from exe/AutomationIDE_Icon.ico rename to exe/automation_ide.ico diff --git a/pyproject.toml b/pyproject.toml index 76ec76f..56463a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "automation_ide" -version = "0.0.55" +version = "0.0.58" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ]