
    $_i"                    Z   d Z ddl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 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 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 G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z  G d7 d8e          Z! G d9 d:e          Z" G d; d<e          Z# G d= d>e          Z$ G d? d@e          Z% G dA dBe          Z& G dC dDe          Z' G dE dFe          Z( G dG dHe          Z) G dI dJe          Z* G dK dLe          Z+ G dM dNe          Z, G dO dPe          Z-dQS )Ru   Pydantic models for the admin graph management API.

知识图谱管理接口的请求/响应数据模型。
涵盖图谱统计、实体/关系 CRUD、重复检测与合并、
图谱重建、占位符管理、实体类型与关系类型定义等。
    )annotations)Any)	BaseModelFieldc                  $    e Zd ZU ded<   ded<   dS )NodeTypeCountstrlabelintcountN__name__
__module____qualname____annotations__     5D:\work\zm-rag\backend\app\api\schemas\admin_graph.pyr   r      s"         JJJJJJJJr   r   c                  $    e Zd ZU ded<   ded<   dS )RelTypeCountr	   typer   r   Nr   r   r   r   r   r      s"         IIIJJJJJr   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<    ee	          Z
ded	<    ee	          Zd
ed<   dS )GraphStatsResponser   r   total_nodestotal_relationshipsorphan_nodesplaceholder_countdefault_factoryzlist[NodeTypeCount]node_countszlist[RelTypeCount]
rel_countsN)r   r   r   r   r   r   r   r   r   listr    r!   r   r   r   r   r      s         K     L',uT'B'B'BKBBBB%*U4%@%@%@J@@@@@@r   r   c                  t    e Zd ZU  edd          Zded<   dZded<    edd	          Zded
<   dZded<   dS )GraphHealthResponse        u>   比例：无关系的非Document实体/全部非Document实体descriptionfloatno_relation_ratior   r   duplicate_candidatesu#   ES中有但图谱中无的文档数missing_in_graphtotal_es_docsN)	r   r   r   r   r)   r   r*   r+   r,   r   r   r   r$   r$   &   sy         $uS6vwwwwwww !!!!!!E!1VWWWWWWWMr   r$   c                  b    e Zd ZU ded<   ded<   dZded<    ee          Zded	<   d
Zded<   dS )EntityListItemr	   id	list[str]labels namer   dict[str, Any]
propertiesr   r   connection_countN)	r   r   r   r   r3   r   dictr5   r6   r   r   r   r.   r.   1   sd         GGGDNNNN!&t!<!<!<J<<<<r   r.   c                  \    e Zd ZU  ee          Zded<   dZded<   dZded<   d	Z	ded
<   dS )EntityListResponser   zlist[EntityListItem]itemsr   r   total   page   	page_sizeN
r   r   r   r   r"   r:   r   r;   r=   r?   r   r   r   r9   r9   9   s[         "'%"="="=E====ENNNNDMMMMIr   r9   c                  N    e Zd ZU ded<   ded<   dZded<   dZded<   dZded<   d	S )
EntityNeighborr	   r/   r0   r1   r2   r3   rel_type	directionN)r   r   r   r   r3   rC   rD   r   r   r   rB   rB   @   sV         GGGDNNNNHIr   rB   c                  H    e Zd ZU dZded<   dZded<   dZded<   dZded<   dS )EntityRelatedDocr2   r	   doc_idtitle
doc_numberrC   N)r   r   r   rG   r   rH   rI   rC   r   r   r   rF   rF   H   sR         FEOOOOJHr   rF   c                      e Zd ZU ded<   ded<    ee          Zded<    ee          Zded	<    ee          Z	d
ed<   dS )EntityDetailr	   r/   r0   r1   r   r4   r5   zlist[EntityNeighbor]	neighborszlist[EntityRelatedDoc]related_docsN)
r   r   r   r   r   r7   r5   r"   rL   rM   r   r   r   rK   rK   O   s         GGG!&t!<!<!<J<<<<&+eD&A&A&AIAAAA+05+F+F+FLFFFFFFr   rK   c                  X    e Zd ZU  edd          Zded<    eed          Zded	<   d
S )EntityCreateRequest.u'   实体类型，如 Organization, Personr&   r	   r
   u   属性，至少包含 name)r   r'   r4   r5   N)r   r   r   r   r
   r   r7   r5   r   r   r   rO   rO   W   sT         s(QRRRERRRR!&tIe!f!f!fJffffffr   rO   c                  4    e Zd ZU  edd          Zded<   dS )EntityUpdateRequest.u   要更新的属性键值对r&   r4   r5   N)r   r   r   r   r5   r   r   r   r   rQ   rQ   \   s3         !&s8U!V!V!VJVVVVVVr   rQ   c                  F    e Zd ZU ded<   ded<    ee          Zded<   dS )	EntityCreateResponser	   r/   r0   r1   r   r4   r5   Nr   r   r   r   r   r7   r5   r   r   r   rS   rS   `   sE         GGG!&t!<!<!<J<<<<<<r   rS   c                  (    e Zd ZU ded<   dZded<   dS )EntityDeleteResponser	   r/   r   r   deleted_relationshipsN)r   r   r   r   rW   r   r   r   rV   rV   f   s-         GGG!"""""""r   rV   c                      e Zd ZU ded<   ded<   ded<   ded<    eddd	          Zd
ed<    edd          Zded<   dZded<   dS )DuplicateCandidater	   entity_a_identity_a_nameentity_b_identity_b_name.r   r<   )geler(   
similarityzedit_distance | alias_matchr&   
match_typer2   r
   N)r   r   r   r   r   r`   ra   r
   r   r   r   rY   rY   o   s         caA...J....eC-JKKKJKKKKEOOOOOOr   rY   c                  @    e Zd ZU  ee          Zded<   dZded<   dS )DuplicateListResponser   zlist[DuplicateCandidate]
candidatesr   r   r;   N)r   r   r   r   r"   rd   r   r;   r   r   r   rc   rc   y   s;         +05+F+F+FJFFFFENNNNNNr   rc   c                  |    e Zd ZU  edd          Zded<    edd          Zded<    edd	          Zd
ed<   dS )EntityMergeRequest.u   保留的实体 IDr&   r	   
primary_idu   将被合并删除的实体 IDsecondary_idTu'   是否将被合并实体名加入别名bool	add_aliasN)r   r   r   r   rg   r   rh   rj   r   r   r   rf   rf   ~   su         eC-ABBBJBBBBc/OPPPLPPPPeD.WXXXIXXXXXXr   rf   c                  J    e Zd ZU ded<   dZded<    ee          Zded<   d	S )
EntityMergeResponser	   rg   r   r   migrated_relationshipsr   r0   aliasesN)r   r   r   r   rm   r   r"   rn   r   r   r   rl   rl      sK         OOO"#####t444G444444r   rl   c                      e Zd ZU ded<   ded<   ded<   dZded<    ee          Zded	<   ded
<   dZded<    ee          Z	ded<    ee
          Zded<   dS )RelationshipItemr	   r/   r   	source_idr2   source_namer   r0   source_labels	target_idtarget_nametarget_labelsr4   r5   N)r   r   r   r   rr   r   r"   rs   ru   rv   r7   r5   r   r   r   rp   rp      s         GGGIIINNNK$uT:::M::::NNNK$uT:::M::::!&t!<!<!<J<<<<<<r   rp   c                  \    e Zd ZU  ee          Zded<   dZded<   dZded<   d	Z	ded
<   dS )RelationshipListResponser   zlist[RelationshipItem]r:   r   r   r;   r<   r=   r>   r?   Nr@   r   r   r   rx   rx      s[         $)E$$?$?$?E????ENNNNDMMMMIr   rx   c                  P    e Zd ZU ded<   ded<   ded<    ee          Zded<   dS )	RelationshipCreateRequestr	   rq   rt   r   r   r4   r5   NrT   r   r   r   rz   rz      sK         NNNNNNIII!&t!<!<!<J<<<<<<r   rz   c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )RelationshipCreateResponser	   r/   r   rq   rt   Nr   r   r   r   r|   r|      s4         GGGIIINNNNNNNNr   r|   c                  6    e Zd ZU  eddd          Zded<   dS )RebuildRequest.r<   u"   要重建图谱的文档 ID 列表)
min_lengthr'   r0   doc_idsN)r   r   r   r   r   r   r   r   r   r~   r~      s5         sq>bcccGccccccr   r~   c                  $    e Zd ZU ded<   ded<   dS )RebuildResponser	   task_idr   	doc_countNr   r   r   r   r   r      s"         LLLNNNNNr   r   c                  $    e Zd ZU ded<   ded<   dS )RebuildAllResponser	   r   r   
total_docsNr   r   r   r   r   r      s"         LLLOOOOOr   r   c                  j    e Zd ZU 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 )RebuildStatusResponser	   r   statusr%   r(   progressr   r   currentr;   r2   current_doc_idN
str | Noneerror)	r   r   r   r   r   r   r;   r   r   r   r   r   r   r      su         LLLKKKHGENNNNNEr   r   c                  (    e Zd ZU ded<   dZded<   dS )PlaceholderReferencerr	   rG   r2   rH   N)r   r   r   r   rH   r   r   r   r   r      s&         KKKEOOOOOOr   r   c                  X    e Zd ZU ded<   dZded<   dZded<    ee          Zded<   d	S )
PlaceholderItemr	   r/   r2   rG   rI   r   zlist[PlaceholderReferencer]referencersN)	r   r   r   r   rG   rI   r   r"   r   r   r   r   r   r      s[         GGGFJ/4uT/J/J/JKJJJJJJr   r   c                  @    e Zd ZU  ee          Zded<   dZded<   dS )PlaceholderListResponser   zlist[PlaceholderItem]r:   r   r   r;   N)r   r   r   r   r"   r:   r   r;   r   r   r   r   r      s;         #(5#>#>#>E>>>>ENNNNNNr   r   c                  4    e Zd ZU  edd          Zded<   dS )PlaceholderLinkRequest.u   真实文档 IDr&   r	   real_doc_idN)r   r   r   r   r   r   r   r   r   r   r      s3         uS.?@@@K@@@@@@r   r   c                  2    e Zd ZU ded<   ded<   dZded<   dS )PlaceholderLinkResponser	   placeholder_idr   r   r   rm   N)r   r   r   r   rm   r   r   r   r   r      s<         "#######r   r   c                  t    e Zd ZU 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S )EntityTypeItemr	   r3   r2   r'   iconcolorr   r4   properties_schemar   r   instance_countN)r   r   r   r   r'   r   r   r   r7   r   r   r   r   r   r   r      sv         IIIKDNNNNEOOOO(-d(C(C(CCCCCNr   r   c                  2    e Zd ZU  ee          Zded<   dS )EntityTypeListResponser   zlist[EntityTypeItem]r:   Nr   r   r   r   r"   r:   r   r   r   r   r   r      s0         "'%"="="=E======r   r   c                      e Zd ZU  eddd          Z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S )EntityTypeCreateRequest.r<   2   r   
max_lengthr	   r3   r2   r'   r   r   r   r4   r   N)r   r   r   r   r3   r   r'   r   r   r7   r   r   r   r   r   r      s~         caB777D7777KDNNNNEOOOO(-d(C(C(CCCCCCCr   r   c                  l    e Zd ZU  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 )EntityTypeUpdateRequestNu3   重命名（如不为空则触发类型重命名）r&   r   new_namer'   r   r   zdict[str, Any] | Noner   )
r   r   r   r   r   r   r'   r   r   r   r   r   r   r   r     sx          53hiiiHiiii"K""""DE/3333333r   r   c                  z    e Zd ZU ded<   dZded<    ee          Zded<    ee          Zded<   d	Z	d
ed<   dS )RelTypeItemr	   r3   r2   r'   r   r0   rs   rv   r   r   r   N)
r   r   r   r   r'   r   r"   rs   rv   r   r   r   r   r   r     sy         IIIK$uT:::M::::$uT:::M::::Nr   r   c                  2    e Zd ZU  ee          Zded<   dS )RelTypeListResponser   zlist[RelTypeItem]r:   Nr   r   r   r   r   r     s0         $uT:::E::::::r   r   c                      e Zd ZU  eddd          Zded<   dZded<    ee	          Zd
ed<    ee	          Z	d
ed<   dS )RelTypeCreateRequest.r<   r   r   r	   r3   r2   r'   r   r0   rs   rv   N)
r   r   r   r   r3   r   r'   r"   rs   rv   r   r   r   r   r     s         caB777D7777K$uT:::M::::$uT:::M::::::r   r   c                  ^    e Zd ZU  edd          Zded<   dZded<   dZded<   dZded	<   dS )
RelTypeUpdateRequestNu9   重命名（如不为空则触发关系类型重命名）r&   r   r   r'   zlist[str] | Noners   rv   )	r   r   r   r   r   r   r'   rs   rv   r   r   r   r   r   "  sf          53noooHoooo"K""""&*M****&*M******r   r   N).__doc__
__future__r   typingr   pydanticr   r   r   r   r   r$   r.   r9   rB   rF   rK   rO   rQ   rS   rV   rY   rc   rf   rl   rp   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s    # " " " " "       % % % % % % % %    I   
    9   
A A A A A A A A    )       Y              Y       y   G G G G G9 G G Gg g g g g) g g g
W W W W W) W W W= = = = =9 = = =# # # # #9 # # #           I   
Y Y Y Y Y Y Y Y5 5 5 5 5) 5 5 5	= 	= 	= 	= 	=y 	= 	= 	=    y   = = = = =	 = = =       d d d d dY d d d    i   
       
    I       I   
K K K K Ki K K K    i   
A A A A AY A A A$ $ $ $ $i $ $ $    Y   > > > > >Y > > >D D D D Di D D D4 4 4 4 4i 4 4 4    )   ; ; ; ; ;) ; ; ;; ; ; ; ;9 ; ; ;+ + + + +9 + + + + +r   