Skip to content

服务:提供本地 Fastify REST API 基线 #5

Description

@ZZDR1023

背景

README 和两周计划描述了本地 Web UI / Fastify adapter,但仓库目前没有 src/server/main.tsnpm start 指向不存在的构建产物。后续 UI 需要一个薄、可测试且不绕过 Orchestrator 所有权的 REST 接口。

目标

提供本地单用户 Fastify API,用现有 Orchestrator 作为唯一业务入口,支持健康检查、创建运行、列出/查看运行、导出归档;长运行以异步 job 方式启动,不阻塞 HTTP 连接。

范围

  • 仅新增/修改 src/server/**tests/server-*.test.ts;如脚本与真实入口不一致,可最小修改 package.json,但不得新增依赖(Fastify 已存在)。不改 Orchestrator、RunStore、CLI、input 或 benchmark 文件。
  • 导出可注入的 buildServer(),测试不得真实监听端口;src/server/main.ts 仅负责配置和启动。
  • API 至少包括:GET /healthGET /api/runsGET /api/runs/:idPOST /api/runsGET /api/runs/:id/archive
  • POST /api/runs 严格校验 package path、runtime/execution 枚举和可选 provider/model/thinking;默认本地 fake/local;立即返回 202 与 job id,后台执行,并可查询 job 状态。
  • 不返回原始 stack、凭据或任意宿主文件;错误 envelope 稳定且状态码正确;archive 仅允许已完成 run 的已验证 project.zip。
  • 默认监听 127.0.0.1,不提供认证前不得绑定 0.0.0.0;CORS 默认关闭。
  • 优雅关闭 server 和 Orchestrator/SQLite 资源;如 Orchestrator 缺少公开 close,只能在 server adapter 内使用明确生命周期边界,不得修改核心模块。

TDD / 验收

先写 Fastify inject Red tests,覆盖健康、schema 拒绝、404、202 job、失败 job、列表/详情、archive gating、无 stack 泄漏。实现后:

npm run check
npm run build

并启动编译后的 server,curl /health 后优雅关闭。不得在测试中调用真实 Pi、Docker 或网络。

非目标

  • React UI、SSE/WebSocket、认证、多用户、远程部署;
  • 修改 Orchestrator、输入提取或 Benchmark harness。

Metadata

Metadata

Assignees

Labels

P2小缺陷、工程化与体验打磨,按队列处理enhancementNew feature or request待验收代码与自动化验证通过,等待人类验收

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions