- 新增常驻调度器 daily/scheduler.py + run-scheduler.ps1(定时生成/推送) - 新增 daily/bridge_manager.py:Windows 兼容的 Cursor SDK 桥接 - 新增 skills/daily-featured-pick 首推 Skill 与叙事轴/去重逻辑 - 新闻抓取窗口、GitHub 搜索、企微 delta 模式等多项改进 - 补充设计文档与 superpowers 计划/规范 - 新增对应测试(scheduler、featured_pick、github_search、news_fetch_window 等) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
44 lines
1.2 KiB
PowerShell
44 lines
1.2 KiB
PowerShell
# Start the daily report scheduler (generate @ 08:50, push @ 09:00 by default)
|
|
# Usage:
|
|
# .\run-scheduler.ps1
|
|
# .\run-scheduler.ps1 -DryRun
|
|
# .\run-scheduler.ps1 -Once
|
|
|
|
param(
|
|
[switch]$DryRun,
|
|
[switch]$Once
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$Root = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
Set-Location $Root
|
|
|
|
function Import-DotEnvFile {
|
|
param([string]$Path)
|
|
if (-not (Test-Path $Path)) { return }
|
|
Get-Content $Path -Encoding UTF8 | ForEach-Object {
|
|
if ($_ -match '^\s*#' -or $_ -notmatch '=') { return }
|
|
$pair = $_ -split '=', 2
|
|
if ($pair.Count -eq 2) {
|
|
$name = $pair[0].Trim()
|
|
$value = $pair[1].Trim().Trim('"').Trim("'")
|
|
if ($name -and $value) {
|
|
Set-Item -Path "Env:$name" -Value $value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Import-DotEnvFile (Join-Path $Root ".env")
|
|
Import-DotEnvFile (Join-Path $Root ".env.local")
|
|
|
|
$args = @("python", "-m", "daily", "schedule")
|
|
if ($DryRun) { $args += "--dry-run" }
|
|
if ($Once) { $args += "--once" }
|
|
|
|
Write-Host "Starting scheduler: $($args -join ' ')"
|
|
& $args[0] $args[1..($args.Length - 1)]
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "scheduler failed with exit code $LASTEXITCODE"
|
|
}
|