docs(plan): update roadmap with security layer (auth, sessions, rate-limit) and general english scope

This commit is contained in:
Antigravity committed 2026-09-22 13:09:18 +00:00
1 parent 4631de5391
commit 4dbc53890a
3 files changed
+152 -159

No files matched your search

+45 -51
View File
@@ -1,76 +1,70 @@
# Методология и педагогическая концепция проекта # Методология и педагогическая концепция проекта
> **Цель**: Быстро, качественно и без стресса вывести чтение и понимание технической англоязычной литературы (RFC, вендорная документация Cisco/Juniper, Linux networking, сетевые протоколы) на уровень свободного владения. > **Цель**: Быстро, качественно и без стресса освоить живой английский язык (словарный запас, фразовые глаголы, идиомы, устойчивые обороты) и сформировать крепкий фундамент, на который впоследствии легко ляжет любая специализированная литература.
--- ---
## 1. В чём главная проблема традиционного подхода? ## 1. В чём главная проблема традиционного изучения слов?
Студенты и инженеры, читая техническую документацию, регулярно сталкиваются с двумя ловушками: Студенты, пытаясь расширить словарный запас при чтении или просмотре контента, регулярно сталкиваются с типичными барьерами:
1. **Разрыв фокуса (Context Switching Friction)**: 1. **Разрыв фокуса (Context Switching Friction)**:
Встретив незнакомое слово (*deprecate*, *overhead*, *stale*, *propagate*), инженер переключается в переводчик, читает перевод, возвращается к тексту. Теряется мысль статьи, процесс чтения превращается в мучение. Встретив незнакомое слово или идиому (*inevitable*, *figure out*, *out of the blue*, *reluctant*), человек переключается в переводчик, читает перевод, возвращается к тексту. Мысль потеряна, чтение превращается в мучение.
2. **«Кладбище слов» (Passive Word Graveyard)**: 2. **«Кладбище слов» (Passive Word Graveyard)**:
Если слово записывается в блокнот или текстовый файл, оно никогда не повторяется по правильной кривой памяти. Пассивный список из 100 слов бесполезен: через неделю мозг помнит максимум 10–15% из них. Если слово просто выписывается в блокнот или заметки на телефоне, оно никогда не повторяется по научной кривой памяти. Пассивный список из 100 слов бесполезен: через пару недель мозг забывает до 85% записанного.
3. **Изолированный перевод без доменного контекста**: 3. **Изолированный перевод vs. Живая речь**:
В сетевых технологиях слова имеют специфические значения: В английском языке изолированное слово часто вводит в заблуждение:
- *Stale* (не «чёрствый», а «устаревший/неактуальный маршрут»); - Фразовые глаголы полностью меняют смысл в связке с предлогами (*give up*, *turn down*, *look forward to*);
- *Drop* (не просто «уронить», а «отбросить пакет»); - Идиомы не переводятся дословно (*hit the nail on the head*, *piece of cake*);
- *Graceful* (не «изящный», а «корректный/штатный останов сервиса без потери данных»); - У каждого слова есть свои «партнёры» (collocations) — нельзя сказать *make a photo*, говорят *take a photo*.
- *Flapping* (не «хлопанье крыльями», а «нестабильное падение и подъем интерфейса/маршрута»).
--- ---
## 2. Пять золотых правил методики ## 2. Пять золотых правил преподавательской методики
### Правило 1. Лексический подход и коллокации (The Lexical Approach) ### Правило 1. Лексический подход (The Lexical Approach)
*Мозг думает не отдельными словами, а блоками (chunks).* *Мозг думает не отдельными изолированными словами, а речевыми блоками (chunks).*
- Не учите изолированное `overhead` — учите `encapsulation overhead`. - Не учите голое `reluctant` — учите связку `be reluctant to do something` (неохотно делать что-то).
- Не учите изолированное `handshake` — учите `three-way handshake`. - Не учите голое `look` — учите `look forward to hearing from you`.
- Не учите изолированное `bottleneck` — учите `throughput bottleneck`. - Не учите голое `conclusion` — учите `jump to conclusions` (делать поспешные выводы).
В сервисе сохраняется не просто голое слово, а **готовое терминологическое словосочетание**. Сервис проектируется так, чтобы фиксировать как отдельные слова, так и целые **устойчивые обороты**.
### Правило 2. Контекстный якорь (Contextual Anchoring) ### Правило 2. Контекстный якорь (Contextual Anchoring)
*Память работает через ассоциации.* *Человеческая память держится за сюжет и ассоциации.*
Когда вы сохраняете слово вместе с реальным предложением из статьи или RFC: Когда вы сохраняете слово вместе с реальным предложением:
> *"The router drops the packet due to TTL expiration."* > *"He was reluctant to admit his mistake during the meeting."*
Ваш мозг связывает слово `drop` с конкретным сетевым процессом (TTL, router, packet). При повторении вы мгновенно вспоминаете живую ситуацию, а не абстрактный перевод. Мозг связывает слово `reluctant` с конкретным жизненным образом (митинг, ошибка, признание). При повторении вы мгновенно вспоминаете живую ситуацию, а не сухой перевод из словаря.
### Правило 3. Аудиальный и фонетический якорь (Phonetic Anchor) ### Правило 3. Аудиальный и фонетический якорь (Phonetic Anchor)
*Нельзя знать слово «только глазами».* *Нельзя знать слово «только глазами».*
Инженеры часто произносят термины неправильно: Если не слышать, как слово звучит, мозг читает его «внутренним голосом» с ошибками. В английском языке орфография исторически не совпадает с произношением (*subtle* -> `/ˈsʌtəl/`, *thorough* -> `/ˈθʌr.ə/`, *receipt* -> `/rɪˈsiːt/`).
- *route* — `/ruːt/` или `/raʊt/` Сервис сразу предоставляет:
- *cache* — `/kæʃ/` (а не «кеш-е») - **Нативную аудио-озвучку** (диктор US / UK);
- *queue* — `/kjuː/` - **Международную фонетическую транскрипцию IPA**;
- *latency* — `/ˈleɪ.tən.si/` - Понимание на слух исключает ступор при просмотре видео и живом общении.
- *chassis* — `/ˈʃæsi/` (а не «шассис»)
- *tuple* — `/ˈtʌpəl/` (а не «тьюпл»)
Сервис сразу предоставляет **нативную аудио-озвучку** и **международную транскрипцию IPA**. Это формирует уверенность для общения с зарубежными коллегами и прохождения технических собеседований.
### Правило 4. Интервальные повторения (SRS / SM-2) ### Правило 4. Интервальные повторения (SRS / SM-2)
*Кривая забывания Германа Эббингауза неумолима: за первые 24 часа стирается до 70% новой информации.* *Кривая забывания Германа Эббингауза: за первые 24 часа мозг стирает до 70% новой информации, если не произошло повторения.*
Алгоритм интервальных повторений (SuperMemo SM-2, лежащий в основе Anki) показывает карточку **ровно в тот момент, когда мозг готов её забыть**: Алгоритм интервальных повторений (SuperMemo SM-2, лежащий в основе Anki) напоминает карточку **ровно в тот момент, когда мозг готов её забыть**:
- День 1 (первое знакомство) - День 1 (первое знакомство);
- День 2 (+1 день) - День 2 (+1 день);
- День 5 (+3 дня) - День 5 (+3 дня);
- День 12 (+7 дней) - День 12 (+7 дней);
- День 28 (+16 дней) - День 28 (+16 дней);
- День 65 (+37 дней) - День 65 (+37 дней)...
**Результат**: 5–7 минут повторений в день гарантируют 95%+ долговременного удержания без переутомления и «зубрёжки». **Результат**: 5–7 минут повторений в день гарантируют переход 95%+ слов в долговременную активную память.
### Правило 5. Активное припоминание (Active Recall) вместо иллюзии знания ### Правило 5. Активное припоминание (Active Recall)
Просто перечитывать список слов — это иллюзия («Да, я вроде это знаю»). Настоящее запоминание происходит только тогда, когда мозгу приходится **напрячься и вспомнить**: Пассивное перечитывание списка слов создаёт иллюзию знания («О, да, я это видел»). Настоящее обучение происходит только тогда, когда память совершает усилие по извлечению:
- **Прямая карточка**: видишь английский термин + слушаешь аудио $\rightarrow$ вспоминаешь значение и контекст. - **Прямая карточка**: видишь английское слово + слышишь аудио $\rightarrow$ вспоминаешь значение и контекст;
- **Обратная карточка**: видишь русский технический смысл $\rightarrow$ формулируешь правильный английский термин. - **Обратная карточка**: видишь русский смысл $\rightarrow$ формулируешь правильное английское выражение;
- **Cloze Deletion (Пропуски)**: *"The router [_____] the packet due to TTL expiration"* $\rightarrow$ подставляешь пропущенное слово. - **Пропуски (Cloze Deletion)**: *"He was [_____] to admit his mistake."* $\rightarrow$ подставляешь нужное слово.
--- ---
## 3. Рекомендации студенту по ежедневной практике ## 3. Рекомендации по ежедневным занятиям
1. **Не сохраняйте всё подряд**: 1. **Оптимальная дозировка**: от 5 до 12 новых качественных карточек в день. Лучше 7 слов каждый день, чем 100 слов раз в месяц.
Сохраняйте только те слова и обороты, которые реально мешают пониманию мысли автора или встречаются вам повторно. Оптимальный темп — от 5 до 15 новых качественных карточек в день. 2. **Всегда фиксируйте контекст**: увидели незнакомое слово в тексте — скопируйте всё предложение целиком.
2. **Всегда вставляйте предложение-источник**: 3. **Разделяйте тегами**: `#general` (общий), `#phrasal-verb` (фразовые глаголы), `#idiom` (идиомы), `#work` (работа), `#tech` (технический язык).
В поле ввода достаточно скопировать предложение целиком или слово + предложение. 4. **Утренний / вечерний спринт (3-5 минут)**: закрывайте карточки дня по алгоритму повторений без пропусков.
3. **Утренний / вечерний спринт (3-5 минут)**:
Открывайте сервис с телефона или рабочего компьютера раз в день для прохождения очереди карточек, готовых к повторению по алгоритму SRS.
+89 -77
View File
@@ -1,18 +1,28 @@
# План развития проекта Notes (notes.qpid.pro) # План развития проекта Notes (notes.qpid.pro)
> **Принцип проектирования**: *«Работает как автомат Калашникова»* — сверхнадёжно, мгновенно, без раздутых зависимостей и необходимости постоянного ручного обслуживания. > **Принцип проектирования**: *«Работает как автомат Калашникова»* — сверхнадёжно, мгновенно, защищено для публичного интернета, без раздутых зависимостей и постоянного ручного обслуживания.
--- ---
## 1. Архитектура и стек решений ## 1. Архитектура и защита системы
Сервис разворачивается на публичном сервере с белым IP (`31.77.203.213`). Вся система проектируется с учётом сетевой безопасности и изоляции личных данных.
``` ```
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ notes.qpid.pro │ │ notes.qpid.pro │
│ (Nginx Reverse Proxy + Let's Encrypt) │ │ Nginx (HTTPS / Let's Encrypt / Security Headers) │
└──────────────────────────────┬──────────────────────────────┘ └──────────────────────────────┬──────────────────────────────┘
│ proxy_pass :8002 │ proxy_pass :8002
┌──────────────────────────────▼──────────────────────────────┐ ┌──────────────────────────────▼──────────────────────────────┐
│ Слой безопасности (Auth) │
│ • Аутентификация: сессионные токены (HTTP-only cookies) │
│ • Хэширование паролей: PBKDF2-HMAC-SHA256 (соль + 100k) │
│ • Защита от перебора (Rate Limiter: макс 5 попыток/мин) │
│ • Закрытый доступ: все эндпоинты требуют авторизации │
└──────────────────────────────┬──────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────┐
│ Backend: Python 3.12 │ │ Backend: Python 3.12 │
│ FastAPI / Uvicorn + SQLite (WAL mode) + Dictionary APIs │ │ FastAPI / Uvicorn + SQLite (WAL mode) + Dictionary APIs │
└──────────────────────────────┬──────────────────────────────┘ └──────────────────────────────┬──────────────────────────────┘
@@ -21,104 +31,106 @@
▼ ▼ ▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐ ┌─────────────────────────────┐ ┌─────────────────────────────┐
│ Внешние открытые API │ │ Локальная БД SQLite │ │ Внешние открытые API │ │ Локальная БД SQLite │
│ • Free Dictionary API │ │ • vocabulary_cards │ │ • Free Dictionary API │ │ • users (аккаунт, пароль) │
│ (IPA, audio, definitions) │ │ • search_history │ │ (IPA, audio, definitions) │ │ • vocabulary_cards │
│ • MyMemory / Context Trans. │ │ • srs_reviews (SM-2) │ │ • MyMemory / Translation │ │ • sessions (активные входы) │
│ (перевод на русский) │ │ • tags & categories │ │ (русский перевод фразы) │ │ • tags & categories │
└─────────────────────────────┘ └─────────────────────────────┘ └─────────────────────────────┘ └─────────────────────────────┘
``` ```
### Выбор технологий: ### Выбор технологий:
- **Backend**: Python 3.12 + FastAPI (асинхронный, лёгкий, типизированный, мгновенный запуск). - **Безопасность**: Защищённые сессии (Signed HTTP-only cookie `SameSite=Lax`, `Secure`). Защита от CSRF, XSS и брутфорс-атак через встроенный rate limiter.
- **База данных**: SQLite в режиме `WAL` (Write-Ahead Logging). Полная транзакционность, нулевые затраты на администрирование, бэкап копированием одного файла. - **Backend**: Python 3.12 + FastAPI (асинхронный, легковесный, моментальный старт).
- **Frontend**: Vanilla ES6+ / Modern CSS / HTML5. Без тяжелых бандлеров и node_modules. Адаптивный мобильный интерфейс (PWA), оффлайн-кэш на LocalStorage/CacheStorage, поддержка хоткеев. - **База данных**: SQLite в режиме `WAL` (Write-Ahead Logging). Идеальная транзакционная надежность, автономность, бэкап в один файл.
- **Frontend**: Чистый Vanilla ES6+ / Modern CSS / HTML5. Мгновенная загрузка (< 50 мс), оффлайн-кэш, адаптивность (смартфон + десктоп), поддержка хоткеев.
- **Внешние API (Zero-cost & Open)**: - **Внешние API (Zero-cost & Open)**:
1. *Free Dictionary API* (`api.dictionaryapi.dev`): официальная фонетическая транскрипция IPA, аудио-файлы нативного произношения (US/UK), английские определения и примеры. 1. *Free Dictionary API* (`api.dictionaryapi.dev`): фонетическая транскрипция IPA, аудио-произношение нативных дикторов (US/UK), части речи, толкования и примеры.
2. *MyMemory Translated API*: качественный перевод фраз и предложений на русский язык. 2. *MyMemory Translation API*: литературный перевод фраз, идиом и предложений на русский язык.
--- ---
## 2. Этапы реализации (Roadmap) ## 2. Этапы реализации (Roadmap)
### Этап 1: Ядро системы (MVP) — Быстрый поиск, перевод и фиксация ### Этап 1 (Текущая итерация): Безопасное ядро (MVP) — Общий английский, перевод и фиксация
*Цель: закрыть боль переключения контекста при чтении документации.* *Цель: создать защищённый, сверхбыстрый и надёжный персональный словарь для повседневного и профессионального английского языка.*
- [ ] **1.1. Базовый интерфейс ввода**: - [ ] **1.1. Модуль защиты и авторизации**:
- Строка поиска в фокусе при открытии страницы. - Страница авторизации (минималистичный дизайн, вход по логину и паролю).
- Защита всех API эндпоинтов: неавторизованные запросы блокируются (`401 Unauthorized`).
- Надежное хранение паролей в SQLite (`PBKDF2-HMAC-SHA256` с уникальной солью).
- Rate Limiter на эндпоинт `/api/login` (не более 5 неудачных попыток в минуту с IP).
- Сессии через зашифрованные `HttpOnly` cookie.
- Кнопка «Выйти из аккаунта» в шапке сервиса.
- [ ] **1.2. Быстрый поиск и каскадный перевод (General & Idiomatic English)**:
- Строка поиска в фокусе сразу при открытии страницы.
- Поддержка любых форм языка:
- Отдельные слова (существительные, глаголы, прилагательные);
- Фразовые глаголы (*run into*, *figure out*, *call off*);
- Идиомы и разговорные фразы (*once in a blue moon*, *take for granted*);
- Предложения целиком (из книг, сериалов, документации).
- Автоматическое получение:
- Фонетической транскрипции (IPA);
- Нативного аудио-произношения (US/UK);
- Частей речи и толкования на английском;
- Русского перевода.
- Кэширование словарных запросов в локальной базе для мгновенных повторных ответов.
- [ ] **1.3. Контекстное сохранение слова в 1 клик**:
- Горячие клавиши: - Горячие клавиши:
- `Enter` — мгновенный перевод. - `Enter` — мгновенный перевод;
- `Ctrl + Enter` (или `Cmd + Enter`) — сохранить карточку. - `Ctrl + Enter` (или `Cmd + Enter`) — мгновенное сохранение в словарь;
- `Esc` — очистить поле ввода. - `Esc` — очистить ввод;
- `Ctrl + P` (или пробел на карточке) — воспроизвести аудио-произношение. - `Ctrl + P` или клик на динамик — прослушать произношение.
- [ ] **1.2. Каскадный переводчик (Backend API)**: - Возможность подправить перевод перед сохранением под свой контекст.
- Автоопределение ввода: отдельное слово или предложение/фраза. - Поле для ввода контекстного предложения (где встретилось слово/выражение).
- Запрос словарных данных (транскрипция, аудио mp3, толкование, русский перевод). - Выбор/ввод тегов (`#general`, `#phrasal-verb`, `#idiom`, `#daily`, `#networking`).
- Кэширование запросов в локальной SQLite для мгновенного повторного показа. - [ ] **1.4. Журнал личного словаря (History & Words List)**:
- [ ] **1.3. Контекстное сохранение**: - Хронологическая лента всех сохраненных слов с датой и временем.
- Поле для ввода контекстного предложения (откуда взято слово). - Живой поиск по английским словам, русскому переводу и контексту.
- Быстрый выбор тега (по умолчанию `#networking`, `#general`, `#protocol`). - Фильтр по тегам в один клик.
- Возможность подправить перевод перед сохранением. - Воспроизведение аудио прямо из списка.
- [ ] **1.4. Журнал истории и база слов**: - Удаление / редактирование карточек.
- Хронологическая лента сохраненных слов с датой и временем. - [ ] **1.5. Инфраструктурное развертывание**:
- Поиск и фильтрация по сохранённым словам. - Конфигурация Nginx для `notes.qpid.pro` с proxy на бэкенд (`127.0.0.1:8002`).
- Мгновенное удаление / редактирование. - Systemd-сервис для автозапуска и перезапуска при сбоях.
--- ---
### Этап 2: Организация, теги и экспорт ### Этап 2: Организация, теги, экспорт и PWA
*Цель: структурирование профессионального глоссария инженера.* *Цель: гибкое управление растущим словарным запасом и удобство на мобильных.*
- [ ] **2.1. Система тегов и коллекций**: - [ ] **2.1. Расширенная организация**:
- Тегирование по направлениям: `#routing`, `#switching`, `#security`, `#bgp`, `#linux-kernel`, `#troubleshooting`. - Коллекции и папки (например, «Разговорный», «Работа», «Книги/Сериалы», «Сети/IT»).
- Фильтрация в один клик. - Быстрое массовое тегирование.
- [ ] **2.2. Экспорт данных**: - [ ] **2.2. Экспорт данных**:
- Экспорт в CSV / Markdown. - Экспорт базы в CSV / JSON / Markdown.
- Экспорт готовой колоды для Anki (`.csv` / `.apkg`) с аудио и контекстом. - Экспорт в колоду Anki (`.apkg` / `.csv`) с аудио и контекстными предложениями.
- Резервное копирование базы данных в 1 клик. - Резервное копирование SQLite в один клик.
- [ ] **2.3. PWA (Progressive Web App)**: - [ ] **2.3. PWA (Progressive Web App)**:
- Возможность установки на смартфон / десктоп как самостоятельное приложение. - Установка на экран смартфона (iOS / Android) как нативное приложение.
- Работа со списком слов в режиме оффлайн. - Оффлайн-доступ к сохранённым словам.
--- ---
### Этап 3: Встроенный тренажер интервальных повторений (SRS / SM-2) ### Этап 3: Встроенный тренажер интервальных повторений (SRS / SM-2)
*Цель: гарантированное запоминание без необходимости устанавливать сторонние программы.* *Цель: перевод слов из пассивного словаря в активную долговременную память.*
- [ ] **3.1. Движок алгоритма SuperMemo-2 (SM-2)**: - [ ] **3.1. Движок SuperMemo-2 (SM-2)**:
- Расчет фактора легкости (Ease Factor, $EF$). - Расчет интервалов забывания Эббингауза: `Again`, `Hard`, `Good`, `Easy`.
- Очередь повторений на сегодня: карточки со статусом `Due`. - Очередь на сегодня: карточки, готовые к повторению.
- 4 кнопки оценки: - [ ] **3.2. Режим Flashcards**:
- `Again` (< 10 минут) - Карточка En $\rightarrow$ Ru и Ru $\rightarrow$ En с озвучкой.
- `Hard` (+12 часов) - [ ] **3.3. Режим Cloze Deletion (Пропуски)**:
- `Good` (+1 день $\rightarrow$ +3 дня $\rightarrow$ +7 дней...) - Заполнение пропущенного слова прямо в живом предложении.
- `Easy` (+4 дня $\rightarrow$ геометрическая прогрессия) - [ ] **3.4. Аудио-тренажёр (Dictation)**:
- [ ] **3.2. Режим карточек (Flashcards)**: - Слушаем слово $\rightarrow$ печатаем правильный спеллинг.
- Лицевая сторона: английский термин + аудио.
- Оборотная сторона: русский перевод + контекстное предложение + определение.
- [ ] **3.3. Режим Cloze Deletion (Вставка пропущенного слова)**:
- Мозг тренируется вспоминать термин прямо в техническом предложении:
> *"The switch [ ... ] the packet if the VLAN tag is invalid."*
- [ ] **3.4. Аудио-диктант (Active Spelling)**:
- Сервис проигрывает произношение термина, пользователь печатает его на слух.
--- ---
### Этап 4: Профессиональный инструментарий сетевого инженера ### Этап 4: Интеллектуальный помощник и аналитика
*Цель: превратить сервис в персонального ментора по сетевому английскому.* *Цель: отслеживание динамики и поддержка мотивации.*
- [ ] **4.1. Встроенный сетевой глоссарий и акронимы**: - [ ] **4.1. Статистика и Daily Streak**:
- База популярных сетевых акронимов и аббревиатур (MTU, MSS, BFD, ECMP, CIDR, STP, SYN/ACK) с расшифровкой и техническим смыслом. - Учёт непрерывных дней занятий.
- [ ] **4.2. Статистика и аналитика прогресса**: - График роста активного словарного запаса по уровням (A1-C1).
- Счётчик дней непрерывного обучения (Daily Streak). - [ ] **4.2. Быстрый захват из браузера**:
- График объёма активного словарного запаса. - Букмарклет для выделения текста на любой странице и отправки в словарь.
- Коэффициент удержания памяти (% успешно вспомненных слов).
- [ ] **4.3. Быстрый захват из браузера**:
- Букмарклет (Bookmarklet) для выделения слова на любой веб-странице документации и мгновенной отправки в `notes.qpid.pro`.
---
## 3. Критерии качества («Автомат Калашникова»)
1. **Скорость**: Открытие страницы $< 100$ мс, поиск $< 300$ мс.
2. **Отказоустойчивость**: Если внешний API словаря недоступен, сервис предлагает ручной ввод без блокировки интерфейса.
3. **Безопасность данных**: Данные хранятся в надежной локальной SQLite, регулярный автоматический snapshot базы.
4. **Удобство**: Управление полностью доступно с клавиатуры (без необходимости тянуться к мыши).
+18 -31
View File
@@ -1,57 +1,44 @@
# Notes (notes.qpid.pro) # Notes (notes.qpid.pro)
> **Персональный тренажёр и словарь технического английского языка для сетевого инженера.** > **Защищённый персональный тренажёр и словарь английского языка.**
> Создан для быстрого снятия языкового барьера при чтении RFC, документации Cisco/Juniper, Linux networking и технических статей. > Создан для быстрого и надёжного расширения словарного запаса (общий английский, фразовые глаголы, идиомы, профессиональные термины) без отвлечения от чтения и просмотра контента.
--- ---
## 🎯 Миссия проекта ## 🎯 Концепция и методика
При чтении технической документации постоянные переключения на переводчик выбивают из мысли, а ручная запись слов в блокнот превращается в «кладбище информации». Чтение статей, книг или просмотр видео на английском часто тормозится незнакомыми словами и выражениями. Обычный переводчик даёт мгновенный ответ, но слово сразу забывается. Ручные списки превращаются в «кладбище информации».
Проект решает эту проблему по принципу **«автомата Калашникова»**: Проект решает эту проблему по принципу **«автомата Калашникова»**:
1. **Мгновенный поиск и перевод** без отвлечения от чтения. 1. **Безопасность**: сервис работает на белом IP, защищён авторизацией (сессии, хэширование паролей, защита от брутфорса).
2. **Контекстный якорь**: сохранение слова вместе с живым предложением из документации. 2. **Мгновенный поиск и перевод**: фокус на строке ввода, каскадный перевод (словарная статья + толкование + русский перевод).
3. **Фонетическое закрепление**: нативное произношение (US/UK) и транскрипция IPA, чтобы говорить на митингах уверенно. 3. **Контекстный якорь**: сохранение слова вместе с живым предложением (где встретилось выражение).
4. **Интервальные повторения (SRS / SM-2)**: умная система карточек (как в Anki), напоминая слова ровно тогда, когда мозг готов их забыть. 4. **Фонетическое закрепление**: нативное аудио-произношение (US/UK) и транскрипция IPA.
5. **Интервальные повторения (SRS / SM-2)**: встроенные карточки для перевода слов в долговременную память.
--- ---
## 📂 Документация проекта ## 📂 Документация проекта
- 📋 [**План функционала и архитектура (PLAN.md)**](file:///home/kopri/notes.qpid.pro/PLAN.md) — детальный роадмап от базового MVP до умных тренажёров памяти. - 📋 [**План функционала и архитектура (PLAN.md)**](file:///home/kopri/notes.qpid.pro/PLAN.md) — детальный план итераций: от защищённого MVP до умных интервальных тренажёров.
- 🎓 [**Методология и педагогика (PEDAGOGY.md)**](file:///home/kopri/notes.qpid.pro/PEDAGOGY.md) — руководство по эффективному изучению сетевого английского: почему изолированные слова не работают, сила лексических связок (chunks), алгоритм SM-2. - 🎓 [**Методология и педагогика (PEDAGOGY.md)**](file:///home/kopri/notes.qpid.pro/PEDAGOGY.md) — методические правила эффективного освоения языка: лексические связки (chunks), контекст, фонетика, кривая забывания Эббингауза.
--- ---
## 🛠 Технический стек ## 🛠 Технический стек
- **Backend**: Python 3.12 (FastAPI / Uvicorn) - **Backend**: Python 3.12 (FastAPI / Uvicorn)
- **Database**: SQLite (WAL mode, надёжность и быстрые снимки) - **Database**: SQLite (WAL mode — надёжность, автономность, бэкап в один файл)
- **Frontend**: Vanilla HTML5 / Modern CSS / JavaScript (PWA, мгновенная загрузка, поддержка горячих клавиш) - **Безопасность**: Защищённые сессии (HttpOnly cookies), PBKDF2-HMAC-SHA256, Rate Limiting
- **Frontend**: Vanilla HTML5 / Modern CSS / ES6+ JavaScript (PWA, горячие клавиши, мгновенный отклик)
- **Внешние API**: Free Dictionary API (IPA + audio), MyMemory Translation API - **Внешние API**: Free Dictionary API (IPA + audio), MyMemory Translation API
- **Веб-сервер**: Nginx Reverse Proxy + SSL Let's Encrypt (`notes.qpid.pro`) - **Веб-сервер**: Nginx Reverse Proxy + SSL Let's Encrypt (`notes.qpid.pro`)
- **Репозиторий проекта**: [Gitea (ai.qpid.pro/gitea/Antigravity/notes-qpid-pro)](https://ai.qpid.pro/gitea/Antigravity/notes-qpid-pro) - **Репозиторий проекта**: [Gitea (ai.qpid.pro/gitea/Antigravity/notes-qpid-pro)](https://ai.qpid.pro/gitea/Antigravity/notes-qpid-pro)
--- ---
## 🚀 Быстрый старт (Разработка) ## 🌐 Информация об окружении
```bash
# Клонирование / переход в каталог проекта:
cd /home/kopri/notes.qpid.pro
# Создание виртуального окружения Python:
python3 -m venv venv
source venv/bin/activate
# Запуск будет доступен после развертывания Фазы 1
```
---
## 🌐 Информация о сервере и инфраструктуре
- **URL сервиса**: [https://notes.qpid.pro](https://notes.qpid.pro) - **URL сервиса**: [https://notes.qpid.pro](https://notes.qpid.pro)
- **IP-адрес сервера**: `31.77.203.213` - **IP сервера**: `31.77.203.213`
- **Каталог на сервере**: `/home/kopri/notes.qpid.pro` - **Каталог проекта**: [`/home/kopri/notes.qpid.pro`](file:///home/kopri/notes.qpid.pro)
- **Git Remote**: `http://127.0.0.1:3000/Antigravity/notes-qpid-pro.git` (зеркалируется в Gitea) - **Git Remote**: `http://127.0.0.1:3000/Antigravity/notes-qpid-pro.git`