
    Xj9                     f    d dl Z d dlmZ d dlmZ  ee          Z G d d          ZdadefdZ	dS )    N)Session)
get_loggerc                       e Zd Zd ZdededefdZdedefdZ	 	 dd	ed
edededz  dedz  defdZ	dedefdZ
dedefdZd	ed
ededeeef         fdZdS )SmartCategorizationServicec                     g dg ddg dg ddg dg ddg dd	d
gdg dddgdg dddgdg dddgdg dg ddg g dd	| _         d S )N)u   政策u   税收优惠u   减免u   扶持u   支持政策)u   关于.*政策u   .*优惠.*通知u   .*减免.*公告)keywordspatterns)u   征管u   管理办法u   征收u   缴纳u   申报)u
   .*征管.*u   .*管理办法u   .*征收.*规定)u   公告u   通知u   通告u   公示)u   .*公告u   .*通知u   .*通告)u   稽查u   检查u   核查u   审计u
   .*稽查.*u   .*检查.*通知)u   发票u   开票u   票据u
   .*发票.*u
   .*开票.*)   纳税服务u   便民u   服务指南u   办税u   .*纳税服务.*u
   .*办税.*)u   协定u   双边   税收协定u	   议定书u
   .*协定.*u   .*议定书)u   人才u   培训u   学员u   领军人才)u
   .*人才.*u
   .*培训.*u
   .*学员.*	u   税收政策u   征管规定u   公告通知u   税务稽查u   发票管理r
   r   u   人才培养   其他)
categories)selfs    Q/lsinfo/ai/hellotax_ai/base_platform/app/services/knowledge/tax_categorization.py__init__z#SmartCategorizationService.__init__   s    [ZZVVV 
 UTTPPP 
 EDD@@@ 
 EDD)+=> 
 ;::)<8 
 QPP/> 
 NMM)=9 
 KJJFFF  $&266C"
 "
    titlecontentreturnc                    |dz   |d d         z                                    }i }| j                                        D ]E\  }}d}|d         D ]}||v r|dz  }|d         D ]}	t          j        |	|          r|dz  }|||<   Ft          |                                d 	          }
|
d
         dk    rdS t                              d|
d          d|
d
          d           |
d         S )N i  r   r      r	      c                     | d         S )N    )xs    r   <lambda>zBSmartCategorizationService.categorize_by_content.<locals>.<lambda>?   s
    !A$ r   )keyr   r   zDocument categorization: z	 (score: ))lowerr   itemsresearchmaxloggerinfo)r   r   r   textscorescategoryrulesscorekeywordpatternbest_categorys              r   categorize_by_contentz0SmartCategorizationService.categorize_by_content3   s"   gdsdm+2244#4466 	% 	%OHeE ,  d??QJE ,  9Wd++ QJE$F8FLLNN???q  8^a0@^^=YZK[^^^___Qr   filenamec                     |                                 }| j                                        D ]\  }}|d         D ]}||v r|c c S dS )Nr   r   )r!   r   r"   )r   r1   filename_lowerr*   r+   r-   s         r   categorize_by_filenamez1SmartCategorizationService.categorize_by_filenameE   so    !))#4466 	$ 	$OHe , $ $n,,#OOOOO -$ xr   Ndbknowledge_base_idcategory_name	parent_idyearc                 f   ddl m} |                    |                              |j        |k    |j        |k              }||                    |j        |k              }|                                }|r|j        S |rdn| 	                    |          }	| 
                    |          }
 ||||r| dn| d||	|
          }|                    |           |                                 |                    |           t                              d| d|j         d	           |j        S )
Nr   )KnowledgeCategoryu   📅u   年税务文档u   相关文档)r6   namedescriptionr8   iconcolorzCreated new category: z (ID: r    )app.models.knowledge_baser;   queryfilterr6   r<   r8   firstid_get_category_icon_get_category_coloraddcommitrefreshr&   r'   )r   r5   r6   r7   r8   r9   r;   rA   r*   r>   r?   new_categorys               r   get_or_create_categoryz1SmartCategorizationService.get_or_create_categoryM   sh    	@????? *++22/3DD"m3
 
  LL!2!<	!IJJE;;== 	;Ivv4#:#:=#I#I((77((/48\40000>\>\>\
 
 
 	|
		


<   T]TT,/TTTUUUr   c           
      F    dddddddddd		}|                     |d          S )
Nu   📋u   📊u   📢u   🔍u   🧾u   🤝u   👨‍🎓u   📄r   get)r   r7   icon_maps      r   rE   z-SmartCategorizationService._get_category_iconq   s?    """"""",

 

 ||M6222r   c           
      F    ddddddddd	d
	}|                     |d	          S )Nz#3b82f6z#8b5cf6z#f59e0bz#ef4444z#10b981z#06b6d4z#ec4899z#6366f1z#6b7280r   rM   )r   r7   	color_maps      r   rF   z.SmartCategorizationService._get_category_color   s?    %%%%%%%%

 

	 }}]I666r   c                     |                      |||d |          }i }| j                                        D ]&}|dk    r|                      ||||          }|||<   '|                      ||d|          }||d<   |S )N)r8   r9   r   )r8   )rK   r   keys)	r   r5   r6   r9   year_category_idcategory_mapr7   category_idother_ids	            r   create_year_category_structurez9SmartCategorizationService.create_year_category_structure   s      66!44d 7 
 
 !_1133 	: 	:M(("99)=DT :   /:]+..!87G / 
 
 "*Xr   )NN)__name__
__module____qualname__r   strr0   r4   r   intrK   rE   rF   dictrX   r   r   r   r   r      sS       #
 #
 #
J 3            $s s     !%" "" " 	"
 :" Dj" 
" " " "H3 3 3 3 3 37 7 7 7 7 7.19<	c3h     r   r   r   c                  :    t           t                      a t           S )N)_categorization_servicer   r   r   r    get_smart_categorization_servicera      s    &"<">">""r   )
r#   sqlalchemy.ormr   common_loggingr   rY   r&   r   r`   ra   r   r   r   <module>rd      s    				 " " " " " " % % % % % %	H		
R R R R R R R Rj  #*D # # # # # #r   