This commit is contained in:
rootkit
2026-01-22 17:37:27 +08:00
parent a27e0fb8d5
commit 5a7bdf20e3
4 changed files with 42 additions and 22 deletions
+5 -6
View File
@@ -44,12 +44,11 @@ class BasePlaybook(BaseAPI):
return self._playbook_model.user_input
def update_playbook_status(self, job_status: PlaybookJobStatus, remark: str):
playbook_model_tmp = PlaybookModel()
playbook_model_tmp.rowid = self._playbook_model.rowid
playbook_model_tmp.job_status = job_status
playbook_model_tmp.remark = remark
rowid = Playbook.update_or_create(playbook_model_tmp)
model_tmp = PlaybookModel()
model_tmp.rowid = self._playbook_model.rowid
model_tmp.job_status = job_status
model_tmp.remark = remark
rowid = Playbook.update_or_create(model_tmp)
return rowid
def send_notice(self, title: str, body: str) -> bool:
+16 -15
View File
@@ -17,8 +17,8 @@ from Lib.xcache import Xcache
from PLUGINS.Embeddings.embeddings_qdrant import embedding_api_singleton_qdrant, SIRP_KNOWLEDGE_COLLECTION
from PLUGINS.Mem0.CONFIG import USE as MEM_ZERO_USE
from PLUGINS.Redis.redis_stream_api import RedisStreamAPI
from PLUGINS.SIRP.sirpapi import Playbook as SIRPPlaybook, Knowledge
from PLUGINS.SIRP.sirpmodel import PlaybookJobStatus, KnowledgeAction
from PLUGINS.SIRP.sirpapi import Playbook, Knowledge
from PLUGINS.SIRP.sirpmodel import PlaybookJobStatus, KnowledgeAction, PlaybookModel
if MEM_ZERO_USE:
from PLUGINS.Mem0.mem_zero import mem_zero_singleton
@@ -106,18 +106,19 @@ class MainMonitor(object):
@staticmethod
def subscribe_pending_playbook():
models = SIRPPlaybook.list_pending_playbooks()
models = Playbook.list_pending_playbooks()
for model in models:
module_config = Xcache.get_module_config_by_name_and_type(model.type, model.name)
model_tmp = PlaybookModel(rowid=model.rowid)
if module_config is None:
PlaybookLoader.load_all_playbook_config() # try again
module_config = Xcache.get_module_config_by_name_and_type(model.type, model.name)
if module_config is None:
logger.error(f"PlaybookLoader module config not found: {model.type} - {model.name}")
model.job_status = PlaybookJobStatus.FAILED
model.remark = f"PlaybookLoader module config not found: {model.type} - {model.name}"
SIRPPlaybook.update_or_create(model)
model_tmp.job_status = PlaybookJobStatus.FAILED
model_tmp.remark = f"PlaybookLoader module config not found: {model.type} - {model.name}"
Playbook.update_or_create(model_tmp)
continue
load_path = module_config.get("load_path")
@@ -128,22 +129,22 @@ class MainMonitor(object):
playbook_intent._playbook_model = model
except Exception as E:
logger.exception(E)
model.job_status = PlaybookJobStatus.FAILED
model.remark = str(E)
SIRPPlaybook.update_or_create(model)
model_tmp.job_status = PlaybookJobStatus.FAILED
model_tmp.remark = str(E)
Playbook.update_or_create(model_tmp)
continue
job_id = thread_module_manager.start_task(playbook_intent)
if not job_id:
model.job_status = PlaybookJobStatus.FAILED
model.remark = "Failed to create playbook job."
SIRPPlaybook.update_or_create(model)
model_tmp.job_status = PlaybookJobStatus.FAILED
model_tmp.remark = "Failed to create playbook job."
Playbook.update_or_create(model_tmp)
continue
else:
logger.info(f"Create playbook job success: {job_id}")
model.job_status = PlaybookJobStatus.RUNNING
model.job_id = job_id
SIRPPlaybook.update_or_create(model)
model_tmp.job_status = PlaybookJobStatus.RUNNING
model_tmp.job_id = job_id
Playbook.update_or_create(model_tmp)
@staticmethod
def subscribe_knowledge_action():
+20
View File
@@ -154,6 +154,26 @@ class Playbook(BaseWorksheetEntity[PlaybookModel]):
return cls.list(filter_model, lazy_load=True)
@classmethod
def update_job_status_and_remark(cls, rowid: str, job_status: PlaybookJobStatus, remark: str) -> str:
"""更新 playbook 的 job_status 和 remark 字段
Args:
rowid: playbook 记录ID
job_status: 新的作业状态
remark: 备注信息
Returns:
更新后的记录ID
"""
playbook_model_tmp = PlaybookModel()
playbook_model_tmp.rowid = rowid
playbook_model_tmp.job_status = job_status
playbook_model_tmp.remark = remark
rowid = Playbook.update_or_create(playbook_model_tmp)
return rowid
class Knowledge(BaseWorksheetEntity[KnowledgeModel]):
"""PlaybookLoader 实体类"""
+1 -1
View File
@@ -83,7 +83,7 @@ class PlaybookModel(BaseSystemModel):
name: Optional[str] = Field(default="", description="执行的Playbook的名称")
user_input: Optional[str] = Field(default="", description="用户对Playbook的初始输入或后续指令")
user: Optional[Union[List[AccountModel], AccountModel]] = Field(default=None, description="发起Playbook的用户")
user: Optional[List[AccountModel]] = Field(default=None, description="发起Playbook的用户")
# 关联表
messages: Optional[List[Union[MessageModel, str]]] = Field(default=None, description="Playbook执行过程中的所有消息记录,构成对话历史")