Open Nelfimov opened 1 month ago
@TorinAsakura проверь пожалуйста задачу.
Для шиномонтажки бота с мониторингом записей делаем отдельного?
@TorinAsakura проверь пожалуйста задачу.
Для шиномонтажки бота с мониторингом записей делаем отдельного?
каким мониторингом? каких записей?
@TorinAsakura мы проговаривали - запись пользователя должна быть подтверждаемой со стороны монтажки. Для этого делаем отдельного бота?
@TorinAsakura мы проговаривали - запись пользователя должна быть подтверждаемой со стороны монтажки. Для этого делаем отдельного бота?
конечно, бот оператора и бот записи
@Nelfimov, подскажи пожалуйста
candify
applicant
вынесен в отдельный сервисbooking-telegram-bot
candify
, то выделить сущность клиента/заказчика
- не понимаю, почему в
candify
applicant
вынесен в отдельный сервис
Микросервисная архитектура. Бэкенд разделен по DDD
Для твоей задачи это не нужно.
- если делать по аналогии с текущим приложением, то слой для этого бота я должен назвать
booking-telegram-bot
Делаем так
@effektivnayarabota1 обрати внимание - добавил еще требование:
- [ ] должен быть эндпоинт для записи через REST API с сайта (форма "Записаться")
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
- если делать по аналогии с текущим приложением, то слой для этого бота я должен назвать
booking-telegram-bot
telegram-bot это твой контекст, это никак не может быть слоем
booking - выглядит как домен, если вы по DDD собираетесь работать
nest
- в большинстве вопросов разобралсяnestjs-telegraf
(@Update
) - сделать не удалосьtgsnake-событий
- сделать не удалось.nestjs-telegraf
- в сроки не уложусь если еще посвящу время этому, поэтому оставлю.
сервисы-conversations
внутри сервиса-ентрипонта
https://tgsnake.js.org/en/guide/conversation
@Nelfimov нужна помощь
infrastructure.providers
- дает ошибку, предлагает импортиовать порт в один из модулей. насколько понимаю, так они рабоать не будут?tgsnake
. через порты мы передаем инициированный клиент, верно?useCase
используется Processor
. В serveless-yandex
этот Processor
вызывается в handler
. у нас ентрипоинт сделан по-другому - bootstrap
через NestFactory.create
. Пробовал сделать также, как в serverless-yandex
- не получилось, была бесконечная загрузка.
как использовать useCase
в нашем случае? если инициировать его в адаптере, будет ли возможно вызывать useCase
из адаптера? @effektivnayarabota1 технически ошибка была на очевидном месте, любая нормальная IDE тебе подсветила бы. Оставил в ревью комменты с деталями
application-module
infrastructure-module
processor
. бот отвечате на сообщения
conversation
https://tgsnake.js.org/en/guide/conversation
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
@Nelfimov а hmr
должен нормально работать?
у меня на модули жалуется HMR is not implemented for module chunk format yet
в сети нашел вот такую инфу:
https://github.com/webpack/webpack/issues/17636
- когда шиномонтажка подтверждает запись
@Nelfimov а
hmr
должен нормально работать? у меня на модули жалуетсяHMR is not implemented for module chunk format yet
в сети нашел вот такую инфу: webpack/webpack#17636
Забирай из мастера новый бандл
- когда шиномонтажка подтверждает запись
- шиномонтажка будет подтверждать запись тоже через бота?
https://github.com/torin-asakura/shdvor/issues/70#issuecomment-2323292352
@Nelfimov в опроснике дублирую поля с формы на сайте, или вывожу только эти два вопроса?
- какая машина
- [ ] какой диаметр колес
дублируешь
расчертил диалог (conversation) - псевдокод + продетализировал его немного. пока без данных
разбирался с интерфейсом tgsnake
. у него есть собственный метод sendMessage
, без нормальной документации. подумал, что на следующих этапах могут быть затруднения, например, с клавиатурой, поэтому использую телеграммовский SendMessage
настроил телеграммовский SendMessage
. пока пишу в одном файле, разносить буду на следующих этапах.
получение данных
продетализироваь conversation
:
рефакторинг:
adapter
экспортирует методы типа sendMessage
, reply
- исключительно взаимодействие с этой библиотекойuse-case
подтягивает эти методы и использует их. приводить данные с запросов я буду на этот уровень. весь conversation
у меня будет также на этом уровнеconsumer
висит и слушает события. если выполняет условие одного события, выполнение кода уходит на уровень в use-case
@Nelfimov посмотри пожалуйста этот абзац, все ли я правильно понял. Если есть примеры с consumer
- будь добр, поделись 🙏потом буду делать запись данных в бд
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
adapter
экспортирует методы типаsendMessage
,reply
- исключительно взаимодействие с этой библиотекой
Да
use-case
подтягивает эти методы и использует их. приводить данные с запросов я буду на этот уровень. весьconversation
у меня будет также на этом уровне
Некорректно сформулировал - use-case
находится в application
. Это значит что взаимодействовать с адаптерами будет через порты. Имплементация порта - в infrastructure
- в
consumer
висит и слушает события. если выполняет условие одного события, выполнение кода уходит на уровень вuse-case
cosunmer
или processor
- отвечает за получение сообщения. Дальше он передает полученное в use-case
conversation
в отдельный сервис на уровне application
@Nelfimov посмотри пожалуйста:
process
в use-case
, но я вот сдела так. как лучше?
https://github.com/torin-asakura/shdvor/blob/0947cacbc0f53413b81e7744830a5be968fd39df/booking-telegram-bot/contexts/telegram-bot/infrastructure-module/src/processors/bot-listen.processor.ts#L17https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
@Nelfimov посмотри пожалуйста:
- есть вариант упаковать
process
вuse-case
, но я вот сдела так. как лучше? https://github.com/torin-asakura/shdvor/blob/0947cacbc0f53413b81e7744830a5be968fd39df/booking-telegram-bot/contexts/telegram-bot/infrastructure-module/src/processors/bot-listen.processor.ts#L17
Все правильно - юз кейс обрабатывает уже конкретный случай. А прослушивание надо выделять в отдельный объект в инфраструктуре.
Можешь разделить логически юз кейсы, напр:
@Nelfimov
нам нужно делать graphql
- запросы, текущие клиенты не подходят - они только для некста.
apollo-adapter
graphql-server
контекстuseCase
- query
, в него буду передавать тело запроса, которое буду брать из @globals
- они у нас уже готовы.graphql-query-use-case
буду вызывать в processor
(слушатель, функция в которой прослушиваем), пришедшие данные буду передавать в telegram-bot-use-case
аргументомнашел инструкцию, буду делать по ней - https://docs.nestjs.com/graphql/quick-start
Сделай пока на REST чтобы не усложнять. Потом добавим граф
Ты же понял зачем это?
Нужно чтобы была запись
Только для сайта нужен REST контроллер.
Т.к. и бот и заявка с сайта в конце концов попадут в БД, то можно сделать один юз кейс для них - сохранение в БД
Т.к. и бот и заявка с сайта в конце концов попадут в БД, то можно сделать один юз кейс для них - сохранение в БД
да, это понял.
я хочу для начала получить список кузовов, диаметр колес и тип ремонта. на сайте мы эти данные получаем через graphql-запрос
через apollo
тогда ок
apollo-client
graphql-client
@globals
- из общего импорта убрал apollo
- была ошибка при инициализации клиента@globals
добавли 2 дополнительных импорта:
/apollo
- для react-клиентов-apollo
/apollo-core
- для использования без react
processor
- запрос проходит, данные получаем.
conversation-use-case
keyboard-buttons
) для использования этих данныхworkinghours: 'Пн - Пт, 9:00 - 19:00|n|Сб - Вс, 9:00 - 16:00',
sendMessageWithKeyboard
- чтобы можно было отправлять клавиатуру сеткой. сейчас только rows
Array<string>
- будет выводить данные в rows
Array<Array<string>>
- будет выводить сетку.postgress
, именно в каком формате мне подводить время. просто milleseconds
- подойдут? ну и таблица соответственно с такими колонками - appointmentTime: number
, telegramUserId: number
, appointmentState: boolean (состояние записи - типо подтвержденно или нет)
. по наименованиям колонок/таблиц есть конвенция?
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
Я думаю время можно держать в числовом формате. Можно ограничиться минутами
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
conversation-part
conversation
сейчас много повторяющейся логики
conversation-part
- вынести общие методыlocals
https://github.com/torin-asakura/shdvor/tree/feat/booking-telegram-bot
Давай в понедельник сделанную часть передашь на промежуточное ревью
Давай в понедельник сделанную часть передашь на промежуточное ревью
хорошо
С чем связан запрос на фичу?
Необходимо разработать Telegram бота, через которого можно было бы записываться на переобувку
Расскажите как вы это себе видите
nestjs
Архитектура:
clean
- https://github.com/atls/serverless-yandexПриложите пример реализаций
https://github.com/atls/migration-bot/tree/refactor/promise-to-wizard