Фоновые задачи: плейлисты, длинные лекции, вкладка настроек
- таблица jobs + очередь с воркером: POST /jobs сразу отвечает, элементы
плейлиста обрабатываются последовательно, есть отмена и живой прогресс
(скачивание %, минуты распознанного Vosk-аудио)
- expand_url: плейлист раскрывается в список видео
- keep_video=false теперь качает только аудио (для 4-5ч лекций)
- настройки (LLM-ключ, модель, длина выжимки, хранение видео, путь Vosk)
хранятся в Postgres: переживают перезапуск и перезагрузку страницы
- длина выжимки прокидывается в LLM-промпт ({n} предложений)
- UI: вкладки «Главная»/«Настройки», карточка задач с автообновлением
каждые 3 сек, прогресс-бар, отмена, библиотека обновляется по мере
готовности элементов
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
12
web/main.py
12
web/main.py
@@ -19,20 +19,14 @@ def main(page: ft.Page) -> None:
|
||||
view = MainView(page, client)
|
||||
page.add(view.build())
|
||||
|
||||
# probe env-configured LLM and initial library load
|
||||
# настройки живут на сервере (БД) — заполняем поля сохранёнными значениями
|
||||
try:
|
||||
status = client.llm_status()
|
||||
if status.get("configured"):
|
||||
view._set_status(ok=True)
|
||||
if status.get("base_url") and not view.base_url.value:
|
||||
view.base_url.value = status["base_url"]
|
||||
if status.get("model") and not view.selected_model:
|
||||
view.selected_model = status["model"]
|
||||
view.model_input.value = status["model"]
|
||||
view.apply_settings(client.get_settings())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
view._refresh_library()
|
||||
view._start_jobs_poll()
|
||||
page.update()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user