feat(F-099): completed feature
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user