Методология
Источники данных
Основной источник — официальный API открытых данных Госдумы (api.duma.gov.ru). Система оператора СОЗД (sozd.duma.gov.ru) закрыта для автоматического доступа в robots.txt, поэтому мы не выполняем скрейпинг и используем СОЗД только как источник ссылок и файлов документов. У каждого законопроекта есть кликабельная ссылка на карточку в СОЗД и указана дата актуальности данных.
Идентификатор законопроекта — RN вида 141597-8 (номер + созыв). Синхронизация инкрементальная и идемпотентная; события дедуплицируются по паре (rn, event_hash). Если API недоступен, показываются данные из кэша с честной отметкой даты.
Автоматические пересказы
Блоки «Кратко», «Что меняется», «Кого касается» могут генерироваться автоматически и всегда помечаются плашкой «Сгенерировано автоматически». Тон строго нейтральный: мы описываем последствия, а не даём оценок. Если модель не уверена — блок не заполняется, а не заполняется догадкой. Это не юридическая консультация; первоисточник всегда рядом.
Уровень влияния и читаемость
«Уровень влияния» — расчётный балл (охват × глубина изменений), «Читаемость» — индекс сложности исходного текста. Это ориентиры, а не оценки «хорошо/плохо».
Народное голосование
Народное голосование — опрос пользователей платформы. Оно не имеет юридической силы и не является социологическим исследованием. Принцип «один человек — один голос». Данные о том, кто голосовал, и о том, как проголосовали, хранятся раздельно и не связаны напрямую: выбор записывается под разовым ballot-token, а связь «пользователь → выбор» на сервере не сохраняется. Отзыв голоса возможен до закрытия окна при наличии ballot-token. Все операции пишутся в append-only журнал с хеш-цепочкой; при аномальных всплесках голосование замораживается до ручного ревью.
Проверяемость итогов. Итог каждого опроса можно проверить независимо: обезличенный журнал публикуется на странице «Проверить итоги», где хеши записей пересчитываются прямо в браузере, а итог собирается из журнала (vote_cast минус vote_revoked по ballot-token). Формула записи: hash = sha256(prev_hash | тип | канонический JSON payload).
Важно: полноценная верификация личности (и связанная обработка персональных данных) в текущей версии не включена и будет запущена только после согласования правовой модели. Сейчас доступ к голосованию ограничен уровнем доверия аккаунта.