76 lines
2.5 KiB
JSON
76 lines
2.5 KiB
JSON
{
|
||
"name": "feat-user-feedback",
|
||
"title": "用户反馈投送功能",
|
||
"type": "feature",
|
||
"priority": "medium",
|
||
"dev_type": "fullstack",
|
||
"created_at": "2026-04-17",
|
||
"status": "completed",
|
||
"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 环境变量配置"
|
||
],
|
||
"completedAt": "2026-04-20"
|
||
} |