v0.1.31: админский UI /admin, юзерский UI без слова «тенант»
This commit is contained in:
+9
-13
@@ -374,17 +374,17 @@ td.msg-expand { padding: 0 !important; border-bottom: 1px solid var(--border); }
|
||||
<button class="btn btn-primary" style="width:100%" onclick="doLogin()">Войти</button>
|
||||
<p style="font-size:12px;color:var(--text-secondary);margin-top:16px">
|
||||
Для демо используйте token: demo-ui-shared-sqs-ngcloud-2026.<br>
|
||||
Для личного tenant-а используйте API token из панели Nubes.
|
||||
Для личного аккаунта используйте API token из панели Nubes.
|
||||
</p>
|
||||
<div style="margin-top:24px;text-align:left;font-size:12px;color:var(--text-secondary);border-top:1px solid var(--border);padding-top:16px;line-height:1.7">
|
||||
<div style="font-weight:700;color:var(--text-primary);margin-bottom:6px;letter-spacing:0.5px">Информация о сервисе</div>
|
||||
<div>Endpoint: <span style="color:var(--accent);font-family:monospace">https://sqs.containerk8s.dev.nubes.ru</span></div>
|
||||
<div>Health: <span style="font-family:monospace">GET /health</span> · Метрики: <span style="font-family:monospace">GET /metrics</span></div>
|
||||
<div>SQS API: <span style="font-family:monospace">POST /</span> (AWS Signature V4, регион <span style="font-family:monospace">us-east-1</span>)</div>
|
||||
<div>Admin API: <span style="font-family:monospace">POST /admin/tenants</span> (Bearer token)</div>
|
||||
<div>Админ-консоль: <a href="/admin">/admin</a> (вход по admin-токену)</div>
|
||||
<div>Realm: <span style="font-family:monospace">iot-naeel</span> · Persistence: Managed Redis</div>
|
||||
<div>Версия: <span id="svc-version" style="font-family:monospace">—</span></div>
|
||||
<div>Образ: <span style="font-family:monospace">naeel/shared-sqs:v0.1.29</span></div>
|
||||
<div>Образ: <span style="font-family:monospace">naeel/shared-sqs:v0.1.31</span></div>
|
||||
<div style="margin-top:8px;color:var(--warning)">Статус: тестирование</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -413,7 +413,7 @@ td.msg-expand { padding: 0 !important; border-bottom: 1px solid var(--border); }
|
||||
<!-- ===== CREATE TENANT MODAL ===== -->
|
||||
<div id="modal-create" class="modal-overlay hidden" onclick="if(event.target===this)closeModal()">
|
||||
<div class="modal">
|
||||
<h2>Создать тенанта</h2>
|
||||
<h2>Создать аккаунт</h2>
|
||||
<div class="form-group">
|
||||
<label for="ct-name">Имя</label>
|
||||
<input id="ct-name" placeholder="my-service">
|
||||
@@ -435,7 +435,7 @@ td.msg-expand { padding: 0 !important; border-bottom: 1px solid var(--border); }
|
||||
<div class="modal">
|
||||
<h2>Credentials</h2>
|
||||
<div class="creds-hint">
|
||||
<p class="warn">⚠ Сохраните ключи — это креды вашего тенанта для AWS CLI/SDK.</p>
|
||||
<p class="warn">⚠ Сохраните ключи — это креды вашего аккаунта для AWS CLI/SDK.</p>
|
||||
<p><strong>Зачем:</strong> приложения подключаются к SQS API по протоколу AWS (подпись Signature V4). Токен входа в консоль для этого не подходит.</p>
|
||||
<p><strong>Что делать:</strong> укажите ключи одним из двух способов:</p>
|
||||
<p class="creds-sub">Способ 1 — переменные окружения:</p>
|
||||
@@ -660,10 +660,6 @@ function renderDashboard(health, tenants) {
|
||||
const el = document.getElementById('view-dashboard');
|
||||
el.innerHTML = `
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">${health.tenant_count || 0}</div>
|
||||
<div class="stat-label">Тенанты</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">${health.queue_count || 0}</div>
|
||||
<div class="stat-label">Очереди</div>
|
||||
@@ -683,7 +679,7 @@ function renderDashboard(health, tenants) {
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="toolbar">
|
||||
<h2>Мой tenant</h2>
|
||||
<h2>Мой аккаунт</h2>
|
||||
<div style="display:flex;gap:12px;align-items:center">
|
||||
<div class="auto-refresh">
|
||||
<span>⟳ 10с</span>
|
||||
@@ -711,7 +707,7 @@ function renderDashboard(health, tenants) {
|
||||
<td style="font-size:12px;color:var(--text-secondary)">${fmtDate(t.created_at)}</td>
|
||||
</tr>
|
||||
`).join('')}
|
||||
${(!tenants || tenants.length === 0) ? '<tr><td colspan="4" style="text-align:center;color:var(--text-secondary);padding:32px">Tenant не найден</td></tr>' : ''}
|
||||
${(!tenants || tenants.length === 0) ? '<tr><td colspan="4" style="text-align:center;color:var(--text-secondary);padding:32px">Аккаунт не найден</td></tr>' : ''}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -746,7 +742,7 @@ function renderTenant(tenant, queues) {
|
||||
const totalMsgs = (queues || []).reduce((s, q) => s + q.messages + q.not_visible, 0);
|
||||
el.innerHTML = `
|
||||
<div class="breadcrumb">
|
||||
<a href="#" onclick="event.preventDefault();showDashboard()">Мой tenant</a>
|
||||
<a href="#" onclick="event.preventDefault();showDashboard()">Мой аккаунт</a>
|
||||
<span>›</span>
|
||||
${esc(tenant.name)}
|
||||
</div>
|
||||
@@ -875,7 +871,7 @@ function showCredentials() {
|
||||
|
||||
// deleteTenant — DELETE /tenants/{id} с подтверждением
|
||||
function deleteTenant(id, name) {
|
||||
if (!confirm('Удалить тенанта "' + name + '"?\nВсе его очереди будут удалены.')) return;
|
||||
if (!confirm('Удалить аккаунт "' + name + '"?\nВсе очереди будут удалены.')) return;
|
||||
api('/tenants/' + id, { method: 'DELETE' })
|
||||
.then(() => loadDashboard())
|
||||
.catch(err => alert('Ошибка удаления: ' + err.message));
|
||||
|
||||
Reference in New Issue
Block a user