139 lines
3.6 KiB
Python
139 lines
3.6 KiB
Python
from django.db import models
|
|
from simplepro.components import fields
|
|
|
|
from public.models import BaseModel
|
|
from utils import constant
|
|
|
|
|
|
class AIConfig(BaseModel):
|
|
"""
|
|
AI模型配置表
|
|
"""
|
|
|
|
api_base = fields.CharField(
|
|
null=True, blank=True, max_length=128, verbose_name="API(代理)地址"
|
|
)
|
|
api_key = fields.CharField(
|
|
null=True, blank=True, max_length=128, verbose_name="API密钥"
|
|
)
|
|
llm_model = fields.CharField(
|
|
null=True, blank=True, max_length=16, verbose_name="LLM模型"
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = "AI模型配置"
|
|
verbose_name_plural = "AI模型配置"
|
|
|
|
def __str__(self):
|
|
return self.llm_model
|
|
|
|
|
|
class GitConfig(BaseModel):
|
|
"""
|
|
Git服务配置表
|
|
"""
|
|
|
|
pr_ai = fields.ForeignKey(
|
|
AIConfig,
|
|
null=True,
|
|
blank=True,
|
|
on_delete=models.SET_NULL,
|
|
verbose_name="AI模型",
|
|
)
|
|
git_name = fields.CharField(
|
|
null=True, blank=True, max_length=16, verbose_name="Git名称"
|
|
)
|
|
git_type = fields.RadioField(
|
|
choices=constant.GIT_TYPE, default=0, verbose_name="Git类型"
|
|
)
|
|
git_url = fields.CharField(
|
|
null=True, blank=True, max_length=128, verbose_name="Git地址"
|
|
)
|
|
access_token = fields.CharField(
|
|
null=True, blank=True, max_length=128, verbose_name="访问密钥"
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = "Git服务配置"
|
|
verbose_name_plural = "Git服务配置"
|
|
|
|
def __str__(self):
|
|
return self.git_name
|
|
|
|
|
|
class ProjectConfig(BaseModel):
|
|
"""
|
|
项目配置表
|
|
"""
|
|
|
|
git_config = fields.ForeignKey(
|
|
GitConfig,
|
|
null=True,
|
|
blank=True,
|
|
on_delete=models.SET_NULL,
|
|
verbose_name="Git配置",
|
|
)
|
|
project_id = fields.CharField(
|
|
null=True, blank=True, max_length=8, verbose_name="项目ID"
|
|
)
|
|
project_name = fields.CharField(
|
|
null=True, blank=True, max_length=16, verbose_name="项目名称"
|
|
)
|
|
project_url = fields.CharField(
|
|
null=True, blank=True, max_length=256, verbose_name="项目地址"
|
|
)
|
|
project_secret = fields.CharField(
|
|
null=True, blank=True, max_length=128, verbose_name="项目密钥"
|
|
)
|
|
commands = fields.CheckboxField(
|
|
choices=constant.DEFAULT_COMMANDS,
|
|
default="/review",
|
|
max_length=256,
|
|
verbose_name="默认命令",
|
|
)
|
|
is_enable = fields.SwitchField(default=True, verbose_name="是否启用")
|
|
|
|
class Meta:
|
|
verbose_name = "项目配置"
|
|
verbose_name_plural = "项目配置"
|
|
|
|
def __str__(self):
|
|
return f"{self.project_name}-{self.project_id}"
|
|
|
|
|
|
class ProjectHistory(BaseModel):
|
|
"""
|
|
项目历史表
|
|
"""
|
|
|
|
project = fields.ForeignKey(
|
|
ProjectConfig,
|
|
null=True,
|
|
blank=True,
|
|
on_delete=models.SET_NULL,
|
|
verbose_name="项目配置",
|
|
)
|
|
project_url = fields.CharField(
|
|
null=True, blank=True, max_length=256, verbose_name="项目地址"
|
|
)
|
|
mr_url = fields.CharField(
|
|
null=True, blank=True, max_length=256, verbose_name="MR地址"
|
|
)
|
|
source_branch = fields.CharField(
|
|
null=True, blank=True, max_length=16, verbose_name="源分支"
|
|
)
|
|
target_branch = fields.CharField(
|
|
null=True, blank=True, max_length=16, verbose_name="目标分支"
|
|
)
|
|
mr_title = fields.CharField(
|
|
null=True, blank=True, max_length=256, verbose_name="MR标题"
|
|
)
|
|
source_data = models.JSONField(null=True, blank=True, verbose_name="源数据")
|
|
|
|
class Meta:
|
|
verbose_name = "项目历史"
|
|
verbose_name_plural = "项目历史"
|
|
|
|
def __str__(self):
|
|
return self.mr_title
|