Files
jellybit/docs/passport.md
T
av 3bce73fc34 раскладка av-dev повышена с канона 12 до версии 5
- три плагина слились в один `av-dev`: служебные `docs/.docs.json` и
  `tasks/.tasks.json` заменены на `.av-dev.toml` в корне, в гейте переехали пути
  трёх скриптов, вызовы скиллов переименованы по всему репозиторию
- тип задачи `goal` и `ROADMAP.md` упразднены: семь целей закрыты с причинами,
  теги сняты, объявлена стадия `support`
- метка `small`/`medium`/`large` снята из процесса — вместо «Триггеров метки» в
  review.md подраздел «Когда звать глубокое ревью»; следом разобран урожай
  doc-consistency: девять фактов сведены к одному дому
2026-09-02 09:55:28 +03:00

7.1 KiB
Raw Blame History

Паспорт проекта

Зачем это и для кого. architecture.md отвечает «как устроено», openspec/specs/ — «что уже умеет», паспорт — «зачем и для кого».

Цель

Сократить путь «нашёл раздачу → смотрю на телевизоре» до одного действия: кинуть торрент с парой слов контекста и получить фильм или сериал в библиотеке Jellyfin, без ручного переименования и без каталога индексаторов.

Потребители — список закрытый: он определяет, что считать нужным, а что интересным.

Кто Что ему нужно от нас
Владелец медиасервера (единственный оператор) одна точка входа для magnet/.torrent + контекста; когда система не уверена — чтобы позвали, а не замяли молча; чтобы ошибку можно было откатить
Домашние зрители (через Jellyfin, о jellybit не знают) правильные названия, годы, сезоны и серии — иначе Jellyfin подтянет чужие метаданные
Jellyfin файлы, разложенные по его конвенциям имён, и сигнал пересканировать библиотеку, когда они изменились

Цель достигнута, когда:

  • русский контент и аниме раскладываются так же буднично, как англоязычные — это ровно то, на чём разваливается arr-стек;
  • типовое добавление не требует ни одного ручного действия после отправки торрента, а нетиповое требует ровно одного — подтверждения в ревью;
  • ошибочная раскладка откатывается одной кнопкой, не задев раздачу.

Что целью не является

Граница домена. По ней архитектурный проход судит, не перенесено ли понятие через границу.

  • Не индексатор и не поисковик по трекерам (роль prowlarr). Раздачу находит человек и приносит сам — вместе с контекстом, который он и так видит глазами.
  • Не менеджер качества релизов (правила radarr/sonarr). Версии, репаки и апгрейд 1080p → 2160p не отслеживаем; коллизия уходит в ревью, а не в политику качества.
  • Не подписка на выходящие серии. Никакого monitoring: система не ищет ничего сама и не добавляет загрузок по своей инициативе.
  • Не торрент-клиент. Качает qBittorrent, мы им управляем и не подменяем его функциональность.
  • Не медиасервер. Обложки, метаданные, учёт просмотренного и сам просмотр — забота Jellyfin. Мы отвечаем только за то, чтобы файл лежал там, где Jellyfin его правильно опознает.
  • Не хранилище медиа. Данные живут в раздаче, мы создаём хардлинки и не дублируем контент намеренно. Два исключения хранилищем нас не делают, но байты у нас появляются: copy-fallback, когда хардлинк невозможен (file-layout), и состояние orphaned, где библиотечная ссылка осталась последней копией (state-reconciliation). Сохранность мы и в этих случаях на себя не берём — резервных копий медиа у нас нет.
  • Не мультипользовательский сервис. Контур один, оператор один; разграничение доступа сводится к allowlist Telegram (см. security.md).

Типовые сценарии

  1. Фильм через Telegram. Переслать боту сообщение торрент-бота → magnet и текст сообщения становятся источником и контекстом → загрузка → распознавание → при подтверждённом матче в метабазе авто-раскладка → пинг «готово».
  2. Сезон сериала. То же, но файлов много; они раскладываются сериями, а второй сезон ложится в ту же папку тайтла, что и первый.
  3. Русский фильм, которого нет в базе. Уходит в ревью: подсказка текстом и перераспознавание, выбор источника совпадения из списка, ручной ввод id или URL записи, предпросмотр целевых путей, «Применить».
  4. Ошиблись с привязкой. Undo снимает наши ссылки (раздача цела) → «Привязать заново» → правка в ревью → повторное применение.
  5. Раздачу или файлы удалили руками. Фоновая сверка констатирует рассинхрон (target_missing/orphaned/deleted), не теряя последнюю копию данных, и лечится сама, если реальность вернулась.

Референсы

Где смотреть prior art, когда упёрлись.

  • Jellyfin: Movies и Shows — целевые конвенции имён, источник истины по формату, в который раскладываем.
  • arr-стек (radarr/sonarr/prowlarr) — прежде всего как каталог того, чего мы намеренно не берём; полезен по крайним случаям именования.
  • umbar (/home/av/projects/private/umbar) — соседний проект того же хозяйства: форма деплоя, раскладка /srv, стиль «минимум компонентов».