From 8a8486b676e09b68d03ffad70535c05fb714c6e2 Mon Sep 17 00:00:00 2001 From: Andrey Date: Sun, 6 Sep 2026 04:02:06 +0300 Subject: [PATCH] =?UTF-8?q?:lipstick:=20fix(ui):=20=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D1=8B=20=D0=B8=20=D0=B7=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=87=D0=B0?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Порталы: заголовок «Порталы» и подпись без «отдела поддержки», счётчики со склонением («1 портал», «7 материалов»), статусы статей в таблице и в фильтре — одни подписи (Черновик · Опубликована · В архиве), поле «Адрес портала» вместо «Адрес Chatballs». Знания: колонки «Агенты»/«Статус» больше не налезают друг на друга, счётчик со склонением, агенты в карточке знания окрашены как в чате (agentColorOf). StatusPill принимает подпись. Co-Authored-By: Claude Fable 5.1 --- .../features/ai/knowledge/KnowledgeDetailSidebar.tsx | 3 ++- .../src/features/ai/knowledge/KnowledgeTable.tsx | 3 ++- .../src/features/ai/knowledge/styles-library.css | 10 +++++----- .../features/support-portals/PortalArticleTable.tsx | 3 ++- .../src/features/support-portals/PortalContent.tsx | 6 ++++-- .../features/support-portals/PortalCreateDialog.tsx | 2 +- .../src/features/support-portals/PortalSettings.tsx | 2 +- .../features/support-portals/SupportPortalsPage.tsx | 7 ++++--- apps/internal-ui/src/shared/ui.tsx | 4 ++-- apps/internal-ui/src/shared/utils.ts | 8 ++++++++ 10 files changed, 31 insertions(+), 17 deletions(-) diff --git a/apps/internal-ui/src/features/ai/knowledge/KnowledgeDetailSidebar.tsx b/apps/internal-ui/src/features/ai/knowledge/KnowledgeDetailSidebar.tsx index 60763ef..d4472b0 100644 --- a/apps/internal-ui/src/features/ai/knowledge/KnowledgeDetailSidebar.tsx +++ b/apps/internal-ui/src/features/ai/knowledge/KnowledgeDetailSidebar.tsx @@ -1,4 +1,5 @@ import type { AgentCard } from "../../agents/model"; +import { agentColorOf } from "../../conversations/model"; import { Icon } from "../../../shared/icons"; import { formatDate } from "../../../shared/utils"; import type { KnowledgeItem } from "./types"; @@ -22,7 +23,7 @@ export function KnowledgeDetailSidebar({
{assignedAgents.map((agent) => ( ))} diff --git a/apps/internal-ui/src/features/ai/knowledge/KnowledgeTable.tsx b/apps/internal-ui/src/features/ai/knowledge/KnowledgeTable.tsx index 93410ba..0fd519a 100644 --- a/apps/internal-ui/src/features/ai/knowledge/KnowledgeTable.tsx +++ b/apps/internal-ui/src/features/ai/knowledge/KnowledgeTable.tsx @@ -2,6 +2,7 @@ import { ContentLibraryTable } from "../../../shared/content-library/ContentLibr import { formatDate } from "../../../shared/utils"; import { knowledgeCategoryPath } from "./knowledgeTree"; import type { KnowledgeCategory, KnowledgeItem } from "./model"; +import { pluralRu } from "../../../shared/utils"; type KnowledgeTableProps = { bulkMode: boolean; @@ -54,7 +55,7 @@ export function KnowledgeTable({ onCreate={onCreate} onRetry={onRetry} footer={!bulkMode &&
- {items.length} знаний + {pluralRu(items.length, ["знание", "знания", "знаний"])} {selectedIds.size > 0 ? `Выбрано: ${selectedIds.size}` : "Изменения знаний применяются к агентам сразу"}
} > diff --git a/apps/internal-ui/src/features/ai/knowledge/styles-library.css b/apps/internal-ui/src/features/ai/knowledge/styles-library.css index 1e91468..1d73d68 100644 --- a/apps/internal-ui/src/features/ai/knowledge/styles-library.css +++ b/apps/internal-ui/src/features/ai/knowledge/styles-library.css @@ -68,11 +68,11 @@ .knowledge-table { table-layout: fixed; } .knowledge-col-select { width: 38px; } -.knowledge-col-title { width: 32%; } -.knowledge-col-category { width: 27%; } -.knowledge-col-attachments { width: 6%; } -.knowledge-col-agents { width: 6%; } -.knowledge-col-status { width: 9%; } +.knowledge-col-title { width: 30%; } +.knowledge-col-category { width: 24%; } +.knowledge-col-attachments { width: 8%; } +.knowledge-col-agents { width: 9%; } +.knowledge-col-status { width: 13%; } .knowledge-col-updated { width: 14%; } .knowledge-table th, diff --git a/apps/internal-ui/src/features/support-portals/PortalArticleTable.tsx b/apps/internal-ui/src/features/support-portals/PortalArticleTable.tsx index 5e599c1..c73439e 100644 --- a/apps/internal-ui/src/features/support-portals/PortalArticleTable.tsx +++ b/apps/internal-ui/src/features/support-portals/PortalArticleTable.tsx @@ -4,6 +4,7 @@ import { Icon } from "../../shared/icons"; import { StatusPill } from "../../shared/ui"; import { formatDate } from "../../shared/utils"; import type { PortalArticle } from "./model"; +import { ARTICLE_STATUS_LABEL } from "./model"; export function PortalArticleTable({ articles, @@ -88,7 +89,7 @@ export function PortalArticleTable({ {article.category.name} {article.locale.toLocaleUpperCase()} {article.publishedRevision ? article.publishedRevision.revision : "—"} - + {formatDate(article.updatedAt)} event.stopPropagation()}> {canManage && ( diff --git a/apps/internal-ui/src/features/support-portals/PortalContent.tsx b/apps/internal-ui/src/features/support-portals/PortalContent.tsx index e818177..dffc8f0 100644 --- a/apps/internal-ui/src/features/support-portals/PortalContent.tsx +++ b/apps/internal-ui/src/features/support-portals/PortalContent.tsx @@ -12,6 +12,8 @@ import { ContentLibraryToolbar } from "../../shared/content-library/ContentLibra import { DecisionDialog } from "../../shared/DecisionDialog"; import { Icon } from "../../shared/icons"; import { Button } from "../../shared/ui-controls"; +import { pluralRu } from "../../shared/utils"; +import { ARTICLE_STATUS_LABEL } from "./model"; import { agentLinkOptions } from "../ai/agentOptions"; import { linkPortalArticlesToAgent } from "../ai/knowledge/model"; import { useAiAgents } from "../ai/useAiAgents"; @@ -198,7 +200,7 @@ export function PortalContent({ )} > - + )} {error &&
{error}
} @@ -213,7 +215,7 @@ export function PortalContent({ loading={false} onCreate={() => setEditing(null)} onRetry={() => void reload()} - footer={
{filtered.length} материалов
} + footer={
{pluralRu(filtered.length, ["материал", "материала", "материалов"])}
} > Портал — это публичный центр помощи с инструкциями и ответами для клиентов.