-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
P3Low priority / BacklogLow priority / Backlogphase:5-techdebtPhase 5: Technical DebtPhase 5: Technical DebtrefactoringArchitectural refactoringArchitectural refactoring
Description
Parent
Sub-issue of #641 (Phase 7: Service facade migration)
Зависит от
- Фаза 6: Protocol interfaces — типизация контрактов между модулями #496 (Phase 6 — AuthService Protocol определён)
Цель
Обернуть функции из auth_manager.py в класс AuthService, соответствующий Protocol из modules/core/protocols.py. Обновить все call sites.
Текущее состояние
auth_manager.py содержит ~15 module-level функций:
authenticate_user(username, password) -> Optional[User]decode_token(token) -> Optional[TokenPayload]create_access_token(username, role, user_id, workspace_id) -> tuplecreate_session(...) -> LoginResponserevoke_session(jti) -> boolrevoke_all_user_sessions(user_id) -> intget_user_permissions(user) -> Dict[str, str]level_gte(),user_has_level(),workspace_context()require_admin(),require_permission()— FastAPI dependencies
Call sites: ~50 мест в роутерах и оркестраторе.
Что сделать
- Создать класс
AuthServiceвmodules/core/auth_service.py, реализующий Protocol - Методы делегируют к существующим функциям (Strangler Fig)
- Возвраты типизированы через
UserInfo,LoginResult,TokenInfoизmodules/core/schemas.py - Singleton
auth_service = AuthService()экспортируется из модуля - Постепенно мигрировать call sites с
from auth_manager import Xнаfrom modules.core.auth_service import auth_service - FastAPI dependencies (
require_admin,require_permission) остаются функциями — они не часть Protocol
Нюансы
auth_manager.pyостаётся как тонкий фасад (backward compat)- Pydantic
Uservs TypedDictUserInfo— нужна конвертация на границе _member_role_cache— internal, не в Protocol- JWT секрет — config dependency, нужно решить как инжектить
Критерии готовности
-
AuthServiceкласс реализует Protocol изmodules/core/protocols.py - Возвраты используют TypedDict из
modules/core/schemas.py - Call sites мигрированы (или
auth_manager.pyделегирует кAuthService) - Тесты, CI зелёный
Оценка: M (1 PR)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P3Low priority / BacklogLow priority / Backlogphase:5-techdebtPhase 5: Technical DebtPhase 5: Technical DebtrefactoringArchitectural refactoringArchitectural refactoring