
    TiP                     f    d Z ddlmZmZmZ ddlmZ  G d d      Z e       Zdeeeef      fdZ	y	)
u'  
Knowledge Service - 知识库服务模块

该模块负责管理知识库相关功能：
- 从本地设置中获取启用的知识库数据
- 提供统一的知识库访问接口

架构说明：
- 前端从云端API获取知识库数据
- 前端将启用的知识库完整数据存储到本地settings中
- Python本地服务从settings直接读取知识库数据，无需访问云端

主要功能：
1. 从设置中获取启用的知识库完整数据
2. 提供格式化的知识库信息访问接口
3. 与设置服务集成管理知识库数据
    )ListDictAny   )settings_servicec                       e Zd ZdZd Zdee   fdZdeeee	f      fdZ
deeee	f      fdZdeeee	f      deee	f   fdZy	)
KnowledgeServiceuX   
    知识库服务类

    负责从本地设置中管理和访问知识库数据
    c                      y)u   初始化知识库服务N selfs    T/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/services/knowledge_service.py__init__zKnowledgeService.__init__   s        returnc                 *    t        j                         S )u|   
        获取用户启用的知识库ID列表

        Returns:
            List[str]: 启用的知识库ID列表
        )r   get_enabled_knowledge_idsr   s    r   r   z*KnowledgeService.get_enabled_knowledge_ids"   s      99;;r   c                 *    t        j                         S )u   
        获取用户启用的知识库完整数据列表

        Returns:
            List[Dict[str, Any]]: 知识库数据列表
        )r   get_enabled_knowledge_datar   s    r   r   z+KnowledgeService.get_enabled_knowledge_data+   s      ::<<r   c                 p   | j                         }g }|D ]  }|j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  d	d      |j                  d
d      d}|j                  |        |S )u\  
        获取用户启用的知识库详细信息列表

        这是主要的对外接口，返回包含name、description、content等信息的知识库列表

        Returns:
            List[Dict[str, Any]]: 知识库信息列表，每个项目包含：
                - id: 知识库ID
                - name: 知识库名称
                - description: 知识库描述
                - content: 知识库内容
                - cover: 封面图片URL
                - is_public: 是否公开
                - created_at: 创建时间
                - updated_at: 更新时间
        id namedescriptioncontentcover	is_publicF
created_at
updated_at)r   r   r   r   r   r   r   r   )r   getappend)r   knowledge_listformatted_listkbformatted_kbs        r   list_user_enabled_knowledgez,KnowledgeService.list_user_enabled_knowledge4   s    " 88:   	0BffT2&vr*!vvmR866)R0,VVK7 ff\26 ff\26	L !!,/	0 r   knowledge_data_listc                 H   K   t        j                  |       d{   S 7 w)u   
        更新启用的知识库完整数据

        Args:
            knowledge_data_list (List[Dict[str, Any]]): 知识库数据列表

        Returns:
            Dict[str, Any]: 操作结果
        N)r   update_enabled_knowledge_data)r   r'   s     r   r)   z.KnowledgeService.update_enabled_knowledge_dataX   s       &CCDWXXXXs   " "N)__name__
__module____qualname____doc__r   r   strr   r   r   r   r&   r)   r   r   r   r	   r	      s    <49 <=Dc3h,@ ="T$sCx.-A "H
YtDQTVYQYNG[ 
Y`dehjmem`n 
Yr   r	   r   c                  *    t         j                         S )u   
    获取用户启用的知识库详细信息列表 (全局函数)

    这是一个便捷的全局函数，可以直接调用获取用户启用的知识库信息

    Returns:
        List[Dict[str, Any]]: 知识库信息列表
    )knowledge_servicer&   r   r   r   r&   r&   j   s     88::r   N)
r-   typingr   r   r   r   r	   r0   r.   r&   r   r   r   <module>r2      sH   $ # " .KY KY^ %& 	;T$sCx.%9 	;r   