diff --git a/README.md b/README.md index 95c9cc3..7dfabed 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,26 @@ shared/ # Submodule → git.rose-ash.com/coop/shared.git glue/ # Submodule → git.rose-ash.com/coop/glue.git ``` -## Cross-App Integration +## Dependencies -- **Internal API:** `GET /internal/cart/summary` returns cart count + total for the current session/user. Called by blog and market context processors. -- **Calendar entries:** Checkout marks CalendarEntries (events domain) as "ordered" via `glue/services/order_lifecycle.py` — not by direct model write. -- **Payment confirmation:** When SumUp payment confirms, entries are marked "provisional" via the same glue service. -- **Domain events:** Emits `order.created` and `order.paid` events for observability. -- **Login adoption:** Anonymous cart/entries are adopted when `user.logged_in` event fires (handled by `glue/handlers/login_handlers.py`). +**Cross-app model imports:** +- `market.models.market.Product, CartItem` — cart services, checkout, API +- `market.models.market_place.MarketPlace` — checkout page-config resolution, API page filtering +- `events.models.calendars.CalendarEntry, Calendar` — checkout, API summary, calendar cart services +- `blog.models.ghost_content.Post` — `app.py` context processor, API page-slug lookup + +**Glue services:** +- `glue.services.order_lifecycle.claim_entries_for_order` — checkout marks entries as "ordered" +- `glue.services.order_lifecycle.confirm_entries_for_order` — payment confirmation marks entries "provisional" +- `glue.services.order_lifecycle.get_entries_for_order` — checkout return page loads entries +- `glue.services.navigation.get_navigation_tree` — context processor builds site nav + +**Internal APIs:** +- Exposes `GET /internal/cart/summary` — cart count + total for current session/user + +**Domain events:** +- `checkout.py` emits `order.created` via `shared.events.emit_event` +- `check_sumup_status.py` emits `order.paid` via `shared.events.emit_event` ## Checkout Flow