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
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m53s
This commit is contained in:
@@ -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>Текущий (рекурсивный -> туннель)</th>
|
<th>Текущий (рекурсивный -> туннель)</th>
|
||||||
<th>Рекомендуемый (рекурсивный -> туннель)</th>
|
<th>Рекомендуемый (рекурсивный -> туннель)</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>
|
||||||
|
|||||||
Reference in New Issue
Block a user