3.3 KiB
3.3 KiB
AGENTS.md
Правила для персонального YouTube-клиента с категориями подписок и интеграцией с существующим MeTube. Основные этапы разработки (каркас, OAuth/подписки, категории, лента, воспроизведение и MeTube) уже реализованы; ориентируйся на фактический код и README.md.
Архитектурные ограничения
- Не форкать/копировать Tube Archivist.
- Не встраивать yt-dlp в этот сервис — скачивание выполняет существующий MeTube на
mediaVM. - Не дублировать функции скачивания MeTube.
- Не монтировать media storage MeTube на
hermesVM: видео не хранится локально, только проксируется или линкуется. - Не реализовывать YouTube Recommendations/Home.
- Приложение остаётся single-user (
ALLOWED_GOOGLE_EMAIL). - Frontend не вызывает Google API напрямую.
- Frontend не вызывает MeTube write API (
POST /addи т.п.) напрямую — только через наш backend. - Не восстанавливать имя скачанного файла из YouTube title: использовать точное имя из события MeTube
completed. - Не удалять существующие файлы MeTube при синхронизации или обслуживании; удаление по явному действию пользователя — отдельный поддерживаемый сценарий.
- Не менять исходный код MeTube.
- Все внешние base URL (MeTube, Google) задаются через env/config.
- REST API должен оставаться пригодным для будущего mobile/PWA клиента.
Структура и соглашения
migrations/— Alembic в корне репозитория; миграции импортируют модели изbackend/app. Схему БД изменять миграциями, не создавать и не менять ad hoc при старте приложения.- MeTube-специфичные HTTP/Socket.IO вызовы инкапсулировать в
MeTubeClient, не размазывать по backend. - Секреты хранить только в
.env(образец —.env.example); не коммитить.env, refresh token или client secret. - Backend тесты —
pytestв корневомtests/. Интеграции с Google/MeTube по умолчанию mock; реальные вызовы кhttp://192.168.8.177:8081— только opt-in, не в обычном CI. - В unit-тестах использовать
TestClient(app)безwith: контекстный менеджер запускает lifespan с подключением к MeTube (Socket.IO) и Postgres (reconcile_on_startup).
Запуск и проверка
См. README.md. Быстрая проверка: docker compose up -d --build и curl http://localhost:8080/api/health.