feat(public-share): selectable agent-role identity + fix floating-icon overlap #25
Reference in New Issue
Block a user
Delete Branch "feat/share-assistant-identity-and-branding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Два фикса для фичи «анонимный AI-ассистент на публичных шарах».
1. Выбор identity (agent role) для анонимного ассистента
publicShareAssistantRoleId(подsettings.ai.provider, пустое = встроенная заблокированная персона). Админ выбирает, какую роль-«личность» принимает анонимный ассистент.AiAgentRoleRepo.findById(roleId, workspaceId)(scoped по воркспейсу, soft-delete aware); отсутствующая/отключённая роль → fallback на встроенную персону.instructionsроли ЗАМЕНЯЮТ встроенныйPERSONA, но неизменяемыйSAFETY_FRAMEWORKпо-прежнему всегда добавляется — граница безопасности остаётся областью видимости инструментов (дерево шары).publicShareChatModel.UpdateAiSettingsDto→ai-settings.service(update whitelist) → второй whitelistALLOWEDвworkspace.repo→resolve()/getMasked()→ разрешение роли на стриме → промпт/модель.Select«Assistant identity» в блоке «Public share assistant» (список включённых ролей + пункт «Built-in assistant persona»; сохранённая, но отключённая роль показывается явно с пометкой «(disabled)», чтобы поле не было пустым).2. Фикс перекрытия плавающей иконки + переименование
share-ai-widget.tsx) и кнопка брендинга (share-branding.tsx) обе былиAffixв правом нижнем углу и накладывались. FAB поднят (bottom: 80) и стоит НАД брендингом (bottom: 20), оба справа — без наложения и в одностраничных, и в многостраничных шарах (брендинг остаётся справа, не задевает левый navbar).Вне scope
Верификация
pnpm --filter server test -- public-share-chat— 39/39 passed (включая новые тесты: замена персоны ролью при сохранённом safety-framework, edge-casesresolveShareRole, приоритет model-override).pnpm --filter client exec tsc --noEmit— exit 0.pnpm --filter server build— exit 0 (typecheck сервера).@tanstack/eslint-plugin-query(проблема установки в worktree, не связана с изменениями).Ревью
Прошло два прохода review-субагента: первый дал 2 не-блокирующих замечания (наложение брендинга на левый navbar в многостраничных шарах; пустой Select для отключённой роли) — оба исправлены; повторное ревью — APPROVE.