Вместе с контентом Harvester забирает из источника два сопутствующих
набора данных — права доступа и
личности людей — и держит их
в актуальном состоянии
наравне с самими сущностями. Harvester их производит;
модель таблиц, хранение и резолюцию держит
Knowledge Store.
Права сохраняются в оригинальных терминах
источника, без интерпретации; люди сводятся по email;
синхронизация прав — часть общих режимов синхронизации, отдельного
механизма под неё нет. Сам сбор и того, и другого идёт через коннектор —
механику выборки держит
sources.
пользователь → его личности → членства в группах
источника → группа-ACL сущности; фрагмент наследует ACL
сущности, своего не имеет. ACL и членство лежат в реляционной
базе рядом с векторами — поэтому отбор по правам идёт тем же
запросом, что и поиск по смыслу. Само применение — за слоем
выдачи.
email — явному и надёжному ключу. Кого по
email сопоставить не удалось, Harvester не
угадывает: такие записи уходят на ручной разбор в Admin Panel,
где их привязывают к существующей личности или заводят как
новую. При upsert личности Harvester заодно ставит мост к
платформенному аккаунту того же email, если такой
уже есть (identity.user_id) — та же авто-связь по
точному email; правило держит
Knowledge Store.
email, но тот же человек» —
нечёткое сопоставление личностей между источниками — Harvester
не делает. Это задача deep entity resolution в Knowledge Store,
за пределами нашей границы; здесь мы сводим только по точному
совпадению email.