ad97fd3da5
- .gitignore 新增忽略 .idea/、videos/、*.tar.gz、*.csproj.user、db 运行时文件 - 根目录 15 个中文运维 md 归档到 docs/ - 删除无部署脚本引用的 Dockerfile 与 Dockerfile-arm(保留 Dockerfile.prod) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
128 lines
3.5 KiB
Markdown
128 lines
3.5 KiB
Markdown
# 数据看板不更新问题排查
|
||
|
||
## 🔍 问题现象
|
||
|
||
视频已经下载了,但是数据看板中的数据没有更新。
|
||
|
||
## 📋 可能的原因
|
||
|
||
### 1. 数据库记录未保存
|
||
- 视频文件下载成功,但数据库记录保存失败
|
||
- 检查日志中是否有 "批量保存视频到数据库失败" 的错误
|
||
|
||
### 2. 前端缓存问题
|
||
- 浏览器缓存了旧的统计数据
|
||
- 前端组件没有刷新数据
|
||
|
||
### 3. 数据库查询问题
|
||
- 统计查询没有正确读取数据
|
||
|
||
## 🔧 排查步骤
|
||
|
||
### 步骤1:检查数据库中的记录
|
||
|
||
**方法一:通过前端页面**
|
||
1. 访问 `http://localhost:8001`
|
||
2. 进入「同步记录」页面
|
||
3. 查看是否有视频记录显示
|
||
4. 检查视频记录是否有 `videoSavePath` 字段
|
||
|
||
**方法二:通过 Swagger API**
|
||
1. 访问 `http://localhost:10101/swagger`
|
||
2. 找到 `POST /api/video/paged`
|
||
3. 输入参数:`{"pageIndex":1,"pageSize":10}`
|
||
4. 执行查询,查看返回的数据
|
||
|
||
**方法三:直接查询数据库**
|
||
```bash
|
||
cd /Users/gaotu/WebstormProjects/dysync.net
|
||
sqlite3 db/dy.sqlite "SELECT COUNT(*) FROM dy_collect_video;"
|
||
sqlite3 db/dy.sqlite "SELECT id, videoTitle, videoSavePath FROM dy_collect_video LIMIT 5;"
|
||
```
|
||
|
||
### 步骤2:检查日志
|
||
|
||
查看最新的日志文件,搜索关键词:
|
||
- "批量保存视频到数据库失败"
|
||
- "本次共同步成功"
|
||
- "下载成功"
|
||
|
||
```bash
|
||
# 查看最新日志
|
||
tail -100 logs/log-debug-20251120.txt | grep -E "(下载成功|批量保存|同步成功)"
|
||
```
|
||
|
||
### 步骤3:检查前端数据刷新
|
||
|
||
1. **清除浏览器缓存**
|
||
- 按 `F12` 打开开发者工具
|
||
- 右键点击刷新按钮
|
||
- 选择「清空缓存并硬性重新加载」
|
||
|
||
2. **手动刷新数据看板**
|
||
- 进入「数据看板」页面
|
||
- 按 `F5` 刷新页面
|
||
- 或关闭页面重新打开
|
||
|
||
3. **检查网络请求**
|
||
- 按 `F12` 打开开发者工具
|
||
- 切换到「Network」标签
|
||
- 刷新「数据看板」页面
|
||
- 查看 `/api/video/statics` 请求的响应数据
|
||
|
||
## 🛠️ 解决方案
|
||
|
||
### 方案1:强制刷新前端数据
|
||
|
||
在前端代码中添加自动刷新功能,修改 `statics.vue`:
|
||
|
||
```vue
|
||
// 在 onMounted 中添加定时刷新
|
||
onMounted(() => {
|
||
loadDashboardData();
|
||
// 每30秒自动刷新一次
|
||
const timer = setInterval(() => {
|
||
loadDashboardData();
|
||
}, 30000);
|
||
onUnmounted(() => {
|
||
clearInterval(timer);
|
||
});
|
||
});
|
||
```
|
||
|
||
### 方案2:检查数据库保存逻辑
|
||
|
||
如果日志显示 "批量保存视频到数据库失败",需要检查:
|
||
1. 数据库连接是否正常
|
||
2. 视频记录是否有重复(AwemeId 冲突)
|
||
3. 字段是否有空值或格式错误
|
||
|
||
### 方案3:手动触发数据刷新
|
||
|
||
在前端「数据看板」页面添加刷新按钮:
|
||
|
||
```vue
|
||
<a-button @click="loadDashboardData" type="primary">刷新数据</a-button>
|
||
```
|
||
|
||
## 📝 快速检查清单
|
||
|
||
- [ ] 数据库中是否有视频记录?
|
||
- [ ] 视频记录是否有 `videoSavePath` 字段?
|
||
- [ ] 视频文件是否实际存在?
|
||
- [ ] 日志中是否有保存失败的错误?
|
||
- [ ] 前端是否缓存了旧数据?
|
||
- [ ] API 返回的数据是否正确?
|
||
|
||
## 🎯 立即操作
|
||
|
||
1. **刷新浏览器页面**(清除缓存)
|
||
2. **检查「同步记录」页面**,看是否有视频记录
|
||
3. **查看浏览器控制台**(F12),检查是否有错误
|
||
4. **查看网络请求**,确认 API 返回的数据
|
||
|
||
如果「同步记录」页面有数据,但「数据看板」没有更新,那就是前端缓存问题,需要强制刷新。
|
||
|
||
如果「同步记录」页面也没有数据,那就是数据库保存问题,需要检查日志。
|
||
|