Добавить актора в access-лог HTTP
Строка access-лога включает actor (login пользователя/оператора) и tenant из HttpContext.Items. Закрывает BL-LOG-ACTOR.
This commit is contained in:
@@ -12,9 +12,10 @@
|
||||
> `SourceIngressGrpcService`), `PushMessage` из telegram.proto удалён. Сухой прогон текста по конвейеру
|
||||
> (стоп-правила → ML → ИИ) без записи: `POST /api/admin/check-message` + UI настроек. Remote-просмотр
|
||||
> исходника: `TelegramService.ReadSource` + `TelegramSourceContentProvider` + UI «Обновить из источника».
|
||||
> Метрика алертинга `deal.ai.budget.used.ratio{tenant}`. Hardening контейнеров (non-root/read-only/limits),
|
||||
> шардированная пакетная миграция схем. Ядро: build 5 sln 0/0, `Deal.Tests.Unit` **1315/1315 PASS**,
|
||||
> telegram **130/130**, фронт `build` + `lint:i18n` зелёные.
|
||||
> Метрика алертинга `deal.ai.budget.used.ratio{tenant}`; actor/tenant в access-логе. Hardening контейнеров
|
||||
> (non-root/read-only/limits), шардированная пакетная миграция схем, единый CI (`scripts/ci.sh`).
|
||||
> Ядро: build 5 sln 0/0, `Deal.Tests.Unit` **1321/1321 PASS**, telegram **130/130**, ai **52/52**,
|
||||
> ml **38/38**, storage **9/9**, фронт `build` + `lint:i18n` зелёные.
|
||||
> Детали — `docs/superpowers/specs/2026-09-11-source-contract-design.md`.
|
||||
> Осталось (в backlog): `GET /api/cards/{id}/source` + `ISourceContentProvider`, выгрузка вложений
|
||||
> telegram-адаптером в Storage, `TelegramSourceContentProvider`, перенос оставшейся Telegram-специфики
|
||||
|
||||
@@ -227,7 +227,8 @@ settings(Key varchar(200) PK, ValueJson text, UpdatedAt timestamptz) --
|
||||
(30 дней; env `DEAL_LOG_LEVEL`/`DEAL_LOGS_DIR`). Секреты/пароли/ключи не логируются;
|
||||
gRPC-health не логируется.
|
||||
- **Access-логи**: HTTP — `HttpAccessLogMiddleware` (первый в конвейере после ForwardedHeaders —
|
||||
длительность и статус всего пути); gRPC-ингресс — `RpcCallLoggingInterceptor` (health освобождён).
|
||||
длительность и статус всего пути; с BL-LOG-ACTOR — `actor` и `tenant` из сессии); gRPC-ингресс —
|
||||
`RpcCallLoggingInterceptor` (health освобождён).
|
||||
- **PROD-стек логов**: docker-логи контейнеров → `promtail` → `loki` (retention 7 суток) → `grafana`
|
||||
(`127.0.0.1:3001` — только оператору по SSH-туннелю). Поднимается профилем `observability`
|
||||
файла `deploy/compose.prod.yml` (живой подъём — ⚠ Manual):
|
||||
@@ -251,9 +252,9 @@ settings(Key varchar(200) PK, ValueJson text, UpdatedAt timestamptz) --
|
||||
- `Deal-Errors` — HTTP 5xx, необработанные исключения (`@x`), Error/Fatal, ошибки gRPC и общая лента;
|
||||
- `Deal-Rps` — нагрузка HTTP+gRPC (RPS), top-путей/методов и p50/p95 длительности запроса;
|
||||
- `Deal-Logs` — обзор логов с фильтрами по сервису и уровню, активность по тенантам (AI/ML/Telegram).
|
||||
**Кто входил/что делал — в аудите, не в логах**: access-лог пишет только метод/путь/код (без
|
||||
логина/тенанта/IP), поэтому входы в Loki различаются лишь по контуру. Полная лента с актором —
|
||||
`public.audit_log` (append-only) через `GET /api/operator/audit` / экран «Аудит» оператор-консоли.
|
||||
**Актор в логах:** с BL-LOG-ACTOR access-лог включает `actor` (login пользователя/оператора) и
|
||||
`tenant`; полная лента действий с деталями — `public.audit_log` (append-only) через
|
||||
`GET /api/operator/audit` / экран «Аудит» оператор-консоли.
|
||||
- Алерты Prometheus (этап 12) — правила `deploy/observability/prometheus-rules.yml` (см. подраздел
|
||||
«Метрики»); исчерпание ИИ-бюджета по-прежнему доставляется SSE-тостом тенанту — отдельной
|
||||
бюджетной метрики в Prometheus нет (метки метрик низкокардинальные, без tenantId/бюджета).
|
||||
@@ -1310,8 +1311,8 @@ docker compose -f deploy/compose.dev.yml start core telegram-service ml-service
|
||||
→ **оператор:** `http://localhost:5173/#/operator`, вход `operator`/`operator` (dev-дефолт; в Production —
|
||||
env `DEAL_OPERATOR_*`); **активация:** `http://localhost:5173/#/join?code=<код>`; основное приложение —
|
||||
`http://localhost:5173/#/`. Prod-сценарий — §13.8.
|
||||
- **Ограничения:** реальные Telegram/LLM-креды — ⚠ Manual (по решению владельца); identity в логах
|
||||
ограничена (access-лог без логина) — полный аудит с актором в `public.audit_log`.
|
||||
- **Ограничения:** реальные Telegram/LLM-креды — ⚠ Manual (по решению владельца); access-лог с
|
||||
BL-LOG-ACTOR содержит `actor`/`tenant` (IP в строке нет) — полный аудит действий в `public.audit_log`.
|
||||
|
||||
## 14. Локализация интерфейса (i18n, этап 11)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user