výkon: pomalejší polling (60/15/120 s) a dynamický limit telemetrie 15m
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,8 +25,11 @@ import type {
|
||||
} from '../types/ems'
|
||||
import type { PlanningIntervalDto } from '../types/plan'
|
||||
|
||||
const POLL_FULL_MS = 30_000
|
||||
const POLL_LIVE_MS = 5_000
|
||||
const POLL_FULL_MS = 60_000
|
||||
const POLL_LIVE_MS = 15_000
|
||||
|
||||
/** Limit řádků vw_telemetry_15m_7d: jen okno zpět (s rezervou), ne celých 7 dní. */
|
||||
const TELEMETRY_15M_LIMIT = String(Math.ceil(SLOT_COUNT_BACK * 1.2))
|
||||
|
||||
function parseNum(v: string | number | null | undefined): number | null {
|
||||
if (v == null) return null
|
||||
@@ -211,8 +214,9 @@ export function useDashboardData(siteId: number | null) {
|
||||
getJson<SiteStatusRow[]>('/vw_site_status', { site_id: `eq.${siteId}` }),
|
||||
getJson<Telemetry15m7dRow[]>('/vw_telemetry_15m_7d', {
|
||||
site_id: `eq.${siteId}`,
|
||||
slot_start: `gte.${new Date(windowStart).toISOString()}`,
|
||||
order: 'slot_start.asc',
|
||||
limit: '1000',
|
||||
limit: TELEMETRY_15M_LIMIT,
|
||||
}),
|
||||
getJson<AuditTodayHourlyRow[]>('/vw_audit_today_hourly', {
|
||||
site_id: `eq.${siteId}`,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useState } from 'react'
|
||||
import { getSiteStatusFull } from '../api/backend'
|
||||
import type { FullStatusResponse } from '../types/fullStatus'
|
||||
|
||||
const POLL_MS = 60_000
|
||||
const POLL_MS = 120_000
|
||||
|
||||
export function useFullStatus(siteId: number | null) {
|
||||
const [data, setData] = useState<FullStatusResponse | null>(null)
|
||||
|
||||
Reference in New Issue
Block a user