feat(feedback): implement user feedback collection system with email reporting
Backend: - Add user_feedback table with RLS policy - Create feedback submission API (multipart/form-data) - Implement xlsx report generation with embedded images - Add scheduled email delivery via Feishu SMTP - Create HTML email templates (daily_report, no_feedback) Frontend: - Add feedback screen with type selection and image picker - Support anonymous submission via skipAuth flag - Collect device info and app version Protocol: - Document feedback API contract and error codes - Update http-error-codes.md with FEEDBACK_* codes
This commit is contained in:
@@ -487,5 +487,23 @@
|
||||
"settingsDoNotSellTitle": "Personalized Ads",
|
||||
"settingsDoNotSellDescription": "When off, your personal info won't be used for ad recommendations",
|
||||
"settingsDoNotSellEnabled": "Off",
|
||||
"settingsDoNotSellDisabled": "On"
|
||||
"settingsDoNotSellDisabled": "On",
|
||||
"settingsFeedbackTitle": "Feedback",
|
||||
"feedbackTitle": "Feedback",
|
||||
"feedbackTypeLabel": "Feedback Type",
|
||||
"feedbackTypeBug": "Bug",
|
||||
"feedbackTypeSuggestion": "Suggestion",
|
||||
"feedbackTypeOther": "Other",
|
||||
"feedbackContentLabel": "Content",
|
||||
"feedbackContentHint": "Please describe your issue or suggestion in detail...",
|
||||
"feedbackImagesLabel": "Add Screenshots (max 3)",
|
||||
"feedbackAnonymousLabel": "Do not upload my personal information",
|
||||
"feedbackAnonymousHint": "If checked, your user ID will not be collected. Device info will still be collected for troubleshooting.",
|
||||
"feedbackSubmit": "Submit Feedback",
|
||||
"feedbackSubmitting": "Submitting...",
|
||||
"feedbackSuccess": "Thank you for your feedback. We will process it soon.",
|
||||
"feedbackContentRequired": "Please enter feedback content",
|
||||
"feedbackContentTooLong": "Feedback content cannot exceed 500 characters",
|
||||
"feedbackTooManyImages": "Maximum 3 images allowed",
|
||||
"feedbackImageTooLarge": "Image size cannot exceed 5MB"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user