В Generator UI вы задаёте сущности, поля, связи и доступ. Admingen сохраняет эти настройки в .admingen/project.yaml. Этот файл называется манифестом: он описывает, какое приложение нужно получить при генерации.
Модель и custom-код можно развивать параллельно. Меняйте типовые возможности через UI, а собственную логику пишите в custom-зонах. Ручная правка сгенерированного Go или React не меняет модель и потому не заменяет настройку в манифесте.
Где менять настройки
В Project settings находятся заголовок проекта и хранилище изображений. Способы запуска, CI и профили окружений находятся в отдельном разделе Deployment. В Content — модули, сущности, поля и связи. Доступ к операциям и условия выдачи записей настраиваются в Entity settings → Access.
Кнопка Finish сохраняет модель. Чтобы обновить файлы приложения, откройте Generate → Preview changes → Generate. Это отдельное действие: сохранение формы не выпускает код и не меняет БД.
Из каких разделов состоит манифест
| Ключ | Что он описывает |
|---|---|
version |
Контракт проекта. Текущее значение — 0.8.1. |
generatorVersion |
Версию генератора, записанную в проекте. Замена числа сама по себе не обновляет контракт. |
project |
Техническое имя name, заголовок title и путь Go-модуля. |
database |
PostgreSQL и схему базы данных. |
auth |
Аутентификацию, обязательную для поддерживаемого приложения. |
modules |
Именованные группы сущностей и их порядок. |
entities |
Поля, связи, операции CRUD, интерфейс, права и проекции. |
generation |
Технологии backend, интерфейса, API и миграций. |
deployment, media |
Генерацию файлов развёртывания и хранилище изображений. |
features, ui |
Дополнительные поддерживаемые параметры и режим интерфейса. |
fieldRenames |
Явные переименования полей. Этот раздел не показывает, какие SQL-миграции уже применены. |
После создания проекта обычную настройку можно выполнять без ручного редактирования YAML. Например, сущность Article из Content сохраняется в таком виде. Это фрагмент, а не полный манифест:
name: Article
kind: persistent
module: content
table: articles
fields:
- name: id
type: int
primaryKey: true
autoGenerate: identity
- name: title
type: string
required: true
У сущности есть name, вид kind, модуль module, таблица table, поля fields, связи relations, операции crud, доступ access и настройки интерфейса ui. Виртуальная сущность вместо собственной таблицы использует раздел virtual: источник source, выборку select и операции operations. Настройки API и UI не могут включить операцию, которую не поддерживает сама сущность.
Что проверяется перед генерацией
Генератор дополняет модель допустимыми значениями по умолчанию, проверяет типы, имена и ссылки. Этот этап называется нормализацией. Например, два первичных ключа, несовместимый внешний ключ или повторяющийся псевдоним поля остановят обработку. Сообщение укажет, что нужно исправить в модели.
Имена сущностей должны быть уникальны без учёта регистра, а связи должны ссылаться на существующие сущности. Имена таблиц, маршрутов и файлов выводятся из технических имён по правилам генератора. Смотрите их в текущем плане и выпущенных файлах: старый пример не всегда отражает действующую схему именования.
Зачем нужны lock и baseline
Манифест хранит текущие настройки. Файл lock хранит контракт и хеши выпущенных файлов — по ним генератор проверяет изменения и владение. baseline содержит точные байты модели последней успешной генерации.
Эти файлы решают разные задачи. Ручное изменение version в lock не переносит старый проект на новый контракт и не обновляет его данные. Автоматическая поддержка старых контрактов не подразумевается.
Как продолжить
Для повседневной работы используйте Generator UI. Подробности форм собраны в Project settings и Content.
CLI позволяет автоматизировать те же операции. Если вы редактируете манифест вручную, после правки тоже нужно проверить модель, план и diff: ручное редактирование не отменяет ограничений генератора.