powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура данных для робота по обслуживанию запросов (sms, email)
5 сообщений из 5, страница 1 из 1
Структура данных для робота по обслуживанию запросов (sms, email)
    #38950521
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать универсального робота, который будет обрабатывать SMS-команды.
Некоторые команды не подразумевают ответа, на большинство команд в случае их успешной обработки приходит ответное SMS.
Для некоторых команд нужно организовать двухшаговую процедуру — при получении команды отправителю по другому каналу направляется код авторизации с определенным сроком действия, при получении этого кода в течении указанного срока первоначальная команда выполняется.
Команды должны допускать вариабельность в написании: команда может быть написана латинскими или русскими буквами (ЗАПРОС или ZAPROS), возможно смешанное использование букв, начертание которых выглядит одинаковым (например в команде ЗАПРОС буквы A и C могут быть латинскими), возможны разные варианты транслитерации (например PLATEZH или PLATEJ, YABLOKO или JABLOKO). У некоторых команд могут быть параметры, указываемые после пробела.
Отправитель сообщения может быть сопоставлен с пользователем моей информационной системы (например это клиент, номер телефона которого указан в качестве контактного).
У некоторых команд могут быть ограничения — например их можно использовать не чаще одного раза в месяц или они могут быть доступны только клиентам, входящим в определенную группу.
Робот в основном будет работать с SMS, но некоторые команды могут приходить по EMail.

Я на бумажке прикинул примерно такую структуру базы данных:
ПолеТипОписаниеidчислоСчетчик, идентификатор строкиtransportТранспорт сообщения (SMS, email)senderтекстОтправитель сообщения (номер телефона, электронный адрес)targetтекстПолучатель сообщения (номер телефона, электронный адрес)clockдатаДата и время сообщения (используются данные из сообщения)messageтекстТекст сообщения без обработкиreq_clockдатаДата и время получения сообщенияreq_userПользователь информационной системы, сопоставленный с senderreq_codeтекстПодтверждающий код авторизации для одной из предыдущих командreq_commandтекстРаспознанный запрос (нормализованный текст команды), null если команда не распознанаreq_paramsтекстДополнительные параметры запросаreq_repeat_countчислоЕсли за короткий период времени от отправителя пришло несколько одинаковых команд, в БД будет сохранена только первая команда и количество повторений, повторные команды игнорируютсяreq_repeat_lastдатаДата и время последней повторенной командыret_clockдатаДата и время обработки командыret_statusчислоРезультат обработки запроса (запрос игнорируется, запрос выполнен, запрос отклонен, отправлен код подтверждения)ret_codeчислоЧисловой код результата обработки и выполнения запросаret_messageтекстТекст сообщения, отправленного в ответ на запрос (null, если ответ не отправлялся)ret_auth_codeтекстКод авторизации, отправленный для подтверждения выполнения командыret_auth_expireдатаСрок действия кода авторизацииret_auth_linkчислоid строки, в которой пришел код авторизации (циклическая ссылка на себя, не потомок->родитель, а родитель->потомок)dlv_statusОтчет о доставке (ответ доставлен / не доставлен)dlv_clockДата доставки ответа
База данных не принципиальна, пока что будет использоваться MySQL.
Пока что все в одной таблице, но в реальной БД какие-то поля будут внешними ключами к отдельным таблицам.

Может посоветуете, что еще добавить?
К данной БД довольно часто будут запросы на выборку с фильтром по sender, req_clock, req_command, ret_status, не посоветуете, как лучше организовать индексы?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Структура данных для робота по обслуживанию запросов (sms, email)
    #38950595
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B. который будет обрабатывать SMS-команды.Таблица команд (у вас есть)
Alibek B. Для некоторых команд нужно организовать двухшаговую процедуруЖурнал шагов
Alibek B. Команды должны допускать вариабельность в написанииТаблица алиасов
Alibek B. Отправитель сообщения может быть сопоставлен с пользователем моей информационной системыТаблица пользователей
Alibek B. У некоторых команд могут быть ограниченияСправочник ограничений
Alibek B. как лучше организовать индексыПроиндексировать поля
...
Рейтинг: 0 / 0
Структура данных для робота по обслуживанию запросов (sms, email)
    #38950605
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Таблица команд (у вас есть)
Но при этом совершенно не нужна.

SERG1257Журнал шагов
Только в случае припадков падучей болезни у робота.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Структура данных для робота по обслуживанию запросов (sms, email)
    #38950614
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справочники команд, пользователей, списков доступа (ограничений) само собой будут.

SERG1257Журнал шагов
Можно на примере, как это должно выглядеть?
Разве сгенерированного кода подтверждения со сроком его действия недостаточно?

SERG1257Таблица алиасов
Как-то я себе эту таблицу слабо представляю.
Что в ней должно быть, список всех мыслимых сочетаний?
Вообще-то я планировал, что нормализацию у меня будет делать скрипт робота.
Или имеется ввиду что-то другое?

SERG1257Проиндексировать поля
Это понятно.
Я хотел узнать, может быть есть какие-то универсальные рекомендации?
Или все зависит исключительно от выбранной СУБД?
Есть в SQL-запросе часто ожидается отбор по sender=<sender> and ret_status=<status> and req_clock>=<clock>, то есть ли смысл в составном индексе по этим полям?
...
Рейтинг: 0 / 0
Структура данных для робота по обслуживанию запросов (sms, email)
    #38950633
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B. Можно на примере, как это должно выглядеть?Журнал действий - кто, когда, что сделал с какими параметрами
Dimitry Sibiryakov Но при этом совершенно не нужна.Еще как нужна (может не такая широкая) - журнал приема команд.
Alibek B.Что в ней должно быть, список всех мыслимых сочетаний?Да
Код: sql
1.
create table aliases (id int primary key, id_comm references commands, alias varchar(100) unique)


Alibek B.Я хотел узнать, может быть есть какие-то универсальные рекомендации?
Или все зависит исключительно от выбранной СУБД?Это зависит от профиля нагрузки
Alibek B.Есть в SQL-запросе часто ожидается отбор по sender=<sender> and ret_status=<status> and req_clock>=<clock>, то есть ли смысл в составном индексе по этим полям? Смысл есть
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура данных для робота по обслуживанию запросов (sms, email)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]