# Changelog — BUG Batch 6：Refresh 重用 / 文件浏览 ETag（2026-06-04）

## 摘要

补齐刷新令牌重用检测（吊销全部会话）、区分 Redis 故障与无效令牌，并修复文件管理器在本地缓存命中时跳过 ETag 校验的问题。

## 动机

- 已轮换的 refresh token 被重放时，原逻辑仅返回 401，不提升 `token_version`，无法踢掉攻击者仍有效的新会话。
- Redis 短暂不可用时，合法用户 refresh 被误判为无效令牌。
- 远程目录变更后（含 Batch 5 服务端 ETag 失效），前端 5s 内仍可能只读本地缓存、不发 `If-None-Match`。

## 变更

| 文件 | 说明 |
|------|------|
| `server/application/services/auth_service.py` | `_refresh_token_membership`、`_handle_refresh_token_reuse` |
| `frontend/src/composables/files/useFilesBrowse.ts` | 缓存仅乐观展示，始终条件 GET |
| `tests/test_auth_refresh_reuse.py` | 重用检测与 Redis 不可用单测 |
| `docs/reports/audit-bug-line-walk-2026-06-04-batch6.md` | BUG Batch 6 报告 |

## 迁移 / 重启

- 需重启 `nexus`；前端需重新构建部署。

## 验证

```bash
ruff check server/application/services/auth_service.py
pytest tests/test_auth_refresh_reuse.py tests/ -q
cd frontend && npm run type-check
```

## 关联

- Batch 5：`docs/changelog/2026-06-04-bug-batch5-agent-etag.md`
