refactor: model

This commit is contained in:
wxg0103 2025-06-16 21:04:46 +08:00
parent 8f3efea077
commit 863e08120a
4 changed files with 64 additions and 8 deletions

View File

@ -386,3 +386,30 @@ class ModelSerializer(serializers.Serializer):
model.model_params_form = model_params_form
model.save()
return True
class SharedModelSerializer(serializers.Serializer):
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
name = serializers.CharField(required=False, max_length=64, label=_('model name'))
model_type = serializers.CharField(required=False, label=_('model type'))
model_name = serializers.CharField(required=False, label=_('base model'))
provider = serializers.CharField(required=False, label=_('provider'))
create_user = serializers.CharField(required=False, label=_('create user'))
def get_share_model_list(self):
self.is_valid(raise_exception=True)
queryset = QuerySet(Model).filter(workspace_id='None')
return [
{
'id': str(model.id),
'provider': model.provider,
'name': model.name,
'model_type': model.model_type,
'model_name': model.model_name,
'status': model.status,
'meta': model.meta,
'user_id': model.user_id,
'username': model.user.username
}
for model in queryset.order_by("-create_time")
]

View File

@ -18,6 +18,7 @@ urlpatterns = [
path('workspace/<str:workspace_id>/model/<str:model_id>/pause_download',
views.ModelSetting.PauseDownload.as_view()),
path('workspace/<str:workspace_id>/model/<str:model_id>/meta', views.ModelSetting.ModelMeta.as_view()),
path('workspace/<str:workspace_id>/shared/model', views.SharedModel.as_view()),
]
if os.environ.get('SERVER_NAME', 'web') == 'local_model':

View File

@ -21,7 +21,7 @@ from common.utils.common import query_params_to_single_dict
from models_provider.api.model import ModelCreateAPI, GetModelApi, ModelEditApi, ModelListResponse, DefaultModelResponse
from models_provider.api.provide import ProvideApi
from models_provider.models import Model
from models_provider.serializers.model_serializer import ModelSerializer
from models_provider.serializers.model_serializer import ModelSerializer, SharedModelSerializer
from system_manage.views import encryption_str
@ -212,3 +212,21 @@ class ModelSetting(APIView):
def put(self, request: Request, workspace_id: str, model_id: str):
return result.success(
ModelSerializer.Operate(data={'id': model_id}).pause_download())
class SharedModel(APIView):
authentication_classes = [TokenAuth]
@extend_schema(
methods=['Get'],
summary=_('Get Share model'),
description=_('Get Share model'),
operation_id=_('Get Share model'), # type: ignore
parameters=ModelCreateAPI.get_parameters(),
responses=ModelListResponse.get_response(),
tags=[_('Shared Model')]
) # type: ignore
@has_permissions(PermissionConstants.MODEL_READ)
def get(self, request: Request, workspace_id: str):
return result.success(
SharedModelSerializer(data={'workspace_id': workspace_id}).get_share_model_list())

View File

@ -1,15 +1,16 @@
import { Result } from '@/request/Result'
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
import { type Ref } from 'vue'
import type { pageRequest } from '@/api/type/common'
import type { knowledgeData } from '@/api/type/knowledge'
import {Result} from '@/request/Result'
import {get, post, del, put, exportFile, exportExcel} from '@/request/index'
import {type Ref} from 'vue'
import type {pageRequest} from '@/api/type/common'
import type {knowledgeData} from '@/api/type/knowledge'
import useStore from '@/stores'
const prefix = '/system/shared'
const prefix_workspace: any = { _value: '/workspace/' }
const prefix_workspace: any = {_value: 'workspace/'}
Object.defineProperty(prefix_workspace, 'value', {
get: function () {
const { user } = useStore()
const {user} = useStore()
return this._value + user.getWorkspaceId()
},
})
@ -38,10 +39,18 @@ const getSharedWorkspaceModel: (loading?: Ref<boolean>) => Promise<Result<Array<
return get(`${prefix}/${prefix_workspace.value}/model`, {}, loading)
}
const getCESharedWorkspaceModel: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
loading,
) => {
return get(`/${prefix_workspace.value}/model`, {}, loading)
}
const getSharedWorkspaceModelPage: (
param: any,
loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (param: any, loading) => {
console.log(`${prefix}/${prefix_workspace.value}/model`)
return get(`${prefix}/${prefix_workspace.value}/model`, param, loading)
}
@ -65,4 +74,5 @@ export default {
getSharedWorkspaceModelPage,
getSharedWorkspaceTool,
getSharedWorkspaceToolPage,
getCESharedWorkspaceModel
}