Celkový obraz platformy¶
Kde Products zapadá do celého e-shopu¶
ESHOP/products není celý e-shop. Je to katalogové jádro jedné větší skládačky.
Vedle něj budou nebo mohou existovat další části:
Products Public APIProducts AdminMeilisearchOrder modulOrders AdminFrontend- případně další integrační nebo importní služby
Zjednodušený pohled¶
+----------------------+
| Products Admin |
| editorial / sprava |
+----------+-----------+
|
| zapis a workflow
v
+------------------+ +----------+-----------+ +------------------+
| Importy / ERP +--------->+ Products App +--------->+ PostgreSQL |
| dodavatele | | public API + admin | | source of truth |
+------------------+ +----------+-----------+ +---------+--------+
| |
| dirty queue / indexace |
v |
+----------+-----------+ |
| Meilisearch |<-------------------+
| search read model |
+----------+-----------+
|
vyhledavani |
v
+------------------+ +----------+-----------+ +------------------+
| Frontend +--------->+ Products Public | | Orders Admin |
| web / listing | detail | API | | sprava objednavek|
+---------+--------+ +----------------------+ +---------+--------+
| ^
| pridani do kosiku / objednavka |
v |
+---------+--------+ |
| Order modul +---------------------------------------------------------+
| kosik, order, |
| rezervace, stavy |
+------------------+
Jak si představit odpovědnosti¶
Products App¶
Jedna aplikace nad jedním datovým modelem, která v první fázi obsluhuje:
- public katalogové čtení,
- admin operace pro správu katalogu,
- později i interní workflow nad katalogem.
Products Public API¶
Vrstva pro čtení dat pro frontend, případně další klienty. Nemá být hlavní interní integrační vrstva pro správu katalogu.
Products Admin¶
Admin část je určena pro zápis, editaci a workflow. V první fázi dává smysl, aby byla součástí stejné aplikace a zapisovala přes vlastní controllery, repository a doménová pravidla nad stejnou databází.
Jinými slovy:
- admin nemusí v první fázi používat public API,
- admin nemá zapisovat "bokem" mimo aplikační pravidla,
- admin i public část mají sdílet stejný datový model a stejné guardrails.
Nejpragmatičtější první krok je:
Products Public APIpro čtení,Products Admin APIpro zápis,- obojí v jedné aplikaci nad jednou databází.
Meilisearch¶
Meilisearch není zdroj pravdy. Je to read model pro rychlé hledání a filtrování.
Order modul¶
Order modul má řešit:
- košík,
- objednávku,
- stavy objednávek,
- rezervace a návaznost na sklad,
- snapshot toho, co bylo objednáno.
Do products aplikace patří jen ta část, která se katalogu přímo týká, například snapshot struktury order_item nebo inventory rezervace jako katalogový/inventory podklad.
Frontend¶
Frontend má číst především přes public API a search vrstvu. Nemá obcházet model přímými dotazy do databáze.
Doporučený směr pro první fázi¶
Productsdrží katalogový zdroj pravdy.Products Adminzapisuje přes stejnou aplikaci a stejná pravidla.Meilisearchslouží jen pro search use-case.Frontendčte public katalog a search.Order modulse napojuje na katalog a inventory přes jasné kontrakty, ne přes nahodilé joiny do všeho.
Proč je tento obrázek důležitý¶
Pokud tým vidí jen products repozitář, snadno začne navrhovat věci, které sem nepatří. Tento pohled pomáhá udržet hranici mezi:
- katalogem,
- administrací katalogu,
- vyhledáváním,
- objednávkami,
- frontendem.