o
    `i                  
   @   s   d Z ddlZddlmZ ddlmZ ddlZddlmZ ddl	m
Z
mZmZmZ ddlmZ ee jd	 d
 ZdedededefddZdededededdf
ddZdejdefddZdejdedeeef fddZdeddfddZdS )uM   Phase 1：创建税法知识库、8个分类、执行标签体系种子数据    N)Path)Optional)logger   )KB_NAMEKB_CODEKB_DESCRIPTIONCATEGORY_NAMES)ImportState   base_platformbase_urlemailpasswordreturnc                 C   sZ   t j|  d||ddd}|  | d}|s#td|j td|  |S )u%   POST /api/v1/auth/login → JWT tokenz/api/v1/auth/login)r   r      )jsontimeoutaccess_tokenu   登录失败，响应：u   登录成功: )	httpxpostraise_for_statusr   getRuntimeErrortextr   info)r   r   r   resptoken r   P/lsinfo/ai/hellotax_ai/data_center/backend/app/services/import_kb/phase1_init.pylogin   s   r    stater   	tenant_idc                 C   s   |  drtd d S d| dd}tj||ddd+}t|}| | td	|  t||}| | td
|  W d    n1 sKw   Y  t	| | 
d td d S )N1u   Phase 1 已完成，跳过zBearer zapplication/json)AuthorizationzContent-Typer   T)r   headersr   follow_redirectsu   知识库 ID: u   分类映射: u   ✓ Phase 1 完成)is_phase_doner   r   r   Client_get_or_create_kb	set_kb_id_get_or_create_categoriesset_category_map_seed_taxonomymark_phase_done)r!   r   r   r"   r%   clientkb_idcategory_mapr   r   r   
run_phase1   s   




	
r2   r/   c              	   C   s   | j dtddd}|  | }t|tr|}n| dp%| dp%g }|D ]}| dtkrEtdt d	|d
  d |d
   S q(| jdtt	t
ddddd}|  | d
 }tdt d	| d |S )Nz/api/v1/knowledge/bases
   )search	page_size)paramsitemsdatanameu   知识库已存在:  (id=id)tax_regulationsactiveT)r9   codedescriptiontypestatus	is_publicr   u   知识库已创建: )r   r   r   r   
isinstancelistr   r   r   r   r   )r/   r   r8   r7   kbr0   r   r   r   r)   :   s.   

r)   r0   c                 C   s   |  d| d}|  dd | pg D }i }t D ]B\}}||v r;|| ||< td| d||  d q| jd|||d	d
}|  | d }|||< td| d| d q|S )Nz/api/v1/knowledge/bases/z/categoriesc                 S   s   i | ]	}|d  |d qS )r9   r;   r   ).0cr   r   r   
<dictcomp>[   s    z-_get_or_create_categories.<locals>.<dictcomp>u   分类已存在: r:   r<   z/api/v1/knowledge/categories)knowledge_base_idr9   
sort_orderrD   r;   u   分类已创建: )r   r   r   r	   r7   r   r   r   )r/   r0   r   existingr1   	dc_cat_idr9   cat_idr   r   r   r+   W   s$   
r+   c                 C   s   ddl }td d d }dt dtj d|  d	}|jt|d
|gdddd}|jdkrDtd|  d |jrBt|j	  dS dS t
d|j	   dS )u9   通过 base_platform venv 的 Python 执行 seed_taxonomyr   Nvenvbinpython3z 
import sys
sys.path.insert(0, 'z')
sys.path.insert(0, 'zh')
from industry_accelerator.tax.scripts.seed.taxonomy.seed_taxonomy import seed_taxonomy
seed_taxonomy(z)
z-cTx   )capture_outputr   r   u1   ✓ 标签体系种子数据已写入 (tenant_id=r<   u&   标签体系种子数据写入失败: )
subprocess_BP_ROOTparentrunstr
returncoder   r   stdoutstripwarningstderr)r"   rU   	bp_pythonscriptresultr   r   r   r-   p   s&   
r-   )__doc__syspathlibr   typingr   r   logurur   configr   r   r   r	   r!   r
   __file__resolveparentsrV   rY   r    intr2   r(   r)   dictr+   r-   r   r   r   r   <module>   s0    
 