| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # coding=utf-8
- """
- 插件模型
- 存储插件的注册信息、配置和状态
- """
- import uuid_utils.compat as uuid
- from django.db import models
- from common.mixins.app_model_mixin import AppModelMixin
- class PluginStatus(models.TextChoices):
- """插件状态"""
- ACTIVE = 'ACTIVE', '已启用'
- INACTIVE = 'INACTIVE', '已禁用'
- ERROR = 'ERROR', '错误'
- class PluginType(models.TextChoices):
- """插件类型"""
- TOOL = 'TOOL', '工具插件'
- KNOWLEDGE = 'KNOWLEDGE', '知识库插件'
- MODEL = 'MODEL', '模型插件'
- CUSTOM = 'CUSTOM', '自定义插件'
- class Plugin(AppModelMixin):
- """插件"""
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True)
- name = models.CharField(max_length=128, verbose_name="插件名称", db_index=True)
- code = models.CharField(max_length=64, verbose_name="插件编码", unique=True, db_index=True)
- desc = models.CharField(max_length=512, verbose_name="插件描述", default="")
- plugin_type = models.CharField(
- max_length=20,
- choices=PluginType.choices,
- default=PluginType.CUSTOM,
- verbose_name="插件类型"
- )
- status = models.CharField(
- max_length=20,
- choices=PluginStatus.choices,
- default=PluginStatus.INACTIVE,
- verbose_name="插件状态"
- )
- version = models.CharField(max_length=32, verbose_name="当前版本", default="1.0.0")
- author = models.CharField(max_length=64, verbose_name="作者", default="")
- icon = models.CharField(max_length=256, verbose_name="插件图标", default="")
- schema = models.JSONField(verbose_name="插件 Schema", default=dict)
- config = models.JSONField(verbose_name="插件配置", default=dict)
- entry_point = models.CharField(max_length=256, verbose_name="入口文件", default="")
- is_installed = models.BooleanField(verbose_name="是否已安装", default=False)
- install_time = models.DateTimeField(verbose_name="安装时间", null=True, blank=True)
- user = models.ForeignKey(
- 'users.User',
- on_delete=models.SET_NULL,
- db_constraint=False,
- blank=True,
- null=True,
- verbose_name="创建用户"
- )
- class Meta:
- db_table = "plugin"
- def __str__(self):
- return f"{self.name} ({self.code})"
|