[CL-PIX-13371] fix(blog): включить поле isPublished в публичный список постов + регрессионные тесты #924

Merged
andrei merged 2 commits from fix/pix-13371-blog-ispublished into master 2026-06-27 19:54:14 +00:00
Owner

Что сделано

Фикс isPublished (коммит 2f4a652b3):

  • api/src/services/blog.service.ts — добавлено isPublished в Prisma select clause и в нормализованный ответ
  • api/src/routes/blog.agent-publish.test.ts — добавлен тест на наличие поля в ответе

Регрессионные тесты объектов (коммит 4c3f97156):

  • api/src/routes/__tests__/public.objects.test.ts — тесты GET /api/objects/:id и /rooms для obj-001 и obj-002
  • Тесты пропускаются gracefully если production API недоступен

Зачем

PIX-13371: smoke-тест обнаружил что isPublished возвращается как null вместо true для всех постов. Функция listPublicBlogPosts фильтровала посты по isPublished: true, но не возвращала это поле в select. Cherry-pick на чистую ветку от master (PR #920 закрыт из-за конфликтов).

План тестирования

  • api tsc --noEmit — 0 ошибок
  • vitest 189 тестов прошли (14 файлов)
  • app build — Done (176 routes)
  • После merge: GET https://api.europa-tech.org/api/public/blog?page=1 → каждый пост имеет isPublished: true

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

Оба коммита cherry-pick применены на latest master (9d7b5ea64). Конфликтов нет.

## Что сделано **Фикс `isPublished` (коммит `2f4a652b3`):** - `api/src/services/blog.service.ts` — добавлено `isPublished` в Prisma `select` clause и в нормализованный ответ - `api/src/routes/blog.agent-publish.test.ts` — добавлен тест на наличие поля в ответе **Регрессионные тесты объектов (коммит `4c3f97156`):** - `api/src/routes/__tests__/public.objects.test.ts` — тесты `GET /api/objects/:id` и `/rooms` для obj-001 и obj-002 - Тесты пропускаются gracefully если production API недоступен ## Зачем PIX-13371: smoke-тест обнаружил что `isPublished` возвращается как `null` вместо `true` для всех постов. Функция `listPublicBlogPosts` фильтровала посты по `isPublished: true`, но не возвращала это поле в select. Cherry-pick на чистую ветку от master (PR #920 закрыт из-за конфликтов). ## План тестирования - [x] `api tsc --noEmit` — 0 ошибок - [x] vitest 189 тестов прошли (14 файлов) - [x] app build — Done (176 routes) - [ ] После merge: `GET https://api.europa-tech.org/api/public/blog?page=1` → каждый пост имеет `isPublished: true` ## Где могу ошибаться Оба коммита cherry-pick применены на latest master (`9d7b5ea64`). Конфликтов нет.
The listPublicBlogPosts function was filtering for published posts but not
returning the isPublished field in the response. This caused all blog posts
to show isPublished: null.

Fixed by:
- Adding isPublished to the Prisma select clause
- Including isPublished in the normalized response object

Regression: PIX-13371 — production API smoke test detected all blog posts
with isPublished: null instead of boolean true.
test(regression): add production regression tests for /api/objects/:id
All checks were successful
CI / Contracts (pull_request) Successful in 2m6s
CI / Telegram Mini App (pull_request) Successful in 1m39s
CI / Python SDK (pull_request) Successful in 27s
CI / Secrets Scan (pull_request) Successful in 13s
CI / Prisma Migrate Gate (pull_request) Successful in 1m28s
PR Janitor / janitor (pull_request) Successful in 7s
CI / API (pull_request) Successful in 17m1s
CI / App (pull_request) Successful in 16m23s
4c3f971563
Implement regression tests for PIX-13371 smoke test verification:
- Verify GET /api/objects/:id returns wrapped {success, data} structure
- Verify id field is present in data object (regression fix)
- Verify all required fields (name, location, sharePrice, status, etc.)
- Test both obj-001 and obj-002 endpoints
- Add rooms endpoint regression tests

All tests verified against production API https://api.europa-tech.org.
Test runs silently skip if production unreachable (graceful degradation).
andrei merged commit bc7b9ffc69 into master 2026-06-27 19:54:14 +00:00
andrei deleted branch fix/pix-13371-blog-ispublished 2026-06-27 19:54:15 +00:00
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!924
No description provided.