feat(tradein/v2): реальный display-профиль в TopNav через /me (#2046) #2300

Merged
lekss361 merged 1 commit from feat/tradein-me-profile-fields into main 2026-07-03 20:17:14 +00:00
Owner

Закрывает #2046. /me теперь отдаёт display_name/org/email (все опциональны) — заполнено ТОЛЬКО реально известное: kopylovdisplay_name="Копылов" (взято из комментария в caddy/users.caddy.snippet). Org/email для него и все поля для остальных пилот-юзеров — не выдуманы, None, фронт корректно фолбэкается на прежнее поведение (username/brand/role/пустая строка).

  • tradein-mvp/backend/app/core/auth.py_USERNAME_PROFILE + get_profile_for_user(), паттерн повторяет существующий _USERNAME_BRAND/get_brand_for_user() (#657). Корневой backend/app/core/auth.py не тронут — tradein-only фича, как и brand.
  • frontend/src/lib/useMe.ts (ручная копия типа, без codegen) += 3 опциональных поля.
  • app/v2/page.tsx topNavUser — реальные значения вместо фабрикации, инициалы из display_name где есть.

code-reviewer: APPROVE. Локально: uv run pytest tests/test_me_brand.py tests/test_rbac.py → 35 passed; полный backend suite → 3090 passed, 6 skipped; npm run type-check/lint — чисто.

Закрывает #2046. `/me` теперь отдаёт `display_name`/`org`/`email` (все опциональны) — заполнено ТОЛЬКО реально известное: `kopylov` → `display_name="Копылов"` (взято из комментария в `caddy/users.caddy.snippet`). Org/email для него и все поля для остальных пилот-юзеров — не выдуманы, `None`, фронт корректно фолбэкается на прежнее поведение (username/brand/role/пустая строка). - `tradein-mvp/backend/app/core/auth.py` — `_USERNAME_PROFILE` + `get_profile_for_user()`, паттерн повторяет существующий `_USERNAME_BRAND`/`get_brand_for_user()` (#657). Корневой `backend/app/core/auth.py` не тронут — tradein-only фича, как и `brand`. - `frontend/src/lib/useMe.ts` (ручная копия типа, без codegen) += 3 опциональных поля. - `app/v2/page.tsx` `topNavUser` — реальные значения вместо фабрикации, инициалы из display_name где есть. code-reviewer: ✅ APPROVE. Локально: `uv run pytest tests/test_me_brand.py tests/test_rbac.py` → 35 passed; полный backend suite → 3090 passed, 6 skipped; `npm run type-check`/`lint` — чисто.
lekss361 added 1 commit 2026-07-03 20:00:36 +00:00
feat(tradein/v2): реальный display-профиль в TopNav через /me (#2046)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m37s
CI Trade-In / backend-tests (pull_request) Successful in 2m0s
dafd12d9fa
/me теперь отдаёт display_name/org/email (kopylov -> "Копылов", остальные None).
TopNav использует их вместо фабрикации username-as-name; org/email фолбэк
остаётся прежним для юзеров без известного профиля.
lekss361 merged commit 3945060f0c into main 2026-07-03 20:17:14 +00:00
lekss361 deleted branch feat/tradein-me-profile-fields 2026-07-03 20:17:15 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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#2300
No description provided.