- 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)
47 lines
3.3 KiB
Markdown
47 lines
3.3 KiB
Markdown
# Решение: demo UI режим для showcase
|
||
|
||
Дата: 2026-04-12 09:57 MSK
|
||
Агент: GitHub Copilot (GPT-5.4)
|
||
|
||
## Контекст
|
||
|
||
Нужно показать заказчику два сценария на одном стенде:
|
||
|
||
1. Быстрый demo-вход без подготовки.
|
||
2. Реальный пользовательский вход по настоящему 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](/home/naeel/remote_dev/SQS-service/app/admin/admin.go)
|
||
- Demo token и demo-подсказки из [app/ui/index.html](/home/naeel/remote_dev/SQS-service/app/ui/index.html)
|
||
- Seed demo tenant и его тестовые очереди/сообщения
|
||
- Публичные demo credentials из пользовательских README/инструкций
|
||
|
||
## Что лучше, если demo path может жить дольше
|
||
|
||
Если demo-режим понадобится и после первой презентации, лучший следующий шаг — не держать его как "просто ещё один путь", а вынести под отдельный явный feature flag с default=off для production. Тогда риски забыть demo bypass в боевом окружении будут существенно ниже. |