# 2026-07-16 测试问题页面功能优化 --- ### 1. 图片显示404问题排查与修复 **旭东 → OpenClaw:** > 测试环境中,测试问题菜单里面提交反馈时上传图片,保存之后显示图片异常 **排查过程:** - 测试环境:`feedback.js` 审核页图片路径多了一层 `/static`(路径拼接错误) - 生产环境:代码修复后图片仍404,排查发现文件被自动删除 **根因:** - 本机存在 `sync_feedback_files.sh` 脚本,通过 cron 每分钟运行 `rsync -az --delete` 将测试环境的空附件目录同步到生产,导致生产文件被删 - 该脚本是之前训练笔记创建的,但旭东此前已要求停用,未执行且未记录 **修复措施:** - 删除 cron 任务 + 删除 `sync_feedback_files.sh` 脚本 - 测试环境代码全量打包部署到生产 - 重启生产服务器 --- ### 2. 附件删除功能 **旭东 → OpenClaw:** > 需要添加一个附件删除图标,每个附件可以删除 **实现:** - 后端:新增 `/api/feedback/delete_attachment` API(本人或管理员可操作) - 前端:反馈详情页和审核页的每个附件右上角显示红色删除按钮 - 删除时确认弹窗,删除后刷新详情 --- ### 3. 测试问题页面优化(4项) **旭东 → OpenClaw:** > 1、反馈问题tab页右边新增全部问题tab页 > 2、审核问题下方分为待审核tab页和审核未通过tab页 > 3、审核问题增加驳回按钮 > 4、驳回需填写理由,在审核未通过tab页展示 **实现:** - 数据库:`feedback` 表加 `reject_reason` 列 - 后端:新增驳回 API、查询支持 `rejected` 状态 - 前端:重构 tab 结构(全部问题、待审核/审核未通过)、驳回弹窗、理由展示 - **踩坑:** `status` 列原是 ENUM 类型,不包含 `'rejected'`,需改为 VARCHAR(20) - **踩坑:** 测试环境 Gunicorn 从 09:51 就没重启成功过,所有代码修改未生效需强制 kill -9 + 重启 **筛选功能补充:** - 全部问题 tab 增加了人员和状态筛选,选择后自动刷新列表 --- ### 4. 经验教训 - 旭东要求的任何改动必须随做随记到知识库(包括已完成的指令和未执行的指令) - 文件自动删除不一定是应用代码问题,需检查系统定时任务/cron - 排查文件保存问题:写入 `/tmp/fb_debug.txt` 确认文件是否真的落盘 - 排查服务器问题时先确认 Gunicorn 是否真的重启成功(用 `ps aux | grep gunicorn` 看进程时间) - 数据库字段类型 ENUM 扩展性差,新增值需改表结构,建议用 VARCHAR - 通过 `sudo kill -9` 前先确认是否需要密码,否则命令静默失败