
    Vi'                     X    d Z ddlZddlmZmZ ddlmZ ddlmZ ddlm	Z	  G d d      Z
y)	u   任务管理器    N)datetimetimezone)Optional)Task)get_session_makerc                       e Zd ZdZ	 	 	 ddededee   dee   def
dZd	edee   fd
Z	d	eddfdZ
dd	ededdfdZd	ededdfdZd	eddfdZy)TaskManageru*   任务管理器 - 管理任务生命周期Nquerycomplexity_scoreuser_idconversation_idreturnc                   K   t        dt        j                         j                  dd  t         j                  ||||      }t               } |       4 d{   }|j                  |       |j                          d{    |j                  |       d{    |j                          d{    ddd      d{    |S 7 p7 I7 27 7 # 1 d{  7  sw Y   |S xY ww)u   创建新任务task_N   )idstatusr
   r   r   r   )
r   uuiduuid4hexSTATUS_PENDINGr   addflushrefreshcommit)selfr
   r   r   r   tasksession_makersessions           :/home/jang/Projects/ai-researcher/src/core/task_manager.pycreate_taskzTaskManager.create_task   s      tzz|'',-.&&-+
 *+ ? 	# 	#gKK--/!!//$'''.."""		# 	# 	#!'"		# 	# 	# 	# s~   AC*C
C*%CCCCC3C4C8C*CC*CCCC*C'CC'"C*task_idc                    K   t               } |       4 d{   }|j                  t        |       d{   }|cddd      d{    S 7 57 7 	# 1 d{  7  sw Y   yxY ww)u   获取任务N)r   getr   )r   r"   r   r   results        r    get_taskzTaskManager.get_task'   s^     )+ ? 	 	g";;tW55F	 	 	5	 	 	 	sS   A)AA)AAAA)A	A)AA)A&AA&"A)c                   K   t               } |       4 d{   }|j                  t        |       d{   }|rUt        j                  |_        t        j                  t        j                        |_	        |j                          d{    ddd      d{    y7 7 n7 7 # 1 d{  7  sw Y   yxY ww)u   标记任务开始N)r   r$   r   STATUS_RUNNINGr   r   nowr   utc
started_atr   r   r"   r   r   r   s        r    
start_taskzTaskManager.start_task.   s     )+ ? 	' 	'g T733D"11"*,,x||"<nn&&&	' 	' 	'3 '	' 	' 	' 	'sg   C B#C B+B%AB+B'B+C B)C %B+'B+)C +B=1B42B=9C skills_invokedc                   K   t               } |       4 d{   }|j                  t        |       d{   }|r^t        j                  |_        t        j                  t        j                        |_	        |r||_
        |j                          d{    ddd      d{    y7 7 w7 7 # 1 d{  7  sw Y   yxY ww)u   标记任务完成N)r   r$   r   STATUS_COMPLETEDr   r   r)   r   r*   completed_atr.   r   )r   r"   r.   r   r   r   s         r    complete_taskzTaskManager.complete_task8   s     )+ ? 	' 	'g T733D"33$,LL$>!!*8D'nn&&&	' 	' 	'3 '	' 	' 	' 	'sg   C	B,C	B4B.AB4B0B4C	&B2'C	.B40B42C	4C:B=;CC	errorc                   K   t               } |       4 d{   }|j                  t        |       d{   }|r\t        j                  |_        t        j                  t        j                        |_	        ||_
        |j                          d{    ddd      d{    y7 7 u7 7 # 1 d{  7  sw Y   yxY ww)u   标记任务失败N)r   r$   r   STATUS_FAILEDr   r   r)   r   r*   r1   r3   r   )r   r"   r3   r   r   r   s         r    	fail_taskzTaskManager.fail_taskD   s     )+ ? 	' 	'g T733D"00$,LL$>!"
nn&&&	' 	' 	'3
 '	' 	' 	' 	'sg   CB*CB2B,AB2B.B2C$B0%C,B2.B20C2C8B;9C Cc                   K   t               } |       4 d{   }|j                  t        |       d{   }|r|j                  t        j                  t        j
                  fv rUt        j                  |_        t        j                  t        j                        |_        |j                          d{    ddd      d{    y7 7 7 7 # 1 d{  7  sw Y   yxY ww)u   取消任务N)r   r$   r   r   r   r(   STATUS_CANCELLEDr   r)   r   r*   r1   r   r,   s        r    cancel_taskzTaskManager.cancel_taskO   s     )+ ? 	' 	'g T733D(;(;T=P=P'QQ"33$,LL$>!nn&&&	' 	' 	'3 '	' 	' 	' 	'sg   C,CC,CCBC9C:C>C,	C
C,CCC,C)C C)%C,)g        NN)N)__name__
__module____qualname____doc__strfloatr   r   r!   r&   r-   listr2   dictr6   r9        r    r	   r	   
   s    4
 #&!%)-   #	
 "# 
4c htn ' ' '
'3 
' 
'PT 
'	's 	'4 	'D 	'' ' 'rC   r	   )r=   r   r   r   typingr   src.models.taskr   src.models.baser   r	   rB   rC   r    <module>rG      s#      '    -M' M'rC   