feat(F-099): completed feature

This commit is contained in:
chattie
2026-08-21 07:29:07 +02:00
parent 3f1d08382f
commit 5177a851aa
41 changed files with 922 additions and 131 deletions

View File

@@ -4402,6 +4402,134 @@
"close": true
},
"completed_at": "2026-08-20T20:39:06Z"
},
{
"id": "F-099",
"type": "bug",
"title": "Send password reset emails through configurable SMTP",
"problem": "Password reset currently uses LoggingPasswordResetMailer and only prints reset links to backend logs, so customers never receive emails.",
"goal": "Add a real SMTP mailer controlled by SMTP environment variables, keep log fallback explicit for local development, and verify password reset delivery configuration.",
"scope_in": [
"backend password reset email provider"
],
"scope_out": [
"No hardcoded SMTP credentials",
"no secret exposure"
],
"priority": "high",
"risk": "med",
"description": "Problem: Password reset currently uses LoggingPasswordResetMailer and only prints reset links to backend logs, so customers never receive emails.. Goal: Add a real SMTP mailer controlled by SMTP environment variables, keep log fallback explicit for local development, and verify password reset delivery configuration.. Scope IN: backend password reset email provider. Scope OUT: No hardcoded SMTP credentials, no secret exposure. Type: bug. Priority: high. Risk: med.",
"acceptance": [
"Configured SMTP sends password reset email with reset link",
"Missing SMTP configuration is clearly reported in startup/health logs",
"Password reset token remains single-use and is not logged when SMTP is active",
"Typecheck, tests, and verify pass"
],
"status": "done",
"created_at": "2026-08-20",
"gates": {
"reviewer": true,
"security": true,
"qa": true,
"close": true
},
"completed_at": "2026-08-21T05:29:07Z"
},
{
"id": "F-100",
"type": "feature",
"title": "Generate SKU automatically from product title",
"problem": "Operators must type SKU manually when creating a product variant.",
"goal": "Generate a stable unique SKU from the product title, allow editing, and preserve uniqueness.",
"scope_in": [
"catalog variants",
"admin variant creation"
],
"scope_out": [
"No external SKU service",
"no uniqueness relaxation"
],
"priority": "high",
"risk": "low",
"description": "Problem: Operators must type SKU manually when creating a product variant.. Goal: Generate a stable unique SKU from the product title, allow editing, and preserve uniqueness.. Scope IN: catalog variants, admin variant creation. Scope OUT: No external SKU service, no uniqueness relaxation. Type: feature. Priority: high. Risk: low.",
"acceptance": [
"Creating a variant suggests a title-derived SKU",
"Generated SKU is normalized and remains editable",
"Duplicate SKU is rejected clearly",
"Typecheck, tests, verify pass"
],
"status": "pending",
"created_at": "2026-08-20",
"gates": {
"reviewer": false,
"security": false,
"qa": false
}
},
{
"id": "F-101",
"type": "fix",
"title": "Render AI descriptions as safe justified HTML",
"problem": "AI descriptions often arrive as Markdown and are displayed incorrectly by the WYSIWYG and storefront.",
"goal": "Convert generated Markdown to sanitized HTML, show it in the WYSIWYG, and justify product descriptions on the customer frontend.",
"scope_in": [
"catalog AI generation",
"admin WYSIWYG",
"frontend product rendering"
],
"scope_out": [
"No unsafe raw HTML",
"no arbitrary script tags"
],
"priority": "high",
"risk": "med",
"description": "Problem: AI descriptions often arrive as Markdown and are displayed incorrectly by the WYSIWYG and storefront.. Goal: Convert generated Markdown to sanitized HTML, show it in the WYSIWYG, and justify product descriptions on the customer frontend.. Scope IN: catalog AI generation, admin WYSIWYG, frontend product rendering. Scope OUT: No unsafe raw HTML, no arbitrary script tags. Type: fix. Priority: high. Risk: med.",
"acceptance": [
"Generated description is valid HTML",
"WYSIWYG displays generated content",
"Frontend product description is justified",
"Typecheck, tests, verify pass"
],
"status": "pending",
"created_at": "2026-08-20",
"gates": {
"reviewer": false,
"security": false,
"qa": false
}
},
{
"id": "F-102",
"type": "feature",
"title": "Add unit weight and variant pack size",
"problem": "Products do not expose weight per unit and variants cannot represent packs of multiple units.",
"goal": "Add product unit weight and variant pack quantity, expose and edit them in admin, and show pack information to customers.",
"scope_in": [
"catalog schema",
"admin product editor",
"variant management",
"frontend product display"
],
"scope_out": [
"No shipping-rate redesign",
"no inventory migration"
],
"priority": "high",
"risk": "med",
"description": "Problem: Products do not expose weight per unit and variants cannot represent packs of multiple units.. Goal: Add product unit weight and variant pack quantity, expose and edit them in admin, and show pack information to customers.. Scope IN: catalog schema, admin product editor, variant management, frontend product display. Scope OUT: No shipping-rate redesign, no inventory migration. Type: feature. Priority: high. Risk: med.",
"acceptance": [
"Product stores optional unit weight",
"Variant stores pack quantity defaulting to one",
"Pack values are validated as positive integers",
"Typecheck, tests, verify pass"
],
"status": "pending",
"created_at": "2026-08-20",
"gates": {
"reviewer": false,
"security": false,
"qa": false
}
}
]
}