
    X@i                         d Z ddlmZmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ed   Zed   Zed   Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)u   
任務 / 專案的 API schema。

跟 user.py 一樣:
  - Public 系列:對外回傳格式(永遠不含內部欄位)
  - Create / Update 系列:接收前端送來的請求 body
    )datedatetime)Literal)UUID)	BaseModel
ConfigDictField)todoin_progressreviewdone	cancelled)lowmediumhighurgent)activearchivedc                   p    e Zd ZU  eddd      Zeed<    edd      Zedz  ed	<    ed
d      Zeed<   y)ProjectCreateRequest.      
min_length
max_lengthnameN  defaultr   descriptionz#1F4E79^#[0-9A-Fa-f]{6}$r   patterncolor)	__name__
__module____qualname__r	   r   str__annotations__r    r$        4/volume1/homes/robertsu/coba/app/app/schemas/task.pyr   r      s<    caC8D#8#DTBKtBy2FGE3Gr+   r   c                       e Zd ZU  eddd      Zedz  ed<    edd      Zedz  ed<    edd	
      Zedz  ed<   dZ	e
dz  ed<   y)ProjectUpdateRequestNr   r   r   r   r   r   r   r   r    r!   r"   r$   status)r%   r&   r'   r	   r   r(   r)   r    r$   r0   ProjectStatusr*   r+   r,   r.   r.      sS    TaCHD#*H#DTBKtBd4HIE3:I#'FMD 'r+   r.   c                   l    e Zd ZU  ed      Zeed<   eed<   edz  ed<   eed<   eed<   eed	<   eed
<   y)ProjectPublicTfrom_attributesidr   Nr    r$   owner_idr0   
created_at)	r%   r&   r'   r   model_configr   r)   r(   r   r*   r+   r,   r3   r3   &   s5    d3LH
ItJNKr+   r3   c                       e Zd ZU dZ eddd      Zeed<    edd	      Zedz  ed
<   dZ	e
dz  ed<   dZeed<   dZeed<   dZedz  ed<   dZe
dz  ed<   y)TaskCreateRequestu   建立新任務。

    所有欄位除 title 都可省略,庫柏未來會幫忙自動補(例如優先順序、due_date)。
    .r     r   titleN'  r   r    
project_idr
   r0   r   prioritydue_dateassignee_id)r%   r&   r'   __doc__r	   r=   r(   r)   r    r?   r   r0   
TaskStatusr@   TaskPriorityrA   r   rB   r*   r+   r,   r;   r;   5   so    
 sqS9E39#DUCKtC"Jt"FJ%Hl% HdTk #K#r+   r;   c                       e Zd ZU dZ eddd      Zedz  ed<    edd      Zedz  ed	<   dZ	e
dz  ed
<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZe
dz  ed<   dZedz  ed<   y)TaskUpdateRequestu@   更新任務。所有欄位都可選,只更新有傳的欄位。Nr   r<   r/   r=   r>   r   r    r?   r0   r@   rA   rB   order_index)r%   r&   r'   rC   r	   r=   r(   r)   r    r?   r   r0   rD   r@   rE   rA   r   rB   rH   intr*   r+   r,   rG   rG   D   s    JdqSIE3:I#DUCKtC"Jt" $FJ$$(HlT!( HdTk #K#"Kt"r+   rG   c                   L    e Zd ZU dZ ed      Zeed<   eed<   dZ	edz  ed<   y)	_UserMiniu   簡化的使用者資料,用在任務的 assignee/creator 欄位裡內嵌,
    避免前端為了顯示「指派給誰」要再多一次 API 請求。Tr4   r6   display_nameN
avatar_url)
r%   r&   r'   rC   r   r9   r   r)   r(   rM   r*   r+   r,   rK   rK   Q   s-    O d3LH!Jd
!r+   rK   c                       e Zd ZU  ed      Zeed<   edz  ed<   eed<   edz  ed<   eed<   eed	<   edz  ed
<   e	ed<   e
dz  ed<   e
ed<   e
ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   y)
TaskPublicTr4   r6   Nr?   r=   r    r0   r@   rA   rH   completed_atr8   
updated_atrB   
created_byassigneecreator)r%   r&   r'   r   r9   r   r)   r(   r   rI   r   rB   rR   rS   rK   rT   r*   r+   r,   rO   rO   \   s    d3LHtJtKMTkT/!  $K#"Jt" "&Hi$% $GY$r+   rO   N)rC   r   r   typingr   uuidr   pydanticr   r   r	   rD   rE   r1   r   r.   r3   r;   rG   rK   rO   r*   r+   r,   <module>rX      s    $   1 1 IJ
89,-H9 H(9 (	I 	$	 $
#	 
#"	 "% %r+   