От сценария к модели
Опишите, кто создаёт документ, кто его согласует и что означает завершение. Зафиксируйте инварианты: например, закрытое задание нельзя редактировать без отдельного разрешения. Такие правила должны проверяться на сервере, а интерфейс помогает объяснить их пользователю. Прототип полезен для обсуждения, но не заменяет проверку бизнес-логики.
Модульный монолит
Один сервис с ясными границами модулей часто проще сопровождать, чем набор микросервисов. Разделите авторизацию, документы, интеграции и уведомления внутри приложения. PostgreSQL-транзакция обеспечивает согласованность связанных изменений. Выделение отдельного сервиса оправдано независимым масштабированием или устойчивой организационной границей.
Транзакции и внешние эффекты
Запись заявки и отправка письма не являются одной атомарной операцией. Transactional outbox сохраняет намерение отправки в той же транзакции, что и бизнес-объект. Фоновый обработчик повторяет попытки. Принятие SMTP-сервером нельзя выдавать за попадание во входящие; интерфейс должен различать эти состояния.
Разработчик принимает решения
Нейросети ускоряют подготовку вариантов, написание кода и проверку гипотез. Ответственность за модель данных, безопасность и критерии приёмки остаётся у разработчика. Сгенерированное изменение проходит тот же review и тесты. Качество продукта определяется тем, как система ведёт себя на реальных сценариях, включая ошибки и восстановление.