first commit

This commit is contained in:
eeymoo
2026-09-19 12:54:45 +08:00
commit 6fc5b64077
126 changed files with 8601 additions and 0 deletions
@@ -0,0 +1,42 @@
# 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** 不存在白名单之外的中间件,新增依赖均有理由说明