docs: record server session UX
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# Design System — ZarinPal Merchant Analytics
|
# Design System — ZarinPal Merchant Analytics
|
||||||
|
|
||||||
- Status: Draft baseline for approval
|
- Status: Draft baseline for approval
|
||||||
- Version: 0.2.1
|
- Version: 0.2.2
|
||||||
- Last updated: 2026-08-20
|
- Last updated: 2026-08-20
|
||||||
- Direction: Persian-first RTL
|
- Direction: Persian-first RTL
|
||||||
|
|
||||||
@@ -146,6 +146,7 @@ Navigation labels should describe merchant tasks, not internal database concepts
|
|||||||
|
|
||||||
| Version | Date | Decision |
|
| Version | Date | Decision |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 0.2.2 | 2026-08-20 | Defined backend-owned session UX: authentication tokens remain inaccessible to the frontend, and expiry/revocation returns the user to login with a generic, accessible message. |
|
||||||
| 0.2.1 | 2026-08-20 | Defined same-category peer cards as an equal-per-merchant median plus direction-aware percentile. This prevents the dataset's largest merchants from dominating what should represent a typical peer. |
|
| 0.2.1 | 2026-08-20 | Defined same-category peer cards as an equal-per-merchant median plus direction-aware percentile. This prevents the dataset's largest merchants from dominating what should represent a typical peer. |
|
||||||
| 0.2.0 | 2026-08-20 | Corrected payment lifecycle semantics from CTO guidance: `Paid` and `Verified` are bank-payment successes, `Paid` remains unverified, and session-level fees are real Rial amounts. |
|
| 0.2.0 | 2026-08-20 | Corrected payment lifecycle semantics from CTO guidance: `Paid` and `Verified` are bank-payment successes, `Paid` remains unverified, and session-level fees are real Rial amounts. |
|
||||||
| 0.1.9 | 2026-08-20 | Added rate-limit UX, 15-second SSE heartbeat/recovery, one-hour replay, and failed-section-only manual retry. |
|
| 0.1.9 | 2026-08-20 | Added rate-limit UX, 15-second SSE heartbeat/recovery, one-hour replay, and failed-section-only manual retry. |
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ Give a non-technical merchant a fast, trustworthy Persian RTL view of payment pe
|
|||||||
19. Analytics starts, manual retries, and concurrent SSE connections expose accessible rate-limited states without discarding already-ready content or retrying in a tight loop.
|
19. Analytics starts, manual retries, and concurrent SSE connections expose accessible rate-limited states without discarding already-ready content or retrying in a tight loop.
|
||||||
20. Paid amount and fee totals count each eligible session once. Merchant fees are shown as real Rial amounts/rates; retry attempts cannot multiply a session fee.
|
20. Paid amount and fee totals count each eligible session once. Merchant fees are shown as real Rial amounts/rates; retry attempts cannot multiply a session fee.
|
||||||
21. Retry recovery may finish in either `Paid` or `Verified`. Timing cards show p50, p95, sample size, and non-null coverage.
|
21. Retry recovery may finish in either `Paid` or `Verified`. Timing cards show p50, p95, sample size, and non-null coverage.
|
||||||
|
22. Authentication uses a backend-owned server-side session. The frontend receives only a `Secure`, `HttpOnly`, `SameSite=Lax` cookie and never reads or stores an authentication token.
|
||||||
|
23. Expired, revoked, logged-out, or disabled-account sessions stop dashboard and SSE access immediately and return the user to login without exposing internal authentication details.
|
||||||
|
|
||||||
## Frontend architecture baseline
|
## Frontend architecture baseline
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user