# 2026-06-08 — sync_logs 30 天自动清理

## 摘要

primary worker 每日删除 `started_at` 超过 30 天的 `sync_logs` 记录（启动后立即执行首轮），对齐 `design-standards.md` 保留策略。

## 动机

推送历史仅存 MySQL、无 TTL，长期运行后表体积持续增长，影响列表查询与备份。

## 涉及文件

- `server/infrastructure/database/sync_log_repo.py` — `purge_older_than`、常量 `SYNC_LOG_RETENTION_DAYS=30`
- `server/background/sync_log_purge.py` — 24h 周期循环
- `server/main.py` — primary worker 注册后台任务
- `tests/test_sync_log_purge.py`

## 迁移 / 重启

- 无 schema 变更
- **需重启 API**

## 行为

| 项 | 值 |
|----|-----|
| 保留窗口 | 30 天（`started_at`） |
| 执行频率 | 启动后首轮 + 每 24h |
| 删除方式 | 每批最多 1000 行，循环至无匹配 |

## 验证

```bash
pytest tests/test_sync_log_purge.py -q
bash scripts/local_verify.sh
# 可选：INSERT 一条 started_at=31天前 的 sync_log，重启 API 后确认已删除
```
