This repository has been archived on 2026-08-11. You can view files and clone it, but cannot push or open issues or pull requests.
Gishen-B2B/docs/coordination/gishen-ecom.md
kirukib 3778801ef5 Ship Gishen B2B institutional portal with polished layout and mock-backed flows.
Deliver role-aware shell (sidebar, breadcrumbs, quick search, tables, detail/create layouts), locale-ready pages, shared backend/feature docs, and Vercel project config so HR, finance, and members can demo against typed mocks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 21:18:23 +03:00

97 lines
3.2 KiB
Markdown

# Coordination: Gishen-Ecom
How Gishen-B2B shares **customer identity**, **allowance visibility**, and **checkout entitlement split** with Gishen-Ecom.
**Workspace:** `/Users/kirukib/Desktop/Yaltopia Project/Gishen-B2B`
## Shared customer identity
| Concept | Notes |
|---------|-------|
| `customer_id` | Single Gishen customer across Ecom, Mob, B2B member |
| `member_id` | B2B enrolment link; optional until member joins |
| Loyalty | Lives on customer identity — B2B shows summary pointer; Ecom/Mob own full loyalty UI |
When HR enrols a member with existing retail account (phone match), backend links `member.customer_id` without merging clinical history incorrectly.
## Allowance visibility
| Surface | Owner | Data |
|---------|-------|------|
| B2B `/me` | B2B | `allowance_remaining`, package summary |
| Ecom/Mob checkout | Ecom | Same allowance fetched from platform API at checkout time |
| B2B Finance | B2B | Spend aggregates — no basket detail |
B2B displays remaining allowance so members know coverage before shopping. **Actual payment split UI lives in Ecom checkout.**
## Checkout entitlement split (shared concern)
When a covered member checks out in Ecom or Mobile:
1. Platform calculates org-covered amount vs member co-pay / out-of-pocket.
2. Org credit applied up to allowance and category rules.
3. Member pays remainder via payment gateway (Chapa, etc.).
```
Basket total: 1,200 ETB
Org covered: 900 ETB (package rules)
Member pays: 300 ETB (co-pay + exclusions)
```
### Ownership (recommended)
| Component | Recommended owner |
|-----------|-------------------|
| Entitlement calculation API | Shared backend |
| Split UI in checkout | **Gishen-Ecom** (+ Mob reuses) |
| Allowance display pre-checkout | B2B `/me` + Ecom header widget |
| Finance reconciliation | B2B Finance + Admin billing |
See [`open-items.md`](open-items.md) for decision status.
## B2B does NOT build
- Product catalog browse (Ecom)
- Cart and payment UI (Ecom/Mob)
- Retail-only promotions
## B2B member paths to Ecom
Member portal should deep-link to Ecom storefront with session/SSO (future):
```
https://shop.gishenpharmacy.org/?customer_id=cus_01H...
```
Mock phase: static link + shared demo customer.
## Events (cross-repo)
| Event | Relevance |
|-------|-----------|
| `order.completed` | Updates allowance_used; feeds B2B finance spend |
| `prescription.review_updated` | Approved Rx may create Ecom refill cart |
| `org.activated` | Enables entitlement at checkout |
## API dependencies (future shared backend)
| Endpoint | Consumer |
|----------|----------|
| `GET /v1/customers/:id/allowance` | Ecom checkout, B2B `/me` |
| `POST /v1/checkout/entitlement-preview` | Ecom cart |
| `GET /v1/customers/:id/orders` | B2B `/me/orders` (member view) |
Document exact shapes in Ecom spec sheet; B2B references via this coordination doc.
## Telegram Mini App
Telegram Mini App rides **Ecom's backend spec**, not B2B. No B2B action required.
## Integration checklist
- [ ] Shared `customer_id` linking on member enrolment
- [ ] Allowance API consumed by both B2B and Ecom
- [ ] Checkout split UI implemented once in Ecom
- [ ] Order events feed B2B finance aggregates (redacted)
- [ ] Confirm SSO/deep-link from B2B member portal to Ecom