feat(club-003): club POS integration: identify member and register cashback from sales
This commit is contained in:
50
work/artifacts/CLUB-003/qa.json
Normal file
50
work/artifacts/CLUB-003/qa.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"feature_id": "CLUB-003",
|
||||
"agent": "qa",
|
||||
"stage": "qa_gate",
|
||||
"verdict": "APPROVED",
|
||||
"qa_check": "qa",
|
||||
"summary": "QA aprobado: CLUB-003 entrega resolución de socio Club por código, acumulación idempotente de cashback en ledger y extensiones fail-safe en el flujo de venta POS.",
|
||||
"test_results": {
|
||||
"automated": [
|
||||
"cd project && npm run typecheck ✅",
|
||||
"cd project && npm run build ✅",
|
||||
"cd project/apps/pos && npm run build ✅",
|
||||
"cd project && npx vitest run src/modules/pos/tests/payment-allocation.test.ts ✅",
|
||||
"cd project && npx vitest run src/modules/club/tests/ ✅",
|
||||
"./scripts/verify.sh ✅",
|
||||
"git diff --check ✅"
|
||||
],
|
||||
"coverage": [
|
||||
"endpoint GET /club/resolve con memberCode válido e inválido",
|
||||
"integración de clubMemberId en POST /pos/sales",
|
||||
"cálculo de cashback con cashbackBps configurado",
|
||||
"acumulación idempotente del ledger con club-earn-{orderId}",
|
||||
"comportamiento fail-safe cuando el ledger falla",
|
||||
"loadResult con clubEarnedCents del ledger",
|
||||
"receive-rest-payment con clubEarnedCents: 0"
|
||||
],
|
||||
"manual_smoke_recommended": [
|
||||
"Abrir TPV con un terminal autenticado, añadir artículos, buscar socio Club por código MDV-XXXXXXXX y confirmar venta completa. Comprobar que la respuesta incluye clubEarnedCents > 0 y que la transacción aparece en club_transactions.",
|
||||
"Verificar que una venta PENDING (cobro parcial) no acumula cashback.",
|
||||
"Verificar que una segunda confirmación de la misma venta (idempotency) no duplica el cashback."
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"El frontend TPV no tiene todavía la UI de búsqueda de socio Club; los cambios de API están listos para ser consumidos desde la interfaz del terminal.",
|
||||
"La itest real de PostgreSQL para el flujo completo Club + POS se puede añadir en un ticket posterior."
|
||||
],
|
||||
"evidence": [
|
||||
"work/artifacts/CLUB-003/implementer.md",
|
||||
"work/artifacts/CLUB-003/reviewer.json",
|
||||
"work/artifacts/CLUB-003/security.json",
|
||||
"cd project && npm run typecheck",
|
||||
"cd project && npm run build",
|
||||
"cd project/apps/pos && npm run build",
|
||||
"cd project && npx vitest run src/modules/pos/tests/payment-allocation.test.ts",
|
||||
"cd project && npx vitest run src/modules/club/tests/",
|
||||
"./scripts/verify.sh",
|
||||
"git diff --check"
|
||||
],
|
||||
"timestamp": "2026-08-26T18:15:45Z"
|
||||
}
|
||||
Reference in New Issue
Block a user