新增 Web 浏览端(Go+Vue 报表系统)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
74
web/backend/main.go
Normal file
74
web/backend/main.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"trade/web/internal/auth"
|
||||
"trade/web/internal/config"
|
||||
"trade/web/internal/handlers"
|
||||
"trade/web/internal/router"
|
||||
"trade/web/internal/store"
|
||||
)
|
||||
|
||||
func main() {
|
||||
cfg, err := config.Load()
|
||||
if err != nil {
|
||||
log.Fatalf("config: %v", err)
|
||||
}
|
||||
|
||||
futures, err := store.OpenFutures(cfg.FuturesDBPath)
|
||||
if err != nil {
|
||||
log.Fatalf("open futures: %v", err)
|
||||
}
|
||||
defer futures.Close()
|
||||
|
||||
authDB, err := store.OpenAuth(cfg.AuthDBPath)
|
||||
if err != nil {
|
||||
log.Fatalf("open auth: %v", err)
|
||||
}
|
||||
defer authDB.Close()
|
||||
|
||||
if err := auth.Bootstrap(authDB, cfg.AdminUser, cfg.AdminPass); err != nil {
|
||||
log.Fatalf("bootstrap: %v", err)
|
||||
}
|
||||
|
||||
mgr := auth.NewManager(cfg.JWTSecret)
|
||||
deps := &handlers.Deps{Auth: authDB, Futures: futures, JWT: mgr}
|
||||
|
||||
dist, err := fs.Sub(distFS, "dist")
|
||||
if err != nil {
|
||||
log.Fatalf("embed dist: %v", err)
|
||||
}
|
||||
|
||||
srv := &http.Server{
|
||||
Addr: cfg.ListenAddr,
|
||||
Handler: router.New(deps, mgr, authDB, dist),
|
||||
ReadHeaderTimeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
idle := make(chan struct{})
|
||||
go func() {
|
||||
stop := make(chan os.Signal, 1)
|
||||
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
|
||||
<-stop
|
||||
log.Println("shutting down ...")
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
_ = srv.Shutdown(ctx)
|
||||
close(idle)
|
||||
}()
|
||||
|
||||
log.Printf("web 监听 %s", cfg.ListenAddr)
|
||||
if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
log.Fatalf("listen: %v", err)
|
||||
}
|
||||
<-idle
|
||||
}
|
||||
Reference in New Issue
Block a user