Files
delivery-desk/docs/operator-runbook.md
yuzhe b0c498fbb6 feat(auth): 添加认证模块和图片批注功能(项目初始化)
- 实现用户登录、登出、密码修改等认证功能
- 添加会话管理和权限控制中间件
- 创建图片批注组件和相关API路由
- 实现批注的增删改查功能
- 添加Docker和Git忽略配置文件
- 创建系统架构文档和开发约定说明
- 集成认证模块到前端应用路由中
2026-07-21 15:28:55 +08:00

71 lines
2.6 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.
# 部署与运维手册
## 环境变量
| 变量 | 必需 | 说明 |
|---|---|---|
| `NODE_ENV` | 是 | 正式环境设为 `production` |
| `PORT` | 否 | API 与生产静态站端口,默认 `3001` |
| `DATABASE_URL` | 正式环境 | PostgreSQL 连接串;缺省时使用 SQLite |
| `PGSSL` | 否 | 内网 PostgreSQL 可设为 `disable` |
| `PG_POOL_MAX` | 否 | 连接池上限,默认 `10` |
| `CORS_ORIGIN` | 公网分离部署 | 允许来源,多个值以逗号分隔 |
| `POSTGRES_PASSWORD` | Docker | `compose.yaml` 使用的数据库密码 |
| `COS_CONFIG_ENCRYPTION_KEY` | 正式环境 | 至少 32 字符的稳定随机密钥 |
| `INITIAL_ADMIN_USERNAME` | 首次初始化 | 平台管理员账号,默认 `admin` |
| `INITIAL_ADMIN_DISPLAY_NAME` | 首次初始化 | 平台管理员显示名 |
| `INITIAL_ADMIN_PASSWORD` | 首次初始化 | 空 PostgreSQL 必须提供的临时密码 |
真实环境变量只放在部署平台或未提交的 `.env` 中。
## 部署
```bash
cp .env.example .env
# 编辑 .env 后:
docker compose up -d --build
```
在 HTTPS 反向代理后公开应用。不要直接提交 TLS 私钥、数据库文件、`.env``data/``uploads/`
## 冒烟检查
```bash
curl http://127.0.0.1:3001/api/health
docker compose ps
docker compose logs --tail=100 app
```
健康接口应返回 `success: true`,且正式环境的 `database` 应为 `postgres`
## COS 配置
1. 使用平台管理员进入“平台管理 → 腾讯云 COS”。
2. 填写地域、带 APPID 的存储桶名、公开访问域名、可选 CDN 域名、路径前缀及密钥。
3. 保存后执行连接测试。
4. 测试通过后启用配置。
连接测试会真实执行一次上传、读取和删除,因此密钥至少需要目标前缀的这三项权限。测试对象会尽力清理;请求中断时可检查 `<path-prefix>/.delivery-desk-check/` 是否残留临时文件。
COS 使用公开 URL。必须关闭桶列表功能并使用不可枚举对象名拿到 URL 的人可以直接访问文件。
## 数据备份与恢复
- PostgreSQL 使用托管备份或定期 `pg_dump`,恢复流程需在预发布环境演练。
- COS 开启版本控制或生命周期策略前先评估成本。
- 本地 SQLite 的 `data/` 只用于开发,不作为正式备份方案。
- `COS_CONFIG_ENCRYPTION_KEY` 必须与数据库备份一同安全托管;遗失后无法解密已保存的 COS 凭证。
## 发布前检查
```bash
pnpm install --frozen-lockfile
pnpm check
pnpm lint
pnpm build
pnpm test:postgres-runtime
```
正式切换前还应验证管理员首次改密、客户访问门禁、COS 上传、客户批注与验收、数据库备份及 HTTPS Cookie。