Skip to content

v1.8 — Smoke CI guards + .ics export

Choose a tag to compare

@dripips dripips released this 12 May 21:01

v1.8 — CI runtime guards + Calendar .ics export

CI: ловим runtime-ошибки ДО merge'а

Раньше CI проверял только статику (Rubocop, Brakeman) и unit-тесты — runtime-ошибки в шаблонах ускользали. Уже было два таких бага в продакшене: `a.target_value` на KpiAssignment, `@employee.gender_ref` — оба пробились через CI и упали у пользователя.

  • Zeitwerk autoload check — ловит class-naming mismatches (typo в имени класса → файл не загружается)
  • Smoke spec (`spec/requests/smoke_spec.rb`) — 38 GET-проверок: логин как admin, обход всех ключевых страниц (dashboard, recruitment, kpi, documents, profile-tabs, settings-tabs, ai_runs, careers). Любой `ActionView::Template::Error` теперь блокирует merge.

Bonus fix: seeds.rb broken на свежей БД

В `db/seeds.rb` юзеры создавались после `employees.rb`, который их ищет через `User.find_by!`. На fresh DB seed падал. В dev обходилось потому что юзеры существовали из предыдущих ручных запусков. Перенёс блок выше + пароль `password123` теперь и в test env (для smoke-логина в CI).

📅 .ics export для календаря интервью

  • `app/services/icalendar_builder.rb` — мини-RFC-5545 generator без gem'а `icalendar` (экономия ~50KB transitive deps). UTF-8, escape TEXT, fold-lines >75 octets.
  • `GET /recruitment/calendar.ics` → отдаёт upcoming-60-дней (или одно через `?round_id=`)
  • Кнопка «📅 Экспорт в .ics» в page-header `/recruitment/calendar`
  • Скачанный файл подписывается в Google Calendar / Outlook / Apple Calendar (одинаково везде по стандарту)

i18n

  • +2 ключа × 3 локали → паритет 2318/2318/2318