Files
resume-agent/docs/DEPLOY.md
T

51 lines
3.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.
# 部署说明(试点期)
## 结论:试点不需要容器编排
单台机器即可跑起完整服务:一个后端进程 + 一个 PostgreSQL + 前端静态文件。
后续接入 officeπ 主站时再按公司标准容器化(Dockerfile 可在那时补)。
## 组成
| 组件 | 形式 | 说明 |
|---|---|---|
| 后端 | `python -m uvicorn app.asgi:application --port 8000` | 单进程;试点量级无需多 worker |
| 数据库 | PostgreSQL5435 或公司实例) | `alembic upgrade head` 建表;存量 SQLite 用 `scripts/migrate_sqlite_to_postgres.py` 迁移 |
| 前端 | `npm run build``frontend/dist` | Nginx/静态托管;通过 `VITE_API_BASE_URL` 指向后端 |
## 环境变量(backend/.env
| 变量 | 必填 | 说明 |
|---|---|---|
| `OPENAI_API_KEY` | 是(AI 功能) | 兼容网关密钥;留空则全部走规则兜底(仅演示流程) |
| `OPENAI_BASE_URL` / `OPENAI_MODEL` | 是 | 网关地址与模型 |
| `DATABASE_URL` | 生产必填 | `postgresql+psycopg://user:pass@host:5435/resume_agent` |
| `RESUME_AGENT_TEST_DATABASE_URL` | 仅测试 | 测试库 |
| `RESUME_AGENT_CORS_ORIGINS` | 生产必填 | 逗号分隔的前端来源,接入 officeπ 时加其域名 |
| `RESUME_AGENT_INTENT_ROUTER_MODE` | 建议 `on` | 对话意图路由(off/shadow/on |
| `OFFERPAI_AUTH_REQUIRED` | 必须为 `true` | 强制每个 session 请求携带 OfferPai Token 并校验会话归属 |
| `OFFERPAI_AUTH_BASE_URL` | 必填 | OfferPai 登录鉴权与用户信息服务 Origin |
| `OFFERPAI_AUTH_TIMEOUT_SECONDS` | 建议 `8` | 登录鉴权与用户信息请求超时 |
| `OFFERPAI_RESUME_API_BASE_URL` | 必填 | C 端简历 API 根地址,例如 `https://test.offerpai.com.cn/api` |
| `OFFERPAI_RESUME_TIMEOUT_SECONDS` | 建议 `8` | C 端简历读写请求超时 |
## 安全红线(试点必须遵守)
1. **保持 OfferPai 鉴权开启**`OFFERPAI_AUTH_REQUIRED=true`。前端 Token 只保存在页面内存,所有 session、SSE、上传和简历编辑请求都必须携带 `Authorization: Bearer`;后端会校验 Token 用户与 session 绑定用户一致。
2. **不要设置** `RESUME_AGENT_DEFAULT_TIER=vip`:该开关会把所有会话默认提权(后门告警会打日志)。
3. **不要设置** `RESUME_AGENT_API_DOCS=1`:生产暴露 `/docs` 等于公开 API 结构。
4. 密钥只放 `.env`(已被 gitignore);仓库内不得出现明文令牌。
5. 简历文件含用户 PII`backend/data/`(上传件、SQLite)不得外传、不得提交。
6. `/?token=` 会被前端立即从地址栏移除,但首次请求仍可能进入 Nginx/CDN 访问日志;生产网关必须关闭 query string 日志或对 `token` 参数脱敏。
## C 端简历同步语义
- 初步资料完成后自动创建本地工作文档与 C 端简历,后续同步主表及教育、工作、实习、项目、竞赛五类经历。
- local DB 继续保存 FSM、revision、稳定子项 ID、候选稿、撤销和优化状态;C 端接口目前不能完全替代它。
- 双写不是分布式事务:本地修改先提交,远端失败时会记录同步失败并由后续请求补偿。调用方重试前应先刷新 timeline,不能假设 HTTP 同步错误代表本地未修改。
- 删除 session(前端“重新开始”)会同步删除已绑定的 C 端镜像;远端返回不存在按幂等成功处理。
## 健康检查
`GET /health` 恒返回 `{"status": "ok"}`,供探活。