Files
dysync/docs/数据看板不更新问题排查.md
yuming ad97fd3da5 整理仓库:扩展 gitignore、归档文档、清理冗余 Dockerfile
- .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>
2026-04-24 21:28:41 +08:00

128 lines
3.5 KiB
Markdown
Raw Permalink 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.
# 数据看板不更新问题排查
## 🔍 问题现象
视频已经下载了,但是数据看板中的数据没有更新。
## 📋 可能的原因
### 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 返回的数据
如果「同步记录」页面有数据,但「数据看板」没有更新,那就是前端缓存问题,需要强制刷新。
如果「同步记录」页面也没有数据,那就是数据库保存问题,需要检查日志。