Initial commit

This commit is contained in:
2026-07-18 15:51:01 +08:00
commit f2c80c5a9c
799 changed files with 133475 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# 调度部署指南
## 推荐: macOS crontab (开发机首选)
```bash
# 安装定时任务
cd /Users/summer/Downloads/cc-projects/news
crontab deploy/crontab.example
# 验证
crontab -l
# 查看执行日志
tail -f logs/scheduler-cron.log
```
优点:
- 不依赖后台守护进程
- 每次执行独立,失败不影响下次
- 日志清晰可查
---
## 备选: Linux systemd (生产服务器)
```bash
# 1. 复制 service 文件
sudo cp deploy/a-share-research.service /etc/systemd/system/
# 2. 编辑 WorkingDirectory 和 User (按实际路径修改)
sudo nano /etc/systemd/system/a-share-research.service
# 3. 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable a-share-research
sudo systemctl start a-share-research
# 4. 验证
systemctl status a-share-research
journalctl -u a-share-research -f
```
注意:
- `SCHEDULE_TIMES` 在 .env 中配置
- 项目路径在 service 文件的 `WorkingDirectory` 中指定
- APScheduler 日志写入 `logs/scheduler.log`
---
## 备选: CLI 前台守护 (调试用)
```bash
# 启动前台守护(占用当前终端,Ctrl+C 退出)
uv run a-share pipeline
```
会按 .env 中的 `SCHEDULE_TIMES` 定时触发,直接输出日志到终端。
+24
View File
@@ -0,0 +1,24 @@
[Unit]
Description=A 股 Deep Research 定时调度
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/cc-projects/news
ExecStart=/home/pi/cc-projects/news/.venv/bin/python -m scripts.run_scheduler
Restart=always
RestartSec=30
# 日志
StandardOutput=append:/home/pi/cc-projects/news/logs/scheduler-stdout.log
StandardError=append:/home/pi/cc-projects/news/logs/scheduler-stderr.log
# 环境变量
Environment="PATH=/home/pi/cc-projects/news/.venv/bin:/usr/local/bin:/usr/bin:/bin"
Environment="TZ=Asia/Shanghai"
[Install]
WantedBy=multi-user.target
+41
View File
@@ -0,0 +1,41 @@
# A 股 Deep Research 定时调度 (crontab)
# 替代 APScheduler 守护进程,更简单可靠
#
# 安装: crontab deploy/crontab.example
# 查看: crontab -l
# 编辑: crontab -e
# 清空: crontab -r
#
# 日志: logs/scheduler-cron.log
SHELL=/bin/zsh
PATH=/usr/local/bin:/usr/bin:/bin
TZ=Asia/Shanghai
# 注意: 所有命令的 --date 使用 "" (cron 运行时自动取当天)
# ============================================================
# 每日 4 次定时任务
# ============================================================
# 07:00 — 首次抓取 + 日报
0 7 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share pipeline --once --report --steps crawler,extractor,dedup,llm,embedding,qdrant >> logs/scheduler-cron.log 2>&1
# 12:00 — 午间补充抓取(不含日报)
0 12 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share pipeline --once --steps crawler,extractor,dedup,llm,embedding,qdrant >> logs/scheduler-cron.log 2>&1
# 18:00 — 收盘后抓取(不含日报)
0 18 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share pipeline --once --steps crawler,extractor,dedup,llm,embedding,qdrant >> logs/scheduler-cron.log 2>&1
# 22:00 — 晚间抓取(不含日报)
0 22 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share pipeline --once --steps crawler,extractor,dedup,llm,embedding,qdrant >> logs/scheduler-cron.log 2>&1
# ============================================================
# cninfo 公告管道(每日 06:30,日报前)
# ============================================================
# 30 6 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share pipeline --cninfo-once >> logs/scheduler-cron.log 2>&1
# ============================================================
# 个股日报(每日 07:30,日报之后)
# ============================================================
# 30 7 * * * cd /Users/summer/Downloads/cc-projects/news && uv run a-share stock-report >> logs/scheduler-cron.log 2>&1