myYouTube/AGENTS.md

31 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AGENTS.md
Правила для персонального YouTube-клиента с категориями подписок и интеграцией с существующим MeTube. Основные этапы разработки (каркас, OAuth/подписки, категории, лента, воспроизведение и MeTube) уже реализованы; ориентируйся на фактический код и `README.md`.
## Архитектурные ограничения
1. Не форкать/копировать Tube Archivist.
2. Не встраивать yt-dlp в этот сервис — скачивание выполняет существующий MeTube на `mediaVM`.
3. Не дублировать функции скачивания MeTube.
4. Не монтировать media storage MeTube на `hermesVM`: видео не хранится локально, только проксируется или линкуется.
5. Не реализовывать YouTube Recommendations/Home.
6. Приложение остаётся single-user (`ALLOWED_GOOGLE_EMAIL`).
7. Frontend не вызывает Google API напрямую.
8. Frontend не вызывает MeTube write API (`POST /add` и т.п.) напрямую — только через наш backend.
9. Не восстанавливать имя скачанного файла из YouTube title: использовать точное имя из события MeTube `completed`.
10. Не удалять существующие файлы MeTube при синхронизации или обслуживании; удаление по явному действию пользователя — отдельный поддерживаемый сценарий.
11. Не менять исходный код MeTube.
12. Все внешние base URL (MeTube, Google) задаются через env/config.
13. 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`.