171 lines
4.6 KiB
Markdown
171 lines
4.6 KiB
Markdown
# LLM Intelligence Hub - 部署指南
|
||
|
||
> 版本: v1.1
|
||
> 日期: 2026-05-14
|
||
> 适用版本: Phase 3 / Phase 5
|
||
|
||
相关文档:
|
||
|
||
- `README.md`:项目入口与常用命令
|
||
- `docs/CONFIGURATION.md`:环境变量与运行语义
|
||
- `docs/PRODUCTION_CHECKLIST.md`:上线前检查、发布与回滚
|
||
|
||
---
|
||
|
||
## 环境要求
|
||
|
||
### 硬件
|
||
- CPU: 1核+
|
||
- 内存: 512MB+
|
||
- 磁盘: 5GB+
|
||
|
||
### 软件
|
||
- Go 1.22+
|
||
- Node.js 20+
|
||
- PostgreSQL 16+
|
||
- Docker 或 Podman (可选)
|
||
|
||
---
|
||
|
||
## 快速开始
|
||
|
||
### 1. 克隆仓库
|
||
```bash
|
||
git clone <repo-url> llm-intelligence
|
||
cd llm-intelligence
|
||
```
|
||
|
||
### 2. 配置数据库
|
||
```bash
|
||
# 创建数据库
|
||
createdb llm_intelligence
|
||
|
||
# 运行迁移
|
||
psql llm_intelligence < db/migrations/001_phase1_core_tables.sql
|
||
```
|
||
|
||
### 3. 配置环境变量
|
||
```bash
|
||
export DATABASE_URL="host=/var/run/postgresql dbname=llm_intelligence sslmode=disable"
|
||
export OPENROUTER_API_KEY="your-api-key"
|
||
export API_AUTH_TOKEN="replace-with-long-random-token"
|
||
# 或者:export API_BASIC_AUTH_USER="review" && export API_BASIC_AUTH_PASS="replace-with-password"
|
||
export FEISHU_WEBHOOK="your-webhook-url" # 可选
|
||
export INTRADAY_DISCOVERY_SEARCH_PROVIDER="command_json" # 候选发现链路可选
|
||
export INTRADAY_DISCOVERY_LLM_PROVIDER="command_json" # 候选归纳链路可选
|
||
|
||
```
|
||
|
||
|
||
### 4. 启动后端
|
||
```bash
|
||
go run cmd/server/main.go
|
||
```
|
||
|
||
### 5. 启动前端 (开发)
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
### 6. 配置定时任务
|
||
```bash
|
||
crontab -e
|
||
# 正式日报调度
|
||
0 8 * * * cd /path/to/llm-intelligence && bash scripts/run_daily.sh >> /tmp/llm_hub_cron.log 2>&1
|
||
|
||
# 日内价格追踪(推荐每 4 小时一次)
|
||
0 */4 * * * cd /path/to/llm-intelligence && bash scripts/run_intraday_price_watch.sh >> /tmp/llm_hub_intraday.log 2>&1
|
||
|
||
# 日内新闻发现与验证(推荐每 2 小时一次)
|
||
0 */2 * * * cd /path/to/llm-intelligence && bash scripts/run_intraday_discovery_watch.sh >> /tmp/llm_hub_intraday_discovery.log 2>&1
|
||
|
||
|
||
# 真实采集 + 写库 + 报告生成的手动复跑入口
|
||
cd /path/to/llm-intelligence && bash scripts/run_real_pipeline.sh
|
||
```
|
||
|
||
|
||
---
|
||
|
||
## Docker 部署
|
||
|
||
```bash
|
||
# 构建
|
||
docker build -t llm-hub .
|
||
|
||
# 或 docker-compose
|
||
docker-compose up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 配置说明
|
||
|
||
| 变量 | 必填 | 说明 |
|
||
|------|------|------|
|
||
| DATABASE_URL | ✅ | PostgreSQL 连接串 |
|
||
| OPENROUTER_API_KEY | ✅ | OpenRouter API Key |
|
||
| API_AUTH_TOKEN | 条件必填 | 对外访问 `/api/*` 的 Bearer token |
|
||
| API_BASIC_AUTH_USER / API_BASIC_AUTH_PASS | 条件必填 | 对外访问 `/api/*` 的 Basic Auth 凭证 |
|
||
| API_RATE_LIMIT_PER_WINDOW | ❌ | `/api/*` 每窗口允许的请求数,默认 `60` |
|
||
| API_RATE_LIMIT_WINDOW_SEC | ❌ | `/api/*` 限流窗口秒数,默认 `60` |
|
||
| FEISHU_WEBHOOK | ❌ | 飞书告警 Webhook |
|
||
| REPORT_DATE | ❌ | 手工指定日内追踪/日报日期 |
|
||
| INTRADAY_DISCOVERY_SEARCH_PROVIDER / INTRADAY_DISCOVERY_LLM_PROVIDER | 条件必填 | discovery 链路 provider 类型;支持 `fixture` / `command_json` / `http_json` |
|
||
| INTRADAY_DISCOVERY_SEARCH_COMMAND / INTRADAY_DISCOVERY_LLM_COMMAND | 条件必填 | 当 provider 为 `command_json` 时执行的命令,stdout 必须输出 JSON |
|
||
| INTRADAY_DISCOVERY_SEARCH_URL / INTRADAY_DISCOVERY_LLM_URL | 条件必填 | 当 provider 为 `http_json` 时调用的接口 URL |
|
||
| INTRADAY_DISCOVERY_SEARCH_FIXTURE / INTRADAY_DISCOVERY_LLM_FIXTURE | ❌ | dry-run / 本地 fixture 输入 |
|
||
| INTRADAY_DISCOVERY_TIMEOUT_SEC | ❌ | discovery 与验证抓取超时秒数,默认 `20` |
|
||
| PORT | ❌ | API Server 监听端口,默认 8080 |
|
||
|
||
|
||
---
|
||
|
||
## 验证安装
|
||
|
||
```bash
|
||
# 健康检查(仅本机 / 私网)
|
||
curl http://localhost:8080/health
|
||
|
||
# API 鉴权
|
||
curl -H "Authorization: Bearer $API_AUTH_TOKEN" http://localhost:8080/api/v1/models
|
||
|
||
# 采集器测试
|
||
go run scripts/fetch_openrouter.go -strict-real
|
||
|
||
# 日报生成
|
||
go run scripts/generate_daily_report.go
|
||
|
||
# 运行门禁
|
||
bash scripts/verify_phase3.sh
|
||
bash scripts/verify_phase5.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### Q: 数据库迁移失败?
|
||
确保 PostgreSQL 已启动,且用户有创建表的权限。
|
||
|
||
### Q: 前端构建失败?
|
||
检查 Node.js 版本 >= 20,npm 版本 >= 10。
|
||
|
||
### Q: 采集器返回模拟数据?
|
||
`fetch_openrouter.go` 在非严格模式下会降级到模拟数据;正式调度和真实流水线默认要求 `OPENROUTER_API_KEY`、真实写库成功,并会把 `run_kind / trigger_source / is_official_daily` 写入运行审计。
|
||
|
||
### Q: 历史重建如何执行?
|
||
```bash
|
||
bash scripts/rebuild_historical_report.sh 2025-08-07
|
||
```
|
||
历史重建只会回填审计语义,不会冒充当天正式定时产出。
|
||
|
||
---
|
||
|
||
## 升级路径
|
||
|
||
- Phase 2: 告警订阅 / 用户系统 / 付费分析
|
||
- Phase 3: 多数据源 / 自动发现 / ELO评分
|