---
name: tech-log-analysis
description: "Работа с технологическим журналом 1С (Tech Log). Навык учит агента управлять полным жизненным циклом ТЖ — настройка, включение, сбор, анализ, восстановление — и диагностировать технические проблемы, например, медленные запросы, блокировки, исключения."
uses_capabilities:
  - search_tech_log
  - configure_tech_log
  - logc_get_techlog_config
  - logc_save_techlog
  - logc_restore_techlog
  - logc_disable_techlog
---

# Работа с технологическим журналом 1С (Tech Log)

ТЖ нагружает систему. Включать точечно, с минимальным набором событий. Всегда восстанавливать конфигурацию после диагностики.

Для Vanessa — ТЖ последний источник диагностики; сначала `event-log-analysis` и визуальная проверка UI-блокеров.

Для ошибок и аудита действий пользователей — `event-log-analysis`.

---

## Когда применять

| Триггер | Действие |
|---------|----------|
| Медленный запрос — нужно найти SQL | `search_tech_log` с `name: "DBMSSQL"` / `"DBPOSTGRS"` |
| Блокировки, deadlock | `search_tech_log` с `name: "TLOCK"` / `"TDEADLOCK"` / `"TTIMEOUT"` |
| Исключение платформы не в ЖР | `search_tech_log` с `name: "EXCP"` |
| Долгий серверный вызов | `search_tech_log` с `name: "CALL"` или `"SCALL"` |
| Статус ТЖ неизвестен | `logc_get_techlog_config` — прочитать конфигурацию |
| ТЖ не ведётся | Полный цикл (см. алгоритм ниже) |

---

## Полный цикл диагностики

Единый алгоритм для пассивного (ждём воспроизведения) и активного (запускаем тест) режимов.

**1. Сохранить конфигурацию**
```
logc_save_techlog()
```
Возвращает `backup_id` — сохранить для шага 7.

**2. Настроить события**
```
logc_configure_techlog(
  location: "/var/log/1c/techlog",
  history: 24,
  events: ["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"]
)
```

**3. Проверить, что сбор идёт**
```
logc_get_actual_log_timestamp()
```

**4. Воспроизвести проблему / дождаться воспроизведения**

**5. Smart polling готовности лога**

До 10 попыток с паузой 3–5 сек: `logc_get_actual_log_timestamp() >= целевое_время`. Если не дошло — сообщить пользователю, не делать выводов по неполному окну.

**6. Прочитать записи**
```
search_tech_log(
  from: "2025-02-11T14:00:00Z",
  to:   "2025-02-11T14:15:00Z",
  name: "DBMSSQL",
  min_duration: 1000
)
```

**7. Восстановить конфигурацию**
```
logc_restore_techlog(backup_id: "...")
```

**8. Подтвердить статус пользователю**: `ТЖ восстановлен` / `ТЖ отключён` / `Минимальный профиль (события: ...)`.

Шаги 1 и 7 — **обязательны**. Никогда не оставлять ТЖ включённым после диагностики без явного согласования.

---

### Варианты цикла

**ТЖ уже настроен администратором** — только чтение:
1. `logc_get_techlog_config` → убедиться в наличии нужных событий.
2. `logc_get_actual_log_timestamp` → сбор актуален.
3. `search_tech_log` → читать записи.
4. НЕ изменять конфигурацию — ТЖ не наш.

**Срочное отключение** (диск заполняется): `logc_disable_techlog()`. После решения — `logc_restore_techlog(backup_id)`.

**Минимальный мониторинг** (вместо полного отключения, только по согласованию): события `["EXCP", "CONN"]`. Зафиксировать в ответе активные события и ответственного.

---

## События ТЖ

| Событие | Когда использовать |
|---------|--------------------|
| `EXCP` | Ошибки, не видные в ЖР |
| `DBMSSQL` | Медленные запросы MS SQL |
| `DBPOSTGRS` | Медленные запросы PostgreSQL |
| `TLOCK` | Конфликты блокировок |
| `TDEADLOCK` | Взаимоблокировки |
| `TTIMEOUT` | Таймауты блокировок |
| `CALL` / `SCALL` | Медленные серверные вызовы |
| `CONN` | Проблемы подключения |
| `SDBL` | Трансляция запросов в SQL |

**Стандартный набор:** `["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"]`

---

## Capabilities

| Capability | Назначение |
|------------|------------|
| `search_tech_log` | Поиск по записям ТЖ |
| `logc_get_techlog_config` | Прочитать текущую конфигурацию ТЖ |
| `logc_save_techlog` | Сохранить конфигурацию перед изменением |
| `logc_configure_techlog` | Настроить события, путь, период хранения |
| `logc_get_actual_log_timestamp` | Проверить, что сбор идёт |
| `logc_restore_techlog` | Восстановить сохранённую конфигурацию |
| `logc_disable_techlog` | Отключить ТЖ |
| `navigate_symbol` | Переход к коду по контексту из записи ТЖ |

---

## Сценарные приёмы

См. [`references/scenarios.md`](references/scenarios.md) для классификации инцидентов, обязательных идентификаторов, timeline-правил и шаблона вывода.

---

## Типичные ошибки

| Ошибка | Обходной путь |
|--------|---------------|
| Забыли `logc_save_techlog` перед настройкой | Спросить пользователя о текущей конфигурации |
| ТЖ не активен после `configure` | Платформа требует перезапуска служб |
| `logc_get_actual_log_timestamp` не обновляется | Служба не перезапущена или неверный `location` |
| Слишком много событий — диск заполняется | Ограничить набор событий; уменьшить `history` |
| `search_tech_log` возвращает пусто | Проверить окно времени; событие должно быть после включения ТЖ |

---
depends_on: []
---
