Как организовать одобрение/отклонение правок от нескольких пользователей в тексте? Добрый вечер, друзья. В целом адекватно сформулировать вопрос полностью отражающий суть проблемы крайне сложно, потому постараюсь пояснить что я имею ввиду. Если кратко то мне необходимо доработать Text_Diff (я абсолютно не привязан конкретно к данной библиотеке, просто это первое, что я нашел в сети) так, что-бы помимо сравнения двух версий имелась возможность - отображать + удалять/восстанавливать правки по пользователям + на основе этого формировать конечный документ из: "Исходная версия текста" -> "Одобренные правки" -> "Конечная версия текста". Например:Исходная версияЭто текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века.Одобренная правка Пользователя 1Это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. Дополнение от пользователя 1Одобренная правка Пользователя 2Это не только текст-"рыба" но и текст ракообразный, часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. Дополнение от пользователя 2Отклоненная правка Пользователя 3Это фееричный бред текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. Хрень от пользователя 3Модераторская версияЭто фееричный бред не только текст-"рыба" но и текст ракообразный, часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. Дополнение от пользователя 1Дополнение от пользователя 2Хрень от пользователя 3Итоговая версияЭто не только текст-"рыба" но и текст ракообразный, часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. Дополнение от пользователя 1Дополнение от пользователя 2Важно заметить что все правки добавляются не друг за другом а относительно исходной версии текста Проблемы у меня возникают с построение архитектуры как таковой, так как ничего более здравого чем десятки сравнений версий текста на каждого пользователя я не придумал. Пока мой неюзабельный набросок выглядит так:Создаем таблицу где храним текст каждой правки пользователя (текст правки каждого пользователя вычленяем сравнивая исходную версию текста и версию пользователя с правками, разницу записываем в таблицу)Создаем таблицу с общим текстом правок от всех пользователей для последующего сравнения с текстом от каждого пользователя и подсвечиванием их правок (вот тут тупик, так как мне совсем не ясно как работать с очередностью текста, ведь каждая новая правка будет вноситься относительно исходной версии документа а не друг за другом)В случае если два отдельных пользователя затрагивают один и тот же текст в документе размещаем их друг за другом (тоже пробел, гипотетически можно провести перекрёстное сравнение с предыдущей общей версией с внесенными правками от прочих пользователей, версией с правками от текущего пользователя и исходной версией для выделение повторяющихся правок, но звучит так себе) По итогу вызовов text_diff там будет невероятно много (и даже с сравнением всего и вся проблема хронологии сохраняется), что убого как по архитектуре так и по производительности. Потому хотел бы попросить у вас помощи с поиском верного направления мысли или еще лучше со ссылкой на готовую библиотеку xD. Спасибо всем кто дочитал до конца... P.s и да я знаю что мне не мешало бы прочесть курс по алгоритмам, изучить виды сортировок, etc. И я обязательно этим займусь но сейчас, у меня просто нет времени. И да я так же знаю, что по хорошему я всё это должен знать, но уж извините...
Добрый вечер! Ваша проблема с организацией одобрения/отклонения правок от нескольких пользователей в тексте действительно сложная, но возможно ее можно решить с помощью более эффективной архитектуры.
Один из вариантов, который можно попробовать, это использование системы управления версиями текста (Version Control System), такая как Git. В Git каждая правка от каждого пользователя фиксируется в виде коммита, а изменения могут быть объединены в виде веток (branches) для каждого пользователя. Затем с помощью слияния (merge) можно объединить изменения от разных пользователей и решить конфликты в случае несовместимости.
Также можно рассмотреть использование специализированных платформ для коллективного редактирования текста, таких как Google Docs или Microsoft Word Online, которые предоставляют возможность одновременного редактирования документа несколькими пользователями и отслеживание изменений.
Если вы хотите разработать собственную систему, то, возможно, стоит искать библиотеки или фреймворки для работы с текстом и сравнения версий, такие как DiffMatchPatch или Meld.
Надеюсь, эти рекомендации помогут вам найти подходящее решение для вашей проблемы. Удачи вам!
Добрый вечер! Ваша проблема с организацией одобрения/отклонения правок от нескольких пользователей в тексте действительно сложная, но возможно ее можно решить с помощью более эффективной архитектуры.
Один из вариантов, который можно попробовать, это использование системы управления версиями текста (Version Control System), такая как Git. В Git каждая правка от каждого пользователя фиксируется в виде коммита, а изменения могут быть объединены в виде веток (branches) для каждого пользователя. Затем с помощью слияния (merge) можно объединить изменения от разных пользователей и решить конфликты в случае несовместимости.
Также можно рассмотреть использование специализированных платформ для коллективного редактирования текста, таких как Google Docs или Microsoft Word Online, которые предоставляют возможность одновременного редактирования документа несколькими пользователями и отслеживание изменений.
Если вы хотите разработать собственную систему, то, возможно, стоит искать библиотеки или фреймворки для работы с текстом и сравнения версий, такие как DiffMatchPatch или Meld.
Надеюсь, эти рекомендации помогут вам найти подходящее решение для вашей проблемы. Удачи вам!