feat(orchestrator): DataGate 机制化 + 任务级持久化(T14/T16 架构审查整改)
- T14 (OV5): 新建 src/genesis/orchestrator/datagate.py
- DataGate.load(source, selector) 机制化:子集加载 + 规模保护(超 500 行
无 selector 拒绝全量,1000 行 Excel 防上下文爆炸)+ token 预算(8000,
复用 CJK 保守估算)+ 未知表容错
- agent-runtime §4.2 原则→机制说明
- T16 (OV7): 新建 src/genesis/orchestrator/task_queue.py
- TaskQueue ABC + PersistentTaskQueue(SQLite 落盘)
- enqueue/poll/update_status/get/cancel/recover/close
- 幂等去重(§5.3 缓存结果)+ recover 将 running→failed、pending 保留
- api-design §5.2/5.3、agent-runtime §3.5/3.6、design §8.4.1 同步
- 新增 test_datagate.py(8 用例)+ test_task_queue.py(11 用例)
- TDD: RED(模块缺失)→ GREEN(聚焦 16 passed)→ 全量 218 passed / 100.00%(1140 stmts/278 br)
This commit is contained in:
+2
-2
@@ -236,14 +236,14 @@ class TaskQueue(ABC):
|
||||
|
||||
| 实现 | 依赖 | 使用场景 | 说明 |
|
||||
|------|------|---------|------|
|
||||
| `InMemoryQueue` | 无 | 开发 / 测试 / 演示(默认)| asyncio 任务池,进程内状态 |
|
||||
| `PersistentTaskQueue` | 标准库 sqlite3 | 开发 / 测试 / 演示(默认)| **T16 任务级持久化(OV7)**:状态/payload/result 落盘 SQLite;`recover()` 重启后 running→failed、pending 保留;实现于 `src/genesis/orchestrator/task_queue.py` |
|
||||
| `RedisQueue` / `ValkeyQueue` | redis-py | **v2 预留**(不实现)| Scope 缩减裁定移除双实现;接口保留供 v2 扩展 |
|
||||
|
||||
### 5.3 幂等去重
|
||||
|
||||
- 任务幂等键:`(session_id, step, chapter_id)`(runtime §7.3)
|
||||
- 重复 enqueue 同一幂等键 → 已完成直接返回缓存结果;进行中则返回原 handle
|
||||
- v1 仅 `InMemoryQueue` 实现(单测覆盖)
|
||||
- v1 由 `PersistentTaskQueue` 实现(单测覆盖)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user