feat(route-optimizer): update table headers and enhance probability display for improved clarity in route optimization UI
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m53s

This commit is contained in:
2026-03-05 10:42:47 +07:00
parent b792cede50
commit e1198b0c91
+10 -10
View File
@@ -206,10 +206,10 @@ export default function RouteOptimizerPage() {
<thead> <thead>
<tr> <tr>
<th>Маршрут</th> <th>Маршрут</th>
<th>Вероятность</th>
<th>Home→Jumphost</th> <th>Home→Jumphost</th>
<th>Jumphost→Exit</th> <th>Jumphost→Exit</th>
<th>Score</th> <th>Score / Confidence</th>
<th>Вероятность</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -228,16 +228,16 @@ export default function RouteOptimizerPage() {
<span className="text-muted"> → </span> <span className="text-muted"> → </span>
<span className="fw-semibold">{r.exit?.label}</span> <span className="fw-semibold">{r.exit?.label}</span>
</td> </td>
<td>
<span className="badge bg-green-lt text-green">{r.probabilityOptimal}%</span>
</td>
<td className="small text-muted text-break"> <td className="small text-muted text-break">
ping: {r.homeToJumphost?.pingMs ?? '—'} ms, speed: {r.homeToJumphost?.speedMbps ?? '—'} Mbps ping: {r.homeToJumphost?.pingMs ?? '—'} ms, speed: {r.homeToJumphost?.speedMbps ?? '—'} Mbps
</td> </td>
<td className="small text-muted text-break"> <td className="small text-muted text-break">
ping: {r.jumphostToExit?.pingMs ?? '—'} ms, speed: {r.jumphostToExit?.speedMbps ?? '—'} Mbps ping: {r.jumphostToExit?.pingMs ?? '—'} ms, speed: {r.jumphostToExit?.speedMbps ?? '—'} Mbps
</td> </td>
<td className="small">{r.score}</td> <td className="small">{r.score} / {r.confidence ?? '—'}</td>
<td>
<span className="badge bg-green-lt text-green">{r.probabilityOptimal}%</span>
</td>
</tr> </tr>
))} ))}
</tbody> </tbody>
@@ -283,8 +283,8 @@ export default function RouteOptimizerPage() {
<th>Community</th> <th>Community</th>
<th>Текущий (рекурсивный -&gt; туннель)</th> <th>Текущий (рекурсивный -&gt; туннель)</th>
<th>Рекомендуемый (рекурсивный -&gt; туннель)</th> <th>Рекомендуемый (рекурсивный -&gt; туннель)</th>
<th>Вероятность (тек/реком)</th>
<th>Действие</th> <th>Действие</th>
<th>Вероятность (тек/реком)</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -339,9 +339,6 @@ export default function RouteOptimizerPage() {
</div> </div>
)} )}
</td> </td>
<td className="small">
{fmtProb(r.current?.probabilityOptimal)} / {fmtProb(r.recommended?.probabilityOptimal)}
</td>
<td className="text-break"> <td className="text-break">
{r.current == null && r.recommended == null ? ( {r.current == null && r.recommended == null ? (
<span className="badge bg-secondary-lt text-secondary">Недостаточно данных</span> <span className="badge bg-secondary-lt text-secondary">Недостаточно данных</span>
@@ -359,6 +356,9 @@ export default function RouteOptimizerPage() {
<span className="badge bg-green-lt text-green">Оставить текущий</span> <span className="badge bg-green-lt text-green">Оставить текущий</span>
)} )}
</td> </td>
<td className="small">
{fmtProb(r.current?.probabilityOptimal)} / {fmtProb(r.recommended?.probabilityOptimal)}
</td>
</tr> </tr>
))} ))}
</tbody> </tbody>