docs: проект переведён на канон документов версии 4
- каталог задач: PLAN.md → ROADMAP.md с каноническими секциями, все 44 записи получили тип, заголовки приведены к форме своего типа - расхождения, найденные судьями канона: исключения инварианта «источник неприкосновенен», инвариант про один активный infohash, UTC в logging.md, поведение из architecture.md заменено ссылками на спеки - триггеры профиля ревью переписаны под умолчание standard
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# Аниме с абсолютной нумерацией
|
||||
# ✨ Пересчитывать абсолютную нумерацию аниме в SxxEyy
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** аниме со сквозной нумерацией (#137) не раскладывается в SxxEyy, который ждёт Jellyfin — нужен пересчёт абсолютной нумерации
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Confidence-гейт авто-раскладки: узаконить в спеке + сделать выключаемым (дефолт 0.7)
|
||||
# ✨ Узаконить confidence-гейт авто-раскладки в спеке и сделать его выключаемым (дефолт 0.7)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** Решено (B): гейт оставляем как доп. проверку на ревью — выключаемый порог, дефолт 0.85→0.7, записать в спеку
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
@@ -35,7 +36,12 @@
|
||||
вспомогательный сигнал». Добавить сценарий: матч + чистая валидация +
|
||||
согласованность, но `confidence` ниже порога → review.
|
||||
4. **Конфиг-конвенция/дока:** описать ключ в `docs/conventions/config.md` (диапазон
|
||||
[0,1], 0 = выкл, дефолт 0.7).
|
||||
[0,1], 0 = выкл, дефолт 0.7) и поправить значение в таблице «Настройки с
|
||||
числовым значением» [docs/database.md](../../database.md) — дом числа там, и
|
||||
при смене дефолта оно разъедется первым. Формулировки инварианта в
|
||||
`CLAUDE.md` и ложноположительного в `docs/review.md` уже приведены к
|
||||
«единственным гейтом не является» (канон 4, 2026-08-06) — переписывать их
|
||||
задача не должна.
|
||||
5. **Тесты:** `decide` с `threshold=0` (гейт выключен, авто при чистых 1–3);
|
||||
confidence ниже/выше порога при выполненных 1–3.
|
||||
6. Точное число порога откалибровать позже — для этого есть задача
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Шум ERROR фоновых циклов при недоступной зависимости
|
||||
# 🐞 Не штормить ERROR при недоступном qBittorrent и эскалировать устойчивый сбой тика
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** fix
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** Остаток задачи логирования: ext.* ERROR-шторм при недоступном qBittorrent + эскалация устойчивого сбоя тика _(ревью Fable)_
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] Сила совпадения кандидата и пересмотр распознавания/матчинга
|
||||
# 🔬 Сила совпадения кандидата и пересмотр распознавания/матчинга
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** у кандидата метабазы нет метрики силы совпадения — список кандидатов на ревью нечем отсортировать по уверенности (сперва проработать процесс матчинга)
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# `addReq` не пересобирается из свежего `source_type` перед `Add` (окно namer'а)
|
||||
# 🐞 Пересобирать `addReq` из свежего `source_type` перед `Add` (окно namer'а)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** fix
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** При апгрейде magnet→.torrent в окне namer'а добавится magnet из устаревшего снимка; самоисцеляется через magnet_timeout→failed→Retry _(аудит 2026-07-17)_
|
||||
- **Теги:** goal:state-integrity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] Завершение загрузки через webhook
|
||||
# 🔬 Завершение загрузки через webhook
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** research
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** завершение сейчас ловим поллингом qBittorrent — webhook реагировал бы быстрее, но связывает нас с его конфигом (решим по опыту эксплуатации)
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Сложные раздачи
|
||||
# 🎯 Раскладывается не только типовая раздача
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Направления
|
||||
- **Зачем:** типовая раздача раскладывается, а всё, что сложнее одного сезона одного тайтла, упирается в ручной разбор
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] Сложные сериальные раздачи: все сезоны разом, паки, спецраскладки
|
||||
# 🔬 Сложные сериальные раздачи: все сезоны разом, паки, спецраскладки
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** сложные раздачи (все сезоны разом, паки, смешанная нумерация) целостно не проработаны — распознавание/ревью/раскладка заточены под один сезон
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] Кандидаты в конвенции кода
|
||||
# 🔬 Кандидаты в конвенции кода
|
||||
|
||||
- **Секция:** Инфраструктура
|
||||
- **Тип:** research
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** накоплен список кандидатов (внешние клиенты, конкурентность, тесты, CLI, время) — надо решить, что из них стало реальным трением, а что выдумано вперёд
|
||||
- **Теги:** goal:dev-process-quality
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Ретеншн и очистка БД
|
||||
# ✨ Чистить БД от терминальных задач и сырых ответов LLM старше срока хранения
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** feature
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** терминальные задачи и сырые ответы LLM копятся вечно — без авточистки список загрузок и БД деградируют по мере эксплуатации
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Глубокий healthcheck и статус зависимостей
|
||||
# ✨ Проверять в healthcheck доступность qBittorrent, LLM и метабаз и показывать её в UI
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** feature
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** /healthz проверяет только сам сервис — недоступность qBittorrent/LLM/метабазы видна лишь по застрявшим задачам, нет readiness и бейджа в UI
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Процесс и качество разработки
|
||||
# 🎯 Домен называется одинаково везде, ревью откалибровано
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Сопровождение
|
||||
- **Зачем:** наименования домена расходятся между спеками, UI и кодом, а конвейер ревью не откалиброван — растёт цена каждой следующей задачи
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Раздачи-копии диска (DVD/BluRay: VIDEO_TS/BDMV)
|
||||
# ✨ Раскладывать раздачу-копию диска (VIDEO_TS/BDMV) каталогом целиком
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** раздача-образ диска (VIDEO_TS/BDMV) сейчас разбирается пофайлово вместо раскладки каталога целиком — редкий, но реальный случай
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Веб-UI зовёт Cancel вместо Dismiss на не-терминальных → теряется `user_dismiss`
|
||||
# 🐞 Не терять маркер `user_dismiss` при закрытии не-терминальной загрузки из веб-UI
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** fix
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** Функционально ок (Cancel даёт cancelled), но маркер user_dismiss в error_code теряется; расхождение с буквой спеки _(аудит 2026-07-17)_
|
||||
- **Теги:** goal:state-integrity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# История переходов загрузки
|
||||
# ✨ Хранить историю переходов загрузки отдельной таблицей
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** feature
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** хранится только текущий статус загрузки — разбор «как сюда попали» идёт по логам сервера, нет таблицы истории переходов
|
||||
- **Теги:** goal:state-integrity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Согласование канона нумерации серий с провайдером тега
|
||||
# 🔬 Канон нумерации серий и порядок у провайдера тега
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** Косметика/редкость: порядок просмотра ок, но у тайтлов со спорным порядком (Бибоп) Jellyfin подтягивает не те подписи серий, если канон файлов ≠ дефолтный порядок провайдера тега
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Внешние субтитры: пары VobSub и языковой суффикс
|
||||
# ✨ Спаривать VobSub .idx+.sub и проставлять языковой суффикс субтитра
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** Привязка субтитр→серия уже работает; остались пары VobSub .idx+.sub и потеря Lang/Flags
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Проверка свободного места перед copy-fallback
|
||||
# ✨ Проверять свободное место перед copy-fallback
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** copy-fallback при невозможности хардлинка может упереться в переполненный диск посреди раскладки — нет проверки места до копирования
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] guessit как сервис-спутник
|
||||
# 🔬 guessit как сервис-спутник
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** go-ptn слабее питоновского guessit — если точности пред-парса не хватит, завернуть guessit в сервис-спутник рядом с бинарём
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Идентичность инфохэшей: split v1/v2 одного торрента + крафт-магнет отравляет владение (F4, F5)
|
||||
# 🐞 Связать v1/v2-хеши одного торрента и не доверять паре xt из магнета (F4, F5)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** fix
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** split v1/v2 идентичность и крафт-магнет отравляют владение инфохэшами _(ревью 2026-07-08)_
|
||||
- **Теги:** goal:state-integrity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Интерфейсы приёма и ревью
|
||||
# 🎯 Раздача приносится и подтверждается из любого транспорта
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Направления
|
||||
- **Зачем:** путь «принести раздачу и подтвердить догадку» упирается в незакрытые куски интерфейсов, а не в логику
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Нити приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5)
|
||||
# 🧹 Закрыть мелочи приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** chore
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации _(ревью 2026-07-08)_
|
||||
- **Теги:** goal:state-integrity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Обучение на правках человека (few-shot из прошлых ревью)
|
||||
# ✨ Подмешивать прошлые правки человека в промпт распознавания (few-shot)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** правки человека (матч/тип/нумерация) не переиспользуются — few-shot из прошлых ревью поднял бы точность на «своих» трекерах без смены модели
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Раздачи с докачиванием (merge при повторном добавлении)
|
||||
# ✨ Докладывать недостающие эпизоды merge-раскладкой при повторной заливке
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** повторная заливка сериала целиком должна доложить недостающие эпизоды merge-раскладкой, не трогая существующие ссылки — блокирует типовой сценарий свежих сериалов
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Кэш метабаз (и опционально LLM)
|
||||
# 🧹 Кэшировать ответы метабаз с TTL (и опционально LLM)
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** chore
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** повторные и ретраящиеся прогоны бьют TMDB/TVDB/TVMaze одним запросом — кэш с TTL сэкономил бы лимиты и ускорил «Распознать заново»
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [idea] Многоступенчатая верификация привязки
|
||||
# 🔬 Многоступенчатая верификация привязки
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** несколько проходов распознавания с консенсусом подняли бы точность ценой стоимости/латентности — проработать, когда включать и как мерджить расхождения
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Крайние случаи именования: многофайловый фильм, редакции, двойная серия
|
||||
# ✨ Заказать спекой крайние случаи именования: многофайловый фильм, редакции, двойная серия
|
||||
|
||||
- **Секция:** Ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** стэкинг частей (part1/cd1), редакции [edition-…] и двойная серия SxxEyy-Eyy описаны нарративом, но в file-layout не заказаны — раскладка таких раздач не определена
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Привязка уведомлений к источнику в ботах (мульти-бот)
|
||||
# ✨ Слать уведомления автору загрузки в его транспорт (мульти-бот)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** пинги и ревью должен получать автор загрузки в своём транспорте — нет привязки загрузки к источнику/отправителю (нужно для мульти-бота)
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Эксплуатационная прочность
|
||||
# 🎯 Сервис переживает рост и потерю тома
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Сопровождение
|
||||
- **Зачем:** сервис работает, но не переживает роста: база копится вечно, бэкапа нет, отказ зависимости виден только по застрявшим задачам
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Агенты-ревьюверы качества (наименования, архитектура, конвенции, стиль)
|
||||
# 🧹 Откалибровать проходы ревью и завести ревьювер наименований
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** chore
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** конвейер ревью переехал в плагин `av-dev-pipeline`; осталась калибровка проходов на этом проекте и ревьювер наименований (ждёт словарь единого языка)
|
||||
- **Теги:** goal:dev-process-quality
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Точность распознавания
|
||||
# 🎯 Раздача узнаётся верно, и точность этого измерима
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Направления
|
||||
- **Зачем:** смена модели или правка промпта сегодня вслепую — нет ни метрики, ни способа переиспользовать уже сделанные человеком правки
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Eval-харнес распознавания (корпус кейсов + метрика точности)
|
||||
# 🧹 Завести eval-харнес распознавания: корпус кейсов и метрику точности
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** chore
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** смена модели или правка промпта распознавания сейчас вслепую — нет корпуса кейсов и метрики точности, регрессии не видно
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Полный редактор маппинга «файл → серия» и ручной режим ревью
|
||||
# ✨ Править на ревью маппинг «файл → серия» и раскладывать вручную при провале LLM
|
||||
|
||||
- **Секция:** Ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** правка S·E, «нумеровать подряд» и ручной режим при полном провале LLM были запланированы объёмом Ф5 и не заведены задачей — в ревью сегодня можно только подсказать текстом
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# НФТ: масштаб до 100 одновременных загрузок (потолок — 1000)
|
||||
# 🔬 Потолок нагрузки: 100 одновременных загрузок, план-максимум 1000
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** research
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** Зафиксировать в НФТ ориентир 100/1000 загрузок + аудит узких мест (SQLite, воркер, поллинг)
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Бэкап SQLite
|
||||
# 🧹 Бэкапить SQLite по расписанию с ротацией
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** chore
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** architecture требует бекапить data-том, но стратегия не описана — сбой или редеплой стирают всё in-flight состояние (проще, пока БД маленькая)
|
||||
- **Теги:** goal:operational-resilience
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Мгновенные обновления через SSE
|
||||
# ✨ Слать живые обновления через SSE вместо htmx-поллинга
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** живые обновления на htmx-поллинге дают задержку и холостые запросы — SSE убрал бы то и другое (поллинг работает, поэтому улучшение, не блокер)
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# [goal] Целостность состояния и приёма
|
||||
# 🎯 По записи загрузки видно, как она сюда попала
|
||||
|
||||
- **Секция:** темы
|
||||
- **Тип:** goal
|
||||
- **Секция:** Направления
|
||||
- **Зачем:** известные окна рассинхрона и потери маркеров: каждое по отдельности самоисцеляется, вместе — источник необъяснимых состояний
|
||||
- **Теги:** decomposed
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Ревью уведомлений в Telegram (аудит текстов и формата)
|
||||
# 🔬 Тексты и формат уведомлений в Telegram
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** research
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** зонтичный проход по всем текстам бота: полнота карточек, единый язык, оформление; порождает под-задачи
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Версии/качество одного тайтла (репаки, апгрейд 1080p → 2160p)
|
||||
# ✨ Заменять разложенную версию тайтла новой (репаки, апгрейд 1080p → 2160p)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** По калибровке болей (2026-07-02) — не боль, из приоритета выпало
|
||||
- **Теги:** goal:complex-releases
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Фетч .torrent по URL — остаток «единого окна»
|
||||
# ✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Локаль TVDB: перевод названия и оригинальное название
|
||||
# ✨ Брать у TVDB название на языке настройки и оригинальное название
|
||||
|
||||
- **Секция:** Ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** [general].language правит только TMDB и промпт LLM — TVDB отдаёт primary name, и при language=ru в карточку ревью и имя папки попадает 哪吒之魔童降世 вместо «Нэчжа»
|
||||
- **Теги:** goal:recognition-accuracy
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Словарь единого языка (ubiquitous language)
|
||||
# 🧹 Свести термины домена в словарь единого языка
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** chore
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** наименования домена расходятся между спеками, UI и кодом — нет единого глоссария (на нём же стоит агент-ревьювер наименований)
|
||||
- **Теги:** goal:dev-process-quality
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Авторизация веб-UI (на будущее)
|
||||
# ✨ Закрыть веб-UI авторизацией, когда доверенной LAN станет мало
|
||||
|
||||
- **Секция:** инфраструктура
|
||||
- **Тип:** feature
|
||||
- **Категория:** Инфраструктура
|
||||
- **Зачем:** для v1 решено без авторизации (доверенная LAN, опц. allowlist подсетей) — задел на случай, если понадобится защита
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Современный Web-UI как PWA
|
||||
# ✨ Переделать веб-UI в устанавливаемое PWA
|
||||
|
||||
- **Секция:** ядро продукта
|
||||
- **Тип:** feature
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** текущий server-rendered UI функционален — PWA (устанавливаемое, удобное с телефона) это улучшение большого объёма, не блокер
|
||||
- **Теги:** goal:ingest-and-review-interfaces
|
||||
|
||||
|
||||
Reference in New Issue
Block a user