bot: раздел «Логи» — хвост и свой grep #16

Closed
opened 2026-10-12 19:34:45 +03:00 by Eleboba · 1 comment
Owner

Описание

Требования L-1…L-6 из SPEC §4.3, grep-движок — ARCHITECTURE §2.7.

Желаемый результат

  • Выбор контейнера; хвост 50/200 строк или 5 мин/1 ч/24 ч.
  • «Свой grep»: шаблон + -i -v -E -c -C N, выполнение в Python (regex с таймаутом), не в shell.
  • Длинный ответ — файлом .log (≤ 5 МБ); запись в log_queries.
  • grep-движок переиспользуется агентом (#18).

Подзадачи

  • app/logs/grep.py — parse_grep, run, to_command
  • app/runtime/logs.py — получение логов через proxy
  • app/bot/routers/logs.py
  • Тесты: разбор флагов, ошибки синтаксиса, ReDoS-шаблон (a+)+$, большой вход

Анализ

Затрагиваемые файлы

Файл Что меняется
app/logs/ новый пакет
app/runtime/logs.py новый
app/bot/routers/logs.py новый

Ограничения и риски

Неподдерживаемые флаги — ошибка с подсказкой, а не молча игнор. Шаблон ≤ 200 символов.

Как проверить

-i -C 2 error по examples/crash — строки с контекстом; (a+)+$ на длинной строке не вешает бота.


Лог выполнения

2026-10-13

  • Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
## Описание Требования L-1…L-6 из [SPEC](https://gitea.24studbank.ru/HSE/tgit/src/branch/dev/docs/SPEC.md) §4.3, grep-движок — [ARCHITECTURE](https://gitea.24studbank.ru/HSE/tgit/src/branch/dev/docs/ARCHITECTURE.md) §2.7. ## Желаемый результат - Выбор контейнера; хвост 50/200 строк или 5 мин/1 ч/24 ч. - «Свой grep»: шаблон + `-i -v -E -c -C N`, выполнение в Python (`regex` с таймаутом), не в shell. - Длинный ответ — файлом `.log` (≤ 5 МБ); запись в `log_queries`. - `grep`-движок переиспользуется агентом (#18). ## Подзадачи - [ ] `app/logs/grep.py` — `parse_grep`, `run`, `to_command` - [ ] `app/runtime/logs.py` — получение логов через proxy - [ ] `app/bot/routers/logs.py` - [ ] Тесты: разбор флагов, ошибки синтаксиса, ReDoS-шаблон `(a+)+$`, большой вход ## Анализ ### Затрагиваемые файлы | Файл | Что меняется | |------|--------------| | `app/logs/` | новый пакет | | `app/runtime/logs.py` | новый | | `app/bot/routers/logs.py` | новый | ### Ограничения и риски Неподдерживаемые флаги — ошибка с подсказкой, а не молча игнор. Шаблон ≤ 200 символов. ## Как проверить `-i -C 2 error` по `examples/crash` — строки с контекстом; `(a+)+$` на длинной строке не вешает бота. --- ## Лог выполнения ### 2026-10-13 - Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
Eleboba added this to the M2 · CD и мониторинг milestone 2026-10-12 19:34:45 +03:00
Eleboba added the botfeaturesize/0.5 labels 2026-10-12 19:34:45 +03:00
Eleboba self-assigned this 2026-10-12 19:34:45 +03:00
Eleboba changed title from bot: /logs — логи приложения с фильтрами to bot: раздел «Логи» — хвост и свой grep 2026-10-13 22:54:12 +03:00
Author
Owner

Смержено в dev через PR #45 — закрываю.

Смержено в `dev` через PR #45 — закрываю.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: HSE/tgit#16