Compare commits

..

2 Commits

Author SHA1 Message Date
Сергей Маринкевич ed80f49ca7 renew whole ESR dev + QA 2026-10-01 11:56:06 +07:00
Сергей Маринкевич eb2c9bab19 Add README with quick start and crontab example.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-01 11:55:13 +07:00
2 changed files with 86 additions and 2 deletions
+84
View File
@@ -0,0 +1,84 @@
# mattermost-dl
Локальная выгрузка истории Mattermost в JSON и поиск по ней (SQLite FTS и MCP).
- `mattermost-dl.py` — скачивает каналы в `results/YYYYMMDD/`
- `mm_index.py` — индексирует выгрузки в `mattermost_index.sqlite`
- `mm_search.py` — поиск из командной строки
- `mm_search_mcp.py` — тот же поиск как MCP-сервер
- `renew.sh` — инкрементальная выгрузка команд и обновление индекса
`config.json`, `cookies.pkl`, `results/` и база индекса в git не попадают.
## Быстрый старт
```bash
cd /home/grayhook/Documents/mattermost-dl
python3 -m venv .venv
.venv/bin/pip install mattermostdriver requests beautifulsoup4 fastmcp
cp config.json.example config.json
```
В `config.json` укажите хост Mattermost (без `https://`), `login_mode` (`gitlab`, `token` или `password`) и логин. Пароль в файл не пишется.
Первый запуск интерактивный: скрипт спросит недостающие поля и сохранит токен.
```bash
.venv/bin/python mattermost-dl.py
```
Дальше выгрузка без вопросов — оба флага обязательны. `--channel all` берёт все каналы команды, иначе список имён через запятую.
```bash
.venv/bin/python mattermost-dl.py --team esr-daily --channel all
```
После первого успешного прогона в конфиг пишутся `incremental`, `last_export_at` и `output_base`. Следующие запуски дописывают только новые сообщения в ту же папку.
Индекс (для быстрого поиска и вложений):
```bash
.venv/bin/python mm_index.py
```
Поиск:
```bash
.venv/bin/python mm_search.py "текст" --user sergey.marinkevich --limit 20
```
Обновить все настроенные команды и индекс одной командой:
```bash
./renew.sh
```
`renew.sh` выгружает `esr-daily`, `esr-developers` и `esr-dev-and-qa`, затем вызывает `mm_index.py`.
## Crontab
Каждые 15 минут в рабочие часы будней — выгрузка и инкрементальный индекс. По субботам в 10:15 — полная переиндексация.
```cron
*/15 8-22 * * 1-5 cd /home/grayhook/Documents/mattermost-dl && /usr/bin/bash renew.sh >> /tmp/mattermost-dl.log 2>&1
15 10 * * 6 cd /home/grayhook/Documents/mattermost-dl && ./.venv/bin/python3 mm_index.py --reindex-all >> /tmp/mattermost-dl-weekly.log 2>&1
```
## Поиск
| Задача | Команда |
|---|---|
| Текст сообщения | `mm_search.py "запрос"` |
| Пользователь, канал, команда | `--user`, `--channel`, `--team` |
| Даты | `--after 2026-01-01 --before 2026-02-01` |
| Имя вложения | `--file-name` (нужен индекс) |
| Текст внутри вложения | `--file-content` (нужен индекс, только UTF-8) |
| Каталог пользователей | `--resolve-user "Фамилия"` / `--search-users "запрос"` |
Корень выгрузки по умолчанию `results`, база — `mattermost_index.sqlite`. Переопределение: `-r` / `--root` и `--db`. Полный проход без кэша файлов: `mm_index.py --reindex-all`.
## MCP
`mm_search_mcp.py` по умолчанию работает через stdio. Общий HTTP-процесс: `MM_MCP_TRANSPORT=http`, хост и порт — `MM_MCP_HOST` / `MM_MCP_PORT` (по умолчанию `127.0.0.1` и `8766`), путь — `MM_MCP_PATH` (`/mcp`). Пример юнита — `mm-search-mcp.service`.
Переменные поиска: `MM_SEARCH_ROOT` (по умолчанию `results`), `MM_SEARCH_DB` (`mattermost_index.sqlite`), `MM_CONFIG_PATH` (`config.json`). Подробности инструментов — в `mattermost-search/SKILL.md`.
+2 -2
View File
@@ -1,4 +1,4 @@
cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-daily --channel all cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-daily --channel all
cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-dev-and-qa --channel QoSd cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-developers --channel all
cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-dev-and-qa --channel VSAT cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mattermost-dl.py --team esr-dev-and-qa --channel all
cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mm_index.py cd /home/grayhook/Documents/mattermost-dl && .venv/bin/python mm_index.py