Чего не хватает
На карте соответствия против каждого раздела стоит «частично». Здесь сказано, что именно за этим словом: 19 пробелов по 9 разделам.
Список написан без оглядки на то, как он выглядит. Специалист, открывший систему, всё равно найдёт то, о чём здесь умолчали, — и дальше не поверит ничему. Знать границы за десять минут выгоднее обеим сторонам, чем узнавать их на третьем месяце внедрения.
General Rules
Section 01 ↗Общие правила учёта: кто ведёт записи, как подтверждается их достоверность, что делает организация учёта и за что она отвечает перед заводчиком.
Как сейчас. Роли, права доступа и журнал изменений по каждой записи. Верификация записей Ассоциацией — отдельный поток заявок.
Нет внешнего аудита процедур.
Чем это грозит. Правило, которое проверяет только тот, кто его написал, — это обещание, а не правило. Раздел построен вокруг того, что достоверность подтверждает третья сторона, и заменить её собственным прогоном нельзя.
Что для этого нужно. ICAR Certificate of Quality по направлениям Herd-book recording и Data processing — единственная в мире отраслевая сертификация ведения племенной книги. Доступна только членам ICAR, и это упирается в вещи за пределами кода (см. docs/icar.md).
Процедуры учёта не описаны отдельным документом.
Чем это грозит. Порядок работы живёт в коде и в решениях разработчика. Пока систему ведёт один человек, это работает; при передаче Ассоциации или при аудите — нет.
Что для этого нужно. Регламент ведения книги: кто вносит, кто проверяет, в какие сроки, что считается ошибкой и как она исправляется. Работа Ассоциации, а не системы.
Cattle Milk Recording
Section 02 ↗Учёт молочной продуктивности: схемы контрольных доений, интервалы между ними, расчёт лактации, обозначение метода (A4, B4 и прочие), обращение с пропусками.
Как сейчас. Контрольные доения с датой, удоем, жиром, белком и соматикой; лактация считается из них, а не вводится числом. Проверки ловят разрывы в ряду доений и лактации без обязательных показателей.
Метод контроля продуктивности не записывается.
Чем это грозит. Обозначение вида A4, B4, AT — это не подробность, а то, чем определяется сопоставимость лактаций. Лактация по A4 (контроль раз в месяц, доярка из службы) и по B4 (контроль ведёт сам хозяин) — числа разной ценности, и складывать их в один рейтинг нельзя. Сейчас мы складываем.
Что для этого нужно. Поле метода у контрольного доения или у хозяйства, справочник методов ICAR и учёт метода в расчёте лактации и в рейтинге. В ADE это уже есть — icarMilkRecordingMethodType.
Интервал между контролями не проверяется.
Чем это грозит. Раздел задаёт допустимые интервалы, и выход за них означает, что лактация посчитана по слишком редким точкам. Наша проверка ловит только полный разрыв в ряду, а не растянутый интервал.
Что для этого нужно. Правило в реестре проверок: интервал между соседними доениями в днях.
DNA Technology
Section 04 ↗Работа с генотипами: подтверждение и уточнение происхождения, обмен генотипами между организациями, требования к лабораториям.
Как сейчас. ДНК-тест с лабораторией, датой, методом и результатом подтверждения происхождения; расхождение с записанными родителями попадает в проверки.
Хранится результат теста, а не сам генотип.
Чем это грозит. Мы знаем, что происхождение подтверждено, но не можем ни перепроверить это сами, ни передать генотип другой организации. При смене лаборатории подтверждение придётся покупать заново.
Что для этого нужно. Хранение маркеров: 12 обязательных STR и не менее 200 SNP из набора ISAG, формат TOP/AB, расчёт вероятностей исключения. Стандарт ADE тут не помощник — генотипов в нём нет вовсе.
Нет обмена генотипами с другими организациями.
Чем это грозит. Международный обмен идёт через GenoEx-PSE, и он закрыт: нужно членство ICAR плюс сертификация как DNA Data Interpretation Centre. Российских организаций в списке двадцати семи центров нет.
Что для этого нужно. Сначала — хранение генотипов у себя; обмен возможен только после того, как изменится внешняя ситуация.
Conformation Recording
Section 05 ↗Оценка экстерьера: линейные признаки на девятибалльной шкале, сводные оценки по стобалльной, требования к оценщику и к повторяемости оценок.
Как сейчас. Линейная оценка по признакам 1–9, сводные оценки 50–100 и оценка молодняка. У каждой оценки записан оценщик и дата. Шестнадцать линейных признаков и четыре сводных отображаются в номенклатуру ICAR при обмене по ADE.
Два сводных признака в номенклатуру ICAR не ложатся.
Чем это грозит. «Объём туловища» и «задняя треть туловища» — наши составные показатели, и соответствия им в перечислении icarConformationTraitType нет. При обмене они просто не уезжают. Выдать их за соседние по смыслу значило бы отправить чужой системе число под чужим именем.
Что для этого нужно. Либо решение Ассоциации перейти на состав признаков ICAR, либо признание того, что эти два остаются внутренними. Решение зоотехническое, не техническое.
Повторяемость оценок оценщиками не проверяется.
Чем это грозит. Раздел требует, чтобы разные оценщики ставили одному животному близкие оценки, и чтобы это измерялось. Без такой проверки экстерьерный рейтинг отражает не столько корову, сколько привычки конкретного бонитёра.
Что для этого нужно. Повторные оценки одного животного разными оценщиками и расчёт расхождения. Данные для этого надо собирать специально — из обычной работы они не берутся.
AI and ET Data and Fertility Analysis
Section 06 ↗Учёт осеменений и пересадок эмбрионов, расчёт показателей воспроизводства: сервис-период, межотельный период, индекс осеменения.
Как сейчас. Осеменения с быком, дозой, техником и результатом; сервис-период и межотельный считаются из событий. Проверки ловят слишком короткий межотельный период и осеменение раньше отёла.
Трансплантация эмбрионов не ведётся.
Чем это грозит. Раздел покрывает и ЭТ, а у нас нет ни вымывания, ни донора с реципиентом, ни документации на эмбрион. Телёнок от пересадки записывается как обычный, и родословная у него получается неверной: мать-реципиент попадает в неё вместо генетической матери.
Что для этого нужно. Событие вымывания, карточка эмбриона, тип родства «реципиент» в родословной. В ADE для этого всё есть: icarReproEmbryoFlushingEventResource, icarReproEmbryoResource и значение Recipient в icarAnimalRelationType. Требуется правилами WHFF при регистрации.
Bovine Functional Traits
Section 07 ↗Функциональные признаки: здоровье вымени, лёгкость отёла, сохранность приплода, долголетие — что именно записывать и как это кодировать.
Как сейчас. Соматика по контрольным доениям, лёгкость отёла, живой и мёртвый приплод, выбытие с датой и причиной.
Единый код здоровья ICAR (Central Health Key) не используется.
Чем это грозит. Записи о болезнях ведутся свободнее, чем требует справочник, и сравнить частоту мастита у нас и в другой стране нельзя: там код, у нас текст. Это же закрывает дорогу к международной оценке признаков здоровья.
Что для этого нужно. Справочник Central Health Key, поле кода у лечения и диагноза, перевод существующих записей. Тот же код использует ADE в icarDiagnosisEventResource.
Лёгкость отёла в трёх степенях вместо пяти.
Чем это грозит. У нас «лёгкий, с помощью, тяжёлый», в международной шкале пять степеней с отдельным кесаревым. При обмене наши три растягиваются в чужие пять однозначно, а обратно — уже нет: два разных чужих значения приходят в одно наше, и различие теряется молча.
Что для этого нужно. Расширить справочник до пяти степеней по icarReproCalvingEaseType и перевести существующие записи.
Dairy Cattle Genetic Evaluation
Section 09 ↗Генетическая оценка молочного скота: из чего складывается племенная ценность, как считается достоверность, как публикуются результаты и база сравнения.
Как сейчас. Индекс племенной ценности с профилями весов, достоверностью по каждому признаку и по индексу в целом, с версией базы сравнения рядом со значением. Рейтинг по книге публикуется поимённо.
База сравнения заимствована, а не своя.
Чем это грозит. Стандартные отклонения и наследуемости взяты из американской базы CDCB-2025 и переведены в метрические единицы. Для российской популяции они приблизительны: индекс внутренне согласован, но его абсолютное значение не означает того же, что в стране, где база своя.
Что для этого нужно. Расчёт генетических параметров по российской популяции — работа научного учреждения, а не системы. Наша часть — версия базы рядом с каждым значением, чтобы смена была прослеживаема; это уже сделано.
Нет валидации генетического тренда.
Чем это грозит. Раздел требует проверять, что оценка не «плывёт» год от года: методы I–III Interbull именно об этом. Без такой проверки медленный сдвиг базы выглядит как генетический прогресс, и заметить подмену нельзя.
Что для этого нужно. Реализация валидационных тестов трендов методами I–III. Делается без всякого членства и остаётся правильной архитектурой, даже если участие в Interbull никогда не случится.
Оценка не участвует в международном сравнении.
Чем это грозит. MACE Interbull приводит оценки разных стран к общей шкале. Без этого наш индекс несопоставим с чужим ни в какую сторону — ни быка сравнить, ни импортную корову оценить.
Что для этого нужно. Требует членства ICAR и валидированной национальной оценки в единой базе. Сегодня закрыто.
Data Exchange
Section 15 ↗Обмен данными между системами: словари, форматы, схемы. Современная линия — открытый стандарт ADE на JSON и REST, спецификация лежит на GitHub под Apache 2.0.
Как сейчас. Обмен с ФГИАС ПР по двадцати шаблонам реестра — выгрузка и обратная загрузка. Собственный REST-интерфейс книги. Отдача семи коллекций ADE по адресам из спецификации: животные, контрольные доения, отёлы, осеменения, оценки экстерьера, взвешивания, племенная ценность, поступление, выбытие, падёж, проверка стельности. Приём POST по четырём из них — контрольные доения, отёлы, осеменения, взвешивания — с распознаванием повторной отправки по паре «источник + его номер записи», построчным ответом icarBatchResult и отказами в виде icarErrorResource. Отдаваемое сверяется с настоящими схемами из репозитория adewg/ICAR, а не с нашей копией перечислений. Животные, оценка экстерьера, племенная ценность и перемещения на запись закрыты намеренно: запись животного и переход прав — утверждения, за которые Ассоциация отвечает, и они идут заявкой с проверкой, а не строкой в потоке обмена; каждой отвечается 405 с объяснением.
Пакетные адреса /batches/... не заведены.
Чем это грозит. Стандарт разводит одиночную запись и пакет по разным адресам. Мы принимаем массив на том же адресе: разводить их значило бы завести вторую копию проверки прав и опознания локации — второе место, где право написать в чужое хозяйство может разойтись с первым. Отклонение осознанное, но это всё же отклонение.
Что для этого нужно. Либо отдельные адреса /batches/..., переиспользующие ту же проверку прав, либо согласование с ADEWG, что массив на основном адресе считается допустимым прочтением.
Generic Data Exchange API не реализован.
Чем это грозит. Вторая половина раздела — обмен через датасеты и ленту изменений: четыре адреса, клиенту не нужно знать про локации, синхронизация идёт по непрозрачному токену. Это то, чем пользуются при постоянной двусторонней связи между системами; у нас работает только выборка по локациям, то есть партнёру приходится обходить хозяйства самому.
Что для этого нужно. Четыре адреса: /datasets, /datasets/{id}, /datasets/{id}/changes?since=, /dataset/{id}/resources. Плюс лента изменений с токеном продолжения и заголовком icar-full-sync при пересинхронизации.
Фильтры выборки поддержаны частично.
Чем это грозит. Стандарт задаёт имена фильтров и правила их составления: поле называется как само поле, вложенное — через дефис, диапазон — суффиксами -from и -to. У нас есть только отбор по дате изменения. Клиент вправе прислать animal-id или birthDate-from и получить больше данных, чем просил, — это стандартом допускается, но каждый лишний мегабайт платит партнёр.
Что для этого нужно. Разбор рекомендованных фильтров: animal-id + animal-scheme, meta-created-from/-to, meta-source. Имена — строго из стандарта: свои имена хуже отсутствующих фильтров.
Breed Associations
Section 18 ↗Работа породных ассоциаций и ведение племенных книг: правила записи животного в книгу, разделы книги, требования к происхождению и к членству.
Как сейчас. Ведение книги, членство хозяйств, выпуск племенных свидетельств, разбор заявок, верификация записей.
Разделов племенной книги нет.
Чем это грозит. В международной практике книга делится по степени чистопородности (основная часть, приложения), и от раздела зависит, что животное может получить и по какой цене продаётся. У нас книга одна и плоская.
Что для этого нужно. Решение Ассоциации о структуре разделов, затем поле раздела у животного и правила попадания в него. Первое важнее второго и не наша работа.
Родословная не гарантирует пяти поколений.
Чем это грозит. Registration Guidelines WHFF требуют пять поколений с данными продуктивности и флаг не-голштинского предка в них. Мы собираем столько, сколько есть в данных, и не отмечаем, где родословная обрывается или где в неё входит чужая порода.
Что для этого нужно. Признак полноты родословной у животного, флаг чужой породы в пяти поколениях, коды рецессивов Mulefoot, BLAD, CVM, DUMPS.
Что из этого зависит не от кода
Часть пробелов закрывается работой, часть — решением, и путать их не стоит. Разделы племенной книги, состав признаков экстерьера и структура методов контроля — это решения Ассоциации: система умеет и так, и иначе, а выбирать должен тот, кто отвечает за породу. Расчёт генетических параметров по российской популяции — работа научного учреждения. Международное сравнение оценок и сертификация качества ведения книги упираются в членство в ICAR, и это отдельный разговор, в котором от нас зависит немногое.