Закрепить phase5 continuity replay для 1С

This commit is contained in:
2026-05-23 19:46:32 +03:00
parent 624e0cdf26
commit b2fe0460b3
7 changed files with 37 additions and 73 deletions
@@ -20,6 +20,9 @@ function groupRowsByMarker(rows) {
function formatOptionalDate(value, formatDateRu) {
return value ? formatDateRu(value) : "дата не указана";
}
function trimTrailingSentenceDot(value) {
return value ? value.replace(/\.+$/u, "") : null;
}
function findFocusedCounterpartyValuePoint(profileRows, counterpartyHint, deps) {
if (!counterpartyHint) {
return null;
@@ -252,7 +255,7 @@ function composeCounterpartyAnalyticsReply(intent, rows, options = {}, deps) {
: null;
const lines = [
observedAgeLabel && firstObservedActivity && lastObservedActivity
? `По активности в базе 1С контрагент ${focusedCounterparty.name} наблюдается минимум ${observedAgeLabel}.`
? `По активности в базе 1С контрагент ${focusedCounterparty.name} наблюдается минимум ${trimTrailingSentenceDot(observedAgeLabel)}.`
: `По активности в базе 1С контрагент ${focusedCounterparty.name} найден в подтвержденных движениях.`
];
if (firstObservedActivity) {
@@ -311,7 +314,7 @@ function composeCounterpartyAnalyticsReply(intent, rows, options = {}, deps) {
: null;
const lines = [
observedAgeLabel && organizationFirstObservedActivity && organizationLastObservedActivity
? `По активности организации ${organizationHint} в базе 1С наблюдается минимум ${observedAgeLabel}.`
? `По активности организации ${organizationHint} в базе 1С наблюдается минимум ${trimTrailingSentenceDot(observedAgeLabel)}.`
: `По активности организации ${organizationHint} в базе 1С найдены подтвержденные движения.`
];
if (organizationFirstObservedActivity) {
+1 -1
View File
@@ -4090,7 +4090,7 @@ function buildAssistantCapabilityContractReply(userMessage = "") {
.replace(/По основным группам:/giu, "Основные направления:")
.replace(/Если нужно, подскажу, как лучше сформулировать запрос под вашу задачу\./giu, "Если хотите, можно сразу задать конкретный вопрос по документам, остаткам, НДС, контрагенту или договору.")
.replace(/Что не делаю:\s*/giu, "Не делаю только административные действия: ")
.replace(/\s{2,}/g, " ")
.replace(/[^\S\r\n]{2,}/g, " ")
.replace(/\n{3,}/g, "\n\n")
.trim();
return normalizedReply || "Могу помогать с вопросами по данным 1С: НДС, контрагенты, долги, деньги, договоры и склад.";
@@ -199,7 +199,7 @@ function loadCapabilitiesRegistry() {
}
function buildCapabilityContractReplyFromRegistry() {
return [
"Могу быстро смотреть управленческие вещи по данным 1С в режиме чтения.",
"Могу помочь с быстрым анализом данных 1С:",
"",
"- кто должен денег и кому должны;",
"- какой год или месяц был самым денежным;",
@@ -105,6 +105,10 @@ function formatOptionalDate(value: string | null, formatDateRu: (isoDate: string
return value ? formatDateRu(value) : "дата не указана";
}
function trimTrailingSentenceDot(value: string | null): string | null {
return value ? value.replace(/\.+$/u, "") : null;
}
function findFocusedCounterpartyValuePoint(
profileRows: CounterpartyValuePoint[],
counterpartyHint: string | null | undefined,
@@ -371,7 +375,7 @@ export function composeCounterpartyAnalyticsReply(
: null;
const lines: string[] = [
observedAgeLabel && firstObservedActivity && lastObservedActivity
? `По активности в базе 1С контрагент ${focusedCounterparty.name} наблюдается минимум ${observedAgeLabel}.`
? `По активности в базе 1С контрагент ${focusedCounterparty.name} наблюдается минимум ${trimTrailingSentenceDot(observedAgeLabel)}.`
: `По активности в базе 1С контрагент ${focusedCounterparty.name} найден в подтвержденных движениях.`
];
if (firstObservedActivity) {
@@ -433,7 +437,7 @@ export function composeCounterpartyAnalyticsReply(
: null;
const lines: string[] = [
observedAgeLabel && organizationFirstObservedActivity && organizationLastObservedActivity
? `По активности организации ${organizationHint} в базе 1С наблюдается минимум ${observedAgeLabel}.`
? `По активности организации ${organizationHint} в базе 1С наблюдается минимум ${trimTrailingSentenceDot(observedAgeLabel)}.`
: `По активности организации ${organizationHint} в базе 1С найдены подтвержденные движения.`
];
if (organizationFirstObservedActivity) {
@@ -4047,7 +4047,7 @@ function buildAssistantCapabilityContractReply(userMessage = "") {
.replace(/По основным группам:/giu, "Основные направления:")
.replace(/Если нужно, подскажу, как лучше сформулировать запрос под вашу задачу\./giu, "Если хотите, можно сразу задать конкретный вопрос по документам, остаткам, НДС, контрагенту или договору.")
.replace(/Что не делаю:\s*/giu, "Не делаю только административные действия: ")
.replace(/\s{2,}/g, " ")
.replace(/[^\S\r\n]{2,}/g, " ")
.replace(/\n{3,}/g, "\n\n")
.trim();
return normalizedReply || "Могу помогать с вопросами по данным 1С: НДС, контрагенты, долги, деньги, договоры и склад.";
@@ -220,7 +220,7 @@ export function loadCapabilitiesRegistry(): CapabilityRegistry {
export function buildCapabilityContractReplyFromRegistry(): string {
return [
"Могу быстро смотреть управленческие вещи по данным 1С в режиме чтения.",
"Могу помочь с быстрым анализом данных 1С:",
"",
"- кто должен денег и кому должны;",
"- какой год или месяц был самым денежным;",