fix(server): add server status handling based on last reported time

This commit is contained in:
Chang lue Tsen 2025-09-02 14:38:53 -04:00
parent 3e5284c4ec
commit ca344a1ce9
4 changed files with 18 additions and 3 deletions

View File

@ -3,9 +3,6 @@
<module name="server" />
<working_directory value="$PROJECT_DIR$" />
<parameters value="run --config etc/ppanel-dev.yaml" />
<envs>
<env name="PPANEL_MODE" value="demo" />
</envs>
<kind value="PACKAGE" />
<package value="github.com/perfect-panel/server" />
<directory value="$PROJECT_DIR$" />

View File

@ -29,6 +29,7 @@ type (
Disk float64 `json:"disk"`
Protocol string `json:"protocol"`
Online []ServerOnlineUser `json:"online"`
Status string `json:"status"`
}
Server {
Id int64 `json:"id"`

View File

@ -2,6 +2,7 @@ package server
import (
"context"
"time"
"github.com/perfect-panel/server/internal/model/node"
"github.com/perfect-panel/server/internal/svc"
@ -68,6 +69,7 @@ func (l *FilterServerListLogic) FilterServerList(req *types.FilterServerListRequ
Cpu: nodeStatus.Cpu,
Disk: nodeStatus.Disk,
Online: l.handlerServerStatus(datum.Id, protocols),
Status: l.handlerServerStaus(datum.LastReportedAt),
}
list = append(list, server)
}
@ -146,3 +148,17 @@ func (l *FilterServerListLogic) handlerServerStatus(id int64, protocols []types.
}
return result
}
func (l *FilterServerListLogic) handlerServerStaus(last *time.Time) string {
if last == nil {
return "offline"
}
if time.Since(*last) > time.Minute*5 {
return "offline"
}
if time.Since(*last) > time.Minute*3 {
return "warning"
}
return "online"
}

View File

@ -1753,6 +1753,7 @@ type ServerStatus struct {
Disk float64 `json:"disk"`
Protocol string `json:"protocol"`
Online []ServerOnlineUser `json:"online"`
Status string `json:"status"`
}
type ServerTotalDataResponse struct {