feat(bot): add confirmed purchase proposals in topic ingestion

This commit is contained in:
2026-03-11 01:32:47 +04:00
parent d1a3f0e10c
commit a63c702037
10 changed files with 1312 additions and 234 deletions

View File

@@ -164,9 +164,27 @@ export const enBotTranslations: BotTranslationCatalog = {
},
purchase: {
sharedPurchaseFallback: 'shared purchase',
recorded: (summary) => `Recorded purchase: ${summary}`,
savedForReview: (summary) => `Saved for review: ${summary}`,
parseFailed: "Saved for review: I couldn't parse this purchase yet."
proposal: (summary) => `I think this shared purchase was: ${summary}. Confirm or cancel below.`,
clarification: (question) => question,
clarificationMissingAmountAndCurrency:
'What amount and currency should I record for this shared purchase?',
clarificationMissingAmount: 'What amount should I record for this shared purchase?',
clarificationMissingCurrency: 'Which currency was this purchase in?',
clarificationMissingItem: 'What exactly was purchased?',
clarificationLowConfidence:
'I am not confident I understood this. Please restate the shared purchase with item, amount, and currency.',
confirmButton: 'Confirm',
cancelButton: 'Cancel',
confirmed: (summary) => `Purchase confirmed: ${summary}`,
cancelled: (summary) => `Purchase proposal cancelled: ${summary}`,
confirmedToast: 'Purchase confirmed.',
cancelledToast: 'Purchase cancelled.',
alreadyConfirmed: 'This purchase was already confirmed.',
alreadyCancelled: 'This purchase was already cancelled.',
notYourProposal: 'Only the original sender can confirm or cancel this purchase.',
proposalUnavailable: 'This purchase proposal is no longer available.',
parseFailed:
"I couldn't understand this as a shared purchase yet. Please restate it with item, amount, and currency."
},
payments: {
topicMissing:

View File

@@ -167,9 +167,27 @@ export const ruBotTranslations: BotTranslationCatalog = {
},
purchase: {
sharedPurchaseFallback: 'общая покупка',
recorded: (summary) => `Покупка сохранена: ${summary}`,
savedForReview: (summary) => `Сохранено на проверку: ${summary}`,
parseFailed: 'Сохранено на проверку: пока не удалось распознать эту покупку.'
proposal: (summary) => `Похоже, это общая покупка: ${summary}. Подтвердите или отмените ниже.`,
clarification: (question) => question,
clarificationMissingAmountAndCurrency:
'Какую сумму и валюту нужно записать для этой общей покупки?',
clarificationMissingAmount: 'Какую сумму нужно записать для этой общей покупки?',
clarificationMissingCurrency: 'В какой валюте была эта покупка?',
clarificationMissingItem: 'Что именно было куплено?',
clarificationLowConfidence:
'Я не уверен, что правильно понял сообщение. Переформулируйте покупку с предметом, суммой и валютой.',
confirmButton: 'Подтвердить',
cancelButton: 'Отменить',
confirmed: (summary) => `Покупка подтверждена: ${summary}`,
cancelled: (summary) => `Предложение покупки отменено: ${summary}`,
confirmedToast: 'Покупка подтверждена.',
cancelledToast: 'Покупка отменена.',
alreadyConfirmed: 'Эта покупка уже подтверждена.',
alreadyCancelled: 'Это предложение покупки уже отменено.',
notYourProposal: 'Подтвердить или отменить эту покупку может только отправитель сообщения.',
proposalUnavailable: 'Это предложение покупки уже недоступно.',
parseFailed:
'Пока не удалось распознать это как общую покупку. Напишите предмет, сумму и валюту явно.'
},
payments: {
topicMissing:

View File

@@ -187,8 +187,23 @@ export interface BotTranslationCatalog {
}
purchase: {
sharedPurchaseFallback: string
recorded: (summary: string) => string
savedForReview: (summary: string) => string
proposal: (summary: string) => string
clarification: (question: string) => string
clarificationMissingAmountAndCurrency: string
clarificationMissingAmount: string
clarificationMissingCurrency: string
clarificationMissingItem: string
clarificationLowConfidence: string
confirmButton: string
cancelButton: string
confirmed: (summary: string) => string
cancelled: (summary: string) => string
confirmedToast: string
cancelledToast: string
alreadyConfirmed: string
alreadyCancelled: string
notYourProposal: string
proposalUnavailable: string
parseFailed: string
}
payments: {