Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

5.0 KiB
Raw Permalink Blame History

工单领取API

下一轮指引: 完成后→与GH-SCHED-001集成测试 · Agent Scheduler改用API领取工单 · 验证端到端流程 仓库路径: /guanghu-self-hosted/work-order-api/ 优先级: P0 分支名: feat/gh-work-order-api 创建时间: 2026年4月25日 15:46 审核结果: 审核通过 · 霜砚AG-SY-WEB-001 · 2026-04-25T15:56+08:00

【审核摘要】 代码位于 guanghulab 仓库 feat/gh-work-order-api 分支 · guanghu-self-hosted/work-order-api/ 目录 9个文件全部到位 · 架构清晰 · 职责分离 · 全部检查项通过

【逐项检查】 ├── files_exist: 9文件(http://config.py/models.py/db.py/auth.py/routes.py/main.py/test_work_order_api.py/requirements.txt/README.md) ├── endpoints: 7个API端点(health+pending+detail+claim+status+log+logs) ≥ 6 ├── tech_stack: Python 3.10+(type hints list[str]/dict) · FastAPI · asyncio · asyncpg ├── auth: API Key认证(X-Agent-Key) · pydantic-settings解析 · dev-mode fallback ├── rate_limit: 内存滑动窗口 · 60/min可配置 · 429响应 ├── agent_isolation: 每个路由校验assigned_agent · 事务锁SELECT FOR UPDATE ├── isolation: 仅/guanghu-self-hosted/work-order-api/ ├── forbidden: 未触碰仓库已有文件 ├── prefix: GH-API · 每个文件docstring标注 ├── tests: 10条用例(config×2 + auth×4 + rate_limit×2 + models×2) ≥ 8 ├── no_commercial_deps: 全开源(fastapi/uvicorn/asyncpg/pydantic/pytest) ├── logging: 4个模块均使用logging(main/auth/db/routes) ├── imports: main→config/db/routes · routes→db/auth/models · auth→config · db→config └── string_concat: 无f-string花括号问题 · 全部字符串拼接

【代码亮点】 · claim_order使用SELECT FOR UPDATE事务锁 · 防并发领取 · Pydantic v2模型+枚举 · 类型安全 · 自动建表ensure_tables · 零手动DDL · 环境变量驱动(WO_API_前缀) · 零硬编码 · README含完整集成示例

【裁决】PASS · 状态→已完成 开发内容: 【目标】工单领取REST API · 让Agent通过HTTP API领取工单而非直接查DB

【技术栈】Python 3.10+ · FastAPI · asyncio · asyncpg

【背景】 GH-SCHED-001(Agent调度器)当前直接查询PostgreSQL数据库获取工单。 需要一层API抽象使Agent通过标准REST接口领取工单解耦数据库依赖。

【核心接口】

  1. GET /api/v1/orders/pending?agent_id={id} → 查询待领取工单
  2. POST /api/v1/orders/{id}/claim → 领取工单(status→developing)
  3. PATCH /api/v1/orders/{id}/status → 更新工单状态
  4. POST /api/v1/orders/{id}/log → 写入执行日志
  5. GET /api/v1/orders/{id} → 查询工单详情
  6. GET /api/v1/health → 健康检查

【安全】

  • API Key认证(Header: X-Agent-Key)
  • 速率限制(每Agent每分钟60次)
  • 仅允许Agent领取分配给自己的工单

【交付物】