o
    Ղio(                     @   sN  d Z ddlmZ ddlmZmZ dddddd	d
dddgdd
dddddd	dddgdd
dddddd	ddddgdd
ddddd d	d
dddgdd
d!d"d#d$d%d	d
dddgdd
d&d'd(d)d*d	d
dddgdd
d+d,d-d.d/d	d
dddgdd
d0d1d2d3d4d	d
dddgdd
d5d6d7d8d9d	d
dddgdd
d:d;d<d=d>d	d
ddgdd
d?d@dAdBdCd	d
ddDgdd
dEdFdGdHdHdIdJd
ddgdKdKdLdKdMdNdFdOdPdPdIdJd
ddgdKdKdLdKdMdQdFdRdSdSdIdJd
ddDgdKdKdLdKdMdTdUdVdWdWdXdJd
ddgdKdKdLddMdYdZd[d\dd]d^d_g dd
gZd`daddbdKdKdcdddeddfdgdKdKdhdidjdDdkdKdKdcdldmddndKdKdcdoZdpdq Zdrds Z	dtS )uz
Database initialization
    )Base)engineSessionLocalOpenAIopenaiz#10a37fzhttps://api.openai.com/v1d   
public_apiopenai_compatiblebearerchat	embeddingF)
nameiconcolordefault_base_urlpriorityprovider_kindprotocol	auth_typecapabilitiesis_local	Anthropic	anthropicz#d4a574zhttps://api.anthropic.comZ   api_keyGooglegooglez#4285f4z0https://generativelanguage.googleapis.com/v1betaP   geminiDeepSeekdeepseekz#1e40afzhttps://api.deepseek.comF   u   阿里云百炼alibabaz#ff6a00z1https://dashscope.aliyuncs.com/compatible-mode/v1<   u   智谱AIzhipuz#4169e1z$https://open.bigmodel.cn/api/paas/v42   Moonshotmoonshotz#7c3aedzhttps://api.moonshot.cn/v1(   u   百度千帆baiduz#2932e1zhttps://qianfan.baidubce.com/v2   Mistralmistralz#f2a73bzhttps://api.mistral.ai/v1   u   火山引擎
volcenginez#f97316z(https://ark.cn-beijing.volces.com/api/v37   Coherecoherez#d946efzhttps://api.cohere.com/v1   rerank   本地 vLLMserverz#6366f1zhttp://localhost:8100/v1
   self_deployedTz/health)r   r   r   r   base_urlr   r   r   r   r   r   
configuredhealthcheck_pathenabled   本地 infinity 向量z#8b5cf6zhttp://localhost:8200/v1   本地 infinity 重排z#a78bfazhttp://localhost:8300/v1
   本地 MLXapplez#374151zhttp://localhost:8400/v1   u	   自定义customz#6b7280 self_hostedcustom_httpnonezlocal-qwen-chatu   Qwen3.5-27B-AWQ (本地)zQwen3.5-27B-AWQ)coder   typeremote_model_idr;   	is_activezlocal-bge-m3u   bge-m3 (本地)i   zbge-m3)rF   r   rG   	dimensionrH   r;   rI   zlocal-bge-rerankeru   bge-reranker-v2-m3 (本地)zbge-reranker-v2-m3zlocal-mlx-chatu   Qwen3.5-27B MLX (本地)zQwen3.5-27B)r4   r<   r=   r>   c                     s`   ddl m} m}m}m}m}m} ddlm   fddt	j
j D }t	j
jt|d t  dS )zG
    Create public schema tables only (not tenant-specific tables)
    r   )tenantuserknowledge_baseagentprovider	audit_logTenantSchemaManagerc                    s   g | ]
}|j  jv r|qS  )r   PUBLIC_TABLES).0tablerQ   rS   6/lsinfo/ai/hellotax_ai/base_platform/app/db/init_db.py
<listcomp>  s
    zinit_db.<locals>.<listcomp>)bindtablesN)
app.modelsrK   rL   rM   rN   rO   rP   app.db.tenant_schemarR   r   metadatarZ   values
create_allr   _seed_providers)rK   rL   rM   rN   rO   rP   tables_to_createrS   rQ   rW   init_db  s    


rb   c                  C   s$  ddl m}  ddl m} t }zz|| | j }i }g }|D ]$}|j|vr/|||j< q"||	|j
|jk }|dkrF|| q"|D ]}|| qIdd ||  D }	tD ]%}
|	|
d }|rz|
 D ]
\}}t||| qnq_|| di |
 q_|  dd ||  D }dd || D }t D ]F\}}||}|sq||d	 }|r|j|_
|j|d
kr|d
 |_d|v r|d |_d|v r|d |_q||dd|ji| q|  W n ty   |  Y nw W |  d S W |  d S |  w )Nr   )ModelProvider)Modelc                 S      i | ]}|j |qS rS   r   rU   prS   rS   rW   
<dictcomp>*      z#_seed_providers.<locals>.<dictcomp>r   c                 S   re   rS   rf   rg   rS   rS   rW   ri   5  rj   c                 S   re   rS   )rF   )rU   mrS   rS   rW   ri   6  rj   rF   rG   r;   rI   provider_idrS   )app.models.providerrc   rd   r   queryorder_byidallr   filterrl   countappenddeletePROVIDER_SEEDSgetitemssetattraddcommitMODEL_SEEDSrG   r;   rI   	Exceptionrollbackclose)rc   rd   dball_providersby_nameduplicates_to_removerh   model_countdupexistingdatarO   keyvalueexisting_providersexisting_modelsprovider_name
model_datamodelrS   rS   rW   r`     sd   





r`   N)
__doc__app.db.baser   app.db.sessionr   r   rv   r|   rb   r`   rS   rS   rS   rW   <module>   s     Z	
	%