| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # coding=utf-8
- """
- 平台API Key模型
- 存储用户创建的平台API密钥信息
- 用于调用OpenAI兼容网关的密钥管理
- """
- import uuid_utils.compat as uuid
- from django.db import models
- from common.mixins.app_model_mixin import AppModelMixin
- from users.models import User
- class PlatformApiKeyStatus(models.TextChoices):
- ACTIVE = "active", "启用"
- DISABLED = "disabled", "禁用"
- class PlatformApiKey(AppModelMixin):
- """
- 平台API Key
- 存储用户创建的平台API密钥信息
- - API Key使用SHA256哈希存储,仅在创建时返回完整密钥
- - 每个用户最多可创建5个有效API Key
- - 支持启用/禁用状态管理
- """
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="用户")
- api_key_hash = models.CharField(max_length=64, verbose_name="API Key哈希值", db_index=True)
- api_key_prefix = models.CharField(max_length=20, verbose_name="API Key显示前缀")
- name = models.CharField(max_length=100, verbose_name="备注名称", null=True, blank=True)
- status = models.CharField(max_length=20, verbose_name="状态",
- choices=PlatformApiKeyStatus.choices,
- default=PlatformApiKeyStatus.ACTIVE, db_index=True)
- last_used_at = models.DateTimeField(verbose_name="最后使用时间", null=True, blank=True)
- class Meta:
- db_table = "platform_api_key"
- verbose_name = "平台API Key"
- verbose_name_plural = "平台API Key"
- ordering = ["-create_time"]
- def __str__(self):
- return f"{self.api_key_prefix} ({self.name or '未命名'})"
|