This repository has been archived on 2026-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
new-api-key-bench/README.md
T
skycurtain 19b69e2d5a docs(deploy): 部署方案——开发机构建 + 服务器轻构建(Caddy)
按熟悉的工作流调整:构建在开发机完成(四绿验证后的 dist 才是部署物),SFTP 上传 dist/Caddyfile/compose.yaml/Dockerfile 四件到服务器,服务器上 docker build 仅做 COPY(无构建工具链需求,秒级)。单阶段 Dockerfile;.dockerignore 不再排除 dist(部署必需品)且继续排除 .env*;README 部署章节重写为三步流程(本机构建/SFTP/服务器 compose)。compose 文件采用 Compose 规范标准名 compose.yaml(docker-compose.yml 仅为向后兼容保留)。
2026-09-08 21:00:19 +08:00

88 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# new-api-key-bench
NewAPI sk-key 接口的「文档 + 调试」二合一前端工具(bench),替代 Postman 的专用调试台,服务 karpool 拼车项目的接口调试与换算验证。
## 技术栈
Vite + Vue 3 + TypeScript + TDesign + TanStack Query(vue-query)+ Pinia + VueUse + Vitest。运行时与包管理器为 Bun。
## 运行
网关地址只从环境变量 `GATEWAY` 读取(代码不写死默认值)。两种配置方式任选其一:
```bash
# 方式一:复制示例文件后填入真实地址(.env.local 已被 gitignore,不会提交)
cp new-api-key-bench/.env.example new-api-key-bench/.env.local
# 然后编辑 .env.local,把 GATEWAY 改成你的网关地址
# 方式二:shell 环境变量(PowerShell:$env:GATEWAY="https://…")
export GATEWAY=https://your-gateway.example.com
```
未配置时 `bun run dev` 会直接报错提示;`build` 无代理不受影响。
```bash
cd new-api-key-bench
bun install
bun run dev # 默认 http://localhost:5173,接口经 dev server 代理转发到 GATEWAY
```
```bash
bun run test # vitest(单元 + 组件 + 集成冒烟全量)
bun run lint # oxlint + eslint
bun run build # type-check + vite build(dist/)
```
## 使用
1. 左侧选择接口(5 个,平铺不分组)→ 右侧开 tab
2. tab 内展开「注意事项」看该接口的实证调研坑文档
3. 填 sk-key(每 tab 独立、仅存内存、刷新即重置,不落盘;切换 tab 输入保留)
4. 点「发送请求」→ 响应区显示元信息(状态/耗时/字符数)+ 虚拟滚动高亮 JSON
5. 复制 / 下载 `.json`;非 2xx 响应体照常展示(调试 401/403 是刚需)
## 架构说明
- **CORS**:页面请求打相对路径(`/api`、`/v1`),由 Vite dev server 代理转发到网关(`vite.config.ts`,网关地址从环境变量 `GATEWAY` 读取),网关未配跨域头也不受影响
- **大响应性能**:`/api/log/token` 1000 条日志(pretty-print 2~4MB、约两万行)由 `json-text-view.vue` 虚拟滚动渲染——DOM 恒定 ~40 行,语法高亮仅对可视区行执行
- **请求语义**:纯手动触发(TanStack Query `enabled` 门控 + `refetch`),`staleTime: Infinity`,切 tab 不自动重发;queryKey 为 `['endpoint', path, skKey]`,换 key 即新查询
- **tab 状态**:Pinia(开/关/激活/拖拽重排 + 每 tab sk-key,Postman 语义);面板随 tab 切换卸载重建,sk-key 由 store 持有所以输入保留,响应数据由 Query 缓存兜底恢复;t-tabs 用官方 `list` prop 数据驱动(插槽 panel 在动态增删下与数据脱钩,是已踩过的坑)
## 已知边界
- `useClipboard` 在非 https 环境(如 http://localhost)自动降级 `execCommand`
- `/v1/models/:model` 单模型详情接口未纳入(数据源是硬编码静态表,与 `/v1/models` 不一致,无调试价值)
## 部署(开发机构建 + 服务器轻构建运行)
构建在开发机完成(四绿验证后的 dist 才是部署物),服务器只做镜像 COPY + 起容器,
不需要任何构建工具链。
```bash
# —— 开发机 ——
bun run build # 得到 dist/(此时已过 test/type-check/lint)
# SFTP 上传四个部署物到服务器同一目录:
# dist/ Caddyfile compose.yaml Dockerfile
# (.env 不上传,GATEWAY 在服务器上以 .env 或环境变量提供)
# —— 服务器(目录内需有 .env,内容为 GATEWAY=https://…)——
docker compose up -d --build # 首次:拉 caddy 镜像 + COPY 产物起容器,秒级
# 浏览器打开 http://<服务器IP>:8080
# —— 常规更新(开发机)——
bun run build # 重新构建
# SFTP 覆盖 dist/
docker compose up -d --build # 服务器上重新 COPY + 替换容器
```
- Caddy 承担与 dev 代理相同的职责:静态文件 + `/api`、`/v1` 转发到 `$GATEWAY` + SPA fallback
- 换网关:改服务器上的 `.env` 后 `docker compose up -d --force-recreate`(无需重新 build)
- 暴露公网时把 `Caddyfile` 的 `:80` 改为域名,Caddy 自动签发 HTTPS 证书
- `compose.yaml`(Compose 规范标准文件名)里 `GATEWAY` 为必填(未设置时启动即报错,不会带错误配置运行)
## 文档
- 交互与技术决策:`docs/bench交互设计文档.md`
- 施工计划与验收记录:`docs/bench实施计划.md`
- 接口数据源:`docs/NewAPI-sk-key接口文档.md`