From 6a6b165c7a40a2ec34c3b6cdb2258f00629aac8d Mon Sep 17 00:00:00 2001 From: Antigravity Date: Tue, 6 Oct 2026 16:36:56 +0300 Subject: [PATCH] docs: update TODO.md with completed background tasks and book mining --- TODO.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/TODO.md b/TODO.md index 6abf73a..a444e42 100644 --- a/TODO.md +++ b/TODO.md @@ -347,6 +347,28 @@ --- +### 16.2. ⚡ Фоновые задачи и генерация тестов CEFR из загруженных книг (Background Tasks & Book Mining) +- [x] **Zero-Daemon менеджер фоновых задач (`app/tasks.py`)**: + - Таблица SQLite `background_tasks` (id, user_id, task_type, status, progress_current, progress_total, message, params_json, result_json, error_message). + - Асинхронное исполнение через чистый `asyncio.create_task` без Celery, Redis и внешних брокеров (100% Ponytail). + - Кооперативная отмена задач (`cancel_task`, `is_task_cancelled`). + - Эндпоинты API: `POST /api/tasks/mine-books`, `GET /api/tasks/active`, `GET /api/tasks/{task_id}`, `POST /api/tasks/{task_id}/cancel`. +- [x] **Движок анализа и майнинга предложений из книг (`app/miner.py`)**: + - Разбиение текста глав на чистые предложения с защитой английских инициалов и сокращений (`Mr.`, `Mrs.`, `Dr.`, `Prof.`, `St.`, `Jr.`). + - Сопоставление с лексической шкалой Oxford 3000/5000 (A1..B2) и базой частей речи. + - Подбор грамматически и лексически корректных дистракторов того же уровня CEFR и части речи. + - Формирование 4-вариантных заданий Cloze Tap со скрытием ключевого слова `___`. + - Защита от дубликатов предложений через `UNIQUE(level, sentence)` в SQLite. + - Автоматическая очистка русскоязычного глоссария (`clean_translation`) от паразитных латинских транслитов Викисловаря. +- [x] **Интерфейс в веб-приложении (PWA)**: + - Кнопка `⚡ Собрать тесты из книг` в шапке тестов CEFR. + - Модальное окно с выбором книги (или всей библиотеки), целевого уровня (A1..B2 / ALL) и количества вопросов. + - Интерактивный фоновый баннер со спиннером, живым счетчиком прогресса `X / Y (%)` и кнопкой отмены задачи. + - Бейджик источника `📖 «Название книги» (Глава)` в карточке вопроса и в разборе ответа. +- [x] Автоматический тест `test_background_tasks_and_book_mining` в `tests/test_api.py` (30/30 тестов успешно пройдены). + +--- + ### 17. 🍔 Разгрузка хеддера и единая навигация через боковое меню / Drawer (Unified Navigation & Header Redesign) - [ ] **Проблема перегруженного хеддера**: - В шапке скопилось 8+ кнопок (`📚 Читалка`, `🎯 Тесты CEFR`, `📖 Грамматика`, `🎓 Тренажёр`, `📊 Статистика`, `📤 Экспорт`, тема, шестеренка, профиль), на экранах планшетов и ноутбуков возникает переполнение и визуальный шум.