Добавил документацию и описание репозитория
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# Идеи и нерешённое
|
||||
|
||||
Свалка мыслей на будущее. Ни к чему не обязывает; принятое переезжает в
|
||||
specs/adr.
|
||||
|
||||
## guessit как сервис-спутник
|
||||
|
||||
`go-ptn` слабее питоновского `guessit`. Если точности пред-парса не
|
||||
хватит — завернуть `guessit` в крошечный HTTP-сервис (один файл,
|
||||
поставляется рядом с бинарём jellybit) и спрашивать его на шаге
|
||||
пред-парса. Сохраняет «доставку копированием»: два файла вместо одного.
|
||||
|
||||
## Аниме с абсолютной нумерацией
|
||||
|
||||
Релизы аниме часто нумеруют серии сквозным числом (`#137`) без сезонов, а
|
||||
Jellyfin ждёт `SxxEyy`. Нужен пересчёт абсолютной нумерации в
|
||||
сезон/серию — надёжнее всего через TVDB (там есть absolute order).
|
||||
Отдельный крайний случай распознавания.
|
||||
|
||||
## Завершение загрузки через webhook
|
||||
|
||||
Сейчас план — поллинг qBittorrent. Альтернатива: «Run external program on
|
||||
torrent completion» в qBittorrent дёргает эндпоинт jellybit. Реагирует
|
||||
быстрее, но связывает нас с конфигом qBittorrent. Решим по опыту
|
||||
эксплуатации.
|
||||
|
||||
## Нотификации о готовности
|
||||
|
||||
Когда раскладка завершена (или нужен review) — уведомить: Telegram,
|
||||
возможно ntfy/Apprise. Естественно ложится на Telegram-транспорт.
|
||||
|
||||
## Доступ к веб-UI
|
||||
|
||||
Сейчас предполагается доверенная локальная сеть. Если понадобится —
|
||||
простая авторизация или вынос за reverse-proxy с аутентификацией.
|
||||
|
||||
## Повторный прогон распознавания
|
||||
|
||||
Возможность переоткрыть загрузку, поправить контекст и перераспознать без
|
||||
перекачивания — полезно, когда LLM ошибся, а файлы уже скачаны.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Дорожная карта
|
||||
|
||||
Черновик плана реализации. Ориентир, не обязательство; по ходу
|
||||
уточняется. Что реализовано и как устроено — в `docs/specs`.
|
||||
|
||||
## Фазы
|
||||
|
||||
- **Ф0 — каркас.** go.mod, раскладка пакетов, загрузка TOML-конфига,
|
||||
SQLite + миграции, slog-логи, Dockerfile (static → distroless),
|
||||
golangci-lint, lefthook. Документация (этот этап — частично готов).
|
||||
- **Ф1 — ingest + tracking (без LLM).** `Ingest()` + добавление в
|
||||
qBittorrent (категория `jellybit`) + `worker`-поллинг завершения +
|
||||
машина состояний. Наружу: HTTP API, список в веб-UI, `jellybit add`.
|
||||
- **Ф2 — распознавание.** `go-ptn` + LLM (structured output) → план +
|
||||
оценка уверенности. Без записи на диск.
|
||||
- **Ф3 — раскладка + минимальный review.** Хардлинки по конвенциям
|
||||
Jellyfin, субтитры, идемпотентность. Авто при высокой уверенности;
|
||||
низкая → экран подтверждения (htmx).
|
||||
- **Ф4 — метаданные.** TMDB/TVDB опционально, provider-id в именах,
|
||||
валидация распознавания против числа серий.
|
||||
- **Ф5 — Telegram + UX.** Бот-адаптер + парсер сообщений торрент-бота,
|
||||
подтверждение в боте, триггер скана Jellyfin, нотификации.
|
||||
- **Ф6 — деплой.** Static-образ/бинарь + обвязка в umbar
|
||||
(`playbook-jellybit.yml`).
|
||||
|
||||
## Заметки по порядку
|
||||
|
||||
- Минимальный review-экран нужен уже в Ф3 (как только появляется режим
|
||||
«спросить при сомнении»), полноценный UX — в Ф5.
|
||||
- Jellyfin в umbar ещё не развёрнут — раскладку файлов это не блокирует,
|
||||
тестируется без него; триггер скана подключаем, когда Jellyfin поднят.
|
||||
Reference in New Issue
Block a user