Sign inSign up

rwnode/nqsee

By rwnode

•Updated about 1 month ago

NodeQuality 性能测试报告阅读器 (Vue 3 + Node.js 零外部依赖容器)

Image
0

74

rwnode/nqsee repository overview

⁠nqsee

NodeQuality 报告阅读器。读取 nodeseek tabs 格式的 NodeQualityResult.md,以文档阅读的方式呈现服务器性能测试报告。

  • 左侧目录栏 + 右侧阅读区的文档式布局
  • 报告按章节平铺渲染,顶部章节导航支持滚动定位(scroll-spy)
  • ansi 终端输出彩色渲染(终端窗口样式)
  • 图片渲染与本地缓存改写,点击查看原图
  • 同名报告按日期归档,阅读区顶部可切换版本
  • 浅色 / 深色主题,跟随系统并记忆选择
  • 支持上传、重新缓存、删除报告

⁠目录结构

nqsee/
  server/                   # 后端(Node.js 原生 http,零依赖)
    index.js                # 入口:路由分发
    api.js                  # /api/reports 系列接口
    static.js               # 静态资源(web/dist + public/reports)
  web/                      # 前端(Vue 3 + Vite)
    src/
      api/client.js         # 接口封装
      store/index.js        # 全局状态
      markdown/engine.js    # 章节解析、marked/DOMPurify/ANSI
      markdown/enhance.js   # 终端窗口、图片路径改写
      components/           # SideBar / ReportView / ToastStack / DeleteDialog
      styles/main.css
    dist/                   # 构建产物
  public/
    reports/                # 报告数据目录
      index.json
      <报告名>/
        report.md
        2026-05-15.md
        *.webp
  scripts/                  # 清单生成、webp 缓存、报告时间解析
  docker-compose.yml
  nginx.conf

⁠API

GET    /api/reports                    # 报告清单(同 index.json 结构)
POST   /api/reports                    # 上传报告(X-File-Name 头,body 为 md 内容)
POST   /api/reports/cache?path=<路径>  # 重新缓存远程 webp
DELETE /api/reports?path=<路径>        # 删除指定日期归档

上传限制:最大 10MB,文件名需为 .md,内容必须包含 ::: tab-item。

⁠接口鉴权 (安全防护)

服务支持通过环境变量 AUTH_TOKEN 保护写入与删除接口:

# 启动时配置鉴权 Token
AUTH_TOKEN="your-secret-token" node server/index.js

配置 AUTH_TOKEN 后,所有 POST / DELETE 接口均需携带以下任意一种凭证,否则返回 401 Unauthorized:

  • 请求头 Authorization: Bearer <AUTH_TOKEN>
  • 请求头 X-Auth-Token: <AUTH_TOKEN>
  • URL 参数 ?token=<AUTH_TOKEN>

未设置 AUTH_TOKEN 时默认运行在无鉴权兼容模式。建议暴露于公网时务必配置。

⁠前端开发

cd web
npm install
npm run dev      # 开发模式,代理 /api 和 /reports 到 127.0.0.1:8080
npm run build    # 构建到 web/dist

⁠本地运行

cd web && npm install && npm run build && cd ..
node server/index.js

访问:http://<服务器IP>:8080

⁠Docker 部署

只需一个 docker-compose.yml,在任意服务器即可一键启动(免安装 Node.js、免手动编译前端):

services:
  nqsee:
    image: rwnode/nqsee:latest
    container_name: nqsee
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - PORT=8080
      # - AUTH_TOKEN=your-secret-token # 可选接口密钥
    volumes:
      - ./public/reports:/app/public/reports

启动命令:

docker compose up -d

服务自动生成 public/reports/index.json,宿主机只需保留报告目录。Cloudflared 可指向 http://localhost:8080。

⁠更新报告

网页左上角点击"上传报告"选择 .md 文件。服务按"硬件质量体检报告"里的"报告时间"保存为 public/reports/<报告名>/YYYY-MM-DD.md(解析不到时用当前日期),随后自动缓存远程 .webp 并改写为本地路径。同名上传追加为新归档,不覆盖旧文件。

也可以手动放置报告后执行:

node scripts/build-report-index.js

⁠网页操作

  • 搜索:左侧边栏顶部搜索框,按报告名或路径过滤
  • 阅读:左侧点击报告,右侧按章节平铺展示;顶部章节导航可点击跳转,滚动时自动高亮当前章节
  • 版本切换:同名多份归档在报告标题下方切换
  • 重新缓存 / 删除:报告标题右侧按钮;删除需输入报告名确认
  • 主题:侧边栏右上角按钮切换浅色/深色

⁠常见问题

  • 页面空白或提示前端未构建:docker compose --profile build run --rm build,或本地 cd web && npm run build
  • 目录不显示:执行 node scripts/build-report-index.js,确认 public/reports/index.json 存在
  • 报告加载失败:确认 Markdown 包含 ::: tab-item
  • 缓存失败:报告头会显示失败数量,点"重新缓存"重试;IPv6-only 服务器需确认容器可用 NAT64/DNS64 或 host 网络

Tag summary

Content type

Image

Digest

sha256:b0192decd…

Size

55.1 MB

Last updated

about 1 month ago

docker pull rwnode/nqsee