customs-data / QUICKSTART.md
3v324v23's picture
Enhances platform with robust monitoring and notifications
4e22b4d
|
Raw
History Blame Contribute Delete
5.55 kB
# 海关数据系统 - 快速启动指南
## 前置要求
- Docker & Docker Compose
- Python 3.14+
- Git
## 1. 克隆项目
```bash
git clone <repository-url>
cd customs-data
```
## 2. 环境配置
```bash
# 复制环境变量模板
cp .env.template .env
# 编辑 .env,至少配置以下必需项:
# - DATABASE_URL
# - CLICKHOUSE_URL
# - ELASTICSEARCH_URL
# - REDIS_URL
```
### 可选配置(推荐)
```bash
# 配置至少一个告警渠道
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxx
# 配置邮件通知(用于导出和订阅)
SENDGRID_API_KEY=SG.xxx
NOTIFICATION_FROM_EMAIL=noreply@customs-data.com
```
## 3. 启动依赖服务
```bash
# 启动 PostgreSQL、ClickHouse、Elasticsearch、Redis
docker compose up -d db clickhouse elasticsearch redis
# 等待服务就绪(约30秒)
docker compose ps
```
## 4. 初始化数据库
```bash
# 创建 Python 虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 初始化数据库表
python init_db.py
```
## 5. 启动服务
### 方式一:Docker Compose(推荐)
```bash
# 启动所有服务(API、Worker、Scheduler)
docker compose up -d
# 查看日志
docker compose logs -f api worker
```
### 方式二:本地开发模式
```bash
# 终端 1:启动 API 服务
uvicorn apps.api.main:app --host 0.0.0.0 --port 8000 --reload
# 终端 2:启动 Celery Worker
celery -A packages.core.celery_app worker --loglevel=info
# 终端 3:启动 Celery Beat(定时任务)
celery -A packages.core.celery_app beat --loglevel=info
```
## 6. 验证服务
### 6.1 健康检查
```bash
# 基础健康检查
curl http://localhost:8000/api/v1/health/
# 完整健康检查(需要 API Key)
curl -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/health/full
```
### 6.2 查看 API 文档
打开浏览器访问:http://localhost:8000/docs
## 7. 运行测试
```bash
# 运行所有测试
pytest tests/ -v
# 运行特定测试
pytest tests/baseline/test_api_contracts.py -v
```
## 8. 数据同步示例
### 同步巴西数据
```bash
# 手动触发巴西数据同步
python -m apps.worker.run_brazil
# 或通过 API 触发(需要 API Key)
curl -X POST -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/admin/sync/brazil
```
### 历史回补
```bash
# 回补巴西 2023 年数据
python apps/worker/run_backfill.py BR 2023-01-01 2023-12-31
```
## 9. API 使用示例
### 9.1 搜索贸易记录
```bash
curl -X POST http://localhost:8000/api/v1/trade/search \
-H "Content-Type: application/json" \
-H "X-API-Key: dev_key_12345" \
-d '{
"source_country": "BR",
"product_name": "mobile phone",
"start_date": "2024-01-01",
"page": 1,
"limit": 20
}'
```
### 9.2 创建订阅
```bash
curl -X POST http://localhost:8000/api/v1/subscription/ \
-H "Content-Type: application/json" \
-H "X-API-Key: dev_key_12345" \
-d '{
"user_email": "user@example.com",
"target_hs_code": "851712"
}'
```
### 9.3 提交导出任务
```bash
curl -X POST http://localhost:8000/api/v1/export/ \
-H "Content-Type: application/json" \
-H "X-API-Key: paid_key_12345" \
-d '{
"country": "BR",
"start_date": "2024-01-01",
"end_date": "2024-12-31",
"email": "user@example.com"
}'
```
### 9.4 查询任务状态
```bash
curl http://localhost:8000/api/v1/export/status/{task_id} \
-H "X-API-Key: paid_key_12345"
```
## 10. 监控与告警
### 查看健康状态
```bash
# PostgreSQL 健康检查
curl -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/health/postgres
# ClickHouse 健康检查
curl -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/health/clickhouse
# Elasticsearch 健康检查
curl -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/health/elasticsearch
# 数据一致性检查
curl -H "X-API-Key: dev_key_12345" \
http://localhost:8000/api/v1/health/consistency
```
### 查看日志
```bash
# Docker 日志
docker compose logs -f api worker
# 本地日志文件
tail -f logs/app.log
```
## 11. 常见问题
### Q: PostgreSQL 连接失败
```bash
# 检查服务状态
docker compose ps db
# 重启服务
docker compose restart db
```
### Q: Elasticsearch 内存不足
```bash
# 增加 Elasticsearch 内存限制(docker-compose.yml)
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
```
### Q: Celery Worker 未启动
```bash
# 检查 Redis 连接
docker compose ps redis
# 查看 Worker 日志
docker compose logs worker
```
### Q: 测试失败
```bash
# 确保测试数据库初始化
TEST_DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5434/customs_data_test \
python init_db.py
# 重新运行测试
pytest tests/ -v --tb=short
```
## 12. 停止服务
```bash
# 停止所有服务
docker compose down
# 停止并删除数据卷(清空数据)
docker compose down -v
```
## 13. 下一步
- 查看 [开发完成总结](docs/开发完成总结.md) 了解系统功能
- 查看 [项目现状与未完成项梳理](docs/项目现状与未完成项梳理.md) 了解开发进度
- 查看 [国家与数据源接入清单](docs/国家与数据源接入清单.md) 了解数据覆盖
- 配置告警 Webhook 接收实时通知
- 配置 SendGrid 接收邮件通知
- 添加更多真实数据源连接器
## 14. 技术支持
- 文档:`docs/` 目录
- 测试:`tests/` 目录
- 示例:`temporary/` 目录
- 问题反馈:提交 Issue
---
**祝使用愉快!** 🎉