platform: modularize api/gui, add docs-tests-web foundation, and refresh root config

This commit is contained in:
beckline
2026-03-26 22:40:54 +03:00
parent 0e2d7f61ea
commit 6a56d734c2
562 changed files with 70151 additions and 16423 deletions

View File

@@ -0,0 +1,85 @@
package app
import (
"strings"
"time"
)
func buildTransportHealthResponse(it TransportClient, now time.Time) TransportClientHealthResponse {
health := it.Health
if strings.TrimSpace(health.LastCheck) == "" {
if strings.TrimSpace(it.UpdatedAt) != "" {
health.LastCheck = it.UpdatedAt
} else {
health.LastCheck = now.Format(time.RFC3339)
}
}
if strings.TrimSpace(health.LastError) == "" {
health.LastError = strings.TrimSpace(it.Runtime.LastError.Message)
}
rt := transportRuntimeSnapshot(it, now)
code := ""
if it.Status == TransportClientDegraded || strings.TrimSpace(health.LastError) != "" {
code = "TRANSPORT_CLIENT_DEGRADED"
}
return TransportClientHealthResponse{
OK: true,
Message: "ok",
Code: code,
ClientID: it.ID,
Kind: it.Kind,
Status: it.Status,
Latency: health.LatencyMS,
LastErr: health.LastError,
Health: health,
Runtime: rt,
}
}
func buildTransportMetricsResponse(it TransportClient, now time.Time) TransportClientMetricsResponse {
rt := transportRuntimeSnapshot(it, now)
return TransportClientMetricsResponse{
OK: true,
Message: "ok",
ClientID: it.ID,
Kind: it.Kind,
Status: it.Status,
Metrics: rt.Metrics,
Runtime: rt,
}
}
func applyTransportHealthProbeSnapshot(it TransportClient, backendID string, probe transportBackendHealthResult, now time.Time) TransportClient {
snapshot := it
ts := now.Format(time.RFC3339)
if strings.TrimSpace(backendID) != "" {
snapshot.Runtime.Backend = backendID
}
snapshot.Health.LastCheck = ts
if probe.LatencyMS > 0 {
snapshot.Health.LatencyMS = probe.LatencyMS
}
if probe.Status != "" {
snapshot.Status = normalizeTransportStatus(probe.Status)
}
if probe.OK {
if snapshot.Status != TransportClientDegraded {
snapshot.Health.LastError = ""
}
snapshot.Runtime.LastError = TransportClientError{}
} else {
msg := strings.TrimSpace(probe.Message)
if msg == "" {
msg = "transport health probe failed"
}
snapshot.Health.LastError = msg
snapshot.Runtime.LastError = TransportClientError{
Code: strings.TrimSpace(probe.Code),
Message: msg,
Retryable: probe.Retryable,
At: ts,
}
}
snapshot.Runtime = transportRuntimeSnapshot(snapshot, now)
return snapshot
}