Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
20 KiB
Логика формирования ссылок на судебные дела (sudrf.ru)
📋 Структура URL
Общий формат ссылки:
https://{court-domain}.sudrf.ru/modules.php?name=sud_delo&srv_num={srv_num}&name_op=case&case_id={case_id}&case_uid={case_uid}&delo_id={delo_id}
Примеры ссылок:
Пример 1:
https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=471522071&case_uid=b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94&delo_id=1540005
Пример 2:
https://leninsky--pnz.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=170692229&case_uid=576762af-00bc-4346-8f15-f142608f0b4c&delo_id=1540005&case_type=0&new=0&srv_num=1
🔍 Разбор параметров
1. Домен суда ({court-domain})
- Формат:
{court-name}--{region-code}.sudrf.ru - Примеры:
krasnodar-sovetsky--krd- Советский районный суд г. Краснодараleninsky--pnz- Ленинский суд г. Пензы
- Логика: Формируется из названия суда и кода региона
- Источник: Определяется по адресу ответчика или истца через API поиска судов
2. name=sud_delo
- Значение: Всегда
sud_delo - Назначение: Указывает модуль системы судов для работы с делами
- Логика: Константа, не меняется
3. srv_num={srv_num}
- Значение: Обычно
1(может быть2,3и т.д.) - Назначение: Номер сервера/инстанции, обрабатывающей запрос
- Логика:
- Для первой инстанции обычно
1 - Для апелляции может быть другой номер
- Может дублироваться в URL (как в примере 2)
- Для первой инстанции обычно
4. name_op={operation} ⚠️ ВАЖНО: РАЗНЫЕ ОПЕРАЦИИ
- Возможные значения:
case- просмотр конкретного дела (требуетcase_id,case_uid)sf- форма поиска дел (search form)- Другие операции могут быть доступны
- Логика:
name_op=case- для просмотра конкретного делаname_op=sf- для поиска дел по критериям (форма поиска)
- Пример формы поиска:
Эта ссылка открывает форму поиска дел с фильтрами:
https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=sf&delo_id=1540005- Дата поступления
- Номер дела
- Дата рассмотрения
- Судья
- И другие параметры
5. case_id={case_id} ⭐ КЛЮЧЕВОЙ ПАРАМЕТР
- Формат: Числовой идентификатор (обычно 6-9 цифр)
- Примеры:
471522071,170692229 - Назначение: Внутренний числовой ID дела в системе суда
- Логика:
- Уникален для каждого дела
- Присваивается при регистрации дела в системе
- Может совпадать с номером дела или быть отдельным идентификатором
- Источник: Получается из:
- API Debexpert (если используется)
- Базы данных суда
- Регистрационных данных дела
6. case_uid={case_uid} ⭐ КЛЮЧЕВОЙ ПАРАМЕТР
- Формат: UUID (36 символов с дефисами)
- Примеры:
b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94576762af-00bc-4346-8f15-f142608f0b4c
- Назначение: Уникальный глобальный идентификатор дела (GUID)
- Логика:
- Генерируется системой при создании дела
- Обеспечивает уникальность на уровне всей системы судов
- Используется для связи дел между инстанциями
- Источник: Получается из:
- API Debexpert
- Базы данных суда
- Может быть в регистрационных данных
7. delo_id={delo_id} ⚠️ ВАЖНЫЙ ПАРАМЕТР
- Формат: Числовой идентификатор (обычно 6-7 цифр)
- Примеры:
1540005(часто встречается) - Назначение: Идентификатор типа дела или категории дела
- Логика:
- Может быть константой для определенного типа дел
1540005часто используется для гражданских дел- Может различаться для разных категорий дел:
- Гражданские дела
- Административные дела
- Уголовные дела
- Источник: Определяется по типу/категории дела
8. Дополнительные параметры (опциональные):
case_type={case_type}
- Значение: Обычно
0или1 - Назначение: Тип дела (гражданское, административное и т.д.)
new={new}
- Значение:
0или1 - Назначение: Флаг нового дела
🧩 Логика формирования ссылки
Алгоритм формирования:
-
Определение суда:
court_domain = get_court_domain_by_address(address) // Результат: "krasnodar-sovetsky--krd" -
Получение идентификаторов дела:
case_id = get_case_id_from_registration(case_number) case_uid = get_case_uid_from_registration(case_number) delo_id = get_delo_id_by_case_type(case_type) -
Формирование базового URL:
base_url = "https://{court_domain}.sudrf.ru/modules.php" -
Формирование параметров:
params = { "name": "sud_delo", "srv_num": "1", "name_op": "case", "case_id": case_id, "case_uid": case_uid, "delo_id": delo_id } -
Сборка финальной ссылки:
url = base_url + "?" + build_query_string(params)
📊 Источники данных для формирования
1. Из API Debexpert:
Если используется интеграция с Debexpert API, параметры могут приходить в ответе:
{
"case_id": "471522071",
"case_uid": "b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94",
"court_code": "23RS0047",
"court_domain": "krasnodar-sovetsky--krd"
}
2. Из базы данных CRM:
В таблице проектов могут храниться:
case_number- номер дела (может совпадать сcase_id)uid- UUID дела (соответствуетcase_uid)link1,link2,link3- готовые ссылки для разных инстанций
3. Из регистрационных данных:
При регистрации дела в суде выдаются:
- Номер дела (может быть
case_id) - УИД дела (
case_uid) - Код суда (для определения домена)
🔗 Связь между параметрами
Важные наблюдения:
-
case_idи номер дела:- Могут совпадать, но не всегда
case_id- внутренний ID системы- Номер дела - публичный номер (например, "2-1836/2025")
-
case_uid- универсальный идентификатор:- Один
case_uidможет использоваться для всех инстанций - Связывает дело в первой инстанции, апелляции и кассации
- Один
-
delo_id- категория дела:- Может быть одинаковым для дел одного типа
1540005часто используется для гражданских дел
-
Домен суда:
- Определяется по адресу ответчика/истца
- Может меняться при переходе в апелляцию/кассацию
🔍 Форма поиска дел (name_op=sf)
Структура URL формы поиска:
https://{court-domain}.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=sf&delo_id={delo_id}
Пример:
https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=sf&delo_id=1540005
Что это такое:
Это форма поиска дел в системе суда, а не просмотр конкретного дела. Страница содержит форму с полями для фильтрации:
- Дата поступления (от/до)
- Номер дела
- Дата рассмотрения (от/до)
- Судья
- Тип дела (гражданское, административное и т.д.)
- Статус дела
- И другие фильтры
Отличие от name_op=case:
| Параметр | name_op=case |
name_op=sf |
|---|---|---|
| Назначение | Просмотр конкретного дела | Форма поиска дел |
| Требует | case_id, case_uid |
Только delo_id (опционально) |
| Результат | Страница с информацией о деле | Форма для ввода критериев поиска |
| Использование | Парсинг конкретного дела | Поиск дел по критериям |
Логика использования:
-
Форма поиска (
sf):- Открывается для поиска дел
- Пользователь вводит критерии (номер дела, даты и т.д.)
- После отправки формы происходит поиск
- Результаты поиска содержат ссылки на конкретные дела
-
Просмотр дела (
case):- Открывается по ссылке из результатов поиска
- Или формируется напрямую, если известны
case_idиcase_uid - Содержит полную информацию о деле и его движении
Как это связано с формированием ссылок:
Сценарий 1: Известны параметры дела
→ Формируем ссылку напрямую с name_op=case
→ Парсим страницу дела
Сценарий 2: Известен только номер дела
→ Открываем форму поиска (name_op=sf)
→ Вводим номер дела в форму
→ Получаем результаты поиска
→ Извлекаем case_id и case_uid из результатов
→ Формируем ссылку с name_op=case
🛠️ Практические рекомендации
Для парсинга ссылок:
-
Проверка обязательных параметров:
function validateCourtUrl(url) { const urlObj = new URL(url); const params = urlObj.searchParams; const nameOp = params.get('name_op'); if (nameOp === 'case') { // Для просмотра дела нужны все параметры const requiredParams = ['case_id', 'case_uid', 'delo_id']; const missing = requiredParams.filter(p => !params.get(p)); if (missing.length > 0) { throw new Error(`Отсутствуют обязательные параметры: ${missing.join(', ')}`); } } else if (nameOp === 'sf') { // Для формы поиска delo_id опционален // Никаких обязательных параметров } return true; } -
Валидация формата:
// case_id - только цифры /^\d{6,9}$/.test(case_id) // case_uid - UUID формат /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(case_uid) // delo_id - только цифры /^\d{6,7}$/.test(delo_id) -
Извлечение параметров из URL:
function parseCourtUrl(url) { const urlObj = new URL(url); const params = urlObj.searchParams; const nameOp = params.get('name_op'); const result = { court_domain: urlObj.hostname, name_op: nameOp, srv_num: params.get('srv_num'), delo_id: params.get('delo_id') }; // Для просмотра дела добавляем специфичные параметры if (nameOp === 'case') { result.case_id = params.get('case_id'); result.case_uid = params.get('case_uid'); result.case_type = params.get('case_type'); result.new = params.get('new'); } // Для формы поиска может быть тип операции if (nameOp === 'sf') { result.is_search_form = true; } return result; }
Для формирования ссылок:
-
Если есть все параметры:
function buildCourtUrl(courtDomain, caseId, caseUid, deloId, srvNum = '1') { const baseUrl = `https://${courtDomain}.sudrf.ru/modules.php`; const params = new URLSearchParams({ name: 'sud_delo', srv_num: srvNum, name_op: 'case', case_id: caseId, case_uid: caseUid, delo_id: deloId }); return `${baseUrl}?${params.toString()}`; } -
Формирование ссылки на форму поиска:
function buildSearchFormUrl(courtDomain, deloId = '1540005', srvNum = '1') { const baseUrl = `https://${courtDomain}.sudrf.ru/modules.php`; const params = new URLSearchParams({ name: 'sud_delo', srv_num: srvNum, name_op: 'sf', delo_id: deloId }); return `${baseUrl}?${params.toString()}`; } -
Если есть только номер дела:
- Нужно получить
case_idиcase_uidиз API или базы данных delo_idможно определить по типу дела- Альтернатива: использовать форму поиска для поиска дела по номеру
- Нужно получить
⚠️ Важные замечания
-
Не все параметры обязательны:
- Минимально необходимые:
case_id,case_uid,delo_id - Остальные могут быть опциональными
- Минимально необходимые:
-
Разные инстанции:
- Для первой инстанции: обычно
srv_num=1 - Для апелляции: может быть другой
srv_numили другой домен case_uidобычно остается тем же
- Для первой инстанции: обычно
-
Изменение структуры:
- Система судов может менять структуру URL
- Рекомендуется проверять работоспособность ссылок
-
Кодировка:
- Все параметры должны быть правильно закодированы
- UUID не требует кодирования
- Числовые ID не требуют кодирования
📝 Примеры использования
Пример 1: Парсинг существующей ссылки
const url = "https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=471522071&case_uid=b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94&delo_id=1540005";
const parsed = parseCourtUrl(url);
console.log(parsed);
// {
// court_domain: "krasnodar-sovetsky--krd.sudrf.ru",
// case_id: "471522071",
// case_uid: "b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94",
// delo_id: "1540005",
// srv_num: "1"
// }
Пример 2: Парсинг ссылки на форму поиска
const searchUrl = "https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=sf&delo_id=1540005";
const parsed = parseCourtUrl(searchUrl);
console.log(parsed);
// {
// court_domain: "krasnodar-sovetsky--krd.sudrf.ru",
// name_op: "sf",
// srv_num: "1",
// delo_id: "1540005",
// is_search_form: true
// }
Пример 3: Формирование ссылки на просмотр дела
const url = buildCourtUrl(
"krasnodar-sovetsky--krd",
"471522071",
"b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94",
"1540005"
);
// Результат: "https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=case&case_id=471522071&case_uid=b5ff4b7f-bb1b-4cea-bcb6-a952174a6d94&delo_id=1540005"
Пример 4: Формирование ссылки на форму поиска
const searchUrl = buildSearchFormUrl("krasnodar-sovetsky--krd", "1540005");
// Результат: "https://krasnodar-sovetsky--krd.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=sf&delo_id=1540005"
🔄 Связь с текущим парсером
В файле court_parser_function.js парсер уже умеет:
- ✅ Определять тип суда по домену (региональный/московский)
- ✅ Парсить события из таблиц
div#cont2илиdiv#cont3 - ✅ Обрабатывать разные форматы дат
⚠️ Важно:
- Парсер работает только с
name_op=case(просмотр конкретного дела) - Форма поиска (
name_op=sf) не парсится текущим парсером - Если в парсер передать ссылку с
name_op=sf, он не найдет события
Что можно улучшить:
- ✅ Добавить валидацию параметров URL перед парсингом
- ✅ Добавить проверку
name_op- если этоsf, вернуть ошибку с понятным сообщением - ✅ Добавить функцию извлечения параметров из URL
- ✅ Добавить функцию формирования URL из параметров
- 🔮 В будущем: добавить поддержку парсинга результатов поиска (если понадобится)
📚 Дополнительные ресурсы
- Официальный сайт системы судов: https://sudrf.ru
- API Debexpert (если используется): документация по интеграции
- База данных
court: таблицы с делами и ссылками
Дата создания: 2025-01-XX
Автор: Анализ структуры URL судебных дел
Версия: 1.0