Русский
Дашборд созвонов
Два макета для базы, куда попадают записанные, расшифрованные и разобранные созвоны: таймлайн долгих нитей и экран, где вы проверяете, что предложено по одному созвону. Оба читают обычные заметки и пишут обратно через updateNotes. Почему они устроены так, рассказано в эссе Созвоны превращаются в нити.
trip2g не записывает, не расшифровывает и не разбирает созвоны. Транскрипт, разбор и карту тем пишет что-то другое: диктофон, который сохраняет в базу, скрипт или агент с API-ключом. Оба макета эти заметки читают. Пишут они только заметку правок созвона, ключ hidden у нити и заметку человека, когда вы добавляете нового.
Демо работают на выдуманных данных. Посетитель может нажимать всё, но изменения остаются во вкладке; изменения владельца сайта записываются в заметки. У демо-заметок намеренно стоит search: false, чтобы выдуманные созвоны не попадали в поиск по сайту.
Установка
Скопируйте три файла из docs/_layouts/calls/ в _layouts/calls/ своей базы: threads.html, call.html и frontmatter.js. Потом заведите по заметке на страницу:
---
title: Нити
layout: calls/threads
---
---
title: Созвон
layout: calls/call
owner: Ольга Миронова
---
Текст заметки страницы показывается под заголовком.
Какие заметки читают страницы
| Заметка | Папка по умолчанию | Что в ней |
|---|---|---|
| Транскрипт | transcripts/ |
Строки Спикер | MM:SS, под каждой — что сказано. Во frontmatter можно title и duration_min |
| Разбор | calls/ |
type: review, путь transcript:, карта speakers: от метки к имени, по желанию speakers_confidence: (unknown отмечает метку), assumed: true, если спикеры или темы угаданы, по желанию date: (без него — дата из пути транскрипта, потом из пути разбора). Первая строка текста — повестка |
| Карта тем | topics/ |
То же имя файла, что у разбора. По желанию title — его страница показывает как название созвона вместо повестки. Абзац-сводка, потом раздел ## Topics со строками MM:SS | тема |
| Нить | threads/ |
type: thread, group, kind, status, people, aliases, по желанию priority и hidden, по желанию дата last, по которой сортируется нить, чья хронология ещё не ссылается ни на один созвон. Список ## Chronology, по строке на созвон, и список ## Open items |
| Человек | people/ |
По заметке на человека, заголовок — имя. confirmed: false отмечает догадку. Файл, чьё имя начинается с _, пропускается |
| Категория | categories/ |
type: call-category, order, по желанию kind (client включает оценку продажи) |
| Правки | call_edits/ |
Пишет страница одного созвона, по заметке на созвон |
Id созвона — имя файла его разбора. Карта тем и заметка правок называются так же.
Строка хронологии начинается со ссылки на созвон, подписанной датой:
## Chronology
- [[calls/c8e1a5|2026-07-31]]: Налог до 25-го.
Decided: амортизируем ростер. Open: отправить счёт.
- 2026-10-01: Бухгалтер прислал шаблон по почте.
Строка со ссылкой на разбор или транскрипт — точка на таймлайне, дата берётся из подписи ссылки. Строка без такой ссылки, например письмо или решение вне созвона, видна в цепочке нити, но точкой не становится. Decided: и Open: начинают новые строки в боковой панели. Заголовки и эти слова настраиваются, русское демо использует «Хронология», «Решили:» и «Открыто:».
Настройки страницы нитей
| Ключ | По умолчанию | Значение |
|---|---|---|
threads |
threads/* |
Glob заметок нитей |
reviews, transcripts |
calls/*, transcripts/* |
Glob'ы, по которым ссылка на созвон отличается от остальных |
thread_type |
thread |
type заметки нити |
chronology_heading |
Chronology |
Заголовок списка хронологии |
open_heading |
Open items |
Заголовок списка открытого |
outcome_labels |
[Decided, Open] |
Слова, с которых в цепочке начинается новая строка |
groups |
пусто | Порядок групп; без него группы идут по своей верхней нити: сначала по приоритету, потом по активности |
stale_days |
21 |
Через сколько дней без созвона нить считается затихшей |
span_months |
3 |
Сколько месяцев видно при открытии |
today |
текущая дата | Фиксирует «сегодня», для демо |
locale |
en |
Даты, названия месяцев и формы множественного числа |
ui |
английский | Строки интерфейса, см. ниже |
Внутри группы нити идут по priority, потом по активности: свежие созвоны весят больше, и вес вдвое падает за каждые три недели без созвона. Скрыть нить ставит hidden: true во frontmatter нити; галочка Скрытые в панели показывает их снова.
Настройки страницы созвона
| Ключ | По умолчанию | Значение |
|---|---|---|
owner |
пусто | Ваше имя, как оно записано в speakers; у этой метки написано «это вы» |
reviews, topics, transcripts |
calls/*, topics/*, transcripts/* |
Glob'ы |
people, threads, categories |
people/**, threads/*, categories/* |
Glob'ы |
edits |
call_edits |
Папка заметок правок |
people_folder |
people |
Где + новый человек создаёт заметку |
review_type, thread_type, category_type |
review, thread, call-category |
Значения type, которые ищет страница |
topics_heading |
Topics |
Заголовок раздела карты тем |
topic_line |
{tc} | {text} |
Вид строки темы |
transcript_line |
{who} | {tc} |
Вид строки спикера в транскрипте |
pending_since |
пусто | Дата; транскрипты с неё без разбора показываются как ждущие |
transcripts_inline |
false |
Класть все транскрипты в страницу, а не загружать по одному |
scores |
три оценки | Список из key, label и необязательного only_kind |
subgraph |
пусто | Добавляется в заметки, которые создаёт страница, см. ru/user/subgraphs |
locale, ui |
en, английский |
Как выше |
Созвон ждёт вашей проверки, пока у него assumed: true и в заметке правок нет хотя бы одной из четырёх отметок verified: спикеры, категория, нити, темы. Всё проверено ставит все четыре и открывает следующий ждущий созвон.
Правки сохраняются сами через секунду после последнего изменения. Страница держит их в call_edits/<id>.md, а не в разборе: разбор принадлежит тому, кто его написал, а заметка правок — странице. Перед записью страница сверяет хэш заметки, так что правка, сделанная тем временем в другом месте, не затирается.
Транскрипты загружаются по одному запросом ReadNote — это запрос notePaths из раздела Прочитать markdown заметки. Со страницы его может вызвать только сессия админа сайта, поэтому публичное демо вместо этого ставит transcripts_inline: true.
Заметка правок
Страница созвона пишет call_edits/<id>.md, по заметке на созвон. Её frontmatter — договор для всего, что читает ваши проверки:
| Ключ | Что в нём |
|---|---|
call |
Id созвона |
review |
Путь заметки разбора |
category |
Путь заметки категории |
speakers |
Карта от метки спикера к пути заметки человека |
threads |
Пути заметок нитей, к которым относится созвон |
topics_wrong |
Таймкоды тем, отмеченных «не так» |
topic_threads |
Карта от таймкода темы к пути нити |
extra_topics |
Пропущенные темы, по строке на тему |
scores |
Карта от ключа оценки к числу от 1 до 10 |
outcome |
Что решили и что осталось открытым, текстом |
verified |
Что из speakers, category, threads и topics вы проверили |
updated |
Время последнего сохранения |
Текст заметки повторяет то же в читаемом виде. В демо есть одна такая: заметка правок к просмотру магазина. Обратно в разбор её ничто в trip2g не переносит. То, что пишет разборы, может прочитать её на следующем проходе: взять выбранного вами спикера, выбросить тему, отмеченную «не так», дописать строку хронологии в выбранную нить. Этого читателя вы пишете сами.
Язык интерфейса
У каждой строки есть английское значение по умолчанию. Чтобы перевести, перечислите ключи под ui в заметке страницы; русские демо-страницы содержат полный список. Для счётчиков задаются формы множественного числа:
locale: ru
ui:
search: "Найти нить"
calls:
one: "{n} встреча"
few: "{n} встречи"
many: "{n} встреч"
other: "{n} встречи"
Формы выбираются по Intl.PluralRules для locale.
Ограничения
- Страница кладёт в HTML все разборы, нити и карты тем, которые нашли её glob'ы. Несколько сотен созвонов — нормально, тысячи — медленно.
- Макеты читают frontmatter в браузере небольшим парсером (
frontmatter.js): карты, списки и блоки|/>, без якорей и тегов. - Созвон не привязывается к нити сам. Страница созвона показывает нити, чьи заметки ссылаются на этот созвон, и сохраняет выбранные вами нити в заметку правок; строку в хронологию добавляет то, что ведёт заметки нитей.
- Сохранение — это два запроса: сначала хэш заметки правок, потом запись. Если закрыть вкладку в течение секунды после правки, браузер спросит, точно ли уйти; если уйти всё равно, последняя правка может пропасть.