Мониторинг: логи, ошибки и запись экрана портала заявок (@tnsu/monitoring-web) #29

Merged
gorbenko.pavel merged 9 commits from feature/monitoring-web into main 2026-10-30 14:24:58 +00:00
Collaborator

Логи, ошибки и запись экрана портала заявок в центральный мониторинг (monitoring.tnsu.kz).

Что поменялось

  • @tnsu/monitoring-web 0.3.1 из реестра tansu.
  • RequestPortalWebPart.onInit: initMonitoring({ service: 'request-portal', getAccessToken: spfxTokenProvider(this.context.aadTokenProviderFactory) }) — до installErrorLogging. Один на страницу (экземпляров веб-части бывает несколько) — это делает сама библиотека.
  • config/package-solution.json: запрос Logs.Write к регистрации мониторинга 9232d9e2-… (рядом с уже запрошенным Reports.Read той же регистрации).
  • Хэш коммита сборки (git.commit в логах, «Сборка» в плеере): config/webpack-patch.json ссылается на патч из пакета (node_modules/@tnsu/monitoring-web/spfx/webpack-patch.cjs), он подставляет __TNSU_GIT_COMMIT__ из GIT_COMMIT, GITHUB_SHA или git rev-parse. Пайплайн менять не нужно.

Что пишется

  • Необработанные ошибки и отказы промисов, console.error (в том числе вывод installErrorLogging), log.*.
  • Запись экрана (rrweb) — ничего не маскируется, записывается вся страница SharePoint, не только веб-часть. Неудачные запросы — вкладка «Сеть» в плеере.
  • В workbench / при gulp serve окружение development — в админке мониторинга такие записи по умолчанию скрыты.
  • Нет связи с мониторингом час — тост «Ошибка №… Обратитесь к администратору» (не чаще 3 раз в сутки).

Проверено: продакшен-сборка (heft build --production) проходит, патч применяется, хэш коммита попадает в бандл веб-части.

После выкатки .sppkg администратор один раз одобряет запрос: SharePoint admin center → Advanced → API access → Logs.Write → Approve. Пока не одобрено, токена нет и данные копятся в браузере (до 50 МБ), портал работает как обычно.

🤖 Generated with Claude Code

Логи, ошибки и запись экрана портала заявок в центральный мониторинг (monitoring.tnsu.kz). **Что поменялось** - `@tnsu/monitoring-web` 0.3.1 из реестра tansu. - `RequestPortalWebPart.onInit`: `initMonitoring({ service: 'request-portal', getAccessToken: spfxTokenProvider(this.context.aadTokenProviderFactory) })` — до `installErrorLogging`. Один на страницу (экземпляров веб-части бывает несколько) — это делает сама библиотека. - `config/package-solution.json`: запрос `Logs.Write` к регистрации мониторинга `9232d9e2-…` (рядом с уже запрошенным `Reports.Read` той же регистрации). - Хэш коммита сборки (`git.commit` в логах, «Сборка» в плеере): `config/webpack-patch.json` ссылается на патч из пакета (`node_modules/@tnsu/monitoring-web/spfx/webpack-patch.cjs`), он подставляет `__TNSU_GIT_COMMIT__` из `GIT_COMMIT`, `GITHUB_SHA` или `git rev-parse`. Пайплайн менять не нужно. **Что пишется** - Необработанные ошибки и отказы промисов, `console.error` (в том числе вывод `installErrorLogging`), `log.*`. - Запись экрана (rrweb) — **ничего не маскируется**, записывается вся страница SharePoint, не только веб-часть. Неудачные запросы — вкладка «Сеть» в плеере. - В workbench / при `gulp serve` окружение `development` — в админке мониторинга такие записи по умолчанию скрыты. - Нет связи с мониторингом час — тост «Ошибка №… Обратитесь к администратору» (не чаще 3 раз в сутки). **Проверено:** продакшен-сборка (`heft build --production`) проходит, патч применяется, хэш коммита попадает в бандл веб-части. **После выкатки .sppkg** администратор один раз одобряет запрос: SharePoint admin center → Advanced → API access → `Logs.Write` → Approve. Пока не одобрено, токена нет и данные копятся в браузере (до 50 МБ), портал работает как обычно. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gorbenko.pavel added 2 commits 2026-10-30 11:21:28 +00:00
initMonitoring в onInit веб-части (один раз на страницу), service.name = requestPortal, токен — молча
через AAD веб-части (spfxTokenProvider). В package-solution.json запрос Logs.Write к регистрации
мониторинга. Хэш коммита сборки — патч webpack (config/webpack-patch.json): GIT_COMMIT, GITHUB_SHA или git.
Пакет @tnsu/monitoring-web ставится отдельно.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Пакет @tnsu/monitoring-web 0.3.0 из реестра tansu
Tests / frontend-test (pull_request) Successful in 4m26s
4b09833bc4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gorbenko.pavel added 1 commit 2026-10-30 11:34:16 +00:00
config/webpack-patch.json ссылается на патч из пакета (spfx/webpack-patch.cjs), свой
config/webpack-patch/monitoring.js удалён. Флаг monitoringStarted не нужен: повторный initMonitoring
библиотека игнорирует сама.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gorbenko.pavel added 1 commit 2026-10-30 11:50:19 +00:00
gorbenko.pavel added 2 commits 2026-10-30 12:18:22 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
saveRequestItem — «Создана заявка» (тип, id, код); writeRoute/writeApprovers — «Заявка отправлена на
согласование» (статус, число согласующих и исполнителей); ApproverService.decide — «Заявка согласована /
возвращена / отклонена / выполнена исполнителем» (новый статус, строка маршрута, комментарий до 500
символов). Пользователь — из токена мониторинга.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gorbenko.pavel added 1 commit 2026-10-30 12:55:46 +00:00
gorbenko.pavel added 1 commit 2026-10-30 13:04:37 +00:00
«Создана заявка: Заявка на прием · TNS-… · Инженер — Проект X», «Заявка отправлена на согласование: …»,
«Заявка согласована: TNS-… · …» — заявку видно прямо в списке логов; те же данные — в полях request.*.
Отправка на согласование пишется при сохранении заявки с отправленным статусом (там известно, что за
заявка), из writeRoute лог убран. Код и название для решения дочитываются, сбой чтения решение не ломает.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gorbenko.pavel added 1 commit 2026-10-30 13:42:53 +00:00
@pnp/spfx-controls-react через @pnp/telemetry-js шлёт fetch на
pnptelemetryproxy.azurewebsites.net без catch. Где адрес закрыт прокси
или блокировщиком, каждый раз «Failed to fetch» и «Необработанный отказ
промиса» в логах request-portal. Отключаем её в onInit (optOut),
@pnp/telemetry-js — прямой зависимостью той же версии 2.0.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gorbenko.pavel merged commit e34d290865 into main 2026-10-30 14:24:58 +00:00
gorbenko.pavel deleted branch feature/monitoring-web 2026-10-30 14:24:58 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: timur.gorodetskiy/request-portal#29