dy-dashboard/vault/知识库/工作指南/训练记录/2026-07-16-测试问题页面功能优化.md
2026-10-28 11:14:17 +08:00

65 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` 前先确认是否需要密码,否则命令静默失败