Commit Graph
27 Commits
Author SHA1 Message Date
skettiks 43be102d4e refactor: обновить use case слои и интеграцию Jellyfin
Основные изменения: укрупнены use case-интерфейсы, контроллеры переведены на цельные зависимости, логика доступных фильмов перенесена в FilmLibraryService, добавлены проверки существования фильма и улучшена обработка ошибок API.

Метрики: FilmService больше не зависит напрямую от Micrometer для counters, используется BusinessMetricsPort; добавлены TimedAspect и duration-метрики через @Timed для create/edit/delete фильмов.

Jellyfin: event handling переведен на транзакционную модель, sync учитывает runtime-ошибки, добавлены plugin-token/web-url настройки, webhook и sync endpoints защищены X-MovieNight-Plugin-Token.

Плагин: добавлен Jellyfin plugin в plugins/jellyfin, backend принимает push-sync payload, sync-state доступен плагину, pull-sync вынесен в /api/integrations/jellyfin/pull-sync, README описывает фактический контракт.

API и DTO: добавлены RecommendationResponse, ContentTypeParser, validation annotations, обработка validation errors и ResponseStatusException, endpoint /api/users/me.

БД: добавлена V7 cleanup-миграция для legacy ratings/jellyfin_id объектов; V4/V5 в этот коммит не включались.

Проверка: .\gradlew.bat check --stacktrace проходит полностью.
2026-05-22 12:32:16 +03:00
skettiks 0dca1f7031 - добавлена модель персональных весов рекомендаций с нормализацией и ограничениями
- добавлена миграция для user_recommendation_weights и breakdown-полей recommendation_events
- рекомендации теперь используют пользовательские score/vector веса
- feedback ACCEPTED/REJECTED обновляет score-веса пользователя по последней рекомендации
- добавлен API для чтения и ручного обновления весов рекомендаций
- добавлен onboarding endpoint для начальной калибровки пользователя
- добавлены стили рекомендаций: balanced, quality first, mood first, discovery, similar to favorites
- onboarding сохраняет предпочтения, лайки/дизлайки, библиотеку, просмотренные фильмы и стартовые веса
- добавлены метрика обновления весов и расширенные smoke/unit тесты
2026-05-21 17:05:26 +03:00
skettiks 00f53bc949 Реализована рекомендательная система: добавлены гибридный скоринг фильмов, события рекомендаций, accept/reject endpoints, watchUrl для Jellyfin, API DTO ответа и логирование выдачи рекомендаций. 2026-05-21 13:58:14 +03:00
50923e2e5a fix: address PR review thread issues
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/d4d6ebbb-2508-484e-accf-c891be54750f

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-20 18:33:34 +00:00
ITQ 5f2a6d12ac core: restore compilation and tests (ports, DTOs, repo fixes, metrics) 2026-05-20 16:57:19 +03:00
ITQ ea7e66c1a0 <type>(scope): <description>
[body]

[footer(s)]
2026-05-20 03:38:30 +03:00
ITQandGitHub 4fa6b5e873 Merge branch 'develop' into feat/extend-data-structures-48 2026-05-20 03:30:08 +03:00
ITQ aa89455e50 fix(): test fix after restructuring 2026-05-20 03:24:58 +03:00
skettiksandGitHub e956c058ac add Film observability with trace id and metrics (#44)
* add Film observability with trace id and metrics

* test: provide meter registry in FilmServiceTest
2026-05-19 16:13:10 +03:00
skettiks a4f99bbe8a * Синхронизировал UserEntity и UserRepository с актуальной моделью User и контрактом UserRepositoryPort: убрал устаревшую логику с password и исправил невалидные override.
* Убрал конфликтующие gRPC-зависимости, которые тянули несовместимый runtime/test stack.
* Сделал Flyway-миграцию `V2` с OAuth2-индексом совместимой с H2.
* Отключил security-фильтры в controller-тестах через `MockMvc`, чтобы убрать редиректы на авторизацию и нестабильные падения тестов.
* Восстановил локальный запуск и стабилизировал тестовый контур.
2026-05-15 21:18:46 +03:00
22025326e7 fix: align search test and available-films error handling
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/42b7a686-07a7-41f5-baf7-737b968e12cf

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-08 17:52:01 +00:00
47ff6d80bf merge: sync develop into feat/spring-tests
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/42b7a686-07a7-41f5-baf7-737b968e12cf

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-08 17:50:42 +00:00
glasharkandGitHub f30488a3d1 Merge branch 'develop' into feat/spring-tests 2026-05-03 20:08:31 +03:00
ITQ 1d8e3dd4e1 style(format): reformatted with ktlint 2026-05-03 19:14:02 +03:00
44483d748f refactor: use idiomatic Kotlin iteration for JsonNode in tests
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/60cd9b1b-e3e1-46a1-bfd9-04a75bd0d569

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-03 12:03:23 +00:00
b7a246e0b4 fix: address copilot review issues - explicit imports, trailing commas, 404 for not-found search, tests for available-films endpoint
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/60cd9b1b-e3e1-46a1-bfd9-04a75bd0d569

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-03 12:02:31 +00:00
ITQandGitHub 37ede1c194 Merge pull request #23 from devitq/feat/user-entity-21
feat: user entity 21
2026-05-03 14:54:01 +03:00
Elena Ponomareva f563c3e7cf исправления 2026-04-24 23:47:56 +03:00
ITQandGitHub 6fd98cbe5c Merge pull request #15 from devitq/test/repository-integration
test: add integration tests for JDBC repositories
2026-04-23 22:55:29 +03:00
bd7ecfcab5 fix(test): add mockk catalog dependency and format service tests
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/abb7242b-7ff5-4cde-9d34-5733a7f1172f

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-04-23 06:36:27 +00:00
4f0e8ccbd4 test: fix ktlint multiline wrapping in JDBC integration tests
Agent-Logs-Url: https://github.com/devitq/movienight-backend/sessions/e7455e93-ed32-49f5-9b29-dabcdcc01e87

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-04-21 18:28:03 +00:00
skettiks acd8f9fb01 Создан AuthProvider enum с провайдерами GOOGLE, YANDEX, VK
Создана UserEntity в adapters/persistence/entity с полями для OAuth
Добавлены extension-функции маппинга toDomain() и toEntity()
Обновлен UserRepository — использует UserEntity и добавлен метод findByProviderAndProviderId()
Созданы юнит тест - UserEntityMappingTest.kt
2026-04-21 18:47:55 +03:00
skettiks f927148897 Добавленны юнит тесты для всех сервисов 2026-04-21 00:21:00 +03:00
skettiks 49f74d1898 Добавил интеграционные тесты для User, Film, FilmLibrary - репозиториев
application-test.yaml: настройка тестового окружения
2026-04-20 19:45:55 +03:00
Elena Ponomareva b7b9061ba6 спринг тесты для контроллеров 2026-04-19 15:46:59 +03:00
ITQ eb4903ad15 chore(): refactored vibecode 2026-04-18 12:06:23 +03:00
skettiks aa4f0dbf00 initial commit 2026-03-03 17:34:10 +03:00