AURORA-1830: /users/me не падает на email .local #224

Open
aep wants to merge 1 commits from feat/206-aurora-1830-users-me-local-email into test
Owner

Closes #206

Задача Jira: AURORA-1830

Что сделано

  • В api/src/domain/schemas.py добавлена UserReadBase (email: str, username: str, full_name: Optional[str] без pattern/длины, role_id). UserInDB теперь наследует её вместо UserBase; User, UserAdminListResponse, OrgUnitSchema.users, UserResponse чинятся автоматически.
  • Вход (UserBase, UserCreate, UserUpdate) не тронут: .local на входе по-прежнему 422.
  • Закрывает и связанное наблюдение O-7: короткий username и < в full_name, вставленные в БД напрямую, больше не дают 500 на /users/me, /users/, /users/{id}.

Тесты

  • Новый api/tests/unit/test_user_schemas.py: параметризованный unit на выходные схемы (email .local, username rf, < в full_name), контроль UserCreate с .local -> ValidationError, тест эндпоинта /api/v1/users/me с подменой зависимостей (500 до правки, 200 после).
  • pytest tests/unit: 63 passed, 2 failed (оба из исходных падений export_service_query_params). Полный прогон с --init_db не выполнен: миграция 0012 падает на PG15 контейнера dfip-pg15 ("subquery in FROM must have an alias"), независимо от этой правки.

Проверить руками

  • Пользователь с email x@corp.local в БД: GET /api/v1/users/me и GET /api/v1/users/ отвечают 200.
  • POST /api/v1/users/ с email .local по-прежнему 422.

Замер до/после

Будет добавлен после ночного прогона на стенде perf/ (замер не нужен: правка схемы, не влияет на производительность).

Rulings I made

  • R-1: в OpenAPI у ответа пропадёт format: email. Обоснование: иначе входные ограничения остаются на выходе. Цена ошибки: потребитель схемы, ожидающий формат email (фронт не использует).

🤖 Generated with Claude Code

Closes #206 Задача Jira: AURORA-1830 ## Что сделано - В `api/src/domain/schemas.py` добавлена `UserReadBase` (email: str, username: str, full_name: Optional[str] без pattern/длины, role_id). `UserInDB` теперь наследует её вместо `UserBase`; `User`, `UserAdminListResponse`, `OrgUnitSchema.users`, `UserResponse` чинятся автоматически. - Вход (`UserBase`, `UserCreate`, `UserUpdate`) не тронут: `.local` на входе по-прежнему 422. - Закрывает и связанное наблюдение O-7: короткий username и `<` в full_name, вставленные в БД напрямую, больше не дают 500 на `/users/me`, `/users/`, `/users/{id}`. ## Тесты - Новый `api/tests/unit/test_user_schemas.py`: параметризованный unit на выходные схемы (email .local, username `rf`, `<` в full_name), контроль `UserCreate` с `.local` -> ValidationError, тест эндпоинта `/api/v1/users/me` с подменой зависимостей (500 до правки, 200 после). - `pytest tests/unit`: 63 passed, 2 failed (оба из исходных падений export_service_query_params). Полный прогон с `--init_db` не выполнен: миграция 0012 падает на PG15 контейнера dfip-pg15 ("subquery in FROM must have an alias"), независимо от этой правки. ## Проверить руками - Пользователь с email `x@corp.local` в БД: `GET /api/v1/users/me` и `GET /api/v1/users/` отвечают 200. - `POST /api/v1/users/` с email `.local` по-прежнему 422. ## Замер до/после Будет добавлен после ночного прогона на стенде perf/ (замер не нужен: правка схемы, не влияет на производительность). ## Rulings I made - R-1: в OpenAPI у ответа пропадёт `format: email`. Обоснование: иначе входные ограничения остаются на выходе. Цена ошибки: потребитель схемы, ожидающий формат email (фронт не использует). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-28 17:11:17 +03:00
UserInDB наследует новую UserReadBase (email/username/full_name без
валидации формата). Вход (UserBase/UserCreate/UserUpdate) не менялся.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Owner

Полный прогон pytest (контроллер, 28.10): PostgreSQL 16, пустая БД, --init_db — 205 passed, 4 skipped, 3 failed. Падения исходные для test (test_backend_calls_form3_add_project_and_add_line_functions и два теста test_export_service_query_params), новых нет. На PostgreSQL 15.12 полный прогон станет возможен после AURORA-1922 (PR #221): test не накатывается на 15 из-за 0012:27.

Полный прогон pytest (контроллер, 28.10): PostgreSQL 16, пустая БД, --init_db — 205 passed, 4 skipped, 3 failed. Падения исходные для test (test_backend_calls_form3_add_project_and_add_line_functions и два теста test_export_service_query_params), новых нет. На PostgreSQL 15.12 полный прогон станет возможен после AURORA-1922 (PR #221): test не накатывается на 15 из-за 0012:27.
This pull request can be merged automatically.
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/206-aurora-1830-users-me-local-email:feat/206-aurora-1830-users-me-local-email
git checkout feat/206-aurora-1830-users-me-local-email
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/DFiP_Budget_planing#224
No description provided.