|
@@ -9,12 +9,14 @@ from tkinter import messagebox
|
|
|
import requests
|
|
|
|
|
|
from common.sql_lite import get_global_db_connection
|
|
|
-from config import conf
|
|
|
+from config import conf, set_config
|
|
|
from db.batch_task import batch_task_get_list, batch_task_status, batch_task_update_status
|
|
|
from logic.logic_batch_task_create import open_batch_task_create_win
|
|
|
from logic.logic_batch_task_detail import open_batch_task_detail_win
|
|
|
+from plugins.agent import Agent
|
|
|
+from plugins.custom_agent import CustomAgent
|
|
|
from service.batch_task import stop_batch_task, start_batch_task
|
|
|
-from service.robot import get_robot
|
|
|
+from service.robot import get_robot, init_robot
|
|
|
from ui.ui import WinGUI
|
|
|
|
|
|
|
|
@@ -27,16 +29,16 @@ class Win(WinGUI):
|
|
|
self.selection_batch_task_id = None
|
|
|
|
|
|
def __event_bind(self):
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_save.bind('<Button-1>', self.save_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_start.bind('<Button-1>', self.start_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_pause.bind('<Button-1>', self.stop_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_version.bind('<Button-1>', self.version_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_button_create.bind('<Button-1>', self.batch_task_create_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.bind('<Double-1>',
|
|
|
- self.batch_task_detail_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.bind('<Button-1>', self.just_click_event)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.bind('<Button-3>',
|
|
|
- self.batch_task_action_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_save.bind('<Button-1>', self.save_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_start.bind('<Button-1>', self.start_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_pause.bind('<Button-1>', self.stop_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_version.bind('<Button-1>', self.version_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_button_create.bind('<Button-1>', self.batch_task_create_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.bind('<Double-1>',
|
|
|
+ self.batch_task_detail_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.bind('<Button-1>', self.just_click_event)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.bind('<Button-3>',
|
|
|
+ self.batch_task_action_event)
|
|
|
pass
|
|
|
|
|
|
def __style_config(self):
|
|
@@ -47,15 +49,15 @@ class Win(WinGUI):
|
|
|
|
|
|
def stop_event(self, event):
|
|
|
stop_batch_task()
|
|
|
- if self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_pause.cget('state').__str__() == tkinter.DISABLED:
|
|
|
+ if self.tk_tabs_main_tabs.tk_tabs_start.tk_button_pause.cget('state').__str__() == tkinter.DISABLED:
|
|
|
return
|
|
|
robot = get_robot()
|
|
|
if robot is not None:
|
|
|
robot.wcf.cleanup()
|
|
|
robot = None
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_start.config(state=tkinter.NORMAL)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_pause.config(state=tkinter.DISABLED)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_button_create.config(state=tkinter.DISABLED)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_start.config(state=tkinter.NORMAL)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_pause.config(state=tkinter.DISABLED)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_button_create.config(state=tkinter.DISABLED)
|
|
|
self.__is_started = False
|
|
|
messagebox.showinfo('提示', '助手已停止运行!')
|
|
|
|
|
@@ -113,6 +115,23 @@ class Win(WinGUI):
|
|
|
messagebox.showerror('错误', 'token验证失败!')
|
|
|
return False
|
|
|
|
|
|
+ agent_info = resp['agent_info']
|
|
|
+ if agent_info is None:
|
|
|
+ return False
|
|
|
+
|
|
|
+ set_config("agent_id", agent_info.get("id", 0))
|
|
|
+ set_config("role", agent_info.get("role", ""))
|
|
|
+ set_config("background", agent_info.get("background", ""))
|
|
|
+ set_config("examples", agent_info.get("examples", ""))
|
|
|
+ set_config("dataset_id", agent_info.get("dataset_id", ""))
|
|
|
+ set_config("collection_id", agent_info.get("collection_id", ""))
|
|
|
+ set_config("custom_agent_base", resp['custom_agent_base'])
|
|
|
+ set_config("custom_agent_key", resp['custom_agent_key'])
|
|
|
+ set_config("openai_base", resp['openai_base'])
|
|
|
+ set_config("openai_key", resp['openai_key'])
|
|
|
+ set_config("dataset_base", resp['dataset_base'])
|
|
|
+ set_config("dataset_key", resp['dataset_key'])
|
|
|
+
|
|
|
return True
|
|
|
|
|
|
else:
|
|
@@ -124,7 +143,7 @@ class Win(WinGUI):
|
|
|
return False
|
|
|
|
|
|
def start_event(self, event):
|
|
|
- if self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_start.cget('state').__str__() == tkinter.DISABLED:
|
|
|
+ if self.tk_tabs_main_tabs.tk_tabs_start.tk_button_start.cget('state').__str__() == tkinter.DISABLED:
|
|
|
return
|
|
|
|
|
|
if not self.check_token():
|
|
@@ -132,24 +151,32 @@ class Win(WinGUI):
|
|
|
|
|
|
# 接收消息
|
|
|
# robot.enableRecvMsg() # 可能会丢消息?
|
|
|
+ # init_robot()
|
|
|
robot = get_robot()
|
|
|
robot.enableReceivingMsg() # 加队列
|
|
|
|
|
|
if robot.wcf.is_login():
|
|
|
self.__is_started = True
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_start.config(state='disabled')
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_button_pause.config(state='normal')
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_button_create.config(state='normal')
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_start.config(state='disabled')
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_start.tk_button_pause.config(state='normal')
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_button_create.config(state='normal')
|
|
|
messagebox.showinfo('提示', '助手开始运行!')
|
|
|
start_batch_task()
|
|
|
|
|
|
+ # 注册插件
|
|
|
+ if conf().get("agent_id") != 0 and conf().get("openai_base") and conf().get("openai_key"):
|
|
|
+ robot.register_plugin(Agent())
|
|
|
+
|
|
|
+ if conf().get("agent_id") == 0 and conf().get("custom_agent_base") and conf().get("custom_agent_key"):
|
|
|
+ robot.register_plugin(CustomAgent())
|
|
|
+
|
|
|
wx_wxid = robot.wcf.get_self_wxid()
|
|
|
connection = get_global_db_connection()
|
|
|
|
|
|
def refresh_list():
|
|
|
# 清空列表
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.delete(
|
|
|
- *self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.get_children())
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.delete(
|
|
|
+ *self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.get_children())
|
|
|
|
|
|
# 查询数据
|
|
|
cursor = connection.cursor()
|
|
@@ -163,12 +190,12 @@ class Win(WinGUI):
|
|
|
values = (
|
|
|
created_at, status, f"{result['success'] + result['fail']}/{result['total']}", result['fail'],
|
|
|
result['content'])
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.insert('', "end",
|
|
|
- iid=result['id'],
|
|
|
- values=values)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.insert('', "end",
|
|
|
+ iid=result['id'],
|
|
|
+ values=values)
|
|
|
# 维持选中状态
|
|
|
if result['id'] == self.selection_batch_task_id:
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.selection_set(result['id'])
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.selection_set(result['id'])
|
|
|
|
|
|
# 每 3秒调用一次这个函数
|
|
|
self.tk_tabs_main_tabs.after(3000, refresh_list)
|
|
@@ -177,9 +204,9 @@ class Win(WinGUI):
|
|
|
|
|
|
def save_event(self, event):
|
|
|
conf().update({
|
|
|
- "api_base": self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_input_api_base.get(),
|
|
|
- "api_key": self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_input_api_key.get(),
|
|
|
- "token": self.tk_tabs_main_tabs.tk_tabs_main_tabs_0.tk_input_token.get()
|
|
|
+ # "api_base": self.tk_tabs_main_tabs.tk_tabs_start.tk_input_api_base.get(),
|
|
|
+ # "api_key": self.tk_tabs_main_tabs.tk_tabs_start.tk_input_api_key.get(),
|
|
|
+ "token": self.tk_tabs_main_tabs.tk_tabs_start.tk_input_token.get()
|
|
|
})
|
|
|
# 将字典写入 JSON 文件
|
|
|
with open('config.json', 'w') as json_file:
|
|
@@ -193,9 +220,9 @@ class Win(WinGUI):
|
|
|
|
|
|
def batch_task_detail_event(self, event):
|
|
|
# 获取双击项的标识符
|
|
|
- item_id = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.identify_row(event.y)
|
|
|
+ item_id = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.identify_row(event.y)
|
|
|
# 获取该项的值
|
|
|
- item_values = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.item(item_id, "values")
|
|
|
+ item_values = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.item(item_id, "values")
|
|
|
# print("Double-clicked item:", item_values)
|
|
|
if len(item_values) > 0:
|
|
|
self.selection_batch_task_id = int(item_id)
|
|
@@ -205,9 +232,9 @@ class Win(WinGUI):
|
|
|
|
|
|
def batch_task_start_event(self, event):
|
|
|
# 获取双击项的标识符
|
|
|
- item_id = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.identify_row(event.y)
|
|
|
+ item_id = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.identify_row(event.y)
|
|
|
# 获取该项的值
|
|
|
- item_values = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.item(item_id, "values")
|
|
|
+ item_values = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.item(item_id, "values")
|
|
|
# print("Double-clicked item:", item_values)
|
|
|
if len(item_values) > 0:
|
|
|
self.selection_batch_task_id = int(item_id)
|
|
@@ -228,9 +255,9 @@ class Win(WinGUI):
|
|
|
|
|
|
def batch_task_stop_event(self, event):
|
|
|
# 获取双击项的标识符
|
|
|
- item_id = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.identify_row(event.y)
|
|
|
+ item_id = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.identify_row(event.y)
|
|
|
# 获取该项的值
|
|
|
- item_values = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.item(item_id, "values")
|
|
|
+ item_values = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.item(item_id, "values")
|
|
|
# print("Double-clicked item:", item_values)
|
|
|
if len(item_values) > 0:
|
|
|
self.selection_batch_task_id = int(item_id)
|
|
@@ -251,18 +278,18 @@ class Win(WinGUI):
|
|
|
|
|
|
def batch_task_action_event(self, event):
|
|
|
# 获取右键项的标识符
|
|
|
- item_id = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.identify_row(event.y)
|
|
|
+ item_id = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.identify_row(event.y)
|
|
|
print(f"Right-clicked item: {item_id}")
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.selection_set(item_id)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.selection_set(item_id)
|
|
|
# 获取该项的值
|
|
|
- item_values = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.item(item_id, "values")
|
|
|
+ item_values = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.item(item_id, "values")
|
|
|
if len(item_values) > 0:
|
|
|
self.selection_batch_task_id = int(item_id)
|
|
|
|
|
|
# print("Right-clicked item:", item_values)
|
|
|
|
|
|
# 创建菜单
|
|
|
- menu = tkinter.Menu(self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list, tearoff=0)
|
|
|
+ menu = tkinter.Menu(self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list, tearoff=0)
|
|
|
menu.add_command(label="查看详情", command=lambda: self.batch_task_detail_event(event))
|
|
|
if item_values[1] == "等待中" or item_values[1] == "已开始":
|
|
|
menu.add_command(label="停止", command=lambda: self.batch_task_stop_event(event))
|
|
@@ -273,9 +300,9 @@ class Win(WinGUI):
|
|
|
self.selection_batch_task_id = None
|
|
|
|
|
|
def just_click_event(self, event):
|
|
|
- item_id = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.identify_row(event.y)
|
|
|
- self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.selection_set(item_id)
|
|
|
- item_values = self.tk_tabs_main_tabs.tk_tabs_main_tabs_1.tk_table_batch_task_list.item(item_id, "values")
|
|
|
+ item_id = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.identify_row(event.y)
|
|
|
+ self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.selection_set(item_id)
|
|
|
+ item_values = self.tk_tabs_main_tabs.tk_tabs_batch_task.tk_table_batch_task_list.item(item_id, "values")
|
|
|
if len(item_values) > 0:
|
|
|
self.selection_batch_task_id = int(item_id)
|
|
|
else:
|