# 开始之前

> 最终架构、合并修复与部署准备

# 1. 最终架构

```text
浏览器
  ↓ HTTPS
Nginx / 宝塔站点
  ↓ 可选但强烈推荐：Basic Auth
Graduate OS 登录
  ↓
Next.js 16 standalone
127.0.0.1:3000
  ↓
MySQL 8 + Prisma 6
```

论文 PDF：

```text
/www/wwwroot/graduate-os/storage/papers
```

必须通过登录后的受保护 API 下载，不能让 Nginx 直接公开 `/storage/`。

AI / Search：

```text
Graduate OS
  ├─ OpenAI Official
  ├─ OpenAI Compatible / Sub2API / 自定义中转
  ├─ SerpApi → Google Scholar API
  ├─ Crossref
  └─ OpenAlex
```

---


# 2. 最终发布包已经合并的修复

最终源码已经包含：

```text
Graduate-OS Phase 2 Final Source
+
Paper Radar Trial Hotfix
+
Paper Radar Relevance & Tags Hotfix
+
Paper AI Reliability Final Hotfix
+
实际生产服务器运行时修复
```

其中包括：

1. 后台 AI Provider / Search Provider 配置。
2. AES-256-GCM API Key 加密，`SECRET_ENCRYPTION_KEY` 只存在 `.env`。
3. OpenAI Official 与 OpenAI Compatible 分流。
4. Sub2API 作为 OpenAI Compatible 使用。
5. OpenAI Compatible JSON Object + 本地 JSON.parse + Zod 校验。
6. 修复第三方 `strict json_schema` 400 错误。
7. 长论文输入预算、章节优先、精简重试、少量分块与 524 超时处理。
8. AI 分析状态自动轮询，成功/失败无需手工 F5。
9. Paper Radar 清空结果、状态保持、分数排序、新获取 Badge、研究分类标签。
10. 秋招精简表单、面试联动、题库 DOCX/PDF 导入与练习。
11. `server-only` 已正式加入依赖，不再需要部署后手工补装。
12. PM2 已内置项目根 `.env` 加载。
13. PM2 已内置 `--dns-result-order=ipv4first`，解决真实部署中第三方中转 IPv6 被 Cloudflare 403 的情况。
14. `.env.example` 中 `AI_ENABLED` / `SCHOLAR_ENABLED` 已使用正确的 `true`。

---


# 3. 部署前准备

准备：

- Ubuntu 22.04 服务器
- 宝塔 Linux 面板
- 一个域名或子域名，例如 `xjtu.example.com`
- MySQL 8
- Node.js 22 LTS（建议 >= 22.13）
- PM2
- Nginx
- 最终源码 ZIP

推荐服务器：

```text
最低试运行：2C / 2G / 40G
推荐长期使用：2C / 4G 或以上
```

PDF 和 AI 分析会消耗内存；大量 PDF 时磁盘容量需要按实际增加。

---
