feat(F-165): completed feature
This commit is contained in:
@@ -6805,6 +6805,38 @@
|
|||||||
"security": false,
|
"security": false,
|
||||||
"qa": false
|
"qa": false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "F-165",
|
||||||
|
"type": "fix",
|
||||||
|
"title": "Use brand logo in collapsed sidebar",
|
||||||
|
"description": "Replace collapsed sidebar leaf emoji with logo-main.png while preserving icon-only dimensions and accessibility.",
|
||||||
|
"priority": "high",
|
||||||
|
"risk": "low",
|
||||||
|
"status": "done",
|
||||||
|
"created_at": "2026-08-22",
|
||||||
|
"gates": {
|
||||||
|
"reviewer": true,
|
||||||
|
"security": true,
|
||||||
|
"qa": true,
|
||||||
|
"close": true
|
||||||
|
},
|
||||||
|
"completed_at": "2026-08-22T16:15:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "F-166",
|
||||||
|
"type": "fix",
|
||||||
|
"title": "Remove duplicate VAT rate in storefront price",
|
||||||
|
"description": "Product frontend price repeats IVA 10% in inclusive and breakdown labels; show the VAT rate only once without losing gross/net meaning.",
|
||||||
|
"priority": "med",
|
||||||
|
"risk": "low",
|
||||||
|
"status": "pending",
|
||||||
|
"created_at": "2026-08-22",
|
||||||
|
"gates": {
|
||||||
|
"reviewer": false,
|
||||||
|
"security": false,
|
||||||
|
"qa": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,11 @@ function Sidebar({ role, email, collapsed, mobileOpen, onCloseMobile, onLogout }
|
|||||||
alt="mercadodevida"
|
alt="mercadodevida"
|
||||||
className={`mx-auto h-9 w-auto object-contain ${collapsed ? 'lg:hidden' : ''}`}
|
className={`mx-auto h-9 w-auto object-contain ${collapsed ? 'lg:hidden' : ''}`}
|
||||||
/>
|
/>
|
||||||
<span className={`hidden h-9 items-center justify-center text-2xl ${collapsed ? 'lg:flex' : ''}`} aria-hidden="true">🌿</span>
|
<img
|
||||||
|
src="/images/logo-main.png"
|
||||||
|
alt="mercadodevida"
|
||||||
|
className={`mx-auto hidden h-9 w-9 object-contain ${collapsed ? 'lg:block' : ''}`}
|
||||||
|
/>
|
||||||
<div className="absolute right-2 top-4 lg:hidden">
|
<div className="absolute right-2 top-4 lg:hidden">
|
||||||
<SidebarToggle expanded={mobileOpen} onToggle={onCloseMobile} mode="mobile" />
|
<SidebarToggle expanded={mobileOpen} onToggle={onCloseMobile} mode="mobile" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
3
work/artifacts/F-165/architect.md
Normal file
3
work/artifacts/F-165/architect.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# F-165 — Diseño
|
||||||
|
|
||||||
|
Reutilizar `/images/logo-main.png` para ambos estados. El logo expanded se oculta solo en desktop collapsed; una segunda instancia cuadrada `h-9 w-9 object-contain` aparece únicamente en ese estado. No se introduce asset nuevo.
|
||||||
3
work/artifacts/F-165/documenter.md
Normal file
3
work/artifacts/F-165/documenter.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# F-165
|
||||||
|
|
||||||
|
El sidebar colapsado usa el logo oficial `logo-main.png`; no usa emoji.
|
||||||
3
work/artifacts/F-165/implementer.md
Normal file
3
work/artifacts/F-165/implementer.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# F-165 — Implementer
|
||||||
|
|
||||||
|
Sustituido emoji por segunda instancia de `/images/logo-main.png` en desktop collapsed (`h-9 w-9 object-contain`). Build admin y TypeScript PASS; no queda emoji en layout.
|
||||||
1
work/artifacts/F-165/leader-close.json
Normal file
1
work/artifacts/F-165/leader-close.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"feature_id":"F-165","agent":"leader","stage":"close","verdict":"APPROVED","checks":[{"item":"all gates/build","ok":true}],"issues":[]}
|
||||||
1
work/artifacts/F-165/qa.json
Normal file
1
work/artifacts/F-165/qa.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"feature_id":"F-165","agent":"qa","stage":"qa_gate","verdict":"APPROVED","checks":[{"item":"emoji removed","ok":true},{"item":"collapsed logo dimensions","ok":true},{"item":"build","ok":true}],"issues":[]}
|
||||||
1
work/artifacts/F-165/reviewer.json
Normal file
1
work/artifacts/F-165/reviewer.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"feature_id":"F-165","agent":"reviewer","stage":"review_gate","verdict":"APPROVED","checks":[{"item":"brand asset reused","ok":true},{"item":"build","ok":true}],"issues":[]}
|
||||||
1
work/artifacts/F-165/security.json
Normal file
1
work/artifacts/F-165/security.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"feature_id":"F-165","agent":"security","stage":"security_gate","verdict":"APPROVED","checks":[{"item":"local static asset only","ok":true}],"issues":[]}
|
||||||
@@ -1,16 +1,3 @@
|
|||||||
# Feature activa: F-161 — Complete admin order detail information
|
# F-165 — Use brand logo in collapsed sidebar
|
||||||
|
|
||||||
## Diagnóstico
|
Sustituir el emoji del sidebar colapsado por `/images/logo-main.png`, con dimensiones icon-only y `alt="mercadodevida"`. Mantener el logo completo en expanded/mobile.
|
||||||
El pedido existente se creó con `user_id` de `backoffice_users` porque Checkout usa `combinedAuth`, que prioriza `backoffice_session` si ambos cookies existen. Por eso el JOIN a `identity_users` no encuentra email, perfil ni dirección. La UI además oculta por completo Cliente, Direcciones y Pago cuando faltan datos.
|
|
||||||
|
|
||||||
## Solución
|
|
||||||
- Checkout debe usar exclusivamente el autenticador de identidad/customer.
|
|
||||||
- El detalle obtiene nombre/teléfono desde `users_profiles` como fallback.
|
|
||||||
- Las tarjetas Cliente, Envío, Facturación y Pago siempre aparecen, mostrando estado explícito cuando un dato no fue registrado.
|
|
||||||
- Reparar la asociación del pedido local afectado con el cliente correcto.
|
|
||||||
|
|
||||||
## Aceptación
|
|
||||||
- El pedido muestra email, nombre, teléfono y dirección de envío.
|
|
||||||
- No aparece el falso aviso «El cliente no tiene email asociado».
|
|
||||||
- Pago/facturación ausentes se muestran como «No registrado», no desaparecen.
|
|
||||||
- Futuros checkouts no usan sesiones backoffice.
|
|
||||||
|
|||||||
@@ -1,68 +1,68 @@
|
|||||||
{
|
{
|
||||||
"feature_id": "F-161",
|
"feature_id": "F-165",
|
||||||
"stage": "close",
|
"stage": "close",
|
||||||
"agent": "leader",
|
"agent": "leader",
|
||||||
"action": "Close complete order detail fix",
|
"action": "Close collapsed logo fix",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"next_agent": "leader",
|
"next_agent": "leader",
|
||||||
"waiting_for": "Seleccionar una feature pending y actualizar este estado",
|
"waiting_for": "Seleccionar una feature pending y actualizar este estado",
|
||||||
"updated_at": "2026-08-22T16:13:24Z",
|
"updated_at": "2026-08-22T16:15:43Z",
|
||||||
"timeline": [
|
"timeline": [
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:05:41Z",
|
"ts": "2026-08-22T16:13:46Z",
|
||||||
"agent": "leader",
|
"agent": "leader",
|
||||||
"stage": "intake",
|
"stage": "intake",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Audit order detail customer, shipping and payment data"
|
"message": "Replace collapsed emoji with brand logo"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:07:57Z",
|
"ts": "2026-08-22T16:13:57Z",
|
||||||
"agent": "architect",
|
"agent": "architect",
|
||||||
"stage": "design",
|
"stage": "design",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Design customer-only checkout auth and complete detail fallbacks"
|
"message": "Specify collapsed brand mark"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:08:21Z",
|
"ts": "2026-08-22T16:14:08Z",
|
||||||
"agent": "implementer",
|
"agent": "implementer",
|
||||||
"stage": "build",
|
"stage": "build",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Fix checkout ownership and order detail read model"
|
"message": "Render logo-main in collapsed sidebar"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:12:38Z",
|
"ts": "2026-08-22T16:14:37Z",
|
||||||
"agent": "reviewer",
|
"agent": "reviewer",
|
||||||
"stage": "review_gate",
|
"stage": "review_gate",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Review order ownership and detail completeness"
|
"message": "Review collapsed brand logo"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:12:50Z",
|
"ts": "2026-08-22T16:14:54Z",
|
||||||
"agent": "security",
|
"agent": "security",
|
||||||
"stage": "security_gate",
|
"stage": "security_gate",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Verify customer ownership isolation"
|
"message": "Check static asset change"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:13:04Z",
|
"ts": "2026-08-22T16:15:02Z",
|
||||||
"agent": "qa",
|
"agent": "qa",
|
||||||
"stage": "qa_gate",
|
"stage": "qa_gate",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Validate order customer/address/payment sections"
|
"message": "Validate collapsed logo acceptance"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:13:13Z",
|
"ts": "2026-08-22T16:15:31Z",
|
||||||
"agent": "documenter",
|
"agent": "documenter",
|
||||||
"stage": "document",
|
"stage": "document",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Document complete order detail"
|
"message": "Document collapsed logo"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ts": "2026-08-22T16:13:24Z",
|
"ts": "2026-08-22T16:15:43Z",
|
||||||
"agent": "leader",
|
"agent": "leader",
|
||||||
"stage": "close",
|
"stage": "close",
|
||||||
"state": "running",
|
"state": "running",
|
||||||
"message": "Close complete order detail fix"
|
"message": "Close collapsed logo fix"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user