fix(tradein/auth): restore brusnika (user2) pilot access #2512

Merged
lekss361 merged 2 commits from fix/unblock-user2-brusnika into main 2026-07-13 15:33:37 +00:00
Owner

Summary

  • Разблокирован доступ user2 («Брусника») к сервису Mera: роль expired → pilot в auth/roles.yaml (откат trial-expire от 2026-07-09, PR #2472/#2473).
  • Оба зеркала test_rbac.py (backend/ + tradein-mvp/backend/) возвращены к «все user1..user10 == pilot» — иначе test_get_role_known_users падает.

Почему правки в тестах, а не только roles.yaml

auth/** НЕ входит в paths: ни одного deploy/ci workflow (paths-filter trap, см. vault Pattern_Mera_Expire_Pilot_Access_Paths_Filter_Trap_0709). Правки под backend/** и tradein-mvp/** заставляют CI прогнать backend-tests И триггерят deploy + deploy-tradein — роль подхватится в рантайме без ручного workflow_dispatch.

50 попыток (оценок)

Выданы отдельно прямым UPSERT в прод-таблицу account_estimate_usage (не через код — per-user лимит в коде не поднять, рычаг = колонка used): user2, период 2026-07, used = -35 → remaining = 50. Процедура — runbook tradein_grant_estimate_attempts. Грант живёт до конца календарного месяца UTC (1 августа квота вернётся к 15).

Test plan

  • pre-commit (ruff/ruff-format) passed
  • CI backend-tests green (оба зеркала)
  • post-deploy: docker exec tradein-backend grep '^ user2:' /app/auth/roles.yamlpilot; контейнер рестартнул
  • /api/v1/trade-in/quota для user2 → remaining 50

Closes #2472 follow-up (reversal). Не закрывает issue — это операционная разблокировка.

## Summary - Разблокирован доступ user2 («Брусника») к сервису Mera: роль `expired → pilot` в `auth/roles.yaml` (откат trial-expire от 2026-07-09, PR #2472/#2473). - Оба зеркала `test_rbac.py` (`backend/` + `tradein-mvp/backend/`) возвращены к «все user1..user10 == pilot» — иначе `test_get_role_known_users` падает. ## Почему правки в тестах, а не только roles.yaml `auth/**` НЕ входит в `paths:` ни одного deploy/ci workflow (paths-filter trap, см. vault `Pattern_Mera_Expire_Pilot_Access_Paths_Filter_Trap_0709`). Правки под `backend/**` и `tradein-mvp/**` заставляют CI прогнать backend-tests И триггерят `deploy` + `deploy-tradein` — роль подхватится в рантайме без ручного `workflow_dispatch`. ## 50 попыток (оценок) Выданы **отдельно** прямым UPSERT в прод-таблицу `account_estimate_usage` (не через код — per-user лимит в коде не поднять, рычаг = колонка `used`): `user2`, период `2026-07`, `used = -35 → remaining = 50`. Процедура — runbook `tradein_grant_estimate_attempts`. Грант живёт до конца календарного месяца UTC (1 августа квота вернётся к 15). ## Test plan - [x] pre-commit (ruff/ruff-format) passed - [ ] CI backend-tests green (оба зеркала) - [ ] post-deploy: `docker exec tradein-backend grep '^ user2:' /app/auth/roles.yaml` → `pilot`; контейнер рестартнул - [ ] `/api/v1/trade-in/quota` для user2 → remaining 50 Closes #2472 follow-up (reversal). Не закрывает issue — это операционная разблокировка.
lekss361 added 1 commit 2026-07-13 15:10:23 +00:00
fix(tradein/auth): restore brusnika (user2) pilot access
Some checks failed
CI / changes (pull_request) Successful in 15s
CI Trade-In / changes (pull_request) Successful in 15s
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Failing after 1m37s
CI / openapi-codegen-check (pull_request) Successful in 3m23s
CI / backend-tests (pull_request) Successful in 16m36s
60be78f97c
Откат expire-trial от 2026-07-09 (#2472/#2473): user2 expired→pilot в
auth/roles.yaml. Оба зеркала test_rbac.py возвращены к «все user1..user10 ==
pilot». Правки под backend/** и tradein-mvp/** сами триггерят deploy +
deploy-tradein (обход paths-filter trap: auth/** не входит в paths-фильтры).

50 попыток (оценок) выданы отдельно прямым UPSERT в прод account_estimate_usage
(user2, период 2026-07, used=-35 → remaining=50) по runbook
tradein_grant_estimate_attempts — грант живёт до конца календарного месяца UTC.
bot-backend added 1 commit 2026-07-13 15:16:24 +00:00
test(rbac): scope tradein expired-role tests to praktika (user2 restored)
All checks were successful
CI / changes (pull_request) Successful in 13s
CI Trade-In / changes (pull_request) Successful in 13s
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 1m27s
CI / openapi-codegen-check (pull_request) Successful in 3m13s
CI / backend-tests (pull_request) Successful in 16m14s
409c53b41b
test_rbac_expired_denied_on_non_admin_api и test_rbac_expired_allowed_on_bootstrap
хардкодили user2 как expired-субъект (только в tradein-зеркале — в main backend
этих тестов нет, потому упал лишь CI Trade-In). user2 восстановлен в pilot →
переводим оба на praktika (остаётся expired). Покрытие поведения expired-роли
сохранено.
lekss361 merged commit b5477362f0 into main 2026-07-13 15:33:37 +00:00
lekss361 deleted branch fix/unblock-user2-brusnika 2026-07-13 15:33:38 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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: lekss361/gendesign#2512
No description provided.