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
1fce1aa12d
fix(ci): sync migration_engine_tests ALL_VERSIONS with bag migration
...
CI / test (push) Successful in 8m58s
CI / deploy-ift (push) Successful in 3m30s
CI / e2e-ift (push) Successful in 2m10s
CI / deploy-stage (push) Successful in 2m17s
CI / e2e-stage (push) Successful in 1m15s
test_join_wait timed out waiting for pending 20260730120000_recurrence_exception_bag.
Refs EventHub/EventHubFront#42
2026-07-30 13:27:57 +03:00
aleksey
32d3e7378e
fix(event): store multiple recurrence cancel exceptions
...
CI / test (push) Failing after 10m4s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been cancelled
CI / deploy-stage (push) Has been cancelled
CI / e2e-stage (push) Has been cancelled
Use bag table for recurrence_exception so canceling several WEEKLY occurrences keeps all exceptions (set key was only master_id).
Refs EventHub/EventHubFront#42
2026-07-30 13:07:13 +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
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
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
5ac23219ca
fix: owner event bookings list and paid plan durations from plan_to_months.
...
CI / test (push) Successful in 6m55s
CI / deploy-ift (push) Successful in 3m33s
CI / e2e-ift (push) Failing after 1m4s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Fixes EventHub/EventHubBack#51
Fixes EventHub/EventHubBack#52
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-21 20:18:49 +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
4932f9abae
fix: gate calendar reviews on confirmed booking. Refs EventHub/EventHubFront#8
2026-07-20 21:08:12 +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
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
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
2440c50330
fix: add-host for stand e2e under Docker host network (IFT DNS)
CI / deploy-ift (push) Successful in 2m4s
CI / test (push) Successful in 6m8s
CI / e2e-ift (push) Failing after 3m27s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-20 01:45:10 +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
10f6eef92d
fix: sync migration_engine_tests ALL_VERSIONS with review_vote. Refs EventHub/EventHubBack#47
CI / test (push) Failing after 5m38s
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 00:52:57 +03:00
aleksey
84bfce474a
fix: create review_vote table in unit fixtures for review delete. Refs EventHub/EventHubBack#47
CI / test (push) Failing after 9m7s
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 00:39:30 +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
a6dadcb9d5
fix(test): wait for full stats_tops review/report topology
...
CI / test (push) Successful in 21m3s
CI / deploy-ift (push) Failing after 11m23s
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
Partial waits on top-1 raced under CI load and flaked after stats_collector subscribe reorder.
2026-07-19 00:31:55 +03:00
aleksey
1cd7c2e402
fix(test): stub all migrations in migration_engine join-wait. Refs EventHub/EventHubBack#42
CI / test (push) Successful in 27m9s
CI / deploy-ift (push) Failing after 3m35s
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
2026-07-18 10:40:12 +03:00
aleksey
dd754e28cc
feat: upsert stats counters, daily buckets and ETS tops for admin metrics. Refs EventHub/EventHubBack#42 #43 #44 #45 #46
CI / test (push) Failing after 25m40s
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-17 23:10:00 +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
4fa802702f
Rewrite and expand EUnit suite; run unit tests in CI from shared test image. Refs EventHub/EventHubBack#36 [skip ci]
2026-07-17 15:16:46 +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
0a52712258
docs(tsung): record IFT ceiling ladder and maxusers=150 soft OVER.
...
Refs EventHub/EventHubBack#30 [skip ci]
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-16 23:09:48 +03:00
aleksey
4327de486f
fix(mnesia): apply dump_log_write_threshold before mnesia start.
...
CI / test (push) Successful in 16m25s
CI / deploy-ift (push) Successful in 5m49s
CI / e2e-ift (push) Failing after 4m38s
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped
change_config rejected the key; set_env + verify enables the IFT ceiling ladder. Refs EventHub/EventHubBack#30 Refs EventHub/EventHubBack#34
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-16 19:22:32 +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
94106cf964
fix(mnesia): поднять dump_log_write_threshold; Traefik base v3.3.6. Refs EventHub/EventHubBack#34 Refs EventHub/EventHubDevOps#3 [skip ci]
2026-07-15 17:28:39 +03:00
aleksey
f7f0038556
test(api): CT на портах 18080/18445 вне docker-dev [skip ci]
2026-07-15 17:10:19 +03:00
aleksey
823274caab
docs(loadtest): hold/stress профили и правила безопасности IFT. Refs EventHub/EventHubBack#31 [skip ci]
2026-07-15 16:00:33 +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
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
14c0ac9220
Fix Unicode env parsing in infra_secrets for stage startup.
...
CI / test (push) Successful in 18m50s
Use unicode:characters_to_binary for os:getenv values so Cyrillic placeholder passwords fail with weak_secret instead of badarg crash.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-10 19:29:17 +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