aleksey
0690020e81
feat(auth): list/revoke sessions with device_name and client_type. Fixes EventHub/EventHubBack#74
CI / test (push) Failing after 10m52s
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-08-16 18:30:05 +03:00
aleksey
1c701a5254
fix(share): register calendar_share migration and rebuild old PK schema. Refs EventHub/EventHubBack#73
CI / test (push) Successful in 9m32s
CI / deploy-ift (push) Successful in 4m35s
CI / e2e-ift (push) Successful in 1m40s
CI / deploy-stage (push) Successful in 2m27s
CI / e2e-stage (push) Successful in 4m23s
2026-08-16 10:04:16 +03:00
aleksey
331000a464
feat(share): calendar_share invite/ACL for personal and commercial.
...
CI / test (push) Failing after 6m37s
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
Co-editor and deputy grants with mirror_to_default; personal out of search; list owned+shared. Refs EventHub/EventHubBack#73
2026-08-15 23:20:11 +03:00
aleksey
12274f9ed0
feat(notify): Web Push subscriptions and email/push prefs.
...
CI / test (push) Successful in 7m43s
CI / deploy-ift (push) Successful in 3m33s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Failing after 3m40s
CI / e2e-stage (push) Has been skipped
Prefs in user.preferences; push_subscription table; VAPID send on
reminder/waitlist. Refs EventHub/EventHubBack#75
2026-08-15 20:19:44 +03:00
aleksey
fb8869fa86
feat(waitlist): optional event waitlist with FIFO promote.
...
CI / test (push) Successful in 7m12s
CI / deploy-ift (push) Successful in 2m44s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Successful in 2m3s
CI / e2e-stage (push) Successful in 1m24s
Commercial calendars opt in via settings.waitlist_enabled; join when full;
auto-promote on cancel/decline/expire with email and in-app notify.
Refs EventHub/EventHubBack#72
2026-08-14 21:44:42 +03:00
aleksey
29111cd514
feat(upload): avatar and calendar cover via local disk storage.
...
POST /v1/user/me/avatar and /v1/calendars/:id/cover; GET /v1/media;
UPLOAD_DIR on eventhub-data volume; MIME/size limits.
Refs EventHub/EventHubBack#71
Refs EventHub/EventHubSpec#8
2026-08-14 21:27:34 +03:00
aleksey
347a645933
feat(auth): POST /v1/logout and admin logout revoke refresh session. Refs EventHub/EventHubBack#69
CI / test (push) Successful in 7m32s
CI / deploy-ift (push) Successful in 2m29s
CI / e2e-ift (push) Successful in 1m29s
CI / deploy-stage (push) Successful in 2m3s
CI / e2e-stage (push) Successful in 2m1s
2026-08-14 20:23:16 +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
2567585333
feat(booking): studio journal and instance inbox. Refs EventHub/EventHubFront#60
CI / test (push) Successful in 7m31s
CI / deploy-ift (push) Successful in 2m38s
CI / e2e-ift (push) Successful in 1m26s
CI / deploy-stage (push) Successful in 2m3s
CI / e2e-stage (push) Successful in 1m21s
2026-08-14 11:13:01 +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
0e4e886cd4
feat(specialists): owner is non-deletable specialist on commercial create
...
CI / test (push) Successful in 8m35s
CI / deploy-ift (push) Successful in 21m2s
CI / e2e-ift (push) Successful in 2m3s
CI / deploy-stage (push) Successful in 2m9s
CI / e2e-stage (push) Successful in 1m16s
Bootstrap calendar_specialist for owner (active); DELETE owner → 403;
toggle via status. Fixes solo assign-to-slot. Refs EventHub/EventHubBack#66
2026-08-01 12:18:36 +03:00
aleksey
10464de3ec
feat(calendar): single Default personal with guards and backfill
...
CI / test (push) Failing after 7m22s
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
Ensure title Default; reject second personal and delete/type-change of
the sole personal; migrate extras to commercial or soft-delete.
Refs EventHub/EventHubBack#64
2026-07-30 22:07:15 +03:00
aleksey
bb37909ffb
fix(events): guard booking_occupancy when booking table missing
...
CI / test (push) Successful in 6m45s
CI / deploy-ift (push) Successful in 4m5s
CI / e2e-ift (push) Successful in 9m0s
CI / deploy-stage (push) Successful in 2m36s
CI / e2e-stage (push) Successful in 1m18s
Admin eunit suites call event_to_json without Mnesia booking table;
catch list_by_event failures and treat as free.
2026-07-30 15:56:49 +03:00
aleksey
edd396dff8
feat(events): add booking_occupancy on event JSON for studio grid
...
CI / test (push) Failing after 6m23s
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
Expose free|pending|confirmed so commercial calendar can aggregate
slots by occupancy without N GET /bookings calls.
2026-07-30 15:33:49 +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
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
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
edb7c20f70
Expire past-pending bookings to expired status. Fixes EventHub/EventHubBack#60
CI / test (push) Successful in 7m14s
CI / deploy-ift (push) Successful in 3m40s
CI / e2e-ift (push) Successful in 1m43s
CI / deploy-stage (push) Successful in 3m8s
CI / e2e-stage (push) Successful in 1m12s
2026-07-27 16:45:30 +03:00
aleksey
1d9752bb69
feat: GET /v1/user/booking-requests + search image_url. Fixes EventHub/EventHubBack#59
CI / test (push) Successful in 7m1s
CI / deploy-ift (push) Successful in 5m59s
CI / e2e-ift (push) Successful in 1m34s
CI / deploy-stage (push) Successful in 2m47s
CI / e2e-stage (push) Successful in 1m18s
2026-07-27 14:53:25 +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
e3013075cc
feat: booking JSON user_nickname/email for owner UI. Refs EventHub/EventHubBack#56
CI / test (push) Successful in 7m4s
CI / deploy-ift (push) Successful in 2m29s
CI / e2e-ift (push) Successful in 1m26s
CI / deploy-stage (push) Successful in 2m22s
CI / e2e-stage (push) Successful in 1m13s
2026-07-23 13:20:33 +03:00
aleksey
571f04737d
feat: specialist_invite API + user lookup. Fixes EventHub/EventHubBack#55
CI / test (push) Successful in 6m47s
CI / deploy-ift (push) Successful in 3m23s
CI / e2e-ift (push) Successful in 1m58s
CI / deploy-stage (push) Successful in 2m1s
CI / e2e-stage (push) Successful in 1m13s
2026-07-22 18:52:35 +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
fdb08eb453
fix: require calendar owner or admin for booking confirm/decline. Fixes EventHub/EventHubBack#53
CI / test (push) Successful in 6m49s
CI / deploy-ift (push) Successful in 2m28s
CI / e2e-ift (push) Successful in 1m26s
CI / deploy-stage (push) Successful in 1m57s
CI / e2e-stage (push) Successful in 1m49s
2026-07-22 10:53:01 +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
fc38f63497
fix: only add search filters present in QS so empty GET hits discovery tops. Refs EventHub/EventHubBack#50
CI / test (push) Successful in 6m58s
CI / deploy-ift (push) Successful in 3m16s
CI / e2e-ift (push) Failing after 1m30s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-20 14:04:56 +03:00
aleksey
6d52bc3a8e
feat: discovery tops for empty GET /v1/search. Refs EventHub/EventHubBack#50
...
CI / test (push) Successful in 22m57s
CI / deploy-ift (push) Successful in 3m22s
CI / e2e-ift (push) Successful in 1m12s
CI / deploy-stage (push) Successful in 4m21s
CI / e2e-stage (push) Successful in 1m27s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-20 12:17:36 +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
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
0c8a87df75
fix: parse confirmation timeout on calendar PUT
...
Map auto/manual/{timeout:N} in convert_field so client updates are not silently dropped.
2026-07-19 20:37:46 +03:00
aleksey
cd61aaff20
feat: bake product version from Spec and expose build in health.
...
Resolve MAJOR.MINOR via EventHubSpec/VERSION; CI run_number as EVENTHUB_BUILD; health returns version/build/git_sha/built_at.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-17 21:48:24 +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
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
6441be61b1
fix(archive): async peer start в archive_manager, без краша gen_server. Refs EventHub/EventHubBack#33 [skip ci]
2026-07-15 17:10:16 +03:00
aleksey
6bba96c36e
fix(loadtest): verify через admin verification-token, убрать token из register. Refs EventHub/EventHubBack#30
2026-07-15 00:12:32 +03:00
aleksey
e8b90606c3
feat(loadtest): IFT Tsung smoke/mix + verification_token на стендах. Refs EventHub/EventHubBack#30
2026-07-15 00:08:48 +03:00
aleksey
2eeda5c4c4
feat(backend): build identity в health, VERSION bake и auto stage по sha-*
CI / test (push) Successful in 28m3s
2026-07-14 21:25:40 +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
018bf85b87
User login and refresh on auth_session (phase 2). Refs EventHub/EventHubBack#26
2026-07-07 19:33:24 +03:00
aleksey
9de57bd52c
Реализовать кластер-безопасные admin refresh-сессии (фаза 1, #23 ).
...
Единая auth_session с refresh JWT, rotation и reuse detection; CI/CD временно на workflow_dispatch.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-07 15:30:27 +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
d2483ada15
Update Swagger json
2026-05-28 19:25:46 +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