o
    i                     @   sD   d Z ddlZddlmZ ddlmZ eejd ZG dd dZ	dS )u6   导入进度 checkpoint 持久化，支持断点续传    N)Path)Optionalz.import_state.jsonc                   @   s   e Zd Zdd ZdefddZdd Zdd	 Zdee	 fd
dZ
de	fddZdee	e	f fddZdee	e	f fddZdedefddZdefddZde	fddZde	fddZde	fddZd e	fd!d"Zde	fd#d$Zd e	fd%d&Zd'S )(ImportStatec                 C   s   |   | _d S N)_load_dataself r
   L/lsinfo/ai/hellotax_ai/data_center/backend/./app/services/import_kb/state.py__init__      zImportState.__init__returnc                 C   s2   t  rztt  W S  ty   Y i S w i S r   )
STATE_FILEexistsjsonloads	read_text	Exceptionr   r
   r
   r   r      s   zImportState._loadc                 C   s   t tj| jddd d S )N   F)indentensure_ascii)r   
write_textr   dumpsr   r   r
   r
   r   _save   s   zImportState._savec                 C   s   i | _ t rt  d S d S r   )r   r   r   unlinkr   r
   r
   r   reset   s   zImportState.resetc                 C   s   | j dS Nkb_idr   getr   r
   r
   r   	get_kb_id    s   zImportState.get_kb_idr   c                 C      || j d< |   d S r   r   r   )r	   r   r
   r
   r   	set_kb_id#      
zImportState.set_kb_idc                 C   s    | j di }dd | D S )Ncategory_mapc                 S      i | ]	\}}t ||qS r
   )int.0kvr
   r
   r   
<dictcomp>)       z0ImportState.get_category_map.<locals>.<dictcomp>)r   r    items)r	   rawr
   r
   r   get_category_map'   s   zImportState.get_category_mapmappingc                 C   s$   dd |  D | jd< |   d S )Nc                 S   r'   r
   )strr)   r
   r
   r   r-   ,   r.   z0ImportState.set_category_map.<locals>.<dictcomp>r&   )r/   r   r   )r	   r2   r
   r
   r   set_category_map+   s   zImportState.set_category_mapphasec                 C   s   | j d| ddS )Nphase__doneFr   r	   r5   r
   r
   r   is_phase_done1   s   zImportState.is_phase_donec                 C   s   d| j d| d< |   d S )NTr6   r7   r#   r8   r
   r
   r   mark_phase_done4   s   zImportState.mark_phase_donec                 C      | j ddS )Nphase2_cursorr   r   r   r
   r
   r   get_phase2_cursor:   r   zImportState.get_phase2_cursordoc_idc                 C   r"   )Nr<   r#   )r	   r>   r
   r
   r   set_phase2_cursor=   r%   zImportState.set_phase2_cursorc                 C   r;   )Nphase3_cursorr   r   r   r
   r
   r   get_phase3_cursorC   r   zImportState.get_phase3_cursorknowledge_doc_idc                 C   r"   )Nr@   r#   r	   rB   r
   r
   r   set_phase3_cursorF   r%   zImportState.set_phase3_cursorc                 C   r;   )Nphase4_cursorr   r   r   r
   r
   r   get_phase4_cursorL   r   zImportState.get_phase4_cursorc                 C   r"   )NrE   r#   rC   r
   r
   r   set_phase4_cursorO   r%   zImportState.set_phase4_cursorN)__name__
__module____qualname__r   dictr   r   r   r   r(   r!   r$   r1   r4   r3   boolr9   r:   r=   r?   rA   rD   rF   rG   r
   r
   r
   r   r   
   s"    r   )
__doc__r   pathlibr   typingr   __file__parentr   r   r
   r
   r
   r   <module>   s    