[PIX-13571] fix(api): исправить TS-ошибки getObjectDetail + regression-тест GET /objects/:id #925

Closed
andrei wants to merge 2 commits from agent-fullstack/pix-13571-regression-test into master
Owner

Что сделано

  • Добавлены findPublicObjectDetail и findRoomsForPublicObject в public.service.ts
  • Перенесены Prisma-запросы из контроллера в сервис (прямой импорт prisma из контроллера убран)
  • Добавлен regression-тест public.objects.test.ts для GET /api/public/objects/:id
  • Удалены дублирующиеся функции в service (возникли при rebase поверх PIX-13568)

Зачем

PIX-13568 добавил маршрут GET /objects/:id в public.routes.ts, но оригинальный контроллер использовал прямые Prisma-вызовы без импорта — получали TS-ошибки. PIX-13571 устраняет эти ошибки через слой сервиса.

Plan тестирования

  • tsc --noEmit — 0 ошибок
  • vitest run — 189/189 тестов зелёные
  • Regression-тест public.objects.test.ts — 3 сценария (200, 404, rooms)

Где могу ошибаться

  • Конфликт при rebase (PIX-13568 уже добавил аналогичные функции в service) разрешён удалением дублей
  • Выбор sequential fetch (master-версия) vs Promise.all (наша): оставили sequential, т.к. findRoomsForPublicObject принимает objectId = реальный DB id, а не slug
## Что сделано - Добавлены `findPublicObjectDetail` и `findRoomsForPublicObject` в `public.service.ts` - Перенесены Prisma-запросы из контроллера в сервис (прямой импорт `prisma` из контроллера убран) - Добавлен regression-тест `public.objects.test.ts` для GET /api/public/objects/:id - Удалены дублирующиеся функции в service (возникли при rebase поверх PIX-13568) ## Зачем PIX-13568 добавил маршрут GET /objects/:id в `public.routes.ts`, но оригинальный контроллер использовал прямые Prisma-вызовы без импорта — получали TS-ошибки. PIX-13571 устраняет эти ошибки через слой сервиса. ## Plan тестирования - `tsc --noEmit` — 0 ошибок ✅ - `vitest run` — 189/189 тестов зелёные ✅ - Regression-тест `public.objects.test.ts` — 3 сценария (200, 404, rooms) ✅ ## Где могу ошибаться - Конфликт при rebase (PIX-13568 уже добавил аналогичные функции в service) разрешён удалением дублей - Выбор sequential fetch (master-версия) vs Promise.all (наша): оставили sequential, т.к. `findRoomsForPublicObject` принимает `objectId` = реальный DB id, а не slug
PIX-13571: smoke выявил 404 на production для /api/public/objects/obj-001.
Маршрут добавлен в ed01801e0 (PIX-7198) но Hetzner-сервер не получил обновление.

Добавлены 3 реальных теста вместо placeholder expect(true).toBe(true):
- 200 с данными объекта и массивом rooms
- маршрут :id зарегистрирован до :id/dashboard (не shadowed)
- 404 для несуществующего objectId
fix(api): исправить TS-ошибки в getObjectDetail — вынести Prisma-запросы в service
All checks were successful
CI / Contracts (pull_request) Successful in 2m9s
CI / Telegram Mini App (pull_request) Successful in 1m28s
CI / Python SDK (pull_request) Successful in 26s
CI / Secrets Scan (pull_request) Successful in 17s
CI / Prisma Migrate Gate (pull_request) Successful in 1m30s
PR Janitor / janitor (pull_request) Successful in 10s
CI / API (pull_request) Successful in 16m48s
CI / App (pull_request) Successful in 15m56s
143bde6a76
PIX-13571: smoke выявил TypeScript ошибки в master:
- getObjectDetail использовал prisma/PUBLIC_OBJECT_STATUSES без импорта
- Причина: ed01801e0 добавил функцию без нужных imports

Решение:
- Добавить findPublicObjectDetail/findRoomsForPublicObject в public.service.ts
- Переписать getObjectDetail через publicService вместо прямого Prisma
- tsc --noEmit: 0 ошибок; vitest: 3/3 тестов
andrei closed this pull request 2026-06-27 20:01:18 +00:00
All checks were successful
CI / Contracts (pull_request) Successful in 2m9s
CI / Telegram Mini App (pull_request) Successful in 1m28s
CI / Python SDK (pull_request) Successful in 26s
CI / Secrets Scan (pull_request) Successful in 17s
CI / Prisma Migrate Gate (pull_request) Successful in 1m30s
PR Janitor / janitor (pull_request) Successful in 10s
CI / API (pull_request) Successful in 16m48s
CI / App (pull_request) Successful in 15m56s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech!925
No description provided.