From a04fd52a8485ad5264af7892df913ccbaa963549 Mon Sep 17 00:00:00 2001 From: Stepan Grankin Date: Fri, 29 May 2026 23:49:49 +0300 Subject: [PATCH 1/4] chaged text --- .../FillInTheTextBot-eu/intents/37-BeachVacation-text1.json | 2 +- .../FillInTheTextBot-eu/intents/37-BeachVacation-text2.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json index 6b378db..7a5750e 100644 --- a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json +++ b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json @@ -227,7 +227,7 @@ "textToSpeech": "", "lang": "ru", "speech": [ - "$name1 просыпается ещё до будильника. За окном маленького домика шумит море, и этот звук лучше любой музыки. Каникулы в самом разгаре, а до конца лета — целых $daysLeft дней солнца, песка и солёного ветра!\nСхватив панамку и надувной круг (а на нём — $animal1!), $name1 бежит на пляж. Песок с утра ещё прохладный и приятно щекочет пятки. Папа уже расставляет зонтик, а мама раскладывает полотенца и достаёт из сумки $food1.\n— Кто последний до воды — тот моет посуду весь отпуск! — кричит младший брат $name2 и несётся к волнам.\nВода тёплая, как парное молоко. Они вдвоём ныряют, брызгаются и ищут на дне разноцветные камешки. Нашёлся один особенный — гладкий, почти прозрачный, с маленькой дырочкой посередине. «$adj1», — решает $name1 и прячет его в карман.\nСочиним, что было дальше?" + "$name1 просыпается ещё до будильника. За окном маленького домика шумит море, и этот звук лучше любой музыки. Каникулы в самом разгаре, а до конца лета ещё дней $daysLeft — целое море солнца, песка и солёного ветра!\nСхватив панамку и надувной круг (а на нём — $animal1!), $name1 бежит на пляж. Песок с утра ещё прохладный и приятно щекочет пятки. Папа уже расставляет зонтик, а мама раскладывает полотенца и достаёт из сумки $food1.\n— Кто последний до воды — тот моет посуду весь отпуск! — кричит младший брат $name2 и несётся к волнам.\nВода тёплая, как парное молоко. Они вдвоём ныряют, брызгаются и ищут на дне разноцветные камешки. Нашёлся один особенный — гладкий, почти прозрачный, с маленькой дырочкой посередине. «$adj1», — решает $name1 и прячет его в карман.\nСочиним, что было дальше?" ], "condition": "" } diff --git a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json index 79c948a..3c4d9e1 100644 --- a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json +++ b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json @@ -84,7 +84,7 @@ "textToSpeech": "", "lang": "ru", "speech": [ - "Вот что было дальше:\nПосле обеда они строят огромный замок из песка — с башнями, рвами и мостами. А когда набегает шальная волна и слизывает одну из башен, ребята не расстраиваются и строят новую, ещё выше — целых $castleHeight метров!\nВечером, уставшие и загорелые, они сидят на берегу и смотрят, как солнце медленно тонет в море, окрашивая небо в $color1, розовый и золотой.\n— Хочу, чтобы этот день никогда не кончался, — шепчет #text-37.name1, сжимая в ладони тот самый счастливый камешек.\nИ знаешь что? Впереди ещё целых #text-37.daysLeft дней лета, а это почти бесконечно!\nПо-моему, отличные каникулы получились! Сочиним ещё что-нибудь?" + "Вот что было дальше:\nПосле обеда они строят огромный замок из песка — с башнями, рвами и мостами. А когда набегает шальная волна и слизывает одну из башен, ребята не расстраиваются и строят новую, ещё выше — метров $castleHeight!\nВечером, уставшие и загорелые, они сидят на берегу и смотрят, как солнце медленно тонет в море, окрашивая небо в $color1, розовый и золотой.\n— Хочу, чтобы этот день никогда не кончался, — шепчет #text-37.name1, сжимая в ладони тот самый счастливый камешек.\nИ знаешь что? Впереди ещё дней #text-37.daysLeft — а это почти бесконечно!\nПо-моему, отличные каникулы получились! Сочиним ещё что-нибудь?" ], "condition": "" }, From ca73fa311d4334f52928a181b2eb1fccdfe6f104 Mon Sep 17 00:00:00 2001 From: Stepan Grankin Date: Fri, 29 May 2026 23:50:41 +0300 Subject: [PATCH 2/4] changed computation --- .../StoryComputationsTests.cs | 30 +++++++++++++++++++ .../StoryComputations.cs | 17 ++++++++--- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/FillInTheTextBot.Services.Tests/StoryComputationsTests.cs b/src/FillInTheTextBot.Services.Tests/StoryComputationsTests.cs index 8f745fb..cfddcc0 100644 --- a/src/FillInTheTextBot.Services.Tests/StoryComputationsTests.cs +++ b/src/FillInTheTextBot.Services.Tests/StoryComputationsTests.cs @@ -47,6 +47,36 @@ public void TryBuildContext_MidSummer_FillsContext() Assert.AreEqual("90", context.Parameters["daysLeft"]); } + [Test] + public void TryBuildContext_SeasonStart_May29_FillsContext() + { + // 29 мая — старт сезона: до 30 августа 93 дня + var result = StoryComputations.TryBuildContext(BeachVacationFirstPart, new DateTime(2026, 5, 29), out var context); + + Assert.True(result); + Assert.AreEqual("93", context.Parameters["daysLeft"]); + } + + [Test] + public void TryBuildContext_BeforeSeason_FallbackNoContext() + { + // 28 мая — ещё до старта сезона → фоллбэк-вопрос + var result = StoryComputations.TryBuildContext(BeachVacationFirstPart, new DateTime(2026, 5, 28), out var context); + + Assert.False(result); + Assert.Null(context); + } + + [Test] + public void TryBuildContext_NewYear_FallbackNoContext() + { + // 1 января — вне сезона → значение не передаётся, бот спрашивает число + var result = StoryComputations.TryBuildContext(BeachVacationFirstPart, new DateTime(2027, 1, 1), out var context); + + Assert.False(result); + Assert.Null(context); + } + [Test] public void TryBuildContext_DayBeforeEnd_One() { diff --git a/src/FillInTheTextBot.Services/StoryComputations.cs b/src/FillInTheTextBot.Services/StoryComputations.cs index 8f49ac3..f3e94bd 100644 --- a/src/FillInTheTextBot.Services/StoryComputations.cs +++ b/src/FillInTheTextBot.Services/StoryComputations.cs @@ -95,15 +95,24 @@ public static DateTime MoscowToday() /// /// Сколько дней осталось до конца лета (30 августа) от указанной даты. - /// Возвращает null, если осталось меньше одного дня (лето уже прошло). + /// Считается только в пределах сезона — с 29 мая по 29 августа. Вне этого окна + /// (в том числе зимой и осенью) возвращает null, и значение спрашивается у игрока. /// private static string SummerDaysLeft(DateTime today) { - var endOfSummer = new DateTime(today.Year, 8, 30); + var date = today.Date; - var daysLeft = (endOfSummer - today.Date).Days; + var seasonStart = new DateTime(date.Year, 5, 29); + var endOfSummer = new DateTime(date.Year, 8, 30); - return daysLeft < 1 ? null : daysLeft.ToString(CultureInfo.InvariantCulture); + var daysLeft = (endOfSummer - date).Days; + + if (date < seasonStart || daysLeft < 1) + { + return null; + } + + return daysLeft.ToString(CultureInfo.InvariantCulture); } } } From 5845123c97f10a1891e5f390c04fd778866ca93e Mon Sep 17 00:00:00 2001 From: Stepan Grankin Date: Fri, 29 May 2026 23:59:50 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D1=81hanged=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FillInTheTextBot-eu/intents/37-BeachVacation-text1.json | 2 +- .../FillInTheTextBot-eu/intents/37-BeachVacation-text2.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json index 7a5750e..51b2fe5 100644 --- a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json +++ b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text1.json @@ -227,7 +227,7 @@ "textToSpeech": "", "lang": "ru", "speech": [ - "$name1 просыпается ещё до будильника. За окном маленького домика шумит море, и этот звук лучше любой музыки. Каникулы в самом разгаре, а до конца лета ещё дней $daysLeft — целое море солнца, песка и солёного ветра!\nСхватив панамку и надувной круг (а на нём — $animal1!), $name1 бежит на пляж. Песок с утра ещё прохладный и приятно щекочет пятки. Папа уже расставляет зонтик, а мама раскладывает полотенца и достаёт из сумки $food1.\n— Кто последний до воды — тот моет посуду весь отпуск! — кричит младший брат $name2 и несётся к волнам.\nВода тёплая, как парное молоко. Они вдвоём ныряют, брызгаются и ищут на дне разноцветные камешки. Нашёлся один особенный — гладкий, почти прозрачный, с маленькой дырочкой посередине. «$adj1», — решает $name1 и прячет его в карман.\nСочиним, что было дальше?" + "$name1 просыпается ещё до будильника. За окном маленького домика шумит море, и этот звук лучше любой музыки. Каникулы в самом разгаре, а до конца лета ещё столько дней — $daysLeft! Целое море солнца, песка и солёного ветра!\nСхватив панамку и надувной круг (а на нём — $animal1!), $name1 бежит на пляж. Песок с утра ещё прохладный и приятно щекочет пятки. Папа уже расставляет зонтик, а мама раскладывает полотенца и достаёт из сумки $food1.\n— Кто последний до воды — тот моет посуду весь отпуск! — кричит младший брат $name2 и несётся к волнам.\nВода тёплая, как парное молоко. Они вдвоём ныряют, брызгаются и ищут на дне разноцветные камешки. Нашёлся один особенный — гладкий, почти прозрачный, с маленькой дырочкой посередине. «$adj1», — решает $name1 и прячет его в карман.\nСочиним, что было дальше?" ], "condition": "" } diff --git a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json index 3c4d9e1..70e5d5d 100644 --- a/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json +++ b/Dialogflow/FillInTheTextBot-eu/intents/37-BeachVacation-text2.json @@ -84,7 +84,7 @@ "textToSpeech": "", "lang": "ru", "speech": [ - "Вот что было дальше:\nПосле обеда они строят огромный замок из песка — с башнями, рвами и мостами. А когда набегает шальная волна и слизывает одну из башен, ребята не расстраиваются и строят новую, ещё выше — метров $castleHeight!\nВечером, уставшие и загорелые, они сидят на берегу и смотрят, как солнце медленно тонет в море, окрашивая небо в $color1, розовый и золотой.\n— Хочу, чтобы этот день никогда не кончался, — шепчет #text-37.name1, сжимая в ладони тот самый счастливый камешек.\nИ знаешь что? Впереди ещё дней #text-37.daysLeft — а это почти бесконечно!\nПо-моему, отличные каникулы получились! Сочиним ещё что-нибудь?" + "Вот что было дальше:\nПосле обеда они строят огромный замок из песка — с башнями, рвами и мостами. А когда набегает шальная волна и слизывает одну из башен, ребята не расстраиваются и строят новую, ещё выше — метров $castleHeight!\nВечером, уставшие и загорелые, они сидят на берегу и смотрят, как солнце медленно тонет в море, окрашивая небо в $color1, розовый и золотой.\n— Хочу, чтобы этот день никогда не кончался, — шепчет #text-37.name1, сжимая в ладони тот самый счастливый камешек.\nИ знаешь что? Впереди ещё столько летних дней — #text-37.daysLeft! А это почти бесконечно!\nПо-моему, отличные каникулы получились! Сочиним ещё что-нибудь?" ], "condition": "" }, From a61c17efdffcfcc70c1ff4b79604b943cbdda90b Mon Sep 17 00:00:00 2001 From: Stepan Grankin Date: Sat, 30 May 2026 00:00:51 +0300 Subject: [PATCH 4/4] 1.23.1 --- src/FillInTheTextBot.Api/FillInTheTextBot.Api.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/FillInTheTextBot.Api/FillInTheTextBot.Api.csproj b/src/FillInTheTextBot.Api/FillInTheTextBot.Api.csproj index bbae8f9..baddfbf 100644 --- a/src/FillInTheTextBot.Api/FillInTheTextBot.Api.csproj +++ b/src/FillInTheTextBot.Api/FillInTheTextBot.Api.csproj @@ -3,8 +3,8 @@ net6.0 Linux - 1.23.0 - Optimized interaction with Dialogflow + 1.23.1 + Added new texts and computes