История одного соседа ч.2

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Это был типичный подмосковный ЖК, коих сотни. Именно в таком ЖК произошла история, описанная в этой статье. В конце написал что есть еще некоторые идеи и вот руки дошли и до одной из них.

Все мы знаем что домах 1.5 тыс. домов довольно важно иметь хоть какой-то справочник по квартирам для быстрой связи с собственниками или проживающими. Обычно это exel табличка в виде НОМЕР КВ. - НОМЕР. Но у нас есть бот всеобъемлющий все чаты ЖК, поэтому я решил пойти своим путем.

Для начала я подумал какие данные можно собрать, а какие наверное не стоит. Учитывая что имена и номера - это конфиденциальные данные человека, которые я не имею права хранить, формат хранения такой:

дом-секция-этаж-квартира-имя-id-авто

где:

Имя - ник или при его отсутствии имя в телеграмме. Благо python любезно может реализовывать такие логические выражения очень просто. Также нужно учесть что многие пользователи телеграмма не заполняют поле last_name и просто оставляют его пустым. в таком случае будет передаваться None. Учитывая все вышеперечисленные проблемы я рекомендую использовать вот такой формат:

call.message.reply_to_message.from_user.username or (str(call.message.reply_to_message.from_user.first_name) + " " + str(call.message.reply_to_message.from_user.last_name or ""))

Авто - номер автомобиля. Он должен быть на последнем месте потому что его может быть просто не быть. Почему это должно быть так я расскажу позже и постараюсь объяснить почему я реализовал это именно так. Но скорее всего получу гору осуждения по поводу. Проверку правильности ввода номера я делаю при помощи обычной регулярки, которую написал сам, т.к. на просторах интернета мне не очень зашли варианты:

"^[а-яА-ЯёЁ][0-9]{3}[а-яА-ЯёЁ]{2}[0-9]+$"

А теперь к решению вопроса о хранении всего этого добра. Я решил не использовать реляционные БД просто потому что она мне в целом не нужна + мне довольно сложно не имея соответствующего опыта разворачивать сервер БД без графического интерфейса. Поэтому я сделал просто txt файл и храню данные именно в таком формате как я указал выше. данные разделяю по порядку через "-". Работает быстро, записывает быстро. Но есть момент. приходится при изменении данных удалять предыдущую строку, двигать весь список вверх на -1 от текущей позиции курсора в файле и записывать снова всё что было ниже + строку, измененную пользователем.

def edit_user(self, call):
        for i in self.coincidences:
            self.lines.pop(i[1])
        with open("chess_neighbors.txt", "w") as file:
            for text_str in self.lines:
                file.write(text_str)
        self.add_user(call)

не сложно, но не красиво. Однако работает.

Формат взаимодействия пользователя с шахматкой такой:

т.е. просто перечисляем цифрами дом секцию этаж квартиру через пробел с командой /шахматка в ответ на сообщение нужного пользователя, а уже их его сообщения берем id имя usera.

Интерфейс поиска имеет несколько вариантов:

Поиск по этажу. если бы было указано например /найти 4 8  - мы бы получили всю секцию. Формат вывода неверный, прошу прощения.
Поиск по этажу. если бы было указано например /найти 4 8 - мы бы получили всю секцию. Формат вывода неверный, прошу прощения.
Поиск по контакту. Просто отвечаем командой поиск на сообщение нужного человека. В таком режиме поиска можно удалить найденную квартиру, если человека неверно отметили в шахматке
Поиск по контакту. Просто отвечаем командой поиск на сообщение нужного человека. В таком режиме поиска можно удалить найденную квартиру, если человека неверно отметили в шахматке

а также по номеру авто соответственно /найти м000мм000 например.

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

Источник: https://habr.com/ru/post/717838/


Интересные статьи

Интересные статьи

Осенью 1984 года Кьелль Кирк Кристиансен — генеральный директор LEGO в эти годы (и внук ее основателя) — случайно увидел телевизионное интервью с участием профессора Массачусетского технологического и...
На Хабре уже который год появляются посты и комментарии, посвященные созданию профсоюза IT специалистов. Особенно после фееричной попытки Rambler'а «отжать» Nginx у Игоря Сысоева, или не менее скандал...
Представьте спрятанный высоко в горах древний монастырь, где стареющие монахи и монахини вырезают из песчаника маленькие китчевые демонические замки, до которых никому, кроме них, нет дела. С каждым...
Москва перенесла две волны жары этим летом. В Madrobots мы пережили их только благодаря кондиционерам и поэтому решили разобраться в истории чудесных девайсов.Когда-то это изобретение было воспринято ...
Наступила зима, и я решил усовершенствовать систему вентиляции в моем загородном доме. До этого момента ее практически не было, все вентилирование осуществлялось за счет открывания окон, выбрас...