## Why Внешние приложения должны заводить уже существующего сотрудника Merakomis в конкретный проект с разделом и ролью, но текущий `PUT /api/project-members` требует `X-Acting-Emp-Id` и портальные права `isRwMember`. Service-to-service интеграция с одним API-ключом не может выполнить эту операцию. ## What Changes - Добавить отдельный service-эндпоинт `PUT /api/service/project-members` для upsert участника команды проекта. - Авторизация только по API-ключу (`X-Api-Key` / Bearer); **без** `X-Acting-Emp-Id` и без проверки `Rules::isRwMember`. - Тело и валидации как у существующего `PUT /api/project-members`: `project_id`, `emp_id`, `section_id`, `role`, опционально `active` и `text`. - Существующий `PUT /api/project-members` (с acting) **не меняется**. - Обновить документацию API (`docs/user-reader-api.md`, при необходимости `DEVELOPERS.md`). ## Capabilities ### New Capabilities - `service-project-members`: service-to-service запись участника проекта (upsert TeamMember) только по API-ключу ### Modified Capabilities ## Impact - Код: `services/user-reader` — новый роут (или расширение write-модуля), переиспользование `validate_member_write` / `upsert_team_member` - API: новый путь `/api/service/project-members`; матрица доступа в docs - Безопасность: доверие к владельцу API-ключа (полный write состава без impersonation) - Клиенты: внешние приложения; портальный UI и acting-поток не затрагиваются