backtrace/bk/route_render.go
spiritlhl 5369aa16f7
Some checks failed
Sync ASN metadata / sync (push) Has been cancelled
feat: strengthen three-carrier return route detection
2026-07-31 00:31:56 +08:00

41 lines
1.1 KiB
Go

package backtrace
import (
"fmt"
"strings"
. "github.com/oneclickvirt/defaultset"
)
// RenderRouteReport preserves the original compact one-target-per-line style.
// Detailed hop statistics remain available in RouteReport JSON instead of
// expanding the terminal section.
func RenderRouteReport(report RouteReport) string {
var builder strings.Builder
for _, target := range report.Targets {
label := target.Classification.Label
if label == "" {
label = "线路证据不足"
}
var rendered string
switch {
case target.Status != RouteProbeAvailable:
rendered = Red("检测不到回程路由节点的IP地址")
case target.Classification.Confidence == routeConfidenceInconclusive:
rendered = Red(label)
case target.Classification.Rank >= 4:
rendered = DarkGreen(label)
case target.Classification.Rank == 3:
rendered = Green(label)
default:
rendered = White(label)
}
addressWidth := 15
if target.Target.IPVersion == "v6" {
addressWidth = 24
}
builder.WriteString(fmt.Sprintf("%v %-*s %v\n", target.Target.Name, addressWidth, target.Target.Address, rendered))
}
return strings.TrimSuffix(builder.String(), "\n")
}