Korat

Что собирается, зачем и что можно потребовать

Что собирается, на каком правовом основании используется, кто ещё это видит, куда уходит и что вы можете от нас потребовать. Версия 3.2.

Korat работает из Таиланда и подчиняется Закону о защите персональных данных B.E. 2562 (PDPA). Уведомление охватывает приложение на Android, веб-приложение и этот сайт. Мы спрашиваем согласие до создания аккаунта, на экране, который нужно пролистать до последней строки, и отказ — настоящий вариант, который останавливает регистрацию прямо там. Контролёр данных доступен по адресу privacy@koratland.com.

Что собирается

Аккаунт
электронная почта, пароль (хешируется нашим провайдером аутентификации — никогда не хранится в читаемом виде), отображаемое имя, псевдоним, ваш Korat ID и выбранный язык
Профиль
всё, что вы решите заполнить: фото профиля и обложка, описание, пол, дата рождения, адреса, образование и опыт работы, навыки и языки, интересы, контакт для экстренной связи, семейные или партнёрские связи. У каждого поля своя видимость: публично / друзьям / приватно. Сегодня их 35, и они обеспечиваются не на одном уровне — см. раздел видимость по каждому полю ниже, где сказано, докуда достаёт каждый уровень
Контент
записи, комментарии, истории, фотографии, альбомы, участие в группах и отправленные сообщения, включая голосовые, файлы и отправленные геопозиции
Коммерция
заказы, столовые сессии, брони номеров, брони столов, записи на приём, пакеты, чеки и отзывы — вместе с заведением, с которым была сделка
Здоровье
только если вы включили модуль здоровья: активности, дистанция и маршрут, шаги и ежедневные записи, которые вы вносите: вода, вес, сон
Знакомства
только если вы включили знакомства: фотографии для знакомств, карточки-вопросы, фильтры и примерное местоположение для расчёта расстояния
Устройства
по строке на установку: имя устройства, платформа, версия приложения, время последней активности и токен уведомлений — чтобы вы видели и отзывали собственные сессии
Ссылки
когда кто-то открывает ссылку Korat, клик считается вместе со страной, источником перехода и user agent. Создатель ссылки видит число, а не посетителей
Поддержка
то, что вы нам пишете, и запись аудита, когда оператор открывает ваш аккаунт

Чувствительные данные (ст. 26). Ст. 26 PDPA требует явного согласия для ряда категорий — здоровье, религия, раса, инвалидность и данные, раскрывающие сексуальную ориентацию. В этом продукте такие данные находятся в трёх местах, а не в двух, а прежняя редакция этого уведомления описывала только два модуля.

Чувствительные поля профиля
религия, степень религиозности, сексуальная ориентация, гражданство, группа крови, хронические заболевания, постоянные лекарства, лекарственная аллергия, пищевая аллергия и инвалидность — каждое поле пустое, пока вы сами его не заполните, ни одно не нужно для наличия аккаунта, и любое можно очистить в любой момент. Ни одно из них не находится за переключателем модуля, поэтому механизм, на который опиралась прежняя редакция, до них не дотягивается по своему же определению. · С этой редакции религия, степень религиозности и сексуальная ориентация по умолчанию ‘приватно’, а группа крови, хронические заболевания, постоянные лекарства, лекарственная аллергия, пищевая аллергия и инвалидность вообще не передаются другим пользователям — подробности и остающиеся пределы в следующем разделе.
Модуль здоровья
активности, маршруты, шаги и ежедневные записи, которые вы вносите, — отдельного переключателя вкл./выкл. нет. Данные есть, только если вы их записали, и их нет, если не записали.
Модуль знакомств
фото для знакомств, карточки-вопросы, фильтры и свайпы, раскрывающие сексуальную ориентацию, — вот здесь настоящий переключатель есть, в Настройки → Знакомства, и его выключение немедленно убирает вас из колоды у всех.

Прежняя редакция утверждала, что оба модуля «выключены, пока вы их не включите, и включение и есть это согласие», — это было неправдой. До 28 июля 2026 года переключатель знакомств в базе данных по умолчанию стоял включённым, поэтому каждый аккаунт попадал в чужие колоды с момента создания, ни разу не совершив действия, которое уведомление называло согласием; а у модуля здоровья переключателя не было вовсе. · Что изменилось: аккаунты, созданные начиная с этой редакции, стартуют с выключенными знакомствами, а включение записывается с отметкой времени как запись о согласии. · Что не изменилось: мы не тронули ни одной существующей строки. Выключить всех разом — это тоже решение за вас. Приложение прямо спросит, остаться или выйти, и пока вы не ответили, состояние, в которое вас поставило прежнее значение по умолчанию, мы не считаем вашим согласием. А выключить самостоятельно можно в любой момент: Настройки → Знакомства.

Видимость по каждому полю — где она обеспечивается и куда пока не достаёт

Прошлая редакция писала, что заданное вами значение «обеспечивается экранами, а не базой данных». Сегодня эта фраза в одном месте не дотягивает до правды, а в другом по-прежнему точна, поэтому здесь она разложена на три уровня, какими они и являются на деле. Всего 35 полей.

Обеспечивается базой данных — 3 поля
Образование · опыт работы · подтверждения от заведений. Эти три живут в собственных таблицах, и правила доступа самой базы отбирают строки по заданному вами значению ⇒ тот, кому вы не разрешили, не прочтёт их — ни через приложение, ни через веб, ни прямым вызовом API. · И счётчик закрывается вместе со списком: раньше, если поставить подтверждения приватными, названия заведений исчезали, а число — «подтверждено 3 заведениями» — оставалось на странице, что хуже, чем не скрывать вовсе. Теперь пропадает и то и другое.
Обеспечивается читателем профиля — 21 поле
Остальной профиль: имена, ник, описание, пол, дата рождения и возраст, семейное положение, интересы, рост, провинция, гражданство, религия, степень религиозности, сексуальная ориентация, алкоголь, пищевые ограничения, навыки и языки. · И приложение, и веб перестали читать таблицу users напрямую и идут через серверный читатель профиля, который отбрасывает скрытое ещё до отправки ⇒ скрытое значение вообще не доходит до экрана, а не прячется при отрисовке. (У списка друзей есть собственный читатель, устроенный так же.) Но прочтите рамку ниже — этот уровень закрыл не все двери.
Никому не передаётся, поэтому переключателя нет — 10 полей
Группа крови, хронические заболевания, постоянные лекарства, лекарственная аллергия, инвалидность, пищевая аллергия, любимая еда, нелюбимая еда и вкусовые предпочтения вообще отсутствуют в читателе профиля, каким бы ни было ваше отношение к человеку, и ни один экран не рисует их для кого-то другого. ⇒ Настраивать нечего, поэтому редактор профиля убрал переключатель и вместо него написал факт: трёхпозиционный регулятор над данными, которых никто не видит, — это замок, за которым ничего нет. (Резюме тоже в этой группе, потому что у него уже есть собственный переключатель.)

Предел, который остаётся, — и он касается всех 21 поля второго уровня и всех 10 из группы «никому не передаётся». Правило доступа к таблице users по-прежнему ‘любой вошедший в систему может её читать’, а права на уровне столбцов по-прежнему открыты ⇒ любой аккаунт Korat, вызывающий API напрямую, всё ещё может прочитать то, что приложение и веб теперь скрывают, включая поля здоровья и чувствительные поля по ст. 26, и включая старые версии приложения, до сих пор установленные на чужих телефонах: они читают таблицу напрямую. · Изменилось то, что правильный путь теперь закрыт полностью, а не то, что закрыты все пути — мы предпочитаем написать это, чем позволить вам предположить защиту, которой нет. · Команда, отзывающая права на эти столбцы, написана, но применить её пока нельзя: установленные сегодня сборки всё ещё читают эти столбцы, и отзыв до того, как старые сборки исчезнут, сломает приложение в чужих руках разом. Порядок такой: выпустить релиз, подождать, затем отозвать. · До того дня надёжно работает то же, что и раньше: оставляйте пустыми поля, которые не хотите отдавать на чтение. Это в том же списке незакрытого, что и неподписанные стандартные договорные условия, и на странице безопасности.

Человек без аккаунта не может прочитать ни одного столбца таблицы users — измерено снаружи: запрос отклоняется на уровне прав, а не отвечает пустым результатом. Весь предел выше — про вошедшие в систему аккаунты, а не про публику в интернете.

Значения по умолчанию изменились и сдвинулись только в сторону сужения. Раньше каждое поле начиналось с ‘публично’, одинаково для всех ⇒ у того, кто ни разу не трогал замочек — то есть почти у всех — религия, степень религиозности и сексуальная ориентация были публичны по умолчанию, притом что экран рисовал рядом замочек и читался так, будто что-то их защищает. Теперь религия, религиозность и сексуальная ориентация начинаются с ‘приватно’, а полная дата рождения, гражданство, рост и вес, алкоголь, пищевые ограничения и список друзей — с ‘друзьям’. Значение по умолчанию применяется при чтении ⇒ мы не переписали ни одного значения, заданного вами самими, и никто не стал более открытым, чем прежде, из-за этого изменения.

Поиск больше не совпадает по полю, которое вы скрыли. Быть найденным по скрытому полю раскрывает его ровно так же, как и показ, поэтому скрытое значение не возвращается в результатах поиска — а в вебе человек, совпавший с запросом только по скрытому полю, выпадает из результатов целиком. · Приложение на Android пока не может его убрать: само значение скрыто, но аккаунт всё ещё может всплыть в поиске по имени, поставленному приватным. Мы пишем обе половины отдельно, а не утверждаем, что «поиск уважает ваши настройки».

Отвечает ли заполнение чувствительного поля или запись данных о здоровье критерию «явного» согласия по ст. 26 — юридический вопрос, на который мы пока не получили ответа специалиста. Поэтому эта страница описывает, что система делает на самом деле, и не пишет этот ответ сама.

Для чего и на каком правовом основании

Ст. 19 PDPA требует согласия, если не применимо исключение по ст. 24 (для чувствительных данных — ст. 26). Поэтому мы называем основание для каждой цели, а не сваливаем всё под «согласие» — руководство PDPC прямо предостерегает от использования согласия как универсального основания.

Создание и работа аккаунта
необходимость для исполнения договора (ст. 24(3))
Доставка сообщений, звонков, записей и групп выбранной вами аудитории
необходимость для исполнения договора (ст. 24(3))
Оформление заказа, открытие стола, приём брони, расчёт счёта
необходимость для исполнения договора (ст. 24(3))
Ранжирование ленты и подсказки друзей
законный интерес (ст. 24(5))
Отправка уведомлений, которые вы запросили
необходимость для исполнения договора (ст. 24(3))
Сообщение о входе с нового устройства
законный интерес — безопасность (ст. 24(5))
Противодействие злоупотреблениям, мошенничеству и спаму
законный интерес (ст. 24(5))
Соблюдение возрастных правил для алкоголя и входа в заведения
юридическая обязанность (ст. 24(6))
Хранение записей о сделках
юридическая обязанность — учёт и налоги (ст. 24(6))
Модуль знакомств
явное согласие (ст. 26) — новые аккаунты стартуют выключенными, включение записывается с отметкой времени
Модуль здоровья и чувствительные поля профиля
явное согласие (ст. 26) — переключателя нет: ничего не заполнили и не записали — нет и данных
Маркетинговые сообщения
см. следующий раздел

Korat не продаёт персональные данные, и в продукте нет рекламы. Ни рекламного идентификатора, ни рекламной сети, ни брокеров данных.

Маркетинг — и то, чего ещё нет

Три типа сообщений — не одно и то же. Служебные сообщения — статус заказа, подтверждение брони, предупреждение о входе с нового устройства, решение модерации, сброс пароля — нельзя отключить, пока у вас есть аккаунт: это и есть сервис, а не маркетинг. Уведомления функций — сообщение, лайк, комментарий, заявка в друзья, запись в группе — настраиваются по типам в приложении. Маркетинг — это данный раздел.

В базе данных есть один флаг отказа на уровне аккаунта, и при формировании списка получателей кампании отказавшиеся и приостановленные отсеиваются в тот момент, когда список записывается, а не при отправке: тот, кому нельзя, вообще ни разу не записывается. Аудитории — это структурированные критерии, которые интерпретирует сервер, а не SQL от клиента, и нераспознанный критерий отклоняется, а не игнорируется: тихо потерянный фильтр превращает аудиторию из 200 человек во всех, и такую отправку не отозвать.

Скажем прямо: у этого переключателя ещё нет кнопки. Отказ существует в базе данных, но ни приложение, ни веб его не вызывают, а по умолчанию стоит «получать» — это не соответствует руководству PDPC, которое ожидает согласия по модели opt-in, с выбором по целям и журналом согласий. Поэтому мы не отправим ни одного маркетингового сообщения, пока эта кнопка не появится, и эта страница не напишет «вы можете отказаться в любой момент», пока вы действительно не сможете.

Кто ещё это видит

Другие видят то, что позволяют ваши настройки приватности — публично, друзьям или никому — в пределах, которые раздел видимость по каждому полю выше разбирает по уровням. Чат читают двое его участников. Запись в группе читает эта группа. Заведение видит то, что нужно, чтобы вас обслужить: ваше имя за столом, что заказано, и адрес, который вы дали для доставки. Знакомства намеренно показывают меньше: чат, начавшийся с совпадения, показывает ваш ник, а не настоящее имя и не почту, пока вы не станете друзьями.

Заведение, с которым вы совершаете сделку, само является контролёром данных в отношении клиентских данных, которые оно держит, а не нашим обработчиком, поэтому обязанности PDPA ложатся прямо на него; а раздел 6 условий запрещает заведению добавлять вас в свой маркетинговый список только потому, что вы сделали заказ.

В остальном мы раскрываем персональные данные только с вашего согласия, когда этого требует закон или для защиты прав и безопасности.

Заведение не может написать вам первым — и это правило в базе данных, а не спрятанная кнопка. Право начать разговор с заведением принадлежит вам: пока вы ни разу не отправили ему сообщение, его сотрудники не могут вам написать и не могут оставить открытой пустую комнату чата. Автоматические сообщения заведения подчиняются тому же правилу, без исключения даже для сообщений о заказе. · Для звонков направление намеренно обратное: заведение может позвонить вам только внутри разговора, который открыли вы, а вы можете позвонить заведению только после того, как оно выдаст приглашение — оно называет одного сотрудника, до которого можно дозвониться, годится ровно на один звонок и истекает само (по умолчанию 24 часа). И выдать это приглашение заведение может, только если вы написали первым, иначе приглашение само стало бы способом связаться с незнакомым человеком.

Блокировка теперь обеспечивается в базе данных, причём в обе стороны. Раньше приложение писало «заблокировано», тогда как сервер не обеспечивал ровным счётом ничего. Теперь, пока блокировка существует, ни одна из сторон не может писать, звонить, отправлять заявку в друзья, ставить симпатию в Знакомствах, подписываться или отмечать родственную связь — а уведомление между ними вообще не создаётся, поэтому на экране блокировки ничего не появляется. Это обеспечивается триггерами базы данных, а не правилами доступа ⇒ связывает даже наш собственный доступ с наивысшими правами. · Ничего не удаляется, и чтение не затрагивается. История остаётся целой с обеих сторон, потому что именно она нужна вам, чтобы пожаловаться, а комната, исчезнувшая с одной стороны, сама по себе была бы раскрытием. · Отказ намеренно не называет причину: заблокированный аккаунт, приостановленный и удалённый дают одну и ту же фразу. Отправитель узнаёт, что сообщение не дошло, и никогда не узнаёт почему — потому что отказ со словами «вас заблокировали» выдаёт преследователю подтверждение, что он попал в нужного человека. · Нет и никогда не будет способа спросить, кто вас заблокировал.

Куда уходят данные

Ваши данные покидают Таиланд. Основная база данных, аутентификация и файловое хранилище — у Supabase в Сингапуре; сайт и граничные эндпоинты — у Cloudflare в глобальной сети; push-уведомления и исходящая почта идут через инфраструктуру Google. Они обрабатывают данные по нашим указаниям.

Ст. 28 PDPA разрешает передачу в страну с достаточным уровнем защиты — по списку, который издаёт Комитет по защите персональных данных. Комитет этот список не издал. Два его уведомления от 25 декабря 2023 года (критерии по ст. 28 и по ст. 29) вступили в силу 24 марта 2024 года, и ни одна страна не признана обеспечивающей достаточный уровень. Значит, Сингапур не является признанным получателем, и передача опирается на надлежащие гарантии по ст. 29 — стандартные договорные условия.

Эти стандартные договорные условия не подписаны. Мы пишем это здесь, а не «мы применяем надлежащие гарантии», потому что вторая фраза описывала бы то, чего пока нет. Пункт стоит высоко в нашем списке, рядом с ограничениями, записанными на странице безопасности.

Как это защищено — и где защита кончается

Всё передаётся по TLS. Доступ обеспечивает построчная безопасность в базе данных, поэтому запрос чужих данных не вернёт ничего — придёт он из приложения или от того, кто дёргает API напрямую. Коды подтверждения хранятся в виде хешей, устройства отзываются по одному.

Три предела, прямо. В Korat нет сквозного шифрования — сообщения и файлы читаемы на сервере · загруженные изображения лежат в публичном файловом хранилище, и любой, у кого есть URL файла, может его получить, хотя для загрузки и изменения нужен вход · и на текущем тарифе хостинга нет резервного копирования базы данных. Полный список — на странице безопасности.

Ст. 37(4) PDPA требует уведомить Комитет об утечке персональных данных без неоправданной задержки и, если это выполнимо, в течение 72 часов с момента, когда о ней стало известно, — кроме случая, когда утечка не создаёт риска для прав и свобод людей. При высоком риске нужно уведомить и затронутых лиц, указав меры по устранению.

Сколько это хранится

Аккаунт и профиль
пока существует аккаунт
Контент — записи, комментарии, фотографии, сообщения
пока существует аккаунт или пока вы его не удалите
Истории
истекают сами
Записи о сделках — заказы, брони, чеки
хранит заведение, с которым была сделка, столько, сколько требуют его учётные и налоговые обязанности
Строки устройств и токены уведомлений
до отзыва устройства или удаления аккаунта
Записи административного аудита
только добавление — триггер базы отклоняет изменение и удаление

Когда вы просите удалить данные, мы удаляем аккаунт и ваш личный контент. Записи, которые заведение обязано хранить по закону, могут остаться в его аккаунте — без привязки к вашему профилю. Записи аудита удалить нельзя, как сказано выше: это намеренная мера безопасности, и мы пишем об этом здесь, а не ждём, пока вы обнаружите это сами.

Ваши права

По ст. 30–36 PDPA вы можете получить доступ к данным и запросить копию (ст. 30) · запросить переносимость в машиночитаемом виде (ст. 31) · возразить против обработки на основании законного интереса и против обработки в целях прямого маркетинга (ст. 32) · потребовать удаления или обезличивания (ст. 33) · потребовать ограничения обработки (ст. 34) · потребовать исправления, чтобы данные были точными, актуальными и полными (ст. 35) · и отозвать согласие в любой момент (ст. 19) — так же легко, как оно было дано. Вы также можете подать жалобу в Комитет по защите персональных данных.

Удаление аккаунта теперь делается самостоятельно — и в приложении, и в вебе: в приложении это «Настройки → Удалить аккаунт», в вебе — koratland.com/delete-account, который работает без установленного приложения. И то и другое — запрос с 30-дневной отсрочкой: аккаунту назначается дата удаления, до неё всё работает как обычно, и отменить запрос можно самому в любой момент. О поданном запросе мы сразу уведомляем аккаунт — на случай, если подали его не вы.

«Скачать мои данные» по-прежнему делает человек, читающий почту, а не функция. Напишите на privacy@koratland.com с почты, привязанной к аккаунту, или сообщите свой Korat ID. Сначала мы проверяем, кто вы — непроверенный запрос сам по себе является атакой, — и отвечаем в течение 30 дней. Тот же адрес принимает и запрос на удаление, если войти вы уже не можете.

Три вещи вы можете сделать сами прямо сейчас, ни у кого не спрашивая: изменить видимость любого поля профиля, альбома, записи или истории; полностью выключить Знакомства — модуль скроется, и вы выйдете из чужих колод; и заблокировать любой аккаунт — это действует немедленно в обе стороны и обеспечивается базой данных, как описано выше.

Дети

Аутентичной является только тайская версия. Остальные девять языков предоставлены для удобства и самостоятельной юридической силы не имеют; при расхождении действует тайский текст. Уведомление может меняться, о существенном изменении сообщается в приложении. Версия 3.2 — заменяет версию 3.1, и изменилось то, что описание догнало уже обеспечиваемое системой, а не то, как мы используем ваши данные: видимость по каждому полю изложена как три уровня, каждый с указанием, докуда он достаёт; чувствительные поля теперь по умолчанию ‘приватно’, а идентифицирующие — ‘друзьям’; веб уважает видимость по полям так же, как приложение; поиск больше не совпадает по скрытому полю; блокировка и правило о том, что заведение не может написать вам первым, обеспечиваются в базе данных — прошлая редакция не упоминала ни того, ни другого. Экран согласия в приложении будет показывать 3.1 до следующего релиза; если два номера расходятся, действует эта страница.

Язык и изменения

Аутентичной является только тайская версия. Остальные девять языков предоставлены для удобства и самостоятельной юридической силы не имеют; при расхождении действует тайский текст. Уведомление может меняться, о существенном изменении сообщается в приложении. Версия 3.1 — заменяет версию 3.0. Экран согласия в приложении раньше говорил «версия 1.0» и был намного короче этой страницы; с этой редакции оба места несут один номер, а текст, который вы принимаете при регистрации, называет все перечисленные выше категории чувствительных данных.

Контакты

privacy@koratland.com — по всему, что касается ваших данных. hello@koratland.com — по всему остальному.

Реализовать право или задать вопрос

privacy@koratland.com доходит до человека, а не до очереди.