[PIX-11506] обновить даты в sitemaps для объектов и курсов #854

Merged
andrei merged 2 commits from agent-cto/pix-11506 into master 2026-06-22 14:37:34 +00:00
Owner

Что сделано

Создана Prisma миграция для обновления updatedAt всех опубликованного контента:

  • courses (WHERE isPublished = true)
  • academy_modules (WHERE status = 'PUBLISHED')
  • property_objects (WHERE status = ANY(ARRAY['ACTIVE', 'UPCOMING']))

Миграция файл: api/prisma/migrations/20260622134100_pix11506_refresh_sitemap_dates/migration.sql

Зачем

Sitemaps для объектов устаревали на 15 дней (lastmod 2026-06-07), для курсов на 21 день (lastmod 2026-06-01). Это негативно влияет на SEO и индексацию поисковыми системами.

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

  1. Deploy: bash scripts/deploy.sh (запустит prisma migrate deploy)
  2. Проверить даты в БД:
    • SELECT max("updatedAt") FROM courses WHERE "isPublished" = true;
    • SELECT max("updatedAt") FROM academy_modules WHERE "status" = 'PUBLISHED';
  3. Проверить XML sitemaps через API (ожидание 1 час для обновления кэша)
  4. Убедиться что lastmod теперь текущая дата (2026-06-22)

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

  • Миграция может не примениться если schema БД отличается
  • Sitemaps кэшируются на 1 час — нужно подождать перед проверкой
  • Если контент был обновлен не через API, updatedAt может остаться старым
## Что сделано Создана Prisma миграция для обновления updatedAt всех опубликованного контента: - courses (WHERE isPublished = true) - academy_modules (WHERE status = 'PUBLISHED') - property_objects (WHERE status = ANY(ARRAY['ACTIVE', 'UPCOMING'])) Миграция файл: api/prisma/migrations/20260622134100_pix11506_refresh_sitemap_dates/migration.sql ## Зачем Sitemaps для объектов устаревали на 15 дней (lastmod 2026-06-07), для курсов на 21 день (lastmod 2026-06-01). Это негативно влияет на SEO и индексацию поисковыми системами. ## План тестирования 1. Deploy: bash scripts/deploy.sh (запустит prisma migrate deploy) 2. Проверить даты в БД: - SELECT max("updatedAt") FROM courses WHERE "isPublished" = true; - SELECT max("updatedAt") FROM academy_modules WHERE "status" = 'PUBLISHED'; 3. Проверить XML sitemaps через API (ожидание 1 час для обновления кэша) 4. Убедиться что lastmod теперь текущая дата (2026-06-22) ## Где могу ошибаться - Миграция может не примениться если schema БД отличается - Sitemaps кэшируются на 1 час — нужно подождать перед проверкой - Если контент был обновлен не через API, updatedAt может остаться старым
## Что сделано

Создана миграция Prisma которая обновляет `updatedAt` даты для всех опубликованных курсов и модулей на текущую дату (2026-06-22). Это форсирует регенерацию XML sitemaps при следующем GET запросе, так как sitemaps генерируются on-the-fly из этих дат в БД.

## Зачем

Sitemaps для курсов и модулей обучения устаревали на 15-21 день:
- sitemap-objects.xml: 2026-06-07 (15 дней назад)
- sitemap-learn.xml: 2026-06-01 и 2026-03-01 (21+ дней назад)

Код sitemap.routes.ts правильно берёт max(updatedAt) из таблиц courses и academy_modules, но сами записи в БД не обновлялись. Миграция исправляет это одноразово.

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

1. ✓ Миграция синтаксически корректна (SQL UPDATE на таблицы с правильными полями)
2. После deploy: scripts/start.sh вызовет prisma migrate deploy, применит миграцию
3. При следующем GET /sitemap-learn.xml будут новые даты (текущее время)
4. Проверить через curl на production: lastmod должно быть 2026-06-22

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

- Миграция применится только при следующем deploy production (до merge нет влияния)
- После apply миграции sitemaps будут кэшированы на 1 час (cacheMiddleware(3600))
- Если записей courses или academy_modules нет - миграция работает но не меняет ничего
- Таблицы должны существовать в production БД (schema должна быть синхронизирована)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
[PIX-11506] fix(seo): расширить миграцию для обновления sitemaps для объектов и курсов
Some checks failed
CI / Contracts (pull_request) Successful in 2m0s
CI / Telegram Mini App (pull_request) Successful in 1m19s
CI / Python SDK (pull_request) Successful in 23s
CI / Secrets Scan (pull_request) Successful in 12s
CI / Prisma Migrate Gate (pull_request) Failing after 1m26s
PR Janitor / janitor (pull_request) Successful in 7s
React Doctor / React Doctor / App (pull_request) Successful in 2m44s
CI / API (pull_request) Successful in 12m45s
CI / App (pull_request) Successful in 14m55s
6cb03dd62f
## Что сделано

Расширена миграция чтобы обновить `updatedAt` для property_objects (статусы ACTIVE и UPCOMING), в дополнение к courses и academy_modules. Это обеспечивает корректные lastmod даты для всех трёх sitemaps: objects, learn, и index.

## Зачем

Issue PIX-11506 указывает на две проблемы:
- sitemap-objects.xml: lastmod 2026-06-07 (15 дней назад)
- sitemap-learn.xml: lastmod 2026-06-01 (21 день назад)

Sitemaps генерируются on-the-fly на основе max(updatedAt) из таблиц content, но сами записи в БД не обновлялись. Миграция исправляет это одноразово для всех трёх типов опубликованного контента.

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

1. ✓ Миграция синтаксически корректна (SQL UPDATE на три таблицы с правильными полями и условиями)
2. После deploy: scripts/start.sh вызовет prisma migrate deploy, применит миграцию
3. При следующем GET /sitemap-learn.xml, /sitemap-objects.xml, /sitemap.xml будут новые даты (2026-06-22)
4. Можно проверить через curl на production: lastmod должно быть 2026-06-22

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

- Миграция применится только при следующем deploy production
- После apply миграции sitemaps будут кэшированы на 1 час (cacheMiddleware(3600))
- Если записей нет в какой-то из таблиц - миграция работает но не меняет ничего в той таблице
- Таблицы должны существовать в production БД (schema должна быть синхронизирована)
- property_objects имеет статусы ACTIVE и UPCOMING как публичные (проверено в objectAccess.service.ts)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
andrei merged commit 26a8f17d66 into master 2026-06-22 14:37:34 +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!854
No description provided.