1) В какой-то момент какой-то процесс меняет данные по ГПС площадки? При этом вообще непонятно какой и когда, так? Но то, что меняет - это очевидно.</quote>
Полагаю что не так. Может быть несколько ситуаций.
1. Запускается что-то в потоке. И в зависимости от того успеет ли отработать процесс в потоке или нет - происходит изменение данных. Данные на уровне приложения - глобальные. Вот они и сохраняются уже измененными. Это что-то типа того, что происходит с личными данными - сейчас они корректные, а стоит походить по экранам.... и какой-то АсинкТаск изменяет данные на уровне Applicaton (приложения).
Применительно к личным данным - может быть это фоновая синхронизация площадок, может информация об регистраторе какой-то площадки выходи на уровень приложения - и садится в данные пользователя.
Может какая-то описка в коде, или временная переменная - заведенная для дебага, а потом не подчищенная.
2. Я предположил, что это System косячит. По крайней мере - почему площадка села на крышу колледжа, и рядом площадка с такой же картинкой - но по описанию видно что ее точно не System посадил. Может в этом направлении начать смотреть.
Бекап базы с последующим выяснением - у кого изменились координаты - ничего не даст. Потому что это даст такой же результат, как и сейчас - видимость того, что данные изменились</quote>
Бэкап нужен для того чтобы восстановить изначальные данные, которые сейчас подвязались на крыши домов. Логирование позволит определить какая площадка изменилась, и по статистике увидеть что этому предшествовало - корректировка существующей площадки, или ввод новой. В зависимости от этого анализировать логику - что вызывалось, почему работа с другой площадкой задела эту - может они приграничные по расположению в списках. Может работает какой-то счетчик и вместо корректного позиционирования на элемент списка делается -1, ли +1 смещение.
Может быть все что угодно. То что разработчики клянутся что такого быть не может - мы видим результат. И ладно мои площадки, виг с ним, множество подвязанных площадок к крышам домов от других пользователей. Я к этому точно руку приложить не мог - те проявление какого-то бага.
Задача сейчас не в том чтобы воспроизвести ошибку, а в том, чтобы локализовать причину подобного проявления. Есть данные, есть процессы. И как увидеть какие действия проводятся с базой преднамеренно, и что меняется непреднамеренно - я так понимаю, что при настоящей организации работающей модели этого не сделаешь. Может сейчас будет введена площадка №4657, а зацепится #1058. Потому что она попадет под фильтр измненений, или потому что она на нее укажет индекс, или хз чего.
В подобных ситуация сперва проводится исследование, а потом уже по результату того исследования делается багфикс.
Разработчики клянутся, что быть такого не может. Потому что данные записались в базу данных и все.</quote>
Это еще раз говорит о том, что нужен некий механизм, позволяющий отмониторить и просигнализировать, что происходит попытка несанкционированного изменения данных, т.е данные меняются, а должны ли они меняться или нет - это уже вопрос второй.
Другими словами, если идет правка #6512, то нужно чтобы как-то система отреагировала, если будет изменены данные и в #1321. Как-то так. Я назвал это логированием. По дате изменений конкретной локации можно было бы определить какое значение было до этого (затерлось), а какой момент (те изменения над какой площадкой проводились в это время еще) - это поможет локализовать причину.
Повторюсь - то что какой-то косяк прошел по базе, это вроде бы как очевидно.
Почему и как? Хрен его знает. Надо понять, как это отловить</quote>
предлагаю логировать. на каждый ID площадки организовать трекинг изменений - статистику изменений (число, время), значение (что было на что меняется), статус строки (новая, апдейт, удаление). Как-то так.
При мониторинге проблемной ситуации, или неясности - делается запрос на таблицу лога. И по хронологии видим последовательность что на что менялось, по каким площадкам, а потом уже начинаем курить исходники - почему такое произошло.
К тем домам, которые указаны в адресе площадки, верно?</quote>
Ой, я не докапывался до этого момента. Полагаю что да.
Могу сказать, что по сути, адрес не имеет никакого значения. Я вообще заморачивался лишь с ЖПС данными. По ЖПС данным гугл сервис выдает адрес для описания, но отправной точкой является именно локация, а не номер дома, который подтягивается по этой локации.
Не было такого фикса.</quote>
Фикса небыло. А что было ? System. Как он работает. В какой момент. Он сидит сервисом ? может ли он изменять разделяемые переменные (разделяемые - это в смысле глобальные, на уровне приложения).
Может проблема на не уровне приложения, а не уровне сервера (сайта) - может сервис, может процесс по расписанию (или запускается руками) ? Ведь что-то в какой-то момент "пилит" данные! Может динамики изменений сейчас нет (мои площадки августовсвие - не подпорченные), может что-то каждый день портится - рандомно пилится .. исследовать и мониторить нужно.
Если бы ты дал айдишник площадки, было бы ещё круче)</quote>
Посмотри на скриншот. Там какой-то колледж. И адрес площадки в маркере отображен. Я думаю, что ты найдешь ее. И сможешь сопоставить кто их заводил, с каким интервалом. Может System тут не при чем - может он сам жертва того, что локацию этой площадки запилил злобный фоновый процесс...
Но у нас-то все отлично работает в этом плане, проблема в том, что в какой-то момент происходит пересохранение координат площадки. Вообще по неведомой причине. </quote>
Не совсем понятно о каком плане (с котороым у ас все ок) ты говоришь
![:smiley: 😃](https://cdn.jsdelivr.net/emojione/assets/3.1/png/32/1f603.png)
Озвучен ряд замечаний, воспроизведен ряд крешей, указана проблема с базой. При должном подходе этого всего не должно было быть.
Ответственность целостности данных лежит исключительно на Вас. И если Вы прошляпили момент порчи данных, а разработчики препираются, что такого не может быть потому что быть такого не может - это весьма прискорбно.
Хм, я могу предположить, что было бы весьма разумно организовать некий коммуникационный протокол между клиентом и сервером. Чтобы отправляю площадку на регистрацию (или корректировку), сервер не просто принимал данные, а отдавал информацию на клиента - например ID принятой площадки. М чтобы клиент после регистрации площадки мог сравнить данные с сервера со своими, которые он до этого отправил на регистрацию. По результату такого сравнения - будет видно, не закосячил ли сервер, адекватные ли данные сели в базу, или со смешением "на крышу дома".
Разумно рассмотреть было бы это на уровне MVP.
И далее, на этом же уровне было бы практично при синхронизации кеша приложения и сервера - не тянуть измененные данные, не переинициализировать кешь, а мониторить - сколько площадок новых, сколько измененных. И делать синхронизацию кеша - по лист списку (либо по кнопке "синхронизировать все").
Этот момент бы мог визуализировать состояние базы сервера - можно было бы мониторить какие площадки изменились, а потом уже пытаться анализировать почему они изменились..
В любом случае, с подходом MVP было бы проще все это замутить
![:smiley: 😃](https://cdn.jsdelivr.net/emojione/assets/3.1/png/32/1f603.png)