Укрупнены use case-интерфейсы: контроллеры теперь зависят от цельных FilmUseCase, UserUseCase, FilmLibraryUseCase, JellyfinSyncUseCase и других портов.
Обновлены контроллеры, сервисы и тесты под новые use case-контракты.
Логика доступных фильмов перенесена из FilmLibraryController в FilmLibraryService.
Добавлена проверка существования фильма при добавлении в библиотеку и отметке просмотра.
Переработана модель пользовательской библиотеки: FilmLibrary заменён на FilmLibraryEntry.
Добавлен стабильный response DTO для записей библиотеки.
Добавлена валидация request DTO и единая обработка validation/HTTP/domain errors.
Исправлен /api/users/me для OAuth success redirect.
Убрана прямая зависимость application layer от Micrometer counters, добавлен BusinessMetricsPort.
Добавлены duration-метрики через @Timed и TimedAspect.
Улучшена Jellyfin-интеграция: транзакционная обработка событий, sync failure metrics, use case-порты для Jellyfin sync/events.
Добавлена V9__cleanup_legacy_schema.sql для legacy ratings/jellyfin_id.
Обновлён ER.md.
# Что изменено
- Укрупнены use case-интерфейсы: контроллеры теперь зависят от цельных `FilmUseCase`, `UserUseCase`, `FilmLibraryUseCase`, `JellyfinSyncUseCase` и других портов.
- Обновлены контроллеры, сервисы и тесты под новые use case-контракты.
- Логика доступных фильмов перенесена из `FilmLibraryController` в `FilmLibraryService`.
- Добавлена проверка существования фильма при добавлении в библиотеку и отметке просмотра.
- Переработана модель пользовательской библиотеки: `FilmLibrary` заменён на `FilmLibraryEntry`.
- Добавлен стабильный response DTO для записей библиотеки.
- Добавлена валидация request DTO и единая обработка validation/HTTP/domain errors.
- Исправлен `/api/users/me` для OAuth success redirect.
- Убрана прямая зависимость application layer от Micrometer counters, добавлен `BusinessMetricsPort`.
- Добавлены duration-метрики через `@Timed` и `TimedAspect`.
- Улучшена Jellyfin-интеграция: транзакционная обработка событий, sync failure metrics, use case-порты для Jellyfin sync/events.
- Добавлена `V9__cleanup_legacy_schema.sql` для legacy `ratings`/`jellyfin_id`.
- Обновлён `ER.md`.
Auto reviews are disabled on base/target branches other than the default branch.
Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: b55662cf-2829-423f-b9d7-37afd20337fc
You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.
Use the checkbox below for a quick retry:
🔍 Trigger review
✨ Finishing Touches🧪 Generate unit tests (beta)
Create PR with unit tests
Commit unit tests in branch fix-develop-problems
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
<!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: skip review by coderabbit.ai -->
> [!IMPORTANT]
> ## Review skipped
>
> Auto reviews are disabled on base/target branches other than the default branch.
>
>
>
> Please check the settings in the CodeRabbit UI or the `.coderabbit.yaml` file in this repository. To trigger a single review, invoke the `@coderabbitai review` command.
>
> <details>
> <summary>⚙️ Run configuration</summary>
>
> **Configuration used**: Organization UI
>
> **Review profile**: ASSERTIVE
>
> **Plan**: Pro
>
> **Run ID**: `b55662cf-2829-423f-b9d7-37afd20337fc`
>
> </details>
>
> You can disable this status message by setting the `reviews.review_status` to `false` in the CodeRabbit configuration file.
>
> Use the checkbox below for a quick retry:
> - [ ] <!-- {"checkboxId": "e9bb8d72-00e8-4f67-9cb2-caf3b22574fe"} --> 🔍 Trigger review
<!-- end of auto-generated comment: skip review by coderabbit.ai -->
<!-- finishing_touch_checkbox_start -->
<details>
<summary>✨ Finishing Touches</summary>
<details>
<summary>🧪 Generate unit tests (beta)</summary>
- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests
- [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `fix-develop-problems`
</details>
</details>
<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->
---
Thanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=devitq/movienight-backend&utm_content=58)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
<details>
<summary>❤️ Share</summary>
- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
</details>
<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>
<!-- tips_end -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что изменено
FilmUseCase,UserUseCase,FilmLibraryUseCase,JellyfinSyncUseCaseи других портов.FilmLibraryControllerвFilmLibraryService.FilmLibraryзаменён наFilmLibraryEntry./api/users/meдля OAuth success redirect.BusinessMetricsPort.@TimedиTimedAspect.V9__cleanup_legacy_schema.sqlдля legacyratings/jellyfin_id.ER.md.✨ Finishing Touches
🧪 Generate unit tests (beta)
fix-develop-problemsThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
Comment
@coderabbitai helpto get the list of available commands and usage tips.