feat(F-105): completed feature
This commit is contained in:
5
work/artifacts/F-105/implementer.md
Normal file
5
work/artifacts/F-105/implementer.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# F-105 — Customer account preferences (in progress)
|
||||
|
||||
- Migration: users_profiles.preferences jsonb.
|
||||
- Users module: preferences in domain/repo/routes (GET/PATCH /users/:id).
|
||||
- Frontend account page: Preferencias section (order updates, newsletter, promos).
|
||||
8
work/artifacts/F-105/leader-close.json
Normal file
8
work/artifacts/F-105/leader-close.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"feature_id": "F-105",
|
||||
"agent": "leader",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "F-105 delivers full customer self-service: data, addresses and preferences from the storefront account page.",
|
||||
"evidence": ["reviewer.json APPROVED", "security.json APPROVED", "qa.json APPROVED"],
|
||||
"timestamp": "2026-08-21T06:21:30Z"
|
||||
}
|
||||
13
work/artifacts/F-105/qa.json
Normal file
13
work/artifacts/F-105/qa.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"feature_id": "F-105",
|
||||
"agent": "qa",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Backend tests and builds green; migration applied; preferences merge verified against live DB; services restarted healthy.",
|
||||
"evidence": [
|
||||
"npm test: 133 passed, 56 skipped; backend and frontend builds exit 0",
|
||||
"Migration 035_users_preferences applied",
|
||||
"Repo smoke: partial merge produced {orderUpdates:true,newsletter:true,promos:false}, revert ok",
|
||||
"health/frontend/admin HTTP 200 after restart; verify.sh green"
|
||||
],
|
||||
"timestamp": "2026-08-21T06:21:00Z"
|
||||
}
|
||||
13
work/artifacts/F-105/reviewer.json
Normal file
13
work/artifacts/F-105/reviewer.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"feature_id": "F-105",
|
||||
"agent": "reviewer",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Customers can now manage personal data, addresses and notification/marketing preferences from /account, reachable from the header icon.",
|
||||
"evidence": [
|
||||
"users_profiles gains preferences jsonb (migration 035) with repo merge semantics",
|
||||
"GET /users/:id returns preferences; PATCH accepts partial preferences object (owner or admin only)",
|
||||
"Account page adds Preferencias section with accessible toggle switches and optimistic save with rollback",
|
||||
"UserMenu links to /account when logged in"
|
||||
],
|
||||
"timestamp": "2026-08-21T06:20:00Z"
|
||||
}
|
||||
13
work/artifacts/F-105/security.json
Normal file
13
work/artifacts/F-105/security.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"feature_id": "F-105",
|
||||
"agent": "security",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Preference writes are authenticated, owner-scoped and strictly validated; SQL stays parameterized.",
|
||||
"evidence": [
|
||||
"PATCH /users/:id keeps requireOwnerOrAdmin guard",
|
||||
"zod strict schema allows only three boolean keys; unknown keys rejected",
|
||||
"preferences merged via COALESCE(preferences,'{}')||$n::jsonb parameterized query",
|
||||
"No secret or PII exposure added"
|
||||
],
|
||||
"timestamp": "2026-08-21T06:20:30Z"
|
||||
}
|
||||
@@ -1,48 +1,13 @@
|
||||
{
|
||||
"feature_id": "F-104",
|
||||
"feature_id": "F-105",
|
||||
"stage": "close",
|
||||
"agent": "leader",
|
||||
"action": "Close F-104",
|
||||
"action": "Close F-105",
|
||||
"state": "running",
|
||||
"next_agent": "security",
|
||||
"waiting_for": "security gate",
|
||||
"updated_at": "2026-08-21T06:01:18Z",
|
||||
"updated_at": "2026-08-21T06:06:31Z",
|
||||
"timeline": [
|
||||
{
|
||||
"ts": "2026-08-20T20:38:40Z",
|
||||
"agent": "qa",
|
||||
"stage": "qa_gate",
|
||||
"state": "running",
|
||||
"message": "Run typechecks, tests, build, smoke tests, and verify"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-20T20:38:59Z",
|
||||
"agent": "leader",
|
||||
"stage": "close",
|
||||
"state": "running",
|
||||
"message": "Close settings save foreign-key fix"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-20T20:39:13Z",
|
||||
"agent": "leader",
|
||||
"stage": "close",
|
||||
"state": "done",
|
||||
"message": "F-098 cerrado: guardado de configuración IA reparado"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-20T20:39:53Z",
|
||||
"agent": "implementer",
|
||||
"stage": "build",
|
||||
"state": "running",
|
||||
"message": "Replace password reset logging mailer with configurable SMTP delivery"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-20T21:51:05Z",
|
||||
"agent": "reviewer",
|
||||
"stage": "review_gate",
|
||||
"state": "running",
|
||||
"message": "Review SMTP settings, customer frontend consolidation, account controls, and related fixes"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T05:29:06Z",
|
||||
"agent": "reviewer",
|
||||
@@ -147,6 +112,41 @@
|
||||
"stage": "close",
|
||||
"state": "running",
|
||||
"message": "Close F-104"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T06:01:30Z",
|
||||
"agent": "implementer",
|
||||
"stage": "build",
|
||||
"state": "running",
|
||||
"message": "Add customer preferences management to account page"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T06:06:31Z",
|
||||
"agent": "reviewer",
|
||||
"stage": "review_gate",
|
||||
"state": "running",
|
||||
"message": "Review account preferences"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T06:06:31Z",
|
||||
"agent": "security",
|
||||
"stage": "security_gate",
|
||||
"state": "running",
|
||||
"message": "Check preferences endpoint auth and input"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T06:06:31Z",
|
||||
"agent": "qa",
|
||||
"stage": "qa_gate",
|
||||
"state": "running",
|
||||
"message": "Run tests, builds, migration and smoke"
|
||||
},
|
||||
{
|
||||
"ts": "2026-08-21T06:06:31Z",
|
||||
"agent": "leader",
|
||||
"stage": "close",
|
||||
"state": "running",
|
||||
"message": "Close F-105"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user