o
    Ղi'                     @   s  d Z ddlmZ ddlmZmZ ddlmZmZ G dd deZG dd deZ	G d	d
 d
eZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZ d7S )8z
Knowledge Document Schemas

Pydantic models for knowledge document management, including:
- Categories
- Tags
- Documents
- QA (Question & Answer)
- Search
    )	BaseModel)OptionalList)datetimedatec                   @   sv   e Zd ZU dZdZee ed< eed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed< d	Zeed
< dS )CategoryCreatez(Schema for creating a knowledge categoryNknowledge_base_idnamedescription	parent_idiconcolorr   
sort_order)__name__
__module____qualname____doc__r   r   int__annotations__strr
   r   r   r   r    r   r   F/lsinfo/ai/hellotax_ai/base_platform/app/schemas/knowledge_document.pyr      s   
 r   c                   @   s   e Zd ZU dZeed< ee ed< eed< ee ed< ee ed< ee ed< ee ed< d	Zeed
< d	Z	eed< d	Z
eed< eed< eed< G dd dZdS )CategoryResponsez&Schema for knowledge category responseidr   r	   r
   r   r   r   r   r   	doc_countdocument_count
created_at
updated_atc                   @      e Zd ZdZdS )zCategoryResponse.ConfigTNr   r   r   from_attributesr   r   r   r   Config-       r!   N)r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU dZeed< eed< eed< ee ed< eed< dZeed< ee ed	< ee ed
< e	ed< e	ed< G dd dZ
dS )TagCategoryResponsez Schema for tag category responser   r	   coder
   part_numberr   r   r   r   r   r   c                   @   r   )zTagCategoryResponse.ConfigTNr   r   r   r   r   r!   @   r"   r!   N)r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r#   3   s   
 r#   c                   @   s   e Zd ZU dZeed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed	< d
Zeed< dZeed< dZee ed< dZee ed< dZeed< dZeee  ed< dZeed< d
Zeed< dS )	TagCreatez#Schema for creating a knowledge tagr	   Nr   r
   u   🏷️r   z#6366f1r   r   r   enabledstatustag_category_idtag_codeFis_predefinedkeywords      ?search_weightsearch_priority)r   r   r   r   r   r   r   r   r   r
   r   r   r   r(   r)   r*   r+   boolr,   r   r.   floatr/   r   r   r   r   r&   F   s   
 r&   c                   @   s   e Zd ZU dZdZee ed< dZee	 ed< dZ
ee ed< dZee ed< dZee ed< dZee	 ed< dZee ed	< dZee	 ed
< dZeee  ed< dZee ed< dZee	 ed< dS )	TagUpdatez#Schema for updating a knowledge tagNr	   r   r
   r   r   r   r(   r)   r,   r.   r/   )r   r   r   r   r	   r   r   r   r   r   r
   r   r   r   r(   r)   r,   r   r.   r1   r/   r   r   r   r   r2   X   s   
 r2   c                   @   s   e Zd ZU dZeed< eed< ee ed< ee ed< ee ed< ee ed< dZeed	< eed
< dZ	eed< dZ
ee ed< dZee ed< dZeed< dZeed< dZeee  ed< dZeed< dZeed< eed< eed< G dd dZdS )TagResponsez!Schema for knowledge tag responser   r	   r   r
   r   r   r   r   r(   r   Nr)   r*   Fr+   	is_systemr,   r-   r.   r/   r   r   c                   @   r   )zTagResponse.ConfigTNr   r   r   r   r   r!   ~   r"   r!   )r   r   r   r   r   r   r   r   r   r   r)   r*   r+   r0   r4   r,   r   r.   r1   r/   r   r!   r   r   r   r   r3   h   s*   
 r3   c                   @   s0   e Zd ZU dZg Zed  ed< G dd dZdS )TagTreeNodez,Schema for tag tree node (includes children)childrenc                   @   r   )zTagTreeNode.ConfigTNr   r   r   r   r   r!      r"   r!   N)r   r   r   r   r6   r   r   r!   r   r   r   r   r5      s   
 r5   c                   @   s<   e Zd ZU dZeed< eed< ee ed< G dd dZ	dS )TagTreeGroupedz-Schema for grouped tag tree by taxonomy partsr%   	part_name
categoriesc                   @   r   )zTagTreeGrouped.ConfigTNr   r   r   r   r   r!      r"   r!   N)
r   r   r   r   r   r   r   r   dictr!   r   r   r   r   r7      s   
 r7   c                   @   sB   e Zd ZU dZeed< eed< ee ed< eed< e	e ed< dS )AutoTagSuggestionzSchema for auto-tag suggestiontag_idtag_namer*   
confidencematched_keywordsN)
r   r   r   r   r   r   r   r   r1   r   r   r   r   r   r;      s   
 r;   c                   @   s&   e Zd ZU dZeed< dZeed< dS )AutoTagRequestzSchema for auto-tag requestdocument_id333333?confidence_thresholdN)r   r   r   r   r   r   rC   r1   r   r   r   r   r@      s   
 r@   c                   @   s.   e Zd ZU dZeed< ee ed< eed< dS )AutoTagResponsezSchema for auto-tag responserA   suggestionstotal_suggestionsN)r   r   r   r   r   r   r   r;   r   r   r   r   rD      s
   
 rD   c                   @   s6   e Zd ZU dZee ed< dZeed< dZ	e
ed< dS )BatchAutoTagRequestz!Schema for batch auto-tag requestdocument_idsrB   rC   F
auto_applyN)r   r   r   r   r   r   r   rC   r1   rI   r0   r   r   r   r   rG      s
   
 rG   c                   @   s.   e Zd ZU dZeed< eed< ee ed< dS )BatchAutoTagResponsez"Schema for batch auto-tag responsetotal_documents	processedresultsN)r   r   r   r   r   r   r   rD   r   r   r   r   rJ      s
   
 rJ   c                   @   s  e Zd ZU dZeed< eed< dZee ed< dZee	 ed< dZ
ee ed< dZee ed< d	Zeed
< dZeed< g Zee	 ed< dZee ed< dZee ed< dZeed< dZee	 ed< dZee ed< dZee ed< dZee ed< dZee	 ed< dZee	 ed< dZee ed< dZee ed< dZee ed< dZee ed< dZeee	  ed< dZ ee	 ed< dZ!eee  ed< dZ"eed < dZ#eee  ed!< dZ$ee% ed"< dZ&ee ed#< d$Z'e	ed%< dZ(ee	 ed&< dS )'DocumentCreatez(Schema for creating a knowledge documenttitlecontentNsummarycategory_idsourcereference_urldraftr(   T	is_publictag_ids	file_type	file_path	automaticsegmentation_modecharacter_countdoc_type
doc_numberissuing_authoritydoc_number_yeardoc_number_serial
issue_dateeffective_dateexpire_date
doc_statussupersedes_doc_idssuperseded_by_doc_idtax_type_tagsFhas_attachmentattachment_typesparse_quality_scorecontent_hash   version_numberdata_center_doc_id))r   r   r   r   r   r   rQ   r   rR   r   rS   rT   r(   rV   r0   rW   r   rX   rY   r[   r\   r]   r^   r_   r`   ra   rb   r   rc   rd   re   rf   rg   rh   ri   rj   rk   r1   rl   rn   ro   r   r   r   r   rN      sB   
 rN   c                   @   s   e Zd ZU dZdZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed< dZee ed	< dZee ed
< dZeee  ed< dZee ed< dZee ed< dZee ed< dZee ed< dS )DocumentUpdatez(Schema for updating a knowledge documentNrO   rP   rQ   rR   rS   rT   r(   rV   rW   
chunk_sizechunk_overlapr[   splitter_type)r   r   r   r   rO   r   r   r   rP   rQ   rR   r   rS   rT   r(   rV   r0   rW   r   rq   rr   r[   rs   r   r   r   r   rp      s   
 rp   c                   @   s(  e Zd ZU dZeed< eed< eed< ee ed< ee ed< dZee ed< eed	< ee ed
< ee ed< eed< e	ed< eed< e	ed< ee ed< dZ
ee ed< dZeed< dZeed< dZeed< dZeed< dZeed< dZeed< dZee ed< dZee ed< dZee ed< dZee ed < dZee ed!< dZee ed"< dZee ed#< dZee ed$< dZee ed%< dZeee  ed&< dZee ed'< dZeee  ed(< d)Ze	ed*< dZ eee  ed+< dZ!ee" ed,< dZ#ee ed-< d.Z$eed/< e%ed0< e%ed1< G d2d3 d3Z&dS )4DocumentResponsez&Schema for knowledge document responser   rO   rP   rQ   rR   Ncategory_name	author_idrS   rT   r(   rV   
view_countis_vectorizedvector_modelrX   rZ   r[   i  rq      rr   	recursivers   r   r\   recall_countr]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   Fri   rj   rk   rl   rm   rn   r   r   c                   @   r   )zDocumentResponse.ConfigTNr   r   r   r   r   r!   $  r"   r!   )'r   r   r   r   r   r   r   r   ru   r0   rX   r[   rq   rr   rs   r\   r|   r]   r^   r_   r`   ra   rb   r   rc   rd   re   rf   r   rg   rh   ri   rj   rk   r1   rl   rn   r   r!   r   r   r   r   rt      sV   
 rt   c                   @   sF   e Zd ZU dZeed< eed< dZee ed< dZ	ee
e  ed< dS )QACreatez"Schema for creating a knowledge QAquestionanswerNrR   related_documents)r   r   r   r   r   r   rR   r   r   r   r   r   r   r   r   r}   *  s   
 r}   c                   @   s|   e Zd ZU dZeed< eed< eed< ee ed< eee  ed< eed< eed< eed	< e	ed
< e	ed< G dd dZ
dS )
QAResponsez Schema for knowledge QA responser   r~   r   rR   r   	use_counthelpful_countr(   r   r   c                   @   r   )zQAResponse.ConfigTNr   r   r   r   r   r!   ?  r"   r!   N)r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   2  s   
 r   c                   @   sR   e Zd ZU dZeed< dZee ed< dZ	ee ed< dZ
eed< dZeed	< dS )
SearchRequestz#Schema for knowledge search requestqueryNr   rR   keywordsearch_type
   limit)r   r   r   r   r   r   r   r   r   rR   r   r   r   r   r   r   r   E  s   
 r   c                   @   sF   e Zd ZU dZeed< dZee ed< dZ	ee ed< dZ
eed< dS )VectorSearchRequestz Schema for vector search requestr   Nr   rR      top_k)r   r   r   r   r   r   r   r   r   rR   r   r   r   r   r   r   N  s   
 r   c                   @   sB   e Zd ZU dZeed< eed< eed< eed< dZ	e
e ed< dS )VectorizationStatusResponsez(Schema for vectorization status responserA   r(   progressrx   Nry   )r   r   r   r   r   r   r   r1   r0   ry   r   r   r   r   r   r   X  s   
 r   c                   @   s&   e Zd ZU dZee ed< eed< dS )VectorizationTasksResponsez'Schema for vectorization tasks responsetaskstotalN)r   r   r   r   r   r:   r   r   r   r   r   r   r   a  s   
 r   c                   @   sR   e Zd ZU dZeed< eed< dZee	 ed< dZ
ee ed< dZee ed< dS )BatchUploadResultzSchema for batch upload resultfilenamesuccessNrA   rx   error)r   r   r   r   r   r   r0   rA   r   r   rx   r   r   r   r   r   r   g  s   
 r   c                   @   s6   e Zd ZU dZeed< eed< eed< ee ed< dS )BatchUploadResponsez Schema for batch upload responser   r   failedrM   N)r   r   r   r   r   r   r   r   r   r   r   r   r   p  s   
 r   c                   @   s:   e Zd ZU dZeed< eed< eed< eed< eed< dS )KnowledgeStatsResponsez(Schema for knowledge statistics responserK   published_documentstotal_categories
total_tagstotal_qaN)r   r   r   r   r   r   r   r   r   r   r   z  s   
 r   N)!r   pydanticr   typingr   r   r   r   r   r   r#   r&   r2   r3   r5   r7   r;   r@   rD   rG   rJ   rN   rp   rt   r}   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:    		'6	
		
