vetrag/main.go

57 lines
1.4 KiB
Go

package main
import (
"os"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
)
func main() {
logrus.SetFormatter(&logrus.TextFormatter{FullTimestamp: true})
logrus.SetLevel(logrus.InfoLevel)
if err := loadConfig("config.yaml"); err != nil {
logrus.Fatalf("Failed to load config.yaml: %v", err)
}
logrus.Infof("Loaded config: %+v", appConfig)
visitDB := NewVisitDB()
if err := loadUITemplate("ui.html"); err != nil {
logrus.Fatalf("Failed to load ui.html: %v", err)
}
var llm LLMClientAPI = NewLLMClient(
os.Getenv("OPENAI_API_KEY"),
os.Getenv("OPENAI_BASE_URL"),
os.Getenv("OPENAI_MODEL"),
)
chatService := NewChatService(llm, &visitDB)
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.Status(200)
if err := uiTemplate.Execute(c.Writer, nil); err != nil {
logrus.Errorf("Failed to execute ui.html template: %v", err)
}
})
r.GET("/health", func(c *gin.Context) {
c.Status(200)
c.JSON(200, gin.H{"status": "ok"})
})
r.POST("/chat", chatService.HandleChat)
if err := loadDBEditTemplate("ui_dbedit.html"); err != nil {
logrus.Fatalf("Failed to load ui_dbedit.html: %v", err)
}
r.GET("/admin", func(c *gin.Context) {
c.Status(200)
if err := uiDBEditTemplate.Execute(c.Writer, nil); err != nil {
logrus.Errorf("Failed to execute ui_dbedit.html template: %v", err)
}
})
r.GET("/db.yaml", func(c *gin.Context) {
c.File("db.yaml")
})
r.Run(":8080")
}