68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"code-review/config"
|
|
"code-review/handlers"
|
|
"code-review/services"
|
|
"code-review/services/ai"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func main() {
|
|
if err := config.LoadConfig("config.yaml"); err != nil {
|
|
log.Fatalf("加载配置失败: %v", err)
|
|
}
|
|
cfg := config.GetConfig()
|
|
|
|
// 检查是否有可用的 AI 配置
|
|
if len(cfg.AIs) == 0 {
|
|
log.Fatalf("未找到有效的 AI 配置")
|
|
}
|
|
|
|
// 初始化 AI 负载均衡器
|
|
config.ResetAIBalancer(cfg.AIs)
|
|
|
|
// 获取一个 AI 配置
|
|
aiConfig, err := config.GetAIBalancer().Next()
|
|
if err != nil {
|
|
log.Fatalf("获取 AI 配置失败: %v", err)
|
|
}
|
|
|
|
// 创建 AI 客户端和审查器
|
|
client := ai.NewClient(
|
|
aiConfig.APIBase,
|
|
aiConfig.APIKey,
|
|
aiConfig.Model,
|
|
aiConfig.Type,
|
|
aiConfig.Temperature,
|
|
)
|
|
reviewer := ai.NewAI(aiConfig.Model, aiConfig.SystemMsg, client)
|
|
|
|
// 创建服务和处理器
|
|
reviewService := services.NewReviewService(reviewer)
|
|
webhookHandler := handlers.NewWebhookHandler(reviewService)
|
|
configHandler := handlers.NewConfigHandler(cfg)
|
|
|
|
// 初始化路由
|
|
r := gin.Default()
|
|
r.Static("/static", "./static")
|
|
r.StaticFile("/", "./static/index.html")
|
|
|
|
api := r.Group("/api")
|
|
configAPI := api.Group("/config")
|
|
configAPI.Use(handlers.AuthRequired())
|
|
{
|
|
configAPI.GET("", configHandler.GetConfig)
|
|
configAPI.POST("", configHandler.UpdateConfig)
|
|
}
|
|
api.POST("/webhook/:platform", webhookHandler.HandleWebhook)
|
|
|
|
log.Printf("服务启动在 :%d", cfg.Port)
|
|
if err := r.Run(fmt.Sprintf(":%d", cfg.Port)); err != nil {
|
|
log.Fatalf("服务器启动失败: %v", err)
|
|
}
|
|
}
|