# DataOps Platform 发布包

本目录是 **生产一键部署发布包**，包含应用源码、配置模板、运维脚本与部署文档。部署人员无需克隆完整 Git 仓库，上传本目录或打包后的 `tar.gz` 即可部署。

---

## 目录结构

```text
deployment/
├── app/                         # Flask 应用源码（与仓库 app/ 同步）
├── database/                    # PostgreSQL 初始化/迁移 SQL
├── config/                      # Nginx / Supervisor 配置模板
│   ├── nginx-dataops-platform.conf
│   └── supervisor-dataops-platform.conf
├── scripts/                     # 运维脚本（启停、重启、诊断）
│   ├── dataops-common.sh        # 公共函数
│   ├── deploy_dataops.sh        # 已安装后的增量部署（可选）
│   ├── run_dataops.sh           # Supervisor 启动 Gunicorn
│   ├── start_dataops.sh
│   ├── stop_dataops.sh
│   └── restart_dataops.sh
├── dataops.env                  # 生产环境变量模板（首次部署复制到 /etc）
├── .env.production.example      # 环境变量说明副本
├── requirements.txt             # Python 依赖（固定版本）
├── wsgi.py                      # Gunicorn WSGI 入口
├── gunicorn_config.py           # Gunicorn 配置（含日志初始化）
├── deploy_dataops.sh            # ★ 一键部署入口
├── sync_release.sh              # 开发侧：从仓库同步最新代码到本目录
├── package_release.sh           # 开发侧：打包 tar.gz
├── README.md                    # 本文件（快速开始）
├── DEPLOYMENT_GUIDE.md          # 完整部署与运维手册
├── CHECKLIST.md                 # 部署前后检查清单
└── MANIFEST.md                  # 文件清单与版本说明
```

---

## 快速部署（3 步）

### 1. 上传到 Ubuntu 服务器

```bash
# 方式 A：直接上传 deployment/ 目录
scp -r deployment/ ubuntu@your-server:/tmp/dataops-platform

# 方式 B：使用打包文件（开发机先执行 package_release.sh）
scp dist/dataops-platform-release-*.tar.gz ubuntu@your-server:/tmp/
ssh ubuntu@your-server 'cd /tmp && tar -xzf dataops-platform-release-*.tar.gz'
```

### 2. 首次部署（生成环境变量文件）

```bash
cd /tmp/dataops-platform   # 或解压后的 dataops-platform 目录
chmod +x deploy_dataops.sh scripts/*.sh
sudo bash deploy_dataops.sh
```

脚本会安装 `/etc/dataops-platform/dataops.env` 并 **退出**，提示编辑配置。

### 3. 填写配置后再次部署

```bash
sudo vim /etc/dataops-platform/dataops.env
# 必改: SECRET_KEY, DEEPSEEK_API_KEY, N8N_API_KEY
# 核对: DATABASE_URL, NEO4J_*, MINIO_*, API_BASE_URL

sudo bash deploy_dataops.sh
```

### 可选：同时配置 Nginx

```bash
sudo ENABLE_NGINX=1 \
  NGINX_SERVER_NAME=company.citupro.com \
  NGINX_LISTEN_PORT=18183 \
  bash deploy_dataops.sh
```

SSL 证书路径见 `config/nginx-dataops-platform.conf`，部署后按实际证书修改。

---

## 部署结果

| 项目 | 默认值 |
|------|--------|
| 应用目录 | `/opt/dataops-platform` |
| 环境变量 | `/etc/dataops-platform/dataops.env` |
| 监听地址 | `0.0.0.0:5500`（Gunicorn） |
| 进程管理 | Supervisor `dataops-platform` |
| 应用日志 | `/opt/dataops-platform/logs/flask_production.log` |
| Supervisor 日志 | `/var/log/supervisor/dataops-platform.log` |

---

## 日常运维

```bash
# 健康检查
curl http://127.0.0.1:5500/api/system/health

# 启停
sudo /opt/dataops-platform/scripts/start_dataops.sh
sudo /opt/dataops-platform/scripts/stop_dataops.sh
sudo /opt/dataops-platform/scripts/restart_dataops.sh

# 查看日志
tail -f /opt/dataops-platform/logs/flask_production.log
tail -f /var/log/supervisor/dataops-platform.log
```

---

## 开发侧：更新发布包

在仓库根目录执行：

```bash
bash deployment/sync_release.sh    # 同步 app/、database/、scripts/ 等
bash deployment/package_release.sh # 生成 dist/dataops-platform-release-YYYYMMDD.tar.gz
```

---

## 详细文档

- [DEPLOYMENT_GUIDE.md](./DEPLOYMENT_GUIDE.md) — 完整部署手册（依赖、配置项、故障排查）
- [CHECKLIST.md](./CHECKLIST.md) — 部署检查清单
- [MANIFEST.md](./MANIFEST.md) — 发布包文件说明

---

## 外部依赖（需提前安装）

| 服务 | 说明 |
|------|------|
| Python 3.11 | 含 venv、pip |
| Supervisor | 进程守护 |
| PostgreSQL 14+ | 关系数据库 |
| Neo4j 5.x | 图数据库 |
| MinIO | 对象存储 |
| n8n | 工作流（可选 API） |
| Nginx | 反向代理（可选） |
| DeepSeek API | LLM 翻译、DDL 解析等 |

脚本会自动安装 `python3-venv`（Ubuntu apt），其余服务需运维提前部署并保证网络可达。
