chore: 同步监控服务与前端卡片更新

This commit is contained in:
2026-06-24 21:58:49 +08:00
parent aff88ba97d
commit 8e59464cbc
4 changed files with 16 additions and 16 deletions

View File

@@ -287,7 +287,7 @@ func (s *MonitorService) GetWebsiteStatus(websiteID string) *models.WebsiteStatu
now := time.Now()
since24h := now.Add(-24 * time.Hour)
since7d := now.Add(-7 * 24 * time.Hour)
since90d := now.Add(-90 * 24 * time.Hour)
since30d := now.Add(-30 * 24 * time.Hour)
var totalUptime24h, totalUptime7d float64
var urlCount int
@@ -306,9 +306,9 @@ func (s *MonitorService) GetWebsiteStatus(websiteID string) *models.WebsiteStatu
status.Uptime7d = totalUptime7d / float64(urlCount)
}
status.DailyHistory = s.storage.GetWebsiteDailyAggregates(website.ID, since90d)
if pt, ut := s.storage.GetWebsiteDayProbeTotals(website.ID, since90d); pt > 0 {
status.Uptime90d = float64(ut) / float64(pt) * 100
status.DailyHistory = s.storage.GetWebsiteDailyAggregates(website.ID, since30d)
if pt, ut := s.storage.GetWebsiteDayProbeTotals(website.ID, since30d); pt > 0 {
status.Uptime30d = float64(ut) / float64(pt) * 100
}
// 获取最后检测时间
@@ -414,18 +414,18 @@ func (s *MonitorService) GetAllWebsiteStatuses() []models.WebsiteStatus {
now := time.Now()
since24h := now.Add(-24 * time.Hour)
since7d := now.Add(-7 * 24 * time.Hour)
since90d := now.Add(-90 * 24 * time.Hour)
since90dDay := time.Date(since90d.Year(), since90d.Month(), since90d.Day(), 0, 0, 0, 0, since90d.Location())
since30d := now.Add(-30 * 24 * time.Hour)
since30dDay := time.Date(since30d.Year(), since30d.Month(), since30d.Day(), 0, 0, 0, 0, since30d.Location())
latestMap := s.storage.GetProbeLatestKeyMap()
hourMap := s.storage.GroupProbeHoursSince(since7d)
dailyBySite, uptime90dBySite := s.storage.LoadAllWebsiteDayRollups(since90dDay)
dailyBySite, uptime30dBySite := s.storage.LoadAllWebsiteDayRollups(since30dDay)
statuses := make([]models.WebsiteStatus, 0, len(websites))
for _, w := range websites {
daily := dailyBySite[w.ID]
u90 := uptime90dBySite[w.ID]
st := s.buildWebsiteStatusBulk(w, since24h, since7d, latestMap, hourMap, daily, u90)
u30 := uptime30dBySite[w.ID]
st := s.buildWebsiteStatusBulk(w, since24h, since7d, latestMap, hourMap, daily, u30)
if st != nil {
statuses = append(statuses, *st)
}
@@ -439,7 +439,7 @@ func (s *MonitorService) buildWebsiteStatusBulk(
latestMap map[string]models.MonitorRecord,
hourMap map[string]map[string][]storage.MonitorProbeHour,
daily []models.DailyStats,
uptime90d float64,
uptime30d float64,
) *models.WebsiteStatus {
isIntranet := len(w.URLs) > 0 && utils.IsIntranetURL(w.URLs[0].URL)
status := &models.WebsiteStatus{
@@ -478,7 +478,7 @@ func (s *MonitorService) buildWebsiteStatusBulk(
} else {
status.DailyHistory = []models.DailyStats{}
}
status.Uptime90d = uptime90d
status.Uptime30d = uptime30d
for _, urlSt := range status.URLStatuses {
if urlSt.CurrentState.CheckedAt.After(status.LastChecked) {
status.LastChecked = urlSt.CurrentState.CheckedAt