UI: API/MCP-доступ в карточке бота, legacy-ключи в Settings, бот и канал в истории (этап 3)
- ApiScopesEditor — общий редактор скоупов (режим + формы/справочники) - Bots.tsx: секция «Доступ к API и MCP» при создании и в настройках бота, показ ключа один раз, перевыпуск с подтверждением - Settings.tsx: управление ключами убрано, read-only список legacy-ключей - TaskHistory/TaskDetail: иконка бота + бейдж канала MCP/API у записей аудита - GET /api/bots/:id возвращает apiKey
This commit is contained in:
@@ -175,6 +175,9 @@ export function registerBotCrudRoutes(app: import("express").Express): void {
|
||||
return res.status(404).json({ success: false, error: 'Бот не найден' });
|
||||
}
|
||||
|
||||
// Привязанный API-ключ бота (без сырого ключа и keyHash)
|
||||
const botApiKey = await storage.getApiKeyByBotId(botId, req.organizationId!);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
bot: {
|
||||
@@ -202,6 +205,9 @@ export function registerBotCrudRoutes(app: import("express").Express): void {
|
||||
sendSystemPrompt: bot.sendSystemPrompt ?? true,
|
||||
sendCardInfo: bot.sendCardInfo ?? true,
|
||||
sendChatHistory: bot.sendChatHistory ?? true,
|
||||
apiKey: botApiKey
|
||||
? { id: botApiKey.id, keyPrefix: botApiKey.keyPrefix, scopes: botApiKey.scopes, isActive: botApiKey.isActive, lastUsedAt: botApiKey.lastUsedAt }
|
||||
: null,
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user