Фоновые задачи: плейлисты, длинные лекции, вкладка настроек
- таблица 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
api/main.py
12
api/main.py
@@ -1,10 +1,13 @@
|
||||
import asyncio
|
||||
import logging
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI
|
||||
|
||||
from api.db.connection import wait_for_postgres, init_db
|
||||
from api.route import default, llm, pipeline, sections, videos
|
||||
from api.db.job import mark_interrupted
|
||||
from api.lib import jobqueue
|
||||
from api.route import app_settings, default, jobs, llm, pipeline, sections, videos
|
||||
|
||||
|
||||
logging.basicConfig(
|
||||
@@ -17,13 +20,18 @@ logging.basicConfig(
|
||||
async def lifespan(app: FastAPI):
|
||||
await wait_for_postgres()
|
||||
await init_db()
|
||||
await mark_interrupted()
|
||||
worker_task = asyncio.create_task(jobqueue.worker())
|
||||
yield
|
||||
worker_task.cancel()
|
||||
|
||||
|
||||
app = FastAPI(title="LLM-infa API", version="0.3.0", lifespan=lifespan)
|
||||
app = FastAPI(title="LLM-infa API", version="0.4.0", lifespan=lifespan)
|
||||
|
||||
app.include_router(default.router)
|
||||
app.include_router(pipeline.router)
|
||||
app.include_router(jobs.router)
|
||||
app.include_router(videos.router)
|
||||
app.include_router(sections.router)
|
||||
app.include_router(app_settings.router)
|
||||
app.include_router(llm.router)
|
||||
|
||||
Reference in New Issue
Block a user