feat(reader): добавить парсер RFC из RFC Editor и отдельную группу спецификаций на книжной полке

- Реализован парсер RFC в app/reader.py с авто-загрузкой с rfc-editor.org и datatracker.ietf.org
- Очистка пагинации ([Page X], \x0c) и разбиение спецификаций на структурированные главы (TOC, разделы)
- Эндпоинт POST /api/books/fetch-rfc с защитой от дублирования и поддержкой номеров/URL
- Визуальное разделение на книжной полке через hr-разделитель и блок спецификаций IETF & RFC
- Быстрые пресеты стандартов (HTTP/1.1, HTTP/2, TLS 1.3, OAuth 2.0, WebSocket, QUIC, TCP, DNS)
- Интеграция в интерактивную читалку (перевод по клику, авто-захват контекста, SRS карточки)
- Unit-тесты парсера и API (31/31 passed) и обновление Service Worker кэша
This commit is contained in:
Antigravity committed 2026-10-06 21:46:07 +03:00
1 parent e73d3470b3
commit 82b7a654ca
8 files changed
+877 -66

No files matched your search

+14
View File
@@ -215,6 +215,20 @@ export const api = {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
},
async fetchRfc(query, force = false) {
const resp = await fetch('/api/books/fetch-rfc', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ rfc: query, force: force })
});
if (resp.ok) return await resp.json();
let detail = 'Не удалось загрузить RFC';
try {
const errData = await resp.json();
detail = errData.detail || detail;
} catch (_) {}
throw new Error(detail);
}
},