9a0b3ba92c
- Страница /settings: ввод и проверка API ключа DeepSeek - POST /api/llm/generate — генерация вопросов по названию теста - POST /api/llm/improve — улучшение формулировки вопроса + ответов (модал с галочками) - POST /api/llm/distractors — генерация дистракторов - POST /api/llm/review — рецензия теста + кнопка «Предложить вариант» - POST /api/llm/improve_all — улучшение всего теста с постатейным сравнением - Миграция 004: таблица settings (key-value) - Шапка приложения с навигацией на /settings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database import get_db
|
|
from app.models.setting import Setting
|
|
from app.schemas.setting import SettingOut, SettingUpdate
|
|
|
|
router = APIRouter(tags=["settings"])
|
|
|
|
|
|
@router.get("/api/settings/{key}", response_model=SettingOut)
|
|
async def get_setting(key: str, db: AsyncSession = Depends(get_db)):
|
|
result = await db.execute(select(Setting).where(Setting.key == key))
|
|
setting = result.scalar_one_or_none()
|
|
if setting is None:
|
|
return SettingOut(key=key, value=None)
|
|
return setting
|
|
|
|
|
|
@router.put("/api/settings/{key}", response_model=SettingOut)
|
|
async def update_setting(
|
|
key: str, data: SettingUpdate, db: AsyncSession = Depends(get_db)
|
|
):
|
|
result = await db.execute(select(Setting).where(Setting.key == key))
|
|
setting = result.scalar_one_or_none()
|
|
if setting is None:
|
|
setting = Setting(key=key, value=data.value)
|
|
db.add(setting)
|
|
else:
|
|
setting.value = data.value
|
|
await db.commit()
|
|
await db.refresh(setting)
|
|
return setting
|