О, спасибо. Прочитал на хабре инструкцию - заинтересовало. По первым впечатлениям:
- преимущества перед локальным хранилищем не очень существенные, так как все мои данные - это текст
- в то же время, передавать можно любые данные, что позволит передавать изображения, которые мне уже захотелось передавать.
Пока понятного мало, поэтому начинаю читать, чтобы определиться с решением.
Горячо поддерживаю MediaWiki. Отличный выбор. Если среди пользователей будут те, кому трудно работать вики-разметкой, то для них есть графический редактор. Практически идеальное решение.
Если вдруг кому-то будет интересно моё нехитрое решение:
1. Алгоритм циклом проходится по всем товарам в накладной и изо всех сил пытается определить тот код товара, который ему соответствует в нашей системе. Для этого можно использовать EAN-штрихкод, который есть (но не всегда) в накладных поставщика. Для анализа названий подходит модифицированный алгоритм Левенштейна. Если алгоритм не справляется, то присваивается служебный код "Товар не найден". Так получаем "Список 1".
2. По полученному списку вновь проходим циклом, пытаясь ориентироваться на количество товара в накладных и количество в приёмке на складе ("Список 2"). Если количества не совпали, есть варианты:
2.1. Товар не довезли/привезли излишек
2.2. Поставщик считает одним товаром то, что мы считаем двумя товарами.
По п. 2.1. нужно автоматически создавать претензию, либо просто ждать (товар могут довезти позже)
По п. 2.2. нужно модифицировать таблицу из п. 1, разделив одну строчку на две, указав в обеих правильный код товара. Чаще всего расхождения бывают из-за того, что один и тот же товар могут производить на разных заводах как в одной стране, так и в нескольких. В каких-то случаях это нельзя считать одним товаром.
3. Затем нужно проанализировать те элементы списков №1 и №2, которые не удалось сопоставить. Бывает такое, что один и тот же товар пришёл двух разных серий или сроков годности. В этом случае можно сгруппировать их без учёта этих параметров и снова вернуться к проверке количества.
4. Самая большая сложность - это когда один и тот же товар приходит в одно время от разных поставщиков. На складе его банально могут перемешать. В этом случае есть специальный журнал, в котором фиксируется прибытие каждой новой машины на склад. Ориентируясь на это время и на время добавления каждой записи в "Список 2" можно сделать косвенный вывод о том, какой товар к какому поставщику и накладной относится.
5. Анализ оставшихся несошедшихся товаров выдаётся пользователю для ручной обработки. Использовать здесь нейронную сеть или более простые самообучающиеся алгоритмы, с моей точки зрения, не получится - слишком небольшой объём данных. Максимум тысячи позиций в сутки. Однако, такой вариант доработки в этом году я ещё не исключаю.
- преимущества перед локальным хранилищем не очень существенные, так как все мои данные - это текст
- в то же время, передавать можно любые данные, что позволит передавать изображения, которые мне уже захотелось передавать.
Пока понятного мало, поэтому начинаю читать, чтобы определиться с решением.