Границы компонентов
В предлагаемой схеме редактор управляет намерением автора, исполнитель готовит версию, а публикация обслуживает посетителей.
Долгая сборка не держит открытым запрос браузера и не подменяет рабочую страницу по частям.
Ответственность
| Компонент | Что делает | Чего ему не передаём |
|---|---|---|
| Редактор | Запрос, материалы, прогресс, предпросмотр, история | Ключи AI и хранилища |
| API | Авторизация, права проекта, задания, выбор версии | Выполнение произвольного сгенерированного кода в своём процессе |
| Исполнитель | Генерация, подготовка файлов, проверка результата | Неограниченный доступ к другим проектам |
| PostgreSQL | Владельцы, задания, версии, привязки доменов | Большие изображения и архивы сборок |
| Объектное хранилище | Материалы и неизменяемые результаты | Общедоступные черновики и служебные репозитории |
| Выдача публикаций | Домен → сайт → активная версия | Вызов AI на каждое посещение |
Это проект ответственности. Выделенного исполнителя генерации и маршрутизатора доменов пока нет.
Связь между частями
API сначала сохраняет задание и возвращает его идентификатор. Редактор читает его состояние; поток событий может ускорять обновление экрана, но не становится единственным источником прогресса. После перезагрузки вкладки состояние восстанавливается из сохранённых данных.
Исполнитель получает задание, готовит отдельную версию и сообщает результат. API не считает сайт готовым по одному ответу модели: нужны файлы и пройденные проверки. Жизненный цикл.
Границы внутри кода
CleanSlice задаёт разделение: HTTP-слой принимает и проверяет вход, домен описывает сценарий, gateway задаёт контракт доступа к данным, реализация gateway работает с конкретным хранилищем. Prisma-схемы собираются из файлов слайсов. Эти правила не означают, что каждый слайс должен стать отдельным сервисом.
Точные существующие точки входа собраны в технической основе. Новые имена слайсов, API-методы и поля схемы здесь не объявляются уже существующими контрактами.