Приложение для тестирования сотрудников клиники методом один вопрос - до пяти ответов один из которых правильный. Сотрудник должен выбрать правильный вариант ответа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4.6 KiB

ШАГ 011 — Спринт 4: AI-помощник (DeepSeek)

Дата: 2026-03-21 Контекст: Мастер-класс по разработке системы тестирования сотрудников клиники.


Запрос

запускам спринт 4


Реализовано

Интеграция с DeepSeek LLM при создании и редактировании тестов. Страница настроек для управления API ключом.


Новые файлы

backend/app/models/setting.py            ← модель Setting (key-value)
backend/app/schemas/setting.py           ← SettingOut, SettingUpdate
backend/app/services/__init__.py         ← пакет services
backend/app/services/llm.py              ← DeepSeek клиент (все 4 функции)
backend/app/api/settings.py              ← GET/PUT /api/settings/{key}
backend/app/api/llm.py                   ← POST /api/llm/check|generate|improve|distractors|review
backend/alembic/versions/004_settings.py ← миграция: таблица settings
frontend/src/api/settings.ts             ← API клиент настроек
frontend/src/api/llm.ts                  ← API клиент LLM
frontend/src/pages/Settings/index.tsx    ← страница /settings

Изменённые файлы

backend/app/main.py                            ← зарегистрированы роутеры settings и llm
backend/alembic/env.py                         ← импорт модели setting
backend/requirements.txt                       ← добавлен openai==1.57.0
frontend/src/components/TestForm/index.tsx     ← добавлены AI-кнопки
frontend/src/App.tsx                           ← Layout с шапкой, роут /settings

API эндпоинты (новые)

Метод URL Описание
GET /api/settings/{key} Получить значение настройки
PUT /api/settings/{key} Сохранить значение настройки
POST /api/llm/check Проверить подключение к DeepSeek
POST /api/llm/generate Сгенерировать вопросы по теме
POST /api/llm/improve Улучшить формулировку вопроса
POST /api/llm/distractors Сгенерировать дистракторы
POST /api/llm/review Проверить качество всего теста

Схема БД (новое)

settings
  key         VARCHAR(100)  PK
  value       TEXT          nullable
  updated_at  TIMESTAMP     auto-updated

AI-функции в форме теста

Кнопка Расположение Действие
«Сгенерировать с AI» Над списком вопросов Открывает модал → ввод темы → превью → «Применить все вопросы»
«Проверить тест» Над списком вопросов Открывает модал с рекомендациями AI по всему тесту
«Улучшить» В шапке каждого вопроса Заменяет текст вопроса улучшенной AI-формулировкой
«Дистракторы» В шапке каждого вопроса Добавляет 3 новых неправильных варианта к вопросу

Технические детали

  • DeepSeek API совместим с OpenAI SDK: AsyncOpenAI(base_url="https://api.deepseek.com")
  • Модель: deepseek-chat
  • response_format={"type": "json_object"} для generate и distractors — гарантирует JSON-ответ
  • API ключ хранится в таблице settings с ключом deepseek_api_key; фронт ключ не видит
  • Шапка приложения: новый Layout с AppHeader — ссылка «Настройки» в правом углу

Следующие шаги

  • Спринт 1: Инфраструктура + Создание тестов
  • Спринт 2: Прохождение теста + результат
  • Спринт 3: Редактирование + версионность
  • Спринт 4: AI-помощник (DeepSeek)
  • Спринт 5: Трекер результатов
  • Спринт 6: Авторизация и роли
  • Спринт 7: Уведомления в MAX