PATCH-UPGRADE/viper
GitHub: PATCH-UPGRADE/viper
VIPER 是一个面向医疗保健领域的漏洞管理平台,支持定义医疗工作流并在其上模拟网络安全事件,帮助机构评估和提升安全响应能力。
Stars: 2 | Forks: 0
# 欢迎使用 Viper
Viper 是 PATCH 团队的漏洞管理平台(VMP)。
- 定义医疗保健工作流
- 在这些工作流上模拟网络安全事件。
## 工单跟踪
我们使用 [Northeastern PATCH Jira](https://northeastern-patch.atlassian.net/jira/software/projects/VW/boards/67) 来跟踪工单/进度。
## 快速开始
请查看 `docs` 文件夹以及 `CLAUDE.md` 下的文档。
按照 `.env.example` 中的指南创建一个 `.env` 文件。
安装 `mprocs` 以运行多个服务:
```
npm install -g mprocs
```
安装依赖项:
```
npm i
```
运行 mprocs:
```
mprocs
```
## 数据库填充
该项目包含一个填充脚本,用于使用示例数据填充数据库,以供开发和测试使用。
### 如何填充:
```
npm run db:seed
```
该填充脚本将:
1. 检查种子用户是否存在(如果需要则创建)
2. 填充 20 个属于该种子用户的逼真医院资产
如果你还想要一个临时(24 小时)的测试 API key,请运行:
```
npm run db:create-test-api-key
```
### 可选:在填充前清空数据库
```
SEED_CLEAR_DB=true npm run db:seed
```
⚠️ **警告:** 这将在填充前删除所有现有的资产和资产设置!
### 填充后登录
填充完成后,你可以使用以下凭据登录:
- Email: `user@example.com`
- 密码:(阅读填充脚本)
- 在生产环境中,只有与白名单域名关联的账户才能进行身份验证。该白名单存在于 Vercel 的环境变量中。
## 技术栈
- React 框架:Next.js
- 路由:Next.js App Router
- 数据获取/缓存:Tanstack
- 样式:Tailwind
- 队列:inngest
- 数据库:PSQL
- ORM:prisma
- RPC:tRPC
- API 验证:Zod
- 测试框架:Vitest
- API 测试:Supertest
- 代码检查工具:biome
## 数据库
运行 `npx prisma studio` 查看数据库,通常位于 `http://localhost:5555`
### 手动迁移部署
1. 运行 `npx prisma migrate status` —— 应该会提示你有一个已生成但尚未应用的迁移
2. 将你的 `DATABASE_URL` `.env` 文件更改为与你的 Vercel 预览/生产环境关联的 URL
- 你可以通过访问我们的 Vercel viper 项目页面 -> Storage -> neon-vmp-db 找到它
- 点击“show secret”
3. 使用 `npx prisma studio` 验证你是否使用了正确的 `DATABASE_URL`。只需确保条目看起来一致即可
4. `npx prisma migrate deploy`
5. 遇到错误了?犯了错误?你可以在 Neon 控制台中恢复我们的 Neon 数据库(通过 Vercel -> neon-vmp-db -> Open in Neon 访问)
- 进入“Backup & Restore”,选择一个要恢复的时间(通常只需选择几分钟前即可)
- 查看 [Prisma 失败迁移文档](https://www.prisma.io/docs/orm/prisma-migrate/workflows/patching-and-hotfixing#failed-migration)
你也可以先使用你的 Vercel 预览环境尝试此过程,然后再在主分支上尝试。然而,有时 *main* 可能比你的预览环境有更多的迁移(例如,你创建了一个分支,而在那之后其他人创建了一个带有迁移的分支,并抢在你之前将其合并到了 main 中),所以这并不总是有效。
## 测试
要使用 Vitest 运行测试,请使用 `npm run test`。
你需要手动导出你的 `API_KEY` 环境变量来测试 API。
你可以在 `/user/settings` 下找到你的 API key。
## 代码检查
要检查 lint 错误,请使用 `npm run lint`。
要让 biome linter 进行更改,请使用 `npm run format`。
标签:GPT, PostgreSQL, Prisma, Web平台, 医疗IT, 工作流模拟, 测试用例, 漏洞管理, 自动化攻击