- переписал 21 хук: обрезанные первые абзацы и пустые «ИДЕЯ» → боль/остаток - убрал дублирующее «ИДЕЯ (…)» в началах тел 5 идей (тип кодирует префикс [idea])
13 KiB
Беклог
Единый список будущих задач по проекту: то, что уже решили сделать, и идеи,
которые ещё надо обдумать. Это источник истины по беклогу — одна задача = один
файл в этом каталоге. Не план реализации и не спецификация: принятое и
реализованное переезжает в docs/specs/docs/adr, а сам
пункт беклога удаляется.
Приоритет — грубая оценка «ценность / стоимость», не обязательство к порядку.
Спекулятивные пункты (ещё без решения «делаем») помечены префиксом [idea] в
названии — их сперва надо проработать. Пункты, помеченные (ревью 2026-07-08),
пришли из тщательного ревью ingest/worker/жизненного цикла (см. общий тег в теле).
Tududi (проект jellybit) больше не держит беклог — он служит только
инбоксом сырых идей. Прежде чем идея станет задачей, её оформляют файлом здесь.
Высокий
- Раздачи с докачиванием (merge при повторном добавлении) — повторная заливка сериала целиком должна доложить недостающие эпизоды merge-раскладкой, не трогая существующие ссылки — блокирует типовой сценарий свежих сериалов
- Ретеншн и очистка БД — терминальные задачи и сырые ответы LLM копятся вечно — без авточистки список загрузок и БД деградируют по мере эксплуатации
- Eval-харнес распознавания (корпус кейсов + метрика точности) — смена модели или правка промпта распознавания сейчас вслепую — нет корпуса кейсов и метрики точности, регрессии не видно
Средний
- Словарь единого языка (ubiquitous language) — наименования домена расходятся между спеками, UI и кодом — нет единого глоссария (на нём же стоит агент-ревьювер наименований)
- Агенты-ревьюверы качества (наименования, архитектура, конвенции, стиль) — Конвейер
review-pipelineпереработан (гейт, generative-проходы, триаж); осталась калибровка проходов и ревьювер наименований (ждёт словарь единого языка) - [idea] Сила совпадения кандидата и пересмотр распознавания/матчинга — у кандидата метабазы нет метрики силы совпадения — список кандидатов на ревью нечем отсортировать по уверенности (сперва проработать процесс матчинга)
- История переходов загрузки — хранится только текущий статус загрузки — разбор «как сюда попали» идёт по логам сервера, нет таблицы истории переходов
- Привязка уведомлений к источнику в ботах (мульти-бот) — пинги и ревью должен получать автор загрузки в своём транспорте — нет привязки загрузки к источнику/отправителю (нужно для мульти-бота)
- [idea] Сложные сериальные раздачи: все сезоны разом, паки, спецраскладки — сложные раздачи (все сезоны разом, паки, смешанная нумерация) целостно не проработаны — распознавание/ревью/раскладка заточены под один сезон
- Аниме с абсолютной нумерацией — аниме со сквозной нумерацией (#137) не раскладывается в SxxEyy, который ждёт Jellyfin — нужен пересчёт абсолютной нумерации
- Бэкап SQLite — architecture требует бекапить data-том, но стратегия не описана — сбой или редеплой стирают всё in-flight состояние (проще, пока БД маленькая)
- Глубокий healthcheck и статус зависимостей — /healthz проверяет только сам сервис — недоступность qBittorrent/LLM/метабазы видна лишь по застрявшим задачам, нет readiness и бейджа в UI
- НФТ: масштаб до 100 одновременных загрузок (потолок — 1000) — Зафиксировать в НФТ ориентир 100/1000 загрузок + аудит узких мест (SQLite, воркер, поллинг)
- Обучение на правках человека (few-shot из прошлых ревью) — правки человека (матч/тип/нумерация) не переиспользуются — few-shot из прошлых ревью поднял бы точность на «своих» трекерах без смены модели
- Confidence-гейт авто-раскладки: узаконить в спеке + сделать выключаемым (дефолт 0.7) — Решено (B): гейт оставляем как доп. проверку на ревью — выключаемый порог, дефолт 0.85→0.7, записать в спеку
- Внешние субтитры: пары VobSub и языковой суффикс — Привязка субтитр→серия уже работает; остались пары VobSub .idx+.sub и потеря Lang/Flags
addReqне пересобирается из свежегоsource_typeпередAdd(окно namer'а) — При апгрейде magnet→.torrent в окне namer'а добавится magnet из устаревшего снимка; самоисцеляется через magnet_timeout→failed→Retry (аудит 2026-07-17)
Низкий
- Ревью уведомлений в Telegram (аудит текстов и формата) — зонтичный проход по всем текстам бота: полнота карточек, единый язык, оформление; порождает под-задачи
- Мгновенные обновления через SSE — живые обновления на htmx-поллинге дают задержку и холостые запросы — SSE убрал бы то и другое (поллинг работает, поэтому улучшение, не блокер)
- Шум ERROR фоновых циклов при недоступной зависимости — Остаток задачи логирования: ext.* ERROR-шторм при недоступном qBittorrent + эскалация устойчивого сбоя тика (ревью Fable)
- Версии/качество одного тайтла (репаки, апгрейд 1080p → 2160p) — По калибровке болей (2026-07-02) — не боль, из приоритета выпало
- [idea] Многоступенчатая верификация привязки — несколько проходов распознавания с консенсусом подняли бы точность ценой стоимости/латентности — проработать, когда включать и как мерджить расхождения
- Согласование канона нумерации серий с провайдером тега — Косметика/редкость: порядок просмотра ок, но у тайтлов со спорным порядком (Бибоп) Jellyfin подтягивает не те подписи серий, если канон файлов ≠ дефолтный порядок провайдера тега
- Фетч .torrent по URL — остаток «единого окна» — magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
- Раздачи-копии диска (DVD/BluRay: VIDEO_TS/BDMV) — раздача-образ диска (VIDEO_TS/BDMV) сейчас разбирается пофайлово вместо раскладки каталога целиком — редкий, но реальный случай
- Проверка свободного места перед copy-fallback — copy-fallback при невозможности хардлинка может упереться в переполненный диск посреди раскладки — нет проверки места до копирования
- Кэш метабаз (и опционально LLM) — повторные и ретраящиеся прогоны бьют TMDB/TVDB/TVMaze одним запросом — кэш с TTL сэкономил бы лимиты и ускорил «Распознать заново»
- [idea] guessit как сервис-спутник — go-ptn слабее питоновского guessit — если точности пред-парса не хватит, завернуть guessit в сервис-спутник рядом с бинарём
- [idea] Завершение загрузки через webhook — завершение сейчас ловим поллингом qBittorrent — webhook реагировал бы быстрее, но связывает нас с его конфигом (решим по опыту эксплуатации)
- Авторизация веб-UI (на будущее) — для v1 решено без авторизации (доверенная LAN, опц. allowlist подсетей) — задел на случай, если понадобится защита
- Современный Web-UI как PWA — текущий server-rendered UI функционален — PWA (устанавливаемое, удобное с телефона) это улучшение большого объёма, не блокер
- Идентичность инфохэшей: split v1/v2 одного торрента + крафт-магнет отравляет владение (F4, F5) — split v1/v2 идентичность и крафт-магнет отравляют владение инфохэшами (ревью 2026-07-08)
- Нити приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5) — косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации (ревью 2026-07-08)
- Веб-UI зовёт Cancel вместо Dismiss на не-терминальных → теряется
user_dismiss— Функционально ок (Cancel даёт cancelled), но маркер user_dismiss в error_code теряется; расхождение с буквой спеки (аудит 2026-07-17)