Skip to content

Задания и версии ​

В предлагаемой модели каждая генерация создаёт отдельную версию, а постоянная ссылка указывает на последнюю опубликованную.

Задание, версия и публикация — три разных состояния.

Ниже — проект модели. Это не названия существующих таблиц или перечислений API.

Что сохраняем ​

СущностьЗачем нужна
ПроектПостоянный сайт, владелец, исходный запрос и материалы
ЗаданиеЧто попросили сделать, исходная версия, состояние попытки и ошибка
ВерсияГотовый набор файлов, происхождение, результат проверок
ПубликацияКакая версия сейчас открывается по адресу сайта
ДоменПроверенная связь адреса с проектом и состояние HTTPS

Готовые версии неизменяемы. Правка создаёт следующую; откат выбирает прежнюю. Историю Git можно использовать как часть реализации, но она не заменяет явное состояние публикации.

Путь задания ​

text
Принято → Ожидает → Выполняется → Проверяется → Готово
                        └───────────────→ Ошибка / Отменено

Предлагаемый первый вариант — хранить задания в PostgreSQL и выдавать исполнителю ограниченное по времени право выполнения. Нужны продление этого права, счётчик попыток и возврат зависших задач в обработку. Конкретную библиотеку очереди выбираем после проверки; Redis пока не является обязательной частью схемы.

Повтор HTTP-запроса с тем же ключом идемпотентности не создаёт второй сайт. Повтор выполнения может вызвать AI ещё раз, поэтому стоимость и предел попыток учитываются отдельно. Обещания «ровно одно выполнение» нет; запись результата должна быть защищена от повторного применения.

Одновременные правки ​

Для первой версии предлагаем последовательную обработку изменений одного проекта. Каждая команда фиксирует версию, с которой начиналась. Если она устарела, показываем конфликт и предлагаем повторить правку на новом варианте; молча перезаписывать чужое изменение нельзя.

Отмена прекращает дальнейшие действия и запрещает публикацию результата отменённой попытки. Она не означает, что уже отправленный провайдеру запрос не будет оплачен.

Публикация ​

  1. Загрузить все файлы версии в отдельное место.
  2. Проверить наличие файлов, ссылки, мобильный вид и целевую кнопку.
  3. Зафиксировать готовность версии.
  4. По команде владельца переключить указатель публикации с проверкой исходной версии.
  5. Обновить кеш адреса и проверить выдачу результата.

При сбое до переключения посетители продолжают видеть прежнюю версию. При проблеме после него указатель возвращается назад, а кеш обновляется повторно. Файлы, на которые ещё ссылается публикация или откат, не удаляются сборщиком мусора.

Снятие с публикации убирает публичную выдачу и кеш, но не обязательно удаляет проект. Удаление проекта и сроки хранения резервных копий требуют отдельной политики. Старая ссылка не должна перейти чужому владельцу. Правила доменов.

Bonsite — маленькие сайты для ваших больших идей.