o
    µÇib  ă                   @   sH   d Z ddlmZ ddlZddlmZ dZdZdZ	dZ
dd„ Zd	d
„ ZdS )zunify provider model architecture

Revision ID: a1b2c3d4e5f6
Revises: add_local_models
Create Date: 2026-03-28 12:00:00+08:00

é    )ÚopN)Ú
postgresqlÚa1b2c3d4e5f6Úadd_local_modelsc                	   C   sč  t jdtjdtjddŤddŤddŤ t jdtjd	tjddŤddŤddŤ t jdtjd
tjddŤddŤddŤ t jdtjdtjt ˇ dŤddŤddŤ t jdtjdt ˇ ddŤddŤ t jdtjdtjddŤddŤddŤ t jdtjdtjt ˇ dŤddŤddŤ t jdtjdtjddŤddŤddŤ t jdtjdt 	ˇ ddŤddŤ t jdtjdt 	ˇ ddŤddŤ t jdtjdt ˇ ddŤddŤ t jdtjdt ˇ ddŤddŤ t jdtjdt 	ˇ ddŤddŤ t jdtjdtjt ˇ dŤddŤddŤ t  dtjdtjddŤddŤˇ t  dtjdtjddŤddŤˇ t  dtjdtjddŤddŤˇ t  dtjdt 	ˇ ddŤˇ t j
ddddgdgd ddŤ t  d ˇ t  d!ˇ t  d"ˇ t  d#ˇ t  d$ˇ t  d%ˇ t  d&ˇ t  d'ˇ t  d(ˇ t  d)ˇ t  d*ˇ t  d+ˇ t jdddtjddŤd,d-Ť t jdd	dtjddŤd,d-Ť t jdd
dtjddŤd,d-Ť t jdddtjt ˇ dŤd,d-Ť t jdddt ˇ d,d-Ť t jdddt ˇ d,d-Ť t jdddt ˇ d,d-Ť t jdddt 	ˇ d,d-Ť t  d.ˇ t  d/ˇ d S )0NÚmodel_providersÚprovider_kindé2   )ÚlengthT)ÚnullableÚpublic©ÚschemaÚprotocolÚ	auth_typeÚcapabilities)Úastext_typeÚis_localÚhealthcheck_pathé˙   Úextra_configÚmodelsÚremote_model_idÚcontext_lengthÚmax_output_tokensÚsupports_streamÚsupports_toolsÚpriorityÚlocal_modelsÚ
asset_kindÚruntime_kindÚsource_kindÚpublished_model_idÚ)fk_local_models_published_model_id_modelsÚid)Úsource_schemaÚreferent_schemazZUPDATE public.model_providers SET provider_kind = 'public_api' WHERE provider_kind IS NULLzWUPDATE public.model_providers SET protocol = 'openai_compatible' WHERE protocol IS NULLzŤUPDATE public.model_providers SET auth_type = CASE WHEN api_key IS NULL OR api_key = '' THEN 'none' ELSE 'bearer' END WHERE auth_type IS NULLzVUPDATE public.model_providers SET capabilities = '[]'::json WHERE capabilities IS NULLzIUPDATE public.model_providers SET is_local = false WHERE is_local IS NULLzMUPDATE public.models SET remote_model_id = code WHERE remote_model_id IS NULLzMUPDATE public.models SET supports_stream = true WHERE supports_stream IS NULLzLUPDATE public.models SET supports_tools = false WHERE supports_tools IS NULLz>UPDATE public.models SET priority = 100 WHERE priority IS NULLz€UPDATE local_models SET asset_kind = CASE WHEN model_type = 'lora' THEN 'adapter' ELSE 'full_model' END WHERE asset_kind IS NULLzKUPDATE local_models SET runtime_kind = 'generic' WHERE runtime_kind IS NULLzJUPDATE local_models SET source_kind = 'imported' WHERE source_kind IS NULLF)r   Úexisting_typer
   uÁ  
        INSERT INTO public.model_providers (
            name, description, configured, default_base_url, api_key, base_url, priority, enabled,
            provider_kind, protocol, auth_type, capabilities, is_local, healthcheck_path, extra_config,
            created_at, updated_at, is_deleted
        )
        SELECT 'ćś¬ĺś° MLX', 'Local MLX provider', true, 'http://127.0.0.1:8010', NULL, 'http://127.0.0.1:8010', 50, true,
               'local_mlx', 'openai_compatible', 'none', '["chat", "embedding", "rerank"]'::json, true, '/health', NULL,
               NOW(), NOW(), false
        WHERE NOT EXISTS (
            SELECT 1 FROM public.model_providers WHERE name = 'ćś¬ĺś° MLX'
        )
        a©  
        INSERT INTO public.model_providers (
            name, description, configured, default_base_url, api_key, base_url, priority, enabled,
            provider_kind, protocol, auth_type, capabilities, is_local, healthcheck_path, extra_config,
            created_at, updated_at, is_deleted
        )
        SELECT 'ECS A100', 'Self-hosted ECS model provider', false, NULL, NULL, NULL, 60, true,
               'self_hosted', 'openai_compatible', 'bearer', '["chat", "embedding", "rerank"]'::json, false, '/health', NULL,
               NOW(), NOW(), false
        WHERE NOT EXISTS (
            SELECT 1 FROM public.model_providers WHERE name = 'ECS A100'
        )
        )r   Ú
add_columnÚsaÚColumnÚStringr   ÚJSONÚTextÚBooleanÚIntegerÚcreate_foreign_keyÚexecuteÚalter_column© r2   r2   ú[/lsinfo/ai/hellotax_ai/base_platform/alembic/versions/20260328_1200_unify_provider_model.pyÚupgrade   sj   $$$( $($     (   ů












 ˙˙r4   c                   C   s$  t jddddŤ t  ddˇ t  ddˇ t  ddˇ t  ddˇ t jd	d
ddŤ t jd	dddŤ t jd	dddŤ t jd	dddŤ t jd	dddŤ t jd	dddŤ t jd	dddŤ t jdd
ddŤ t jddddŤ t jddddŤ t jddddŤ t jddddŤ t jddddŤ t jddddŤ d S )Nr"   r   Ú
foreignkey)Útype_r!   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   Údrop_constraintÚdrop_columnr2   r2   r2   r3   Ú	downgradel   s&   r9   )Ú__doc__Úalembicr   Ú
sqlalchemyr(   Úsqlalchemy.dialectsr   ÚrevisionÚdown_revisionÚbranch_labelsÚ
depends_onr4   r9   r2   r2   r2   r3   Ú<module>   s    Y