Samir Boulahtit
1cf9fea40a
CI / ruff (push) Successful in 20s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
feat(loyalty): transaction categories (what was sold)
Merchants can configure per-store product categories (e.g., Men,
Women, Accessories, Kids) that sellers select when entering loyalty
transactions. Enables per-category sales analytics.
Backend:
- New model: StoreTransactionCategory (store-scoped, max 10 per store)
- Migration loyalty_007: creates table + adds category_id FK on
loyalty_transactions
- New category_service.py with CRUD + validation
- New schemas/category.py (Create, Update, Response, ListResponse)
- Admin CRUD: GET/POST/PATCH/DELETE /admin/loyalty/stores/{id}/categories
- Store CRUD: GET/POST/PATCH/DELETE /store/loyalty/categories
- Stamp/Points request schemas accept optional category_id
- Stamp/Points services pass category_id to transaction creation
- TransactionResponse includes category_id + category_name
342 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 12:23:17 +02:00
..
2026-04-13 22:53:17 +02:00
2026-03-29 21:43:36 +02:00
2026-04-14 23:33:06 +02:00
2026-04-14 23:33:06 +02:00
2026-03-08 23:48:25 +01:00
2026-04-18 10:30:09 +02:00
2026-04-13 22:53:17 +02:00
2026-04-14 23:33:06 +02:00
2026-04-13 22:53:17 +02:00
2026-04-10 23:28:57 +02:00
2026-04-03 19:55:19 +02:00
2026-03-19 22:18:39 +01:00
2026-04-19 12:23:17 +02:00
2026-04-13 22:53:17 +02:00
2026-04-13 22:53:17 +02:00
2026-03-19 22:18:39 +01:00
2026-04-13 22:53:17 +02:00
2026-03-19 22:18:39 +01:00
2026-04-13 22:53:17 +02:00
2026-04-18 10:30:09 +02:00
2026-02-15 13:20:29 +01:00
2026-04-14 23:33:06 +02:00
2026-03-19 22:18:39 +01:00
2026-02-02 19:32:32 +01:00
2026-03-08 23:48:25 +01:00
2026-02-12 23:10:42 +01:00
2026-01-27 22:02:39 +01:00
2026-02-15 13:20:29 +01:00
2026-02-13 21:58:59 +01:00
2026-02-15 20:00:06 +01:00
2026-02-15 13:20:29 +01:00
2026-01-27 22:52:01 +01:00