Files
2026-09-19 12:54:45 +08:00

2.2 KiB
Raw Permalink Blame History

Spec: backend-access

ADDED Requirements

Requirement: RESTful API 与 CLI 等价接入

系统 SHALL 提供 FastAPI RESTful API 与 Typer CLI 两种等价调用方式;对同一实验配置,二者 MUST 产生等价的执行结果与一致的落库结构。

Scenario: API 与 CLI 等价

  • WHEN 分别通过 API 与 CLI 下发同一实验配置
  • THEN 二者落库结构一致、执行结果等价

Requirement: API 作为前端唯一数据源

API SHALL 承担 Web 前端的数据源职责:前后端分离,前端只通过 API 与后端交互;API MUST NOT 返回任何 HTML;前端 MUST NOT 直连数据库;接入层 MUST NOT 跨层直接写库绕过服务层。

Scenario: 前端仅经 API 取数

  • WHEN 前端任意页面加载数据或下发指令
  • THEN 全部经由 RESTful API JSON 交互,无模板渲染混排

Requirement: 本地与 Docker 两种启动方式

系统 SHALL 支持两种运行方式:本地开发(后端一条命令、前端一条命令分别启动);Docker(docker compose up 一条命令拉起 PostgreSQL + 后端 + 前端,PostgreSQL 数据 volume 持久化,容器重建不丢实验数据)。

Scenario: Docker 一键拉起

  • WHEN 执行 docker compose up
  • THEN db + backend + frontend(nginx) 全部启动,浏览器访问即可使用

Scenario: 容器重建数据不丢

  • WHEN 删除并重建容器后重新启动
  • THEN 历史实验数据仍在(volume 持久化)

Requirement: CLI 冒烟实验

CLI SHALL 支持一条命令跑通小规模冒烟实验(如 1 模型 × L1 × 1 commit × 1 重复)。

Scenario: 冒烟实验

  • WHEN 通过 CLI 下发 1×1×1×1 配置
  • THEN 生成 1 个实验单元并执行落库

Requirement: 基础设施白名单

系统 MUST NOT 引入消息队列(RabbitMQ/Kafka)、Redis、Kubernetes 等未列明中间件;允许且仅允许 Docker/docker-compose、PostgreSQL、Nginx(仅托管前端静态文件与反向代理)。新增第三方依赖前须在代码注释或文档中说明理由。

Scenario: 依赖检查

  • WHEN 审查部署与依赖清单
  • THEN 不存在白名单之外的中间件,新增依赖均有理由说明