- New package app/billing: Init/RecordUsage/Close with auto-migrate - Integration in actionHandler: record tenant_id, operation, msg_count, msg_bytes - Helm chart: billing section in values.yaml, secret-billing.yaml, env vars in deployment - Optional: billing disabled by default (BILLING_PG_HOST not set = no-op) - Table: sqs_usage_records with index on (tenant_id, recorded_at)
3.3 KiB
3.3 KiB
Решение: demo UI режим для showcase
Дата: 2026-04-12 09:57 MSK Агент: GitHub Copilot (GPT-5.4)
Контекст
Нужно показать заказчику два сценария на одном стенде:
- Быстрый demo-вход без подготовки.
- Реальный пользовательский вход по настоящему Nubes token.
До изменения UI принимал только реальный JWT и при этом использовал admin handlers слишком широко, из-за чего demo-сценарий был неудобным, а UI-поведение было ближе к admin console, чем к пользовательской витрине.
Решение
Принят временный showcase-режим:
- добавить публичный UI demo token
demo-ui-shared-sqs-ngcloud-2026; - привязать его к уже существующему seeded demo tenant
t-demo-shared-sqs-ngcloud; - сохранить реальный JWT flow без изменений;
- ограничить UI API текущим tenant-ом;
- запретить создание и удаление tenant-а через UI.
Почему так
- Это позволяет быстро показать сервис без подготовки аккаунта.
- Это сохраняет реальный пользовательский сценарий: заказчик может ввести настоящий token и попасть в свой tenant.
- Это убирает из demo UI лишний обзор всей системы и снижает риск случайной демонстрации чужих данных.
- Это минимальное изменение, которое можно позже убрать без ломки основной JWT-модели.
Границы решения
- Решение предназначено для demo/showcase, не для production security model.
- В production demo token должен быть удалён вместе с seeded demo tenant.
- Основным постоянным сценарием остаётся вход по реальному Nubes JWT.
Что удалить перед production без demo user
- Ветку
authenticateUIDemoTokenи связанные demo-константы в app/admin/admin.go - Demo token и demo-подсказки из app/ui/index.html
- Seed demo tenant и его тестовые очереди/сообщения
- Публичные demo credentials из пользовательских README/инструкций
Что лучше, если demo path может жить дольше
Если demo-режим понадобится и после первой презентации, лучший следующий шаг — не держать его как "просто ещё один путь", а вынести под отдельный явный feature flag с default=off для production. Тогда риски забыть demo bypass в боевом окружении будут существенно ниже.