Repository navigation
v0.7.0 Shopper catalog, categories, and analytics #207
raouf-b-dev
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Release v0.7.0
This cut adds categories, product activate/deactivate, HTTP role assignment, addresses on user detail, read-only admin analytics, shopper catalog GETs, and OpenAPI tooling that matches the handlers.
Shopper catalog list and detail no longer require
view_all_products. Anonymous andCUSTOMERcallers see active products and categories only. Checkout still uses the mock payment adapter. The public URI remains/v1.Scope
view_all_productskeep the full catalog)npm run setup, observability compose splitCatalog
/v1/categories.categoryId. List responses includecategoryName.GET /v1/products,GET /v1/products/:id, and the matching category reads use optional authentication.CatalogVisibilityPolicyforcesisActive=truefor callers withoutview_all_products. Inactive detail is HTTP 404 for shoppers. Operators with that permission keep list filters and can load inactive records.manage_products.test/e2e/products/catalog-read-path.e2e-spec.ts.Operator HTTP
POST /v1/products/:id/activateandPOST /v1/products/:id/deactivate.GET /v1/users/:idreturnsaddresses[](no extra collection route).access_adminpermission so operator clients can gate their chrome.Analytics
Read-only
AnalyticsModuleat/v1/admin/analytics/*. SQL projections across orders, payments, inventory, and order items. No write aggregates and no ACL fan-out for KPIs.Decision record:
docs/architecture/adr/ADR-0007-admin-analytics-query-composition.md.Demo seed now links payments and inventory to demo orders so analytics numbers are coherent locally.
Auth and throttling
mustChangePassword. Login and refresh return the flag.POST /v1/authentication/change-passwordclears it, revokes other sessions, and reissues tokens.MustChangePasswordGuardreturns HTTP 403 (MUST_CHANGE_PASSWORD) on other authenticated routes until rotation. E2E:test/e2e/auth/must-change-password.e2e-spec.ts.@Throttle. A second named profile is not registered, so a "strict" limit is not applied everywhere.Contracts and local ops
npm run generate:openapiandnpm run audit:openapiso Swagger types, nullability, and copy stay aligned with handlers.npm run setupwrites env files, starts Postgres and Redis, runs migrations, and seeds fixtures.env:initkeeps host ports from.env.exampleinstead of remapping them.CORS_ALLOWED_ORIGINSis generated for local clients.Stats
v0.6.0ADR-0007Pull requests
Shopper catalog visibility (
CatalogVisibilityPolicyand the catalog e2e) landed onrelease-v0-7-0after #205.Full changelog: v0.6.0...v0.7.0
This discussion was created from the release v0.7.0 Shopper catalog, categories, and analytics.
All reactions