Sprint Review — WK09
Cycle 2026-02-23 → 03-01 · Recorded in Plane as BANA-525. The Executive Summary is sourced from git; the metrics below mirror the Plane review.
79/100 — Good
93.8%Completion (15/16)
0Carry-over (0%)
6.3%Cancelled (1)
16Committed
Executive Summary
~145commits
9contributors
~21commits/day
Leadership takeaway
This week (23/02 – 01/03) the team landed the full POS sale-to-payment flow with real-time encrypted WebSocket payments, and re-platformed two foundations — a dedicated pricing/promotion package carved out of commerce and a Debezium/Kafka CDC search pipeline replacing the old Sequin path.
- POS Sale Flow — Completed the end-to-end cart-to-payment lifecycle across phone and web, including pull-to-refresh and QR-scanner fixes on device builds.
- Real-time Payments — Replaced QR-status polling with a WebSocket channel secured by ECDH + AES-256-GCM end-to-end encryption, plus a native NFC plugin and signal client.
- Pricing & Promotions — Extracted pricing out of commerce into its own package with promotion CRUD, time-based rules, and pricing wired into the sale checkout step.
- Search Re-platform — Migrated change-data-capture from Sequin to Debezium on Kafka, with product-name/description indexing and a more reliable consumer (explicit commits, type-safe producers).
- Identity & Authorization — Moved user-mapping to a policy-based model, added customer CRUD, and reworked JWS auth and role identifiers.
- Admin Foundations — Introduced a shared design system and extracted the auth provider into the admin UI kit for cross-app reuse.
Health Score: 79/100 — Good
| Dimension | Score | Weight | Contribution |
|---|---|---|---|
| Completion | 100/100 | 30% | 30.0 |
| Predictability | 82.5/100 | 25% | 20.6 |
| Workload Balance | 25/100 | 20% | 5.0 |
| Flow (no carry-over) | 100/100 | 15% | 15.0 |
| Quality (no cancel) | 81.3/100 | 10% | 8.1 |
Delivery
| Metric | WK09 | WK07 | 4-Cycle Avg | Target | Status |
|---|---|---|---|---|---|
| Committed | 16 | 14 | 15.8 | — | — |
| Completed | 15 | 13 | 14.5 | — | — |
| Completion % | 93.8% | 92.9% | 92.8% | 85% | ✅ |
| Cancelled | 1 (6.3%) | 1 | 1.0 | <7% | ✅ |
| Carried over | 0 (0%) | 0 | 0 | <10% | ✅ |
| Throughput/dev | 1.67 | 2.60 | 1.97 | 2.0 | ⚠️ |
Team Breakdown
| Member | Committed | Done | Cancelled | Carry | Done% | Load | Flag |
|---|---|---|---|---|---|---|---|
| Khoa Nguyen | 4 | 4 | 0 | 0 | 100% | 4/5 | ✅ PERFECT |
| tai.nguyen | 3 | 3 | 0 | 0 | 100% | 3/5 | ✅ PERFECT |
| kien.truong | 3 | 3 | 0 | 0 | 100% | 3/5 | ✅ PERFECT |
| phat.nguyen | 2 | 2 | 0 | 0 | 100% | 2/5 | ✅ |
| phuc.nguyen | 2 | 2 | 0 | 0 | 100% | 2/5 | ✅ |
| Duc Bach | 2 | 2 | 0 | 0 | 100% | 2/5 | ✅ |
| phat.chung | 2 | 2 | 0 | 0 | 100% | 2/5 | ✅ |
| viet.vo | 2 | 2 | 0 | 0 | 100% | 2/5 | ✅ |
| tung.ma | 1 | 0 | 1 | 0 | 0% | 1/5 | ⚠️ LOW COMPLETION |
Carry-Over Analysis
0 carry-overs this cycle. However, 2 long-lived items resolved:
| Item | Identifier | Assignee | Age (weeks) | Resolution |
|---|---|---|---|---|
| [nx-bo][design] Figma design | NXET-391 | tung.ma | 9 | Cancelled (zombie — exceeded 3-week rule) |
| [nx-pos][renderer] Sale flow | NXET-370 | tai.nguyen, Khoa | 10 | Completed (long-running, should have been split) |
By Module
| Module | Items | Done | Done% | Cancel |
|---|---|---|---|---|
| nx-pos | 9 | 9 | 100% | 0 |
| nx-seller | 4 | 4 | 100% | 0 |
| pos365 | 2 | 2 | 100% | 0 |
| nx-bo | 1 | 0 | 0% | 1 |
By Label
| Label | Items | Done | Cancel |
|---|---|---|---|
| Task | 15 | 14 | 1 |
| (none) | 1 | 1 | 0 |
Key Accomplishments
- POS sale flow completed (tai.nguyen, Khoa) — full cart-to-payment lifecycle across phone/web platforms
- Purchase Order FE (Khoa) — complete PO management with all state transitions
- WebSocket/Signal E2E (phat.nguyen, Khoa, kien.truong, Duc Bach) — tauri-plugin-signal + EncryptedWebSocketClient + realtime QR payment
- JWKS auth enhancement (phat.nguyen) — asymmetric JWT with ES256 key signing
- Apps restructure (Khoa) — admin-ui-kit + shared core extracted for BO/Client/POS reuse
- Ledger service (phat.chung, viet.vo) — PDF generation, CI/CD, Redis refactor, bug fixes for pos365
4-Cycle Trend
| Metric | WK05 | WK06 | WK07 | WK09 | Direction |
|---|---|---|---|---|---|
| Items completed | 11 | 19 | 13 | 15 | ■ stable |
| Completion % | 84.6% | 100% | 92.9% | 93.8% | ▲ improving |
| Avg items/dev | 1.83 | 1.73 | 2.60 | 1.67 | ■ stable |
| Carry-overs | 0 | 0 | 0 | 0 | ▲ excellent |
| Health Score | 80 | 76 | 78 | 79 | ■ stable |
Action Triggers
| Trigger | Status | Action |
|---|---|---|
| Completion < 75% for 2 cycles | ✅ Clear | — |
| Completion > 95% for 2 cycles | ✅ Clear | — |
| Any dev > 5 items | ✅ Clear | — |
| Any dev < 70% for 2 cycles | ⚠️ FIRED — tung.ma (0% WK09, 33% WK05) | Review workload, pair or reduce load |
| Carry-over age > 2 weeks | ⚠️ FIRED — NXET-391 (9wk), NXET-370 (10wk) | Both resolved. Enforce split rule going forward. |
| Cancellation > 15% | ✅ Clear (6.3%) | — |
| Max/min ratio > 3x | ⚠️ FIRED — 4:1 (Khoa:tung.ma) | Rebalance assignments next cycle |
| Health < 60 | ✅ Clear (79) | — |
Related Pages
- Sprint Reviews · Roadmap · Changelog · Traceability Matrix
- Plane: BANA-525 — Sprint review 2026_WK09 (Report)