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:
qzl
2026-04-20 12:49:54 +08:00
parent 913ed26f8d
commit 6a2a9d2c87
46 changed files with 4768 additions and 9 deletions
+19 -1
View File
@@ -389,5 +389,23 @@
"settingsDoNotSellTitle": "個人化廣告推薦",
"settingsDoNotSellDescription": "關閉後,我們不會將您的個人資訊用於廣告推薦",
"settingsDoNotSellEnabled": "已關閉",
"settingsDoNotSellDisabled": "已開啟"
"settingsDoNotSellDisabled": "已開啟",
"settingsFeedbackTitle": "意見回饋",
"feedbackTitle": "意見回饋",
"feedbackTypeLabel": "回饋類型",
"feedbackTypeBug": "問題回饋",
"feedbackTypeSuggestion": "功能建議",
"feedbackTypeOther": "其他",
"feedbackContentLabel": "回饋內容",
"feedbackContentHint": "請詳細描述您的問題或建議...",
"feedbackImagesLabel": "添加截圖(最多3張)",
"feedbackAnonymousLabel": "不上傳我的個人信息",
"feedbackAnonymousHint": "勾選後將不採集您的用戶ID,僅採集設備信息用於問題排查",
"feedbackSubmit": "提交回饋",
"feedbackSubmitting": "提交中...",
"feedbackSuccess": "感謝您的回饋,我們會盡快處理",
"feedbackContentRequired": "請輸入回饋內容",
"feedbackContentTooLong": "回饋內容不能超過500字",
"feedbackTooManyImages": "最多只能上傳3張圖片",
"feedbackImageTooLarge": "圖片大小不能超過5MB"
}