
    ^i                        d Z ddlmZ ddlmZmZ ddlmZ ddlmZm	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dS )u   Pydantic models for the document detail API.

文档详情接口的请求/响应数据模型。
定义文档元数据详情、版本列表、知识子图节点/边等结构。
    )annotations)datedatetime)Any)	BaseModelFieldc                      e Zd ZU dZded<   dZded<   ded<   dZded	<   dZded
<   dZded<    e	e
          Zded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dS )DocumentDetailz(Full metadata view of a single document.strdoc_id content_hashtitleN
str | None
doc_numberissuing_orgdoc_typedefault_factory	list[str]subject_wordssignerdate | Nonepublish_datesummaryr   z
int | Nonechunk_count
page_count	file_path	file_typezdatetime | None
created_at
updated_at)__name__
__module____qualname____doc____annotations__r   r   r   r   r   listr   r   r   r   r   r   r   r   r    r!        2D:\work\zm-rag\backend\app\api\schemas\document.pyr
   r
      s%        22KKKLJJJ!J!!!!"K""""H$uT:::M::::F $L$$$$GKJ I     I    "&J&&&&"&J&&&&&&r)   r
   c                  n    e Zd ZU dZded<   ded<   dZded<   dZded<   dZded	<   dZd
ed<   dZ	ded<   dS )DocumentVersionz3A single document version sharing the same content.r   r   r   Nr   r   r   r   r   r   r   )
r"   r#   r$   r%   r&   r   r   r   r   r   r(   r)   r*   r,   r,   $   s         ==KKKJJJ!J!!!!"K""""H $L$$$$Fr)   r,   c                  2    e Zd ZU dZded<   ded<   ded<   dS )	VersionListResponsez7Response for ``GET /document/versions/{content_hash}``.r   r   zlist[DocumentVersion]versionsinttotalN)r"   r#   r$   r%   r&   r(   r)   r*   r.   r.   0   s7         AA####JJJJJr)   r.   c                  J    e Zd ZU dZded<   ded<    ee          Zded<   d	S )
	GraphNodez2A single node in a document's knowledge sub-graph.r   idr   labelsr   dict[str, Any]
propertiesNr"   r#   r$   r%   r&   r   dictr7   r(   r)   r*   r3   r3   8   sK         <<GGG!&t!<!<!<J<<<<<<r)   r3   c                  T    e Zd ZU dZded<   ded<   ded<    ee          Zded<   d	S )
	GraphEdgez+A directed edge in the knowledge sub-graph.r   sourcetargettyper   r6   r7   Nr8   r(   r)   r*   r;   r;   @   sQ         55KKKKKKIII!&t!<!<!<J<<<<<<r)   r;   c                  X    e Zd ZU dZ ee          Zded<    ee          Zded<   dS )GraphSubDataz,Sub-graph structure returned for a document.r   zlist[GraphNode]nodeszlist[GraphEdge]edgesN)	r"   r#   r$   r%   r   r'   rA   r&   rB   r(   r)   r*   r@   r@   I   sT         66"U4888E8888"U4888E888888r)   r@   N)r%   
__future__r   r   r   typingr   pydanticr   r   r
   r,   r.   r3   r;   r@   r(   r)   r*   <module>rF      sk    # " " " " " # # # # # # # #       % % % % % % % %' ' ' ' 'Y ' ' '*	 	 	 	 	i 	 	 	    )   = = = = =	 = = == = = = =	 = = =9 9 9 9 99 9 9 9 9 9r)   