main
Дьяк — система управления протоколами встреч
Frappe 16 приложение для загрузки аудиозаписей встреч, автоматической транскрибации и диаризации (через внешний микросервис) и структурированного ведения протокола.
Установка
Предполагается, что Frappe 16 + bench уже установлен.
# 1. Положить эту папку (`dyak/`) в `frappe-bench/apps/`
cd ~/frappe-bench/apps
# (скопируйте/распакуйте сюда содержимое архива — должен получиться
# каталог frappe-bench/apps/dyak/ с setup.py внутри)
# 2. Зарегистрировать приложение в bench
cd ~/frappe-bench
bench --site <ваш_сайт> install-app dyak
# 3. Применить фикстуры (создаёт роль Dyak User)
bench --site <ваш_сайт> migrate
# 4. (опционально) собрать assets
bench build --app dyak
# 5. Перезапустить
bench restart
После установки в Desk появится модуль Дьяк с doctype'ами:
- Meeting Record (
MR-YYYY-#####) — основной документ встречи. - Dyak Settings (Singleton) — настройки сервиса транскрибации и LLM.
- 8 child-tables: Meeting Participant, Action Item, Decision, Problem, Open Question, Schedule Change, Help Request, External Reference.
Конфигурация
В Dyak Settings заполните:
| Поле | Значение по умолчанию |
|---|---|
| URL сервиса | http://192.168.1.112:8000 |
| Модель Whisper | large-v3 |
| Язык | ru |
| Подсказка | (термины, разделённые запятыми) |
| Количество спикеров | 0 (автоопределение) |
Поток работы
Черновик
└─[кнопка «Транскрибировать»]──▶ В обработке
└─(background job)──────▶ Расшифровано
├─[кнопка «Назначить спикеров»]
├─[AI: задачи / резюме / анализ — заглушки]
└─[кнопка «На проверку»]──────▶ Проверено
└─[«Утвердить»]──▶ Утверждено
При ошибке транскрибации статус возвращается в Черновик, трейсбек пишется в Error Log.
Архитектура
dyak/
├── api/
│ ├── transcribe.py # whitelisted transcribe() + фоновый _run_transcription()
│ └── ai.py # заглушки extract_action_items, generate_summary, analyze_meeting
├── dyak/doctype/
│ ├── meeting_record/ # JSON + .py + .js (формовая логика)
│ ├── dyak_settings/ # Singleton с настройками
│ └── meeting_<...>/ # 8 child-tables
└── hooks.py
Микросервис транскрибации
POST {service_url}/process — multipart/form-data:
file <bytes> аудиофайл
language ru код языка
initial_prompt str подсказка (опц.)
num_speakers int 0 = auto
model str tiny|base|...|large-v3|turbo (опц.)
Ответ:
{
"language": "ru",
"duration": 197.6,
"processing_time": 18.2,
"speakers": {"SPEAKER_01": 113.5, "SPEAKER_02": 41.2},
"num_speakers": 3,
"utterances": [
{"speaker": "SPEAKER_01", "start": 0.0, "end": 94.6, "text": "..."}
]
}
Полный ответ кладётся в Meeting Record.utterances_json и используется
для рендеринга чат-диалога с цветами по спикерам.
Точки расширения
dyak/api/ai.py— заменитьmsgprintна реальные LLM-вызовы (Anthropic/OpenAI/Ollama поDyak Settings.llm_provider), заполняющиеsummary,action_items,decisions,problems,open_questions,help_requests,external_references,meeting_topics,meeting_mood.- Расписание автоматической транскрибации сразу после загрузки —
можно добавить через
doc_eventsвhooks.py(например,Meeting Record: after_insert).
Description
Languages
Python
57.9%
JavaScript
39.1%
CSS
3%