Проблема не в списке животных, а в их ПУТИ
Приют не накапливает карточки — он продвигает животных по траектории. Животное поступает (оставлено владельцем, передано органами опеки или ветеринарной службы, найдено на улице), проходит карантин, возможно, отправляется в семью-передержку, возвращается обратно, получает лечение, выставляется на усыновление, знакомится с тремя кандидатами, двух из них отклоняет и, наконец, уезжает. На каждом этапе важно не новое значение данных — а его связь со всем, что было до этого.
Именно это таблица не умеет отслеживать. Она отвечает на вопрос «сколько животных?», но никогда — на «какие из них находятся в семьях-передержках более шести месяцев?», «какие ожидают постусыновительского визита?», «какой кандидат был отклонён и по какой причине?». Эти вопросы требуют не больше столбцов — они требуют, чтобы записи были СВЯЗАНЫ между собой.
А ставки выше, чем просто удобство хранения: если приют не может восстановить историю животного, он теряет медицинские или поведенческие данные, которые никому больше не известны.
Что вы описываете — и во что превращает это движок
Вы формулируете потребность простым языком: «Мы — организация по защите животных, принимаем собак и кошек, сотрудничаем с тридцатью семьями-передержками, хотим отслеживать поступления, лечение, кандидатов на усыновление и завершённые усыновления». Движок строит на основе этого бизнес-схему: сущности, их поля, связи между ними.
Ещё до написания первой строки кода вам представляют этот план — и вы его редактируете: переименовываете сущность, добавляете номер идентификации рядом с именем, удаляете раздел, корректируете значения списка статусов так, чтобы они соответствовали реалиям вашего приюта. Именно в этот момент приложение становится вашим — а не приблизительной интерпретацией вашей фразы.
Животное, его пребывание, лечение
Каждое животное имеет собственную карточку — имя, вид, пол, примерный возраст, номер идентификации, дата и причина поступления, статус — и всё, что с ним связано, привязывается именно к этой карточке. Поэтому на её странице отображается весь путь: где и когда животное находилось, какие лечебные мероприятия проводились, какие поведенческие наблюдения зафиксированы, кто подавал заявку на усыновление.
Списки можно фильтровать и сортировать: по виду, статусу, месту размещения, дате поступления. Удаление не приводит к безвозвратной потере — запись попадает в корзину, откуда её можно восстановить. Это критически важно для данных, которые невозможно воссоздать заново.
- Отдельная карточка на каждое животное с полной историей
- Датированные поступления: статус поступления, причина, состояние при поступлении
- Лечение и наблюдения, привязанные к животному
- Фильтрация и сортировка по виду, статусу, месту или дате
- Корзина и возможность восстановить удалённую запись
Семьи-передержки, кандидаты, усыновления
Семья-передержка — самостоятельная сущность: контактные данные, возможности по размещению и список животных, которых она принимала или принимает сейчас. Из её карточки видна вся история взаимодействия; из карточки животного — где оно находится сейчас. Одна и та же связь, читаемая в обоих направлениях, без дублирования ввода.
Усыновление работает по тому же принципу: кандидат привязывается к конкретному животному, с указанием текущего статуса заявки. Отклонённая заявка остаётся в истории вместе с причиной отказа — именно это теряется при перезаписи в таблице и вызывает сожаление спустя два года.
- Приёмные семьи: допустимые виды и категории животных, контакты, размещённые животные
- Кандидаты на усыновление, привязанные к животному
- Отслеживание заявок: контакт, визит, решение
- Завершённые усыновления и постусыновительское сопровождение
- Экспорт всех наборов данных в форматах JSON и CSV в любой момент
Чем приложение НЕ является
Это инструмент внутреннего управления, а не регламентное ПО — и эта разница здесь принципиальна. Идентификация собак и кошек обязательна, а обновление данных при передаче осуществляется через национальный реестр идентификации (I-CAD): приложение НЕ подключено к нему, не выполняет за вас никаких действий и не заменяет официальные процедуры. Оно лишь сохраняет номер идентификации как одну из обычных данных — и только это.
Оно также не заменяет ветеринара и не является официальной медицинской картой животного: заметки о лечении — это внутренний напоминатель, а не документ, имеющий юридическую силу в отношении третьих лиц. И у него нет автономного режима: это веб-приложение, открывающееся в браузере телефона, но при отсутствии связи в вольерах ввод данных происходит уже после возвращения.
То, что приложение делает, оно делает с кодом, который принадлежит вам: стандартный проект на Next.js и Prisma, доступный для экспорта в ZIP или загрузки в ваш репозиторий GitHub. Для некоммерческой организации это означает конкретное преимущество — ни один поставщик не может отключить инструмент, и он не станет бесполезным, если человек, который его настроил, уйдёт.
Возможные сущности
- Животное
- Поступление
- Лечение
- Семья-передержка
- Кандидат
- Усыновление
Возможные экраны
- Панель управления
- Список животных
- Карточка животного и его путь
- Семьи-передержки
- Заявки на усыновление
- Усыновления
- Настройки
Возможные показатели
- Животные на территории
- Животные в семьях-передержках
- Усыновления за месяц
- Животные без усыновления более шести месяцев
Частые вопросы
Подключено ли приложение к национальному реестру идентификации?
Нет. Идентификация собак и кошек обязательна, а её обновление при передаче осуществляется через национальный реестр (I-CAD): приложение не подключено к нему и не выполняет за вас никаких действий. Оно сохраняет номер идентификации как одну из обычных данных, чтобы вы могли легко его найти.
Можно ли управлять семьями-передержками, не вводя животных повторно?
Да, именно в этом и смысл: размещение — это связь между животным и семьёй-передержкой, а не копирование данных. Из карточки семьи вы видите размещённых животных, из карточки животного — где оно находится. Однократный ввод, читаемый в обоих направлениях.
Могут ли работать несколько волонтёров?
Да: как только приложение требует входа в систему, оно предоставляет полноценные отдельные учётные записи с тремя ролями — администратор, пользователь, только чтение. Права применяются ко всему приложению целиком: нет гранулярных разрешений по видам, локациям или сущностям.
Можно ли вводить данные прямо в вольерах с телефона?
Приложение — это веб-сервис, работающий по выделенному URL: оно открывается в браузере телефона так же, как и на компьютере. Автономного режима нет — при отсутствии сигнала в зданиях ввод данных происходит после возвращения.
Что произойдёт с инструментом, если уйдёт волонтёр, который его настроил?
Полный исходный код приложения принадлежит вам: стандартный проект на Next.js и Prisma, который можно экспортировать в ZIP или загрузить в репозиторий организации на GitHub, а затем разместить на любом хостинге. Ни один поставщик не сможет его отключить, и любой разработчик сможет продолжить работу — это и есть разница между инструментом для организации и личным инструментом.
А если наш приют не похож на этот пример?
Перечисленные выше сущности и экраны — результат именно такого описания, а не жёсткий шаблон. Решающим является ваш текст, а предложенный план можно скорректировать до генерации.
