# 部署文档

## 本地部署

```powershell
cd C:\Users\CMC\Documents\code\lecture-ticket-system
$env:TICKET_HOST="0.0.0.0"
$env:TICKET_PORT="8080"
$env:TICKET_SECRET="<至少 32 字节的随机密钥>"
& "C:\Users\CMC\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" app.py
```

## HTTPS

生产环境建议使用 Nginx、Caddy 或云负载均衡终止 TLS，再反向代理到 `127.0.0.1:8080`。

应用也支持直接加载证书：

```powershell
$env:TICKET_SSL_CERT="C:\certs\fullchain.pem"
$env:TICKET_SSL_KEY="C:\certs\privkey.pem"
& "C:\Users\CMC\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" app.py
```

## 数据库

- 默认数据库：`data/tickets.sqlite3`
- 推荐定时备份：每天下载 `/api/backup/download` 或复制 `data/` 目录。
- SQLite 使用 WAL 模式，适合中小型活动的多检票口并发检票。
- 大规模部署可将 `tickets` 与 `checkin_records` 平滑迁移到 PostgreSQL，并保留当前 API。

## 生产建议

- 修改默认账号密码，或接入企业 SSO。
- 使用强随机 `TICKET_SECRET` 并妥善保存，丢失后旧二维码签名无法重新验证。
- 仅允许管理员访问后台制票与备份接口。
- 活动前让每台检票设备下载离线票库，活动后立即同步离线记录。
