- Раскладка docs/ приведена к канону 2: заведены passport/architecture/ database/security/review и research; docs/specs, drafts, backlog, review/ и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи, 6 целей, слаги на английский). - Нарративы specs удалены как дубли openspec-спек после поимённой сверки; остаток заведён задачами (редактор маппинга ревью, крайние случаи именования), отказ от сущности title промоутнут в ADR. - Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon вместо er-schema.
6.6 KiB
6.6 KiB
Паспорт проекта
Зачем это и для кого. architecture.md отвечает «как устроено», tasks/PLAN.md — «в каком порядке», паспорт — «зачем и для кого».
Цель
Сократить путь «нашёл раздачу → смотрю на телевизоре» до одного действия: кинуть торрент с парой слов контекста и получить фильм или сериал в библиотеке Jellyfin, без ручного переименования и без каталога индексаторов.
Потребители — список закрытый: он определяет, что считать нужным, а что интересным.
| Кто | Что ему нужно от нас |
|---|---|
| Владелец медиасервера (единственный оператор) | одна точка входа для magnet/.torrent + контекста; когда система не уверена — чтобы позвали, а не замяли молча; чтобы ошибку можно было откатить |
| Домашние зрители (через Jellyfin, о jellybit не знают) | правильные названия, годы, сезоны и серии — иначе Jellyfin подтянет чужие метаданные |
| Jellyfin | файлы, разложенные по его конвенциям имён, и сигнал пересканировать библиотеку, когда они изменились |
Цель достигнута, когда:
- русский контент и аниме раскладываются так же буднично, как англоязычные — это ровно то, на чём разваливается arr-стек;
- типовое добавление не требует ни одного ручного действия после отправки торрента, а нетиповое требует ровно одного — подтверждения в ревью;
- ошибочная раскладка откатывается одной кнопкой, не задев раздачу.
Что целью не является
Граница домена. По ней архитектурный проход судит, не перенесено ли понятие через границу.
- Не индексатор и не поисковик по трекерам (роль prowlarr). Раздачу находит человек и приносит сам — вместе с контекстом, который он и так видит глазами.
- Не менеджер качества релизов (правила radarr/sonarr). Версии, репаки и апгрейд 1080p → 2160p не отслеживаем; коллизия уходит в ревью, а не в политику качества.
- Не подписка на выходящие серии. Никакого monitoring: система не ищет ничего сама и не добавляет загрузок по своей инициативе.
- Не торрент-клиент. Качает qBittorrent, мы им управляем и не подменяем его функциональность.
- Не медиасервер. Обложки, метаданные, учёт просмотренного и сам просмотр — забота Jellyfin. Мы отвечаем только за то, чтобы файл лежал там, где Jellyfin его правильно опознает.
- Не хранилище медиа. Данные живут в раздаче; мы создаём только хардлинки и не владеем ни одним байтом контента.
- Не мультипользовательский сервис. Контур один, оператор один; разграничение доступа сводится к allowlist Telegram (см. security.md).
Типовые сценарии
- Фильм через Telegram. Переслать боту сообщение торрент-бота → magnet и текст сообщения становятся источником и контекстом → загрузка → распознавание → при подтверждённом матче в метабазе авто-раскладка → пинг «готово».
- Сезон сериала. То же, но файлов много; они раскладываются сериями, а второй сезон ложится в ту же папку тайтла, что и первый.
- Русский фильм, которого нет в базе. Уходит в ревью: подсказка текстом и перераспознавание, выбор источника совпадения из списка, ручной ввод id или URL записи, предпросмотр целевых путей, «Применить».
- Ошиблись с привязкой. Undo снимает наши ссылки (раздача цела) → «Привязать заново» → правка в ревью → повторное применение.
- Раздачу или файлы удалили руками. Фоновая сверка констатирует рассинхрон
(
target_missing/orphaned/deleted), не теряя последнюю копию данных, и лечится сама, если реальность вернулась.
Референсы
Где смотреть prior art, когда упёрлись.
- Jellyfin: Movies и Shows — целевые конвенции имён, источник истины по формату, в который раскладываем.
- arr-стек (radarr/sonarr/prowlarr) — прежде всего как каталог того, чего мы намеренно не берём; полезен по крайним случаям именования.
- umbar (
/home/av/projects/private/umbar) — соседний проект того же хозяйства: форма деплоя, раскладка/srv, стиль «минимум компонентов».