auto-sync: 2026-06-02 22:56:59

This commit is contained in:
cfdaily
2026-06-02 22:56:59 +08:00
parent 466c6e7d3e
commit 3561e1efdc
@@ -209,82 +209,11 @@ if cls.get("cooldown_seconds"):
stderr_preview 和 exit_signal 写 metadata 的方案暂缓,本轮不实施。
已有 metadata 记录 fallback_count、api_retry_count、retry_count 等计数器。
## 4. Registry 清理
## 4. Registry 清理 — 暂缓,不在本轮实施
### 4.1 现有 delete_project 的问题
- `DELETE /api/projects/{id}` 只逻辑删除(status→deleted),不清理 registry 记录
- `discover_projects()` 只注册新项目,不清理 data 已删的记录
- 无批量操作 API
### 4.2 修复方案
#### delete_project 增强
删除项目时同步清理 registry:
```python
# src/blackboard/registry.py
def delete_project(self, project_id: str) -> bool:
"""物理删除项目:registry 记录 + data 目录"""
# 1. 删除 data 目录
project_dir = self.root / project_id
if project_dir.exists():
shutil.rmtree(project_dir, ignore_errors=True)
# 2. 删除 registry 记录
conn = self._connect()
conn.execute("DELETE FROM projects WHERE id=?", (project_id,))
conn.commit()
conn.close()
return True
```
安全性:保持 `DELETE /api/projects/{id}` 需要 project_id 精确匹配,不支持通配符。
#### discover_projects 增强
扫描时同步清理 data 不存在的 registry 记录:
```python
def discover_projects(self, scan_dir=None):
# ... 现有注册逻辑 ...
# 清理孤儿:registry 有但 data 没目录的
conn = self._connect()
all_registered = conn.execute("SELECT id FROM projects WHERE status='active'").fetchall()
for (pid,) in all_registered:
if not (self.root / pid).is_dir():
conn.execute("UPDATE projects SET status='deleted' WHERE id=?", (pid,))
cleaned.append(pid)
conn.commit()
conn.close()
```
#### 批量清理 API
新增运维端点(`src/api/admin_routes.py`):
```
POST /api/admin/cleanup
body: {
"action": "purge_deleted", # 清理所有 status=deleted 的项目和 data
"confirm": true # 安全确认
}
body: {
"action": "purge_prefix", # 按前缀批量删除
"prefix": "e2e-",
"confirm": true
}
body: {
"action": "sync_registry", # registry ↔ data 双向同步
"confirm": true
}
```
安全机制:
- 所有操作需要 `confirm: true`
- `confirm: false` 时返回 dry-run 预览(将删除什么)
- 可选:admin token 验证
> 当前 delete_project 为逻辑删除(status→deleted),无物理删除。discover_projects 无孤儿清理。
> 司马懿评审建议物理删除加恢复机制或 admin auth。
> 本轮聚焦 classify outcomeRegistry 清理后续单独实施。
## 5. 并发控制一致性检查