数据库清理后已归档任务右侧内容区空白,未显示「历史内容已清除」提示
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: mp55
**客户端版本**: 0.1.70
---
## 现象
通过「菜单 → 设置 → 关于 → 存储管理(数据库清理)」执行清理后,历史消息被清除的任务在右侧内容区的表现不一致:
1. **活跃任务**(开启「包含活跃任务」时命中):内容区顶部显示「历史内容已清除」占位提示,符合预期
2. **已归档任务**(默认清理范围即会命中):内容区完全空白,没有任何提示,用户无法区分「清理后无历史」和「加载失败/白屏」
## 复现步骤
1. 准备一个超过所选时间门槛(如 7 天)未更新的已归档任务,其中有历史消息
2. 打开「菜单 → 设置 → 关于 → 数据库清理」,选择时间门槛,执行扫描并确认清理(无需开启「包含活跃任务」即可复现)
3. 清理完成、应用重启后,从归档列表打开该任务,观察右侧内容区
4. 对照:开启「包含活跃任务」清理一个超期活跃任务,打开观察右侧内容区
## 期望行为
历史被清理的已归档任务打开时,右侧内容区与活跃任务一致,显示「历史内容已清除」占位提示(或统一等效的空态文案),明确告知用户历史已被数据库清理移除
## 实际行为
已归档任务历史被清理后,右侧内容区空白,无任何占位提示;活跃任务则正常显示「历史内容已清除」,两类任务表现不一致
## 复现频率
必现:凡时间门槛内的已归档任务被数据库清理命中,即出现
## 已尝试
无需用户操作即可稳定复现
### 技术备注(供定位参考)
- 根因:`apps/desktop/src/main/localDb/dbSlimmingMaintenance.ts` 清理事务中,`cleared_at` 置位逻辑仅在 `includeActiveTasks === true` 时执行且 `WHERE status = 'active'`,归档目标删了消息但未置位 `cleared_at`
- 渲染端「历史内容已清除」标记依据 `session.clearedAt`(`MessageStream.tsx` 的 `HistoryClearedMarker`),归档会话该字段为空所以不渲染提示
---
**版本区域**: CN
**OS**: win32 x64
**Harness**: Pi
**界面语言**: zh-CN
Contributor guide
Research direction
Start with the cleanup transaction in apps/desktop/src/main/localDb/dbSlimmingMaintenance.ts, focusing on how archived tasks are handled, then trace the session.clearedAt check and HistoryClearedMarker in MessageStream.tsx. Reproduce the cleanup for an archived task and confirm that reopening it shows the same historical-content-cleared placeholder as an active task.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- database, frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100