3.1 KiB
3.1 KiB
CLAUDE.md
Памятка для работы над jellybit. Перед задачей прочитай также README.md, BRIEF.md и docs/specs/architecture.md.
Что это
Связующий сервис qBittorrent ↔ Jellyfin: принимает торрент + контекст,
качает, распознаёт фильм/сериал (LLM + контекст + опц. метабазы) и
раскладывает файлы для Jellyfin хардлинками. Деплоится на домашний
медиа-сервер umbar (/home/av/projects/private/umbar) — туда копируется
готовый бинарь.
Стек и принципы
- Go, один статический бинарь (
CGO_ENABLED=0). Почему — см. ADR-2026-06-13-go-single-binary. - SQLite как хранилище (чистый Go-драйвер
modernc.org/sqlite). - Конфигурация — TOML. Логи — структурированный JSON (
log/slog). - Хардлинки, источник не трогаем — qBittorrent продолжает раздачу, диск не дублируется.
- Единое ядро, тонкие транспорты — вся логика приёма в use-case
Ingest; HTTP API, веб-UI и Telegram — лишь обёртки над ним. - Минимум компонентов — в духе umbar, без зоопарка сервисов. Внешние базы метаданных (TMDB/TVDB) опциональны, включаются конфигом.
Документация: три раздела
docs/specs/— живые спецификации целевого состояния. Меняем по мере развития, держим в соответствии с кодом.docs/adr/— неизменяемый журнал решений, пишется постфактум, хранит почему. Правила — docs/adr/README.md.docs/drafts/— черновики: планы, идеи, ещё не принятые решения. Не источник истины.
Язык
- Документация, комментарии, сообщения коммитов — русский.
- Код и идентификаторы — английский.
Команды
Кода ещё нет (фаза каркаса). По мере появления Ф0:
- сборка:
go build ./cmd/jellybit - тесты:
go test ./... - линт:
golangci-lint run
Конвенции кода
- Раскладка:
cmd/jellybit(точка входа) +internal/<пакет>по компонентам из architecture.md. - Ошибки оборачиваем с контекстом (
fmt.Errorf("...: %w", err)). - Логирование только через
slog, безfmt.Println. - Время — всегда с явным TZ (сервер в
Europe/Moscow).