Никита Никитин,
давайте по порядку
1. Масштабирование бизнеса, открытие доп.магазинов , для магазинов будет по сути тот же интервейс, лишь только с данными своих клиентов ,
вы учли что доп.магазины должны иметь своих менеджеров, что работа с клиентами должна вестись по связке клиент - менеджер - магазин. учли возможность перемещения заказов от точки к другой, (одна тупо закрылась, или расширение точками) , старые заказы остаются на прежней новые создаются на новой, учли видимость заказов/клиентов/платежей/позиций/отгрузок/ и тд точек между ГО, дилерами, магазинами ???
2.Загрузка прайс листов этих магазинов,какие то их акции..
это вообще интересная тема, какие форматы собираетесь поддерживать текстовые ок, а как xls, файлы в архивах ? хватит ресурсов сервера их парсить, в разных кодировках, с постоянно меняющейся разметкой? прайсы. кроссы. номенклатура, замены?
3. Приемка товара с помощью сканера по штрих коду или иное, выдача товара со склада
Складской учет, приходы, отгрузки, импорт , экспорт в разных форматах, сопоставление состояний, складские остатки, резервирование, складские ячейки, хммм. осилите?
4. Отправка заказов поставщику на почту, если поставщик загружен с помощью прайс листа. Ок отправили, поставщик шлет обратно на потчу, автозагрузка? работа с разными почтовыми серверами ? автоприходования. автоппоиск писем с вложениями, сопостовление статусов. дробление, объедиенение
5. Автоматизация с клиент банком ( приход средств от клиентов) расход средств поставщикам.
....
удачи.)
1. Есть бизнес логика, а она говорит что заказ не может существовать без продукта, и без клиента, а это жёсткая связь.
2. Есть подход к разработке DDD а он позволяет писать приложения не имея базы данных, опираясь на бизнес логику, поэтому если вы выдумали данные правила существования объектов, лучше не усложнять, делать как диктует бизнес
безопасность никак не связана с CI, все что недостаточно из коробки можно подключить через composer. Серьезный проект это понятие относительное, для кого то пару миллионов товаров обыденное дело, для кого то очень серьезно.
DDD это сперва пишем код, затем используем базу и инфраструктуру, основа домен все остальное вторично.
SOLID это прежде всего хорошие практики написания которые обеспечат поддержку кода.
это, попытка отделения кода апи функционала (бизнес логика) от код клинтского (шаблоны,стили, скрипты,контроллеры) чтобы апи использовать в разных реализациях клиента, не спорю возможно это попахивает DDD.
ок если DTO то данные должны быть с учетом вложенных элементов DTO (агрегат), например если отдаем DTO\Order , то он должен содержать DTO\OrderItem, DTO\Client, DTO\Producer
, то есть должен какой то способ собрать DTO объект для ответа, это куча кода по сборке DTO, это лишние запросы к хранилищу.
Опять же если мне нужен просто DTO\Order без вложенных элементов?
- в том то и фишка clean architecture вы проектируете приложение и пишите его не опираясь на ORM , инфраструктура вторична при данном подходе.