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。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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