# 宇之然内容创作平台

一个轻量级的管理平台，用于监控和操作内容生产流水线。

## 快速开始

### 1. 环境准备

```bash
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/platform

# 创建虚拟环境（推荐）
backend/venv/bin/python -m venv backend/venv  # 若不存在
source backend/venv/bin/activate

# 安装依赖
pip install -r backend/requirements.txt
```

### 2. 启动服务

```bash
# 方式一：使用启动脚本（推荐）
./run.sh 8000

# 方式二：手动启动
cd backend
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```

### 3. 访问

- **界面**: http://localhost:8000/
- **API文档**: http://localhost:8000/docs
- **系统状态**: http://localhost:8000/api/system/status

## 核心功能

| 功能 | 描述 |
|------|------|
| 📊 仪表盘 | 选题总数、待发布数、今日生成 |
| 🔄 流水线控制 | 触发创作、合规优化、状态监控 |
| 📝 选题管理 | 列表、筛选、预览、发布 |
| 📦 发布包管理 | 生成多平台HTML发布包、复制 |
| 📋 日志查看 | creator/optimizer/collector 日志 |

## 与自动化流水线的集成

本平台位于 `platform/`，不修改原有 `automation/scripts/` 脚本。

**集成方式**：
- `backend/app/core/generator.py` 调用 `scripts/creator.py`
- `backend/app/core/optimizer.py` 调用 `scripts/compliance_optimizer.py`
- `backend/app/api/publisher.py` 调用 `scripts/publisher.py`
- 数据存储：`automation/data/` 为唯一数据源
- 同步：`sync.py` 将 JSON 选题同步到 SQLite 数据库供前端查询

**目录结构关系**：

```
yu-zhi-ran/
├── platform/                 # 管理平台（本目录）
│   ├── backend/app/
│   │   ├── core/generator.py → 调用 ../scripts/creator.py
│   │   ├── core/optimizer.py  → 调用 ../scripts/compliance_optimizer.py
│   │   └── api/publisher.py   → 调用 ../scripts/publisher.py
│   └── frontend/index.html    # UI
├── automation/
│   ├── data/                  ← 数据源（JSON）
│   │   ├── sustainability_topics.json
│   │   ├── drafts/
│   │   └── releases/
│   └── logs/                  ← 日志（creator, optimizer, publisher）
└── scripts/
    ├── creator.py             ← 被调用
    ├── compliance_optimizer.py
    └── publisher.py
```

## 配置

环境变量（可选）：

| 变量 | 说明 | 默认 |
|------|------|------|
| `PROJECT_ROOT` | 项目根目录 | 自动推导 |
| `DATA_DIR` | 平台数据库目录 | `platform/data` |
| `LOG_LEVEL` | 日志级别 | `INFO` |
| `ALLOWED_ORIGINS` | CORS允许的源 | `*` |

示例：
```bash
export PROJECT_ROOT=/path/to/yu-zhi-ran
./run.sh 8000
```

## 开发调试

```bash
# 检查依赖和环境
python check.py

# 查看 API 日志
tail -f automation/logs/creator_$(date +%Y-%m-%d).log

# 数据库初始化（首次）
cd backend
python -c "from app.database import init_db; init_db()"

# 手动同步数据（测试）
curl -X POST http://localhost:8000/api/system/sync/run
```

## 故障排查

| 症状 | 检查点 |
|------|--------|
| 前端显示无选题 | 1. `automation/data/sustainability_topics.json` 是否存在且包含 `status: \"待处理\"` 的数据<br>2. 点击"全量刷新"按钮 |
| 创作任务失败 | 1. 查看 `automation/logs/creator_*.log`<br>2. 确认 `scripts/creator.py` 可执行 |
| 发布包为空 | 1. 确认 `automation/data/releases/YYYY-MM-DD/` 下有对应平台的 HTML<br>2. 点击发布Tab → "重新生成" |
| 端口8000占用 | 停止其他 uvicorn 进程或 `./run.sh 8080` 改用其他端口 |

## 部署清单

- [x] FastAPI 后端（无 Docker，直接运行）
- [x] Vue 3 前端（CDN依赖，无需构建）
- [x] SQLite 数据库（`platform/data/yzr.db`）
- [x] 自动化流水线集成（subprocess 调用）
- [x] 数据同步模块（JSON ↔ SQLite）
- [x] 流水线状态监控面板
- [x] 日志查看功能
- [ ] 反向代理（Nginx）配置（如需外网访问）
- [ ] HTTPS（Let's Encrypt）
- [ ] 系统服务（systemd）

如需外网访问，建议配置 Nginx 反向代理和 HTTPS。

## 技术栈

- **后端**: FastAPI 0.115.0 + Uvicorn
- **前端**: Vue 3 + Element Plus
- **数据库**: SQLite 3
- **脚本**: Python 3 (subprocess)
- **样式**: Tailwind CSS (CDN)

## 文档

- 详细架构设计: `PORTFOLIO.md`
- 使用说明: 本文档
- API 文档: http://localhost:8000/docs (运行后)

---

**版本**: 0.1.0
**更新**: 2026-04-19
**维护**: 宇之然 AI 助手
