Commit Graph

57 Commits

Author SHA1 Message Date
aleksey 0565f09a72 test(e2e): ретраи WS-коннекта — транзиентный таймаут после deploy-stage
CI / test (push) Successful in 7m12s
CI / deploy-ift (push) Successful in 3m49s
CI / e2e-ift (push) Successful in 1m21s
CI / deploy-stage (push) Successful in 2m58s
CI / e2e-stage (push) Successful in 1m13s
В run 621 после фикса OOM остался один упавший кейс:
admin_websocket_tests падал на gun:await_up(5000) — одиночный
TCP/TLS-таймаут в окно стабилизации traefik/бэкенда сразу после
рестарта контейнера. ws_connect_up/4 теперь ретраит коннект
3 раза с паузой 2s; одинаково в admins- и users-хелперах.
2026-08-24 00:05:25 +03:00
aleksey e3f5a7ca13 feat(archive): month snapshots on the same node, drop extra-node and HTML /view.
CI / test (push) Failing after 41m15s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Fixes EventHub/EventHubBack#76

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 14:59:30 +03:00
aleksey 3d7ae0d372 fix(api): resolve public calendar GET by unique short_name.
CI / test (push) Successful in 7m28s
CI / deploy-ift (push) Successful in 2m46s
CI / e2e-ift (push) Successful in 1m26s
CI / deploy-stage (push) Successful in 2m4s
CI / e2e-stage (push) Successful in 2m4s
2026-08-14 15:00:41 +03:00
aleksey 520af23cc6 feat(api): optional auth for public search and studio week. Refs EventHub/EventHubFront#58 2026-08-14 11:02:58 +03:00
aleksey 8a5f254c2a feat(booking): materialize occurrence on POST bookings. Refs EventHub/EventHubBack#67 2026-08-14 10:52:24 +03:00
aleksey ba1649f344 fix(ct): teardown litter users/calendars after API suites
CI / test (push) Successful in 7m3s
CI / deploy-ift (push) Successful in 3m53s
CI / e2e-ift (push) Successful in 3m34s
CI / deploy-stage (push) Successful in 2m19s
CI / e2e-stage (push) Successful in 1m19s
Track users/calendars created via register_and_login and create_calendar;
soft-delete via admin API in end_per_suite. Skip with CT_KEEP_DATA=1.
Safety-net soft-deletes remaining @test.local users.

Fixes EventHub/EventHubBack#65
2026-07-31 12:21:15 +03:00
aleksey 7d39c004a1 fix(ct): adapt API tests to sole Default personal
CI / test (push) Successful in 8m11s
CI / deploy-ift (push) Successful in 3m30s
CI / e2e-ift (push) Successful in 6m10s
CI / deploy-stage (push) Successful in 3m3s
CI / e2e-stage (push) Successful in 1m15s
Default create_calendar to commercial; reuse existing personal on 409;
assert verify title Default; cover personal_exists / default_calendar.

Refs EventHub/EventHubBack#64
2026-07-30 22:29:52 +03:00
aleksey 4986baf006 feat(calendar): validate org defaults in calendar.settings
CI / test (push) Successful in 7m30s
CI / deploy-ift (push) Successful in 3m46s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Successful in 2m11s
CI / e2e-stage (push) Successful in 1m15s
Documented keys default_location, default_duration_minutes,
default_recurrence; unknown keys (week_patterns) passthrough;
invalid known shape returns 400.

Refs EventHub/EventHubBack#63
2026-07-29 22:50:31 +03:00
aleksey 4c480f1c43 fix(test): lookup banned words via q after batch
CI / test (push) Successful in 6m38s
CI / deploy-ift (push) Successful in 6m53s
CI / e2e-ift (push) Successful in 2m16s
CI / deploy-stage (push) Successful in 2m15s
CI / e2e-stage (push) Successful in 1m17s
Bare GET /banned-words is paginated (limit 50); on dirty IFT the
batch words fall off page 1 and admin_test_banned_words flakes.
Assert via ?q= like the single-add case; same for delete check.
2026-07-29 15:58:41 +03:00
aleksey faf251b11d fix(calendar): persist settings on PUT/POST
CI / test (push) Successful in 7m4s
CI / deploy-ift (push) Successful in 3m21s
CI / e2e-ift (push) Failing after 52s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Accept calendar.settings (e.g. week_patterns) in validate_update
and convert_field; apply on create like tags. Unblocks Front#42
pattern save which previously got 200 with empty settings.
2026-07-29 15:00:55 +03:00
aleksey 8305bd1a86 fix(ct): skip node_metric noise when waiting for admin WS pong [skip ci] 2026-07-27 23:19:27 +03:00
aleksey cd619db4a2 fix(ct): activate trial before commercial calendar in admin WS tests.
CI / test (push) Successful in 6m41s
CI / deploy-ift (push) Successful in 4m23s
CI / e2e-ift (push) Successful in 54s
CI / deploy-stage (push) Successful in 2m48s
CI / e2e-stage (push) Successful in 1m12s
admin_test_websocket bypassed create_calendar and hit 402 after Back#61
subscription gate. Align with user_websocket_tests helper. Refs EventHub/EventHubBack#61
2026-07-27 22:05:20 +03:00
aleksey 81728301e2 fix: persist specialist_id on event create; 402 commercial without active sub. Fixes EventHub/EventHubBack#61
CI / test (push) Failing after 6m52s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-27 21:17:15 +03:00
aleksey 61816e15b1 feat: forgot/reset password API (variant A). Fixes EventHub/EventHubBack#57
CI / test (push) Successful in 7m20s
CI / deploy-ift (push) Successful in 6m9s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Successful in 2m34s
CI / e2e-stage (push) Successful in 1m11s
2026-07-24 20:12:53 +03:00
aleksey af5f506866 Implement commercial calendars: booking_open, specialists, expire without type downgrade.
CI / test (push) Successful in 6m44s
CI / deploy-ift (push) Successful in 4m2s
CI / e2e-ift (push) Successful in 1m25s
CI / deploy-stage (push) Successful in 2m25s
CI / e2e-stage (push) Successful in 1m12s
Refs EventHub/EventHubBack#54
2026-07-22 16:12:52 +03:00
aleksey 7368adfb37 fix: automod CT seeds confirmed booking before calendar review. Refs EventHub/EventHubFront#8
CI / test (push) Successful in 6m45s
CI / deploy-ift (push) Successful in 3m42s
CI / e2e-ift (push) Successful in 1m26s
CI / deploy-stage (push) Successful in 2m13s
CI / e2e-stage (push) Successful in 1m10s
2026-07-20 22:53:45 +03:00
aleksey 59220b955e feat: calendar follow API (POST/DELETE follow, GET following). Refs EventHub/EventHubFront#9
CI / test (push) Failing after 6m39s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-20 22:10:48 +03:00
aleksey dcb5163946 test: make ticket messages unique across IFT runs via system_time
CI / test (push) Successful in 6m17s
CI / deploy-ift (push) Successful in 3m8s
CI / e2e-ift (push) Successful in 1m24s
CI / deploy-stage (push) Successful in 2m48s
CI / e2e-stage (push) Successful in 1m42s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 14:39:20 +03:00
aleksey e94c94d1a6 test: unique ticket messages per run to avoid IFT dedupe collisions 2026-07-20 11:27:27 +03:00
aleksey 7c1fe1940d feat: create default personal calendar on email verification. Refs EventHub/EventHubBack#49 2026-07-20 11:17:31 +03:00
aleksey 3c6211dd08 fix: avoid empty node metrics race in CT (collect on start + poll). Refs EventHub/EventHubBack#47
CI / test (push) Successful in 9m13s
CI / deploy-ift (push) Successful in 2m4s
CI / e2e-ift (push) Failing after 1m51s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-20 01:03:53 +03:00
aleksey 0934e2c413 feat: PATCH /v1/user/me — профиль и смена пароля. Refs EventHub/EventHubBack#48
CI / test (push) Failing after 9m43s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-19 23:26:34 +03:00
aleksey 5b638de450 feat: user API голосования за отзывы (like/dislike). Refs EventHub/EventHubBack#47
CI / test (push) Failing after 45m52s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-19 21:31:29 +03:00
aleksey e9d1a13900 Добавить автомодерацию: политики, порог жалоб, settings/hits API и тесты.
CI / test (push) Failing after 37m9s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Refs EventHub/EventHubBack#37
Refs EventHub/EventHubBack#38
Refs EventHub/EventHubBack#39
Refs EventHub/EventHubBack#40
2026-07-17 18:09:31 +03:00
aleksey 5e569da1d8 fix(mnesia): per-slot volumes hint and harden verification lookup.
CI / test (push) Failing after 5m10s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Avoid shared Mnesia dir across replicas; make get_or_create_token and CT verify_user resilient to brief cross-node lag.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 09:54:10 +03:00
aleksey a696d25486 Добавить авто-регистрацию тикетов (hash/dedupe/500/WS). Refs EventHub/EventHubBack#35
CI / test (push) Successful in 21m45s
CI / deploy-ift (push) Successful in 6m8s
CI / e2e-ift (push) Failing after 6m13s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-17 00:44:09 +03:00
aleksey 77a53c77cd fix(audit): reason и entity_id в audit как строки, не map.
CI / test (push) Successful in 15m19s
Модерация писала #{reason => ...} — UI падал с React #31.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 14:08:25 +03:00
aleksey 6d91e9cf18 fix(test): пропускать посторонние WS-сообщения при ожидании node_metric.
CI / test (push) Successful in 22m0s
На shared IFT в /admin/ws/metrics приходил report_created от других тестов/активности.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 13:13:34 +03:00
aleksey 84a494e215 fix(ci): WS-хосты стенда и audit-тест в remote CT.
CI / test (push) Successful in 15m59s
ws.* / admin-ws.* в Traefik; audit IP на стенде — не unknown вместо XFF.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:15:42 +03:00
aleksey f7f0038556 test(api): CT на портах 18080/18445 вне docker-dev [skip ci] 2026-07-15 17:10:19 +03:00
aleksey ff4ab23264 fix(backend): IP в аудите, closed_at тикетов и admin_activity в статистике. Refs EventHub/EventHubBack#27 #28 #29
CI / test (push) Successful in 15m13s
Deploy stage (core) / deploy-stage-core (push) Successful in 4m57s
2026-07-13 14:53:51 +03:00
aleksey f4746df4a2 CI/CD: ci, deploy-ift и deploy-stage через EventHubDevOps; фиксы calendar view, archive, API-тесты, traefik-coraza
Deploy IFT (core) / deploy-ift-core (push) Failing after 22m58s
CI / test (push) Failing after 22m59s
2026-07-08 14:50:59 +03:00
aleksey 17b2e617d7 bagofix
Test & Deploy to Snapdeploy / build-test-deploy (push) Failing after 24m46s
2026-06-05 23:20:03 +03:00
aleksey 732e7c81b4 fix bot-emulator-users 2026-05-28 21:55:34 +03:00
aleksey f507d08e2c Добавлена оперативная и историческая статистика нод и узлов mnesia #22 2026-05-28 18:59:21 +03:00
aleksey 1986fd4694 Расширена статистика для разделов #22 2026-05-28 14:09:07 +03:00
aleksey 2dac5e5102 Расширена общая статистика по дням: Отзывы, Календари, Жалобы, Тикеты, Подписки #22 2026-05-27 22:40:03 +03:00
aleksey 4444461ee3 Сделано подтверждение регистрации пользователей #22 2026-05-27 22:02:53 +03:00
aleksey ae6fe21ce6 получение списка администраторов и администратора по ID (любой администратор) #22 2026-05-26 22:33:52 +03:00
aleksey ac5382fab4 При массовом изменении статуса отзывов причина теперь обязательное поле #22 2026-05-26 22:22:15 +03:00
aleksey 19b3d0dba0 Рефакторинг админских обработчиков - пагинация, сортировка, фильтрация. Финал 2026-05-26 21:50:12 +03:00
aleksey 01dbc6d6cb Расширена работа с бан словами #22 2026-05-25 21:30:33 +03:00
aleksey c2d2e934d9 Раздел api Календари #22 2026-05-25 17:50:57 +03:00
aleksey 6098039632 хендлер рефреш токена для админа #22 2026-05-24 22:18:05 +03:00
aleksey 3abf5c94ee Рефакторинг обработчиков. Финальное тестирование #21 2026-05-18 14:37:59 +03:00
aleksey 40806df62a Рефакторинг обработчиков. Часть 3 #21 2026-05-13 23:02:59 +03:00
aleksey 6403f061df Рефакторинг обработчиков. Часть 1 #21 2026-05-10 22:14:38 +03:00
aleksey a34e36b966 Пагинация, фильтры и сортировки Часть 1 #20 2026-05-09 13:38:54 +03:00
aleksey ecf68ee300 Fix /v1/admin/stats всегда пустые данные
Добавлено поле с датой последнего логина пользователям и админам  #20
2026-05-08 20:21:04 +03:00
aleksey 1132341b92 Добавлены эндпойнты admin/v1/events и admin/v1/events/:id #20 2026-05-08 19:02:35 +03:00