feat(console-ui): manage active deployments

- load deployment state with the console snapshot
- mark externally routed revisions in service tables
- add guarded activation confirmation and pending states
- cover deployment API wiring in SSR tests
This commit is contained in:
Maofeng
2026-07-29 16:32:16 +08:00
parent 1d3fac4be8
commit 9160362fc0
4 changed files with 298 additions and 13 deletions
+86 -2
View File
@@ -785,7 +785,7 @@ button:disabled {
}
.data-table th:nth-last-child(1) {
width: 122px;
width: 150px;
}
.data-table td {
@@ -849,6 +849,33 @@ button:disabled {
font-size: 11px;
}
.service-title {
min-width: 0;
display: flex;
align-items: center;
gap: 6px;
}
.service-title strong {
overflow: hidden;
text-overflow: ellipsis;
}
.active-deployment-badge {
flex: 0 0 auto;
height: 17px;
padding: 0 5px;
display: inline-flex;
align-items: center;
gap: 3px;
color: #176b4d;
background: #e4f3ed;
border: 1px solid #c5e4d8;
border-radius: 9px;
font-size: 7px;
font-weight: 700;
}
.service-cell small {
margin-top: 3px;
color: var(--ink-faint);
@@ -917,7 +944,7 @@ button:disabled {
}
.row-actions {
min-width: 100px;
min-width: 128px;
display: flex;
align-items: center;
justify-content: flex-end;
@@ -943,6 +970,14 @@ button:disabled {
border-color: var(--line);
}
.row-actions .active-deployment-button:disabled {
color: #197253;
background: #e7f4ef;
border-color: #c6e4d9;
cursor: default;
opacity: 1;
}
.event-list {
padding: 4px 14px;
}
@@ -1094,6 +1129,7 @@ button:disabled {
.detail-actions {
display: flex;
justify-content: flex-end;
gap: 7px;
}
.full-panel {
@@ -1597,6 +1633,54 @@ button:disabled {
margin: 18px -18px -18px;
}
.deployment-confirmation {
padding: 18px;
}
.deployment-route {
min-height: 72px;
display: grid;
grid-template-columns: minmax(0, 1fr) 24px minmax(0, 1fr);
align-items: center;
gap: 12px;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.deployment-route > svg {
color: var(--ink-faint);
}
.deployment-route span,
.deployment-route strong {
display: block;
}
.deployment-route span {
margin-bottom: 5px;
color: var(--ink-faint);
font-size: 8px;
}
.deployment-route strong {
overflow: hidden;
font-family: var(--font-geist-mono), monospace;
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.deployment-target {
color: #176b4d;
}
.deployment-confirmation p {
margin: 13px 0 0;
color: var(--ink-soft);
font-size: 9px;
line-height: 16px;
}
.invoke-body {
padding: 16px;
}