АРЧ АП11 - Архитектура после ге :

This commit is contained in:
2026-04-17 23:49:21 +03:00
parent 8f9364e7c9
commit a5ea9adf53
72 changed files with 7353 additions and 4027 deletions
@@ -53,10 +53,7 @@ function containsLetterLikeChars(text: unknown): boolean {
}
export function createAssistantBoundaryPolicy(deps: AssistantBoundaryPolicyDeps): AssistantBoundaryPolicy {
const defaultChannel = String(deps.activeMcpChannel ?? "default");
function buildAssistantDataScopeContractReply(scopeProbe: Record<string, unknown> | null = null): string {
const channel = String(scopeProbe?.channel ?? defaultChannel);
const organizations = Array.isArray(scopeProbe?.organizations)
? scopeProbe.organizations
.map((item) => String(item ?? "").trim())
@@ -65,30 +62,30 @@ export function createAssistantBoundaryPolicy(deps: AssistantBoundaryPolicyDeps)
if (organizations.length === 1) {
return [
`Сейчас в активном MCP-канале \`${channel}\` доступна организация: ${organizations[0]}.`,
"Работаю в read-only режиме. Могу сразу показать по этой организации документы, операции, договоры или остатки."
`Сейчас доступна организация: ${organizations[0]}.`,
"Могу сразу показать по ней документы, операции, договоры или остатки."
].join(" ");
}
if (organizations.length > 1) {
const preview = organizations.slice(0, 10).join(", ");
return [
`Сейчас в активном MCP-канале \`${channel}\` доступны организации (${organizations.length}): ${preview}.`,
"Работаю в read-only режиме. Скажи, по какой организации смотреть документы/операции."
`Сейчас доступны организации (${organizations.length}): ${preview}.`,
"Скажите, по какой организации смотреть данные."
].join(" ");
}
if (scopeProbe?.status === "unresolved_with_error" && scopeProbe?.error) {
return [
`Не смог прочитать название организации из live MCP-канала \`${channel}\`: ${scopeProbe.error}.`,
"Работаю в read-only режиме и вижу только данные активного контура. Проверь подключение MCP/1С, после этого сразу назову контур."
"Сейчас не удалось определить список организаций из подключенной базы.",
`Техническая причина: ${scopeProbe.error}.`,
"Проверьте подключение, и я сразу назову доступный контур."
].join(" ");
}
return [
`Работаю в read-only режиме и вижу только те данные, которые отдает текущий MCP-канал \`${channel}\`.`,
"Словарь компаний не зашит в код: рабочий контур определяется live-подключением.",
"Если подключено несколько баз, для автосписка нужен MCP-метод метаданных (перечень баз/организаций); без него можно анализировать только активный контур запросов."
"Сейчас вижу только данные текущего подключенного контура.",
"Если в нем несколько организаций, скажите, по какой смотреть данные."
].join(" ");
}