{ "name": "feat-user-feedback", "title": "用户反馈投送功能", "type": "feature", "priority": "medium", "dev_type": "fullstack", "created_at": "2026-04-17", "status": "planning", "worktree": "feat-user-feedback", "branch": "worktree/feat-user-feedback", "description": "实现用户反馈投送功能:前端反馈表单 + 后端数据存储 + 图片上传。Phase 2 实现定时报告生成和邮件推送。", "prd": "prd.md", "phase": { "current": 1, "total": 3, "description": "Phase 1: 前端反馈 + 后端存储 + 图片上传" }, "tech_stack": { "backend": { "language": "Python", "framework": "FastAPI", "orm": "SQLAlchemy", "task_queue": "Taskiq", "xlsx_lib": "openpyxl" }, "frontend": { "language": "Dart", "framework": "Flutter", "storage": "Supabase Storage" } }, "features": { "anonymous_feedback": true, "image_upload": true, "max_images": 3, "max_content_length": 500, "report_generation": false, "email_notification": false }, "constraints": { "schema_strict": "所有字段使用 Pydantic Schema 强约束,extra=forbid", "no_contact_email": "删除 contact_email 字段,不存储用户联系方式", "no_admin_routes": "暂不实现管理员路由", "config_via_settings": "客服邮箱和推送时间通过 Settings 环境变量配置" }, "checklist": { "backend": [ "添加 openpyxl 依赖", "创建 user_feedback 表迁移(含 images JSONB 字段)", "创建 Supabase Storage feedback bucket", "创建 Pydantic Schema(强约束,extra=forbid)", "创建 Feedback 模型", "创建 FeedbackRepository(CRUD 操作)", "创建 FeedbackService(业务逻辑)", "创建 POST /api/v1/feedback 接口", "添加错误码到协议文档" ], "frontend": [ "创建 Feedback 数据模型", "创建 FeedbackApi", "创建 FeedbackRepository", "创建 FeedbackScreen(含图片上传组件)", "在 SettingsScreen 添加反馈入口", "添加 l10n keys(中/英/繁)" ] }, "notes": [ "Phase 1 只实现前端反馈 + 后端存储 + 图片上传", "Phase 2 实现定时报告生成和邮件推送", "使用 Python openpyxl 生成 xlsx 报告(技术栈统一)", "Schema 使用 extra=forbid 禁止模糊字段", "客服邮箱通过 FEEDBACK_REPORT_EMAIL 环境变量配置", "推送时间通过 FEEDBACK_REPORT_CRON 环境变量配置" ] }