From 860934f0a74bd3733fc81de43808abfc67d1177f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Gardien?= Date: Mon, 5 Feb 2024 10:20:33 +0100 Subject: [PATCH] Multiple fixes --- .env | 1 + config/packages/security.yaml | 6 +- config/services.yaml | 13 ++ config/services/admin.xml | 8 ++ config/services_dev.yaml | 16 ++- ...23003828.php => Version20240204231024.php} | 27 ++-- src/Admin/Chatbot/ChatbotAdmin.php | 4 + src/Admin/OpenAI/AssistantAdmin.php | 64 +++++++++ src/Admin/TelegramBotAdmin.php | 56 ++++++++ src/Chatbot/Enum/RunStatusEnum.php | 32 +++++ .../OpenAIAssistantMessageListener.php | 28 ++++ ...p => TelegramAssistantMessageListener.php} | 4 +- .../TelegramUserMessageListener.php | 2 + .../EventListener/UserMessageListener.php | 2 + src/Chatbot/ThreadFactory.php | 6 +- .../Webhook/TelegramBotController.php | 10 +- .../ORM/LoadAdministratorRoleData.php | 10 ++ src/DataFixtures/ORM/LoadChatbotData.php | 4 +- .../ORM/LoadOpenAIAssistantData.php | 10 +- src/Entity/Chatbot/Chatbot.php | 5 + src/Entity/Chatbot/Message.php | 16 ++- src/Entity/Chatbot/Run.php | 28 +++- src/Entity/Chatbot/Thread.php | 32 ++++- src/Entity/OpenAI/Assistant.php | 14 +- src/Entity/OpenAI/OpenAIResourceTrait.php | 15 ++ src/Entity/TelegramBot.php | 8 +- src/OpenAI/AssistantProviderInterface.php | 8 -- src/OpenAI/Client/Client.php | 2 +- src/OpenAI/Enum/RunStatusEnum.php | 7 +- src/OpenAI/Event/AssistantMessageEvent.php | 12 ++ src/OpenAI/Event/ThreadEvent.php | 6 +- src/OpenAI/EventListener/ThreadListener.php | 2 + .../Handler/RunThreadCommandHandler.php | 21 +-- src/OpenAI/Logger.php | 6 +- src/OpenAI/{ => Model}/AssistantInterface.php | 4 +- src/OpenAI/Model/MessageInterface.php | 10 ++ src/OpenAI/Model/OpenAIResourceInterface.php | 12 ++ src/OpenAI/Model/RunInterface.php | 20 +++ src/OpenAI/Model/ThreadInterface.php | 22 +++ src/OpenAI/OpenAI.php | 132 +++++++++--------- .../Provider/AssistantProviderInterface.php | 12 ++ .../Provider/MessageProviderInterface.php | 21 +++ src/OpenAI/Provider/RunProviderInterface.php | 12 ++ .../Provider/ThreadProviderInterface.php | 14 ++ src/Repository/Chatbot/MessageRepository.php | 29 +++- src/Repository/Chatbot/RunRepository.php | 8 +- src/Repository/Chatbot/ThreadRepository.php | 13 +- src/Repository/OpenAI/AssistantRepository.php | 9 +- src/Repository/TelegramBotRepository.php | 2 +- src/Telegram/BotProviderInterface.php | 2 + src/Telegram/Client/Client.php | 4 +- src/Telegram/Client/ClientFactory.php | 2 +- src/Telegram/Client/ClientInterface.php | 2 +- .../BotMessageListener.php | 4 +- .../Handler/SendBotMessageCommandHandler.php | 2 + .../Update/AbstractMessageHandler.php | 2 +- src/Telegram/Webhook/UrlGenerator.php | 23 +++ .../Webhook/UrlGeneratorInterface.php | 10 ++ src/Telegram/Webhook/UrlHandler.php | 40 ++++++ src/Telegram/WebhookRequestHandler.php | 19 ++- tests/AbstractWebTestCase.php | 5 + tests/Chatbot/Provider/DummyProvider.php | 54 ------- .../Webhook/AbstractWebhookTestCase.php | 15 ++ .../Webhook/TelegramBotControllerTest.php | 107 ++++++++++++++ tests/OpenAI/Client/Client.php | 66 +++++++++ tests/Telegram/Client/Client.php | 4 +- tests/Telegram/Client/ClientFactory.php | 4 +- tests/Telegram/Webhook/ProxyUrlGenerator.php | 29 ++++ tests/Telegram/WebhookUrlGenerator.php | 7 + 69 files changed, 982 insertions(+), 224 deletions(-) rename migrations/{Version20240123003828.php => Version20240204231024.php} (92%) create mode 100644 src/Admin/OpenAI/AssistantAdmin.php create mode 100644 src/Chatbot/Enum/RunStatusEnum.php create mode 100644 src/Chatbot/EventListener/OpenAIAssistantMessageListener.php rename src/Chatbot/EventListener/{AssistantMessageListener.php => TelegramAssistantMessageListener.php} (88%) delete mode 100644 src/OpenAI/AssistantProviderInterface.php create mode 100644 src/OpenAI/Event/AssistantMessageEvent.php rename src/OpenAI/{ => Model}/AssistantInterface.php (54%) create mode 100644 src/OpenAI/Model/MessageInterface.php create mode 100644 src/OpenAI/Model/OpenAIResourceInterface.php create mode 100644 src/OpenAI/Model/RunInterface.php create mode 100644 src/OpenAI/Model/ThreadInterface.php create mode 100644 src/OpenAI/Provider/AssistantProviderInterface.php create mode 100644 src/OpenAI/Provider/MessageProviderInterface.php create mode 100644 src/OpenAI/Provider/RunProviderInterface.php create mode 100644 src/OpenAI/Provider/ThreadProviderInterface.php rename src/Telegram/{Listener => EventListener}/BotMessageListener.php (81%) create mode 100644 src/Telegram/Webhook/UrlGenerator.php create mode 100644 src/Telegram/Webhook/UrlGeneratorInterface.php create mode 100644 src/Telegram/Webhook/UrlHandler.php delete mode 100644 tests/Chatbot/Provider/DummyProvider.php create mode 100644 tests/Controller/Webhook/AbstractWebhookTestCase.php create mode 100644 tests/Controller/Webhook/TelegramBotControllerTest.php create mode 100644 tests/OpenAI/Client/Client.php create mode 100644 tests/Telegram/Webhook/ProxyUrlGenerator.php create mode 100644 tests/Telegram/WebhookUrlGenerator.php diff --git a/.env b/.env index 56a36f2fa40..127267ebaec 100644 --- a/.env +++ b/.env @@ -87,6 +87,7 @@ LEGISLATIVES_AVECVOUS_HOST=legislatives.avecvous.code RENAISSANCE_HOST=renaissance.code APP_RENAISSANCE_HOST=renaissance.code WEBHOOK_RENAISSANCE_HOST=webhook.renaissance.code +WEBHOOK_PROXY_HOST= API_RENAISSANCE_HOST=api.renaissance.code RENAISSANCE_QRCODE_HOST=qr.renaissance.code diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 2e381de0485..6038738cdda 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -69,6 +69,8 @@ security: - ROLE_APP_ADMIN_AUDIENCE_ALL ROLE_ADMIN_COMMUNICATION_QR_CODES: - ROLE_APP_ADMIN_QR_CODE_ALL + ROLE_ADMIN_COMMUNICATION_CHATBOTS: + - ROLE_APP_ADMIN_CHATBOT_CHATBOT_ALL ## Adhérents ROLE_ADMIN_ADHERENT_ADHERENTS: @@ -309,12 +311,10 @@ security: - ROLE_APP_ADMIN_CLIENT_ALL ROLE_ADMIN_TECH_SCOPES: - ROLE_APP_ADMIN_SCOPE_ALL - ROLE_ADMIN_TECH_CHATBOTS: - - ROLE_APP_ADMIN_CHATBOT_CHATBOT_ALL ROLE_ADMIN_TECH_TELEGRAM_BOTS: - ROLE_APP_ADMIN_TELEGRAM_BOT_ALL ROLE_ADMIN_TECH_OPENAI_ASSISTANTS: - - ROLE_APP_ADMIN_OPEN_AI_ASSISTANT_ALL + - ROLE_APP_ADMIN_OPENAI_ASSISTANT_ALL ## Idées ROLE_ADMIN_IDEES_OLDOLF: diff --git a/config/services.yaml b/config/services.yaml index 0818af4be42..cfbf55a15c5 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -23,6 +23,7 @@ parameters: renaissance_host: "%env(RENAISSANCE_HOST)%" app_renaissance_host: "%env(APP_RENAISSANCE_HOST)%" webhook_renaissance_host: "%env(WEBHOOK_RENAISSANCE_HOST)%" + webhook_renaissance_proxy_host: "%env(WEBHOOK_RENAISSANCE_PROXY_HOST)%" api_renaissance_host: "%env(API_RENAISSANCE_HOST)%" renaissance_qrcode_host: "%env(RENAISSANCE_QRCODE_HOST)%" assessor_path_prefix: "" @@ -118,6 +119,10 @@ services: tags: ['app.acquisition_statistics.calculator'] App\Adherent\Tag\TagGenerator\TagGeneratorInterface: tags: ['app.adherent.tag.generator'] + App\Chatbot\Assistant\AssistantHandlerInterface: + tags: ['app.chatbot.assistant_handler'] + App\Telegram\Update\UpdateHandlerInterface: + tags: ['app.telegram.update_handler'] # Imports App\: @@ -491,3 +496,11 @@ services: App\Adhesion\Handler\GenerateActivationCodeCommandHandler: arguments: $loginLinkHandler: '@security.authenticator.login_link_handler.main' + + App\Chatbot\Assistant: + arguments: + $assistantHandlers: !tagged_iterator 'app.chatbot.assistant_handler' + + App\Telegram\UpdateHandler: + arguments: + $updateHandlers: !tagged_iterator 'app.telegram.update_handler' diff --git a/config/services/admin.xml b/config/services/admin.xml index 87c34aff3bd..5fefa8b1deb 100644 --- a/config/services/admin.xml +++ b/config/services/admin.xml @@ -996,6 +996,14 @@ + + + + + App\Entity\OpenAI\Assistant + + +