Files
llm-intelligence/DEPLOYMENT.md
phamnazage-jpg 475401bcbe
Some checks failed
CI / go-test (push) Has been cancelled
CI / scripts-regression (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / docker-build (push) Has been cancelled
feat(intraday): add discovery and verification watch pipeline
2026-05-27 18:54:32 +08:00

171 lines
4.6 KiB
Markdown
Raw Permalink 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.
# 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 版本 >= 20npm 版本 >= 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评分