refactor(setting): 集中管理环境配置并新增启动日志汇总

1.  将所有环境变量读取逻辑迁移至setting包统一管理,移除各模块直接os.Getenv调用
2.  新增全局配置结构体统一管理服务端口、鉴权、跨域等配置
3.  添加启动期配置汇总日志,方便运维核对环境配置生效情况
4.  重构鉴权和CORS中间件,改为读取全局配置而非直接读取环境变量
5.  优化health端点的环境变量检查逻辑,使用已加载的全局配置而非重复读取环境
This commit is contained in:
sun
2026-06-30 20:55:56 +08:00
parent 0aad65ed78
commit 3dc9632c1b
5 changed files with 183 additions and 92 deletions
+11 -18
View File
@@ -4,12 +4,10 @@ import (
"context"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"github.com/volcano-tts/tts-api/common"
"github.com/volcano-tts/tts-api/controller"
"github.com/volcano-tts/tts-api/middleware"
"github.com/volcano-tts/tts-api/router"
@@ -21,32 +19,27 @@ func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.SetPrefix("[TTS-Server] ")
middleware.InitAPIKeys()
middleware.InitCORSConfig()
// 所有环境变量读取在 setting 包内集中完成,业务模块只读全局 Config。
setting.InitAllConfigs()
// 兼容旧调用顺序:rate limiter / 静态文件 / stats / controller 的初始化保持独立。
middleware.InitRateLimiter()
setting.CheckStaticFiles()
service.InitStats()
controller.InitController()
setting.TTSConfigErr = setting.InitTTSConfig()
// 启动期一次性打印所有 Config 状态,便于运维核对。
setting.LogStartupSummary()
if setting.TTSConfigErr != nil {
log.Printf("警告:配置初始化失败: %v", setting.TTSConfigErr)
log.Printf("服务将继续运行,但TTS功能不可用,请检查环境变量配置\n")
} else {
log.Printf("配置初始化成功\n")
log.Printf("警告: 服务将继续运行,但 TTS 功能不可用,请检查环境变量配置")
}
controller.SetStartTime(time.Now())
r := router.Setup()
port := os.Getenv("PORT")
if port == "" {
port = common.DefaultPort
}
server := &http.Server{
Addr: ":" + port,
Addr: ":" + setting.Server.Port,
Handler: middleware.CORS(r),
ReadTimeout: 30 * time.Second,
WriteTimeout: 120 * time.Second,
@@ -58,9 +51,9 @@ func main() {
go func() {
log.Printf("Starting ByteDance TTS to OpenAI API Adapter Server")
log.Printf("Listening on port: %s", port)
log.Printf("OpenAI TTS endpoint: http://localhost:%s/v1/audio/speech", port)
log.Printf("Health check: http://localhost:%s/health", port)
log.Printf("Listening on port: %s", setting.Server.Port)
log.Printf("OpenAI TTS endpoint: http://localhost:%s/v1/audio/speech", setting.Server.Port)
log.Printf("Health check: http://localhost:%s/health", setting.Server.Port)
log.Printf("Using ByteDance v3 API")
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {