docs: update README, PLAN, TODO, MENTOR_CONTEXT with full implemented functionality and architecture
This commit is contained in:
@@ -447,16 +447,39 @@
|
||||
|
||||
---
|
||||
|
||||
### 20. 🏗️ Комплексный технический рефакторинг и оптимизация архитектуры (Completed)
|
||||
- [x] **Этап 1: Очистка мертвого кода и оптимизация SQL**:
|
||||
- Удалена старая незавершенная функция `parse_text` в `app/reader.py` (строки 290–326).
|
||||
- Функция `update_task_progress` в `app/tasks.py` переписана с цикла на единый параметризованный SQL-запрос `UPDATE tasks SET progress = ?, current_item = ?, ...`.
|
||||
- [x] **Этап 2: Вынос датасетов в JSON (`data/seeds/*.json`)**:
|
||||
- Из исходников извлечено более 3 100 строк статических данных: `cefr_questions.json` (260 вопросов), `grammar_units.json` (15 юнитов), `phrasal_verbs.json` (157 глаголов), `reading_articles.json` (8 статей).
|
||||
- Модули `app/cefr.py`, `app/grammar.py`, `app/phrasal.py`, `app/lessons.py` переведены на динамическую ленивую загрузку с сохранением полной обратной совместимости.
|
||||
- [x] **Этап 3: Оптимизация сети и локального ИИ**:
|
||||
- Внедрен постоянный пул соединений `httpx.AsyncClient` с Keep-Alive (120s) для локальной Ollama в `app/ai.py`, управляемый в жизненном цикле приложения (`lifespan`).
|
||||
- Интегрирована встроенная офлайн-лемматизация (`lemmatize_word`) в `lookup_term` (`app/dictionary.py`), предотвращающая лишние сетевые запросы при поиске словоформ (`starts` -> `start`, `studying` -> `study`).
|
||||
- [x] **Этап 4: Модуляризация бэкенда FastAPI**:
|
||||
- Монолитный `app/main.py` сокращен с 2 240 до 142 строк.
|
||||
- Создан пакет `app/routers/` с 11 тематическими APIRouter: `auth.py`, `cards.py`, `dictionary.py`, `srs.py`, `export.py`, `reader.py`, `cefr.py`, `grammar.py`, `tasks.py`, `lessons.py`, `listening.py`.
|
||||
- [x] **Этап 5: Модуляризация CSS и Service Worker**:
|
||||
- Монолитный `style.css` (8 746 строк) разделен на 7 предметных таблиц в `app/static/css/`: `base.css`, `components.css`, `dictionary.css`, `srs.css`, `reader.css`, `grammar_cefr.css`, `lesson.css`.
|
||||
- Мастер-файл `style.css` загружает стили через `@import` и содержит полную архитектурную карту.
|
||||
- Обновлен Service Worker (`notes-v6.7`) с добавлением всех CSS в `PRECACHE_URLS` для полной офлайн-работы PWA.
|
||||
- [x] **Инфраструктура быстрого переключения и отката**:
|
||||
- Добавлены скрипты `scripts/deploy_beta.sh` и `scripts/rollback_to_main.sh` для мгновенного отката или развертывания в 1 клик.
|
||||
- Создан резервный бэкап базы данных `data/notes.db.backup-main-pre-beta`.
|
||||
- [x] **100% успешное тестирование**:
|
||||
- Все 44 интеграционных теста `pytest tests/test_api.py` успешно проходят в Docker-контейнере.
|
||||
|
||||
---
|
||||
|
||||
## ⏳ Coming Soon
|
||||
|
||||
- [ ] **🌐 Быстрый захват из браузера (Bookmarklet)**:
|
||||
- Создать JavaScript-букмарклет для добавления слова/фразы из любого окна браузера в личный словарь [`study.qpid.pro`](https://study.qpid.pro) (низший приоритет).
|
||||
- [ ] **Нативная автономная озвучка (HTML5 Web Speech API / `speechSynthesis`)**:
|
||||
- Использовать встроенный в браузер синтезатор речи `window.speechSynthesis` (en-US, en-GB).
|
||||
- 0 сетевых запросов к серверу, 100% оффлайн-работа.
|
||||
- Поддержка озвучивания отдельных слов, фраз, идиом и предложений-контекстов читалки.
|
||||
- [ ] **Возврат режима «Диктант» в SRS**:
|
||||
- Возобновление работы аудиотренажёра на базе нативного браузерного синтезатора речи без зависимости от внешних аудиофайлов.
|
||||
- Использовать встроенный в браузер синтезатор речи `window.speechSynthesis` (en-US, en-GB) как дополнительный резервный фолбэк при работе на мобильных без связи.
|
||||
- [ ] **Расширение библиотеки Murphy**:
|
||||
- Добавление следующих 15 юнитов грамматики (юниты 16–30: пассивный залог, косвенная речь, модальные глаголы).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user