DifyApiConfig.java 2.2 KB
package com.aigeo.ai.entity;

import jakarta.persistence.*;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * AI配置实体类
 */
@Data
@Entity
@Table(name = "ai_dify_api_configs")
public class DifyApiConfig {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "company_id")
    private Integer companyId;

    @Enumerated(EnumType.STRING)
    @Column(name = "provider")
    private Provider provider;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "base_url")
    private String baseUrl;

    @Column(name = "api_key")
    private String apiKey;

    @Column(name = "model_name")
    private String modelName;

    @Column(name = "temperature")
    private Double temperature;

    @Column(name = "top_p")
    private Double topP;

    @Column(name = "max_tokens")
    private Integer maxTokens;

    @Column(name = "request_headers")
    private String requestHeaders;

    @Column(name = "is_active")
    private Boolean isActive;

    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @Column(name = "updated_at")
    private LocalDateTime updatedAt;

    @PrePersist
    protected void onCreate() {
        createdAt = LocalDateTime.now();
        updatedAt = LocalDateTime.now();
        if (isActive == null) {
            isActive = true;
        }
    }

    @PreUpdate
    protected void onUpdate() {
        updatedAt = LocalDateTime.now();
    }

    /**
     * AI提供方枚举
     */
    public enum Provider {
        DIFY("dify"),
        OPENAI("openai"),
        ANTHROPIC("anthropic"),
        GOOGLE("google"),
        AZURE_OPENAI("azure_openai"),
        OTHER("other");

        private final String code;

        Provider(String code) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }

        public static Provider fromCode(String code) {
            for (Provider provider : Provider.values()) {
                if (provider.getCode().equals(code)) {
                    return provider;
                }
            }
            throw new IllegalArgumentException("未知的AI提供方: " + code);
        }
    }
}