# План развития проекта Notes (notes.qpid.pro) > **Принцип проектирования**: *«Работает как автомат Калашникова»* — сверхнадёжно, мгновенно, без раздутых зависимостей и необходимости постоянного ручного обслуживания. --- ## 1. Архитектура и стек решений ``` ┌─────────────────────────────────────────────────────────────┐ │ notes.qpid.pro │ │ (Nginx Reverse Proxy + Let's Encrypt) │ └──────────────────────────────┬──────────────────────────────┘ │ proxy_pass :8002 ┌──────────────────────────────▼──────────────────────────────┐ │ Backend: Python 3.12 │ │ FastAPI / Uvicorn + SQLite (WAL mode) + Dictionary APIs │ └──────────────────────────────┬──────────────────────────────┘ │ ┌───────────────────────┴───────────────────────┐ ▼ ▼ ┌─────────────────────────────┐ ┌─────────────────────────────┐ │ Внешние открытые API │ │ Локальная БД SQLite │ │ • Free Dictionary API │ │ • vocabulary_cards │ │ (IPA, audio, definitions) │ │ • search_history │ │ • MyMemory / Context Trans. │ │ • srs_reviews (SM-2) │ │ (перевод на русский) │ │ • tags & categories │ └─────────────────────────────┘ └─────────────────────────────┘ ``` ### Выбор технологий: - **Backend**: Python 3.12 + FastAPI (асинхронный, лёгкий, типизированный, мгновенный запуск). - **База данных**: SQLite в режиме `WAL` (Write-Ahead Logging). Полная транзакционность, нулевые затраты на администрирование, бэкап копированием одного файла. - **Frontend**: Vanilla ES6+ / Modern CSS / HTML5. Без тяжелых бандлеров и node_modules. Адаптивный мобильный интерфейс (PWA), оффлайн-кэш на LocalStorage/CacheStorage, поддержка хоткеев. - **Внешние API (Zero-cost & Open)**: 1. *Free Dictionary API* (`api.dictionaryapi.dev`): официальная фонетическая транскрипция IPA, аудио-файлы нативного произношения (US/UK), английские определения и примеры. 2. *MyMemory Translated API*: качественный перевод фраз и предложений на русский язык. --- ## 2. Этапы реализации (Roadmap) ### Этап 1: Ядро системы (MVP) — Быстрый поиск, перевод и фиксация *Цель: закрыть боль переключения контекста при чтении документации.* - [ ] **1.1. Базовый интерфейс ввода**: - Строка поиска в фокусе при открытии страницы. - Горячие клавиши: - `Enter` — мгновенный перевод. - `Ctrl + Enter` (или `Cmd + Enter`) — сохранить карточку. - `Esc` — очистить поле ввода. - `Ctrl + P` (или пробел на карточке) — воспроизвести аудио-произношение. - [ ] **1.2. Каскадный переводчик (Backend API)**: - Автоопределение ввода: отдельное слово или предложение/фраза. - Запрос словарных данных (транскрипция, аудио mp3, толкование, русский перевод). - Кэширование запросов в локальной SQLite для мгновенного повторного показа. - [ ] **1.3. Контекстное сохранение**: - Поле для ввода контекстного предложения (откуда взято слово). - Быстрый выбор тега (по умолчанию `#networking`, `#general`, `#protocol`). - Возможность подправить перевод перед сохранением. - [ ] **1.4. Журнал истории и база слов**: - Хронологическая лента сохраненных слов с датой и временем. - Поиск и фильтрация по сохранённым словам. - Мгновенное удаление / редактирование. --- ### Этап 2: Организация, теги и экспорт *Цель: структурирование профессионального глоссария инженера.* - [ ] **2.1. Система тегов и коллекций**: - Тегирование по направлениям: `#routing`, `#switching`, `#security`, `#bgp`, `#linux-kernel`, `#troubleshooting`. - Фильтрация в один клик. - [ ] **2.2. Экспорт данных**: - Экспорт в CSV / Markdown. - Экспорт готовой колоды для Anki (`.csv` / `.apkg`) с аудио и контекстом. - Резервное копирование базы данных в 1 клик. - [ ] **2.3. PWA (Progressive Web App)**: - Возможность установки на смартфон / десктоп как самостоятельное приложение. - Работа со списком слов в режиме оффлайн. --- ### Этап 3: Встроенный тренажер интервальных повторений (SRS / SM-2) *Цель: гарантированное запоминание без необходимости устанавливать сторонние программы.* - [ ] **3.1. Движок алгоритма SuperMemo-2 (SM-2)**: - Расчет фактора легкости (Ease Factor, $EF$). - Очередь повторений на сегодня: карточки со статусом `Due`. - 4 кнопки оценки: - `Again` (< 10 минут) - `Hard` (+12 часов) - `Good` (+1 день $\rightarrow$ +3 дня $\rightarrow$ +7 дней...) - `Easy` (+4 дня $\rightarrow$ геометрическая прогрессия) - [ ] **3.2. Режим карточек (Flashcards)**: - Лицевая сторона: английский термин + аудио. - Оборотная сторона: русский перевод + контекстное предложение + определение. - [ ] **3.3. Режим Cloze Deletion (Вставка пропущенного слова)**: - Мозг тренируется вспоминать термин прямо в техническом предложении: > *"The switch [ ... ] the packet if the VLAN tag is invalid."* - [ ] **3.4. Аудио-диктант (Active Spelling)**: - Сервис проигрывает произношение термина, пользователь печатает его на слух. --- ### Этап 4: Профессиональный инструментарий сетевого инженера *Цель: превратить сервис в персонального ментора по сетевому английскому.* - [ ] **4.1. Встроенный сетевой глоссарий и акронимы**: - База популярных сетевых акронимов и аббревиатур (MTU, MSS, BFD, ECMP, CIDR, STP, SYN/ACK) с расшифровкой и техническим смыслом. - [ ] **4.2. Статистика и аналитика прогресса**: - Счётчик дней непрерывного обучения (Daily Streak). - График объёма активного словарного запаса. - Коэффициент удержания памяти (% успешно вспомненных слов). - [ ] **4.3. Быстрый захват из браузера**: - Букмарклет (Bookmarklet) для выделения слова на любой веб-странице документации и мгновенной отправки в `notes.qpid.pro`. --- ## 3. Критерии качества («Автомат Калашникова») 1. **Скорость**: Открытие страницы $< 100$ мс, поиск $< 300$ мс. 2. **Отказоустойчивость**: Если внешний API словаря недоступен, сервис предлагает ручной ввод без блокировки интерфейса. 3. **Безопасность данных**: Данные хранятся в надежной локальной SQLite, регулярный автоматический snapshot базы. 4. **Удобство**: Управление полностью доступно с клавиатуры (без необходимости тянуться к мыши).