{"service":"openfilm-pipeline","stage":"skeleton+D1+verify+search+generate","workflow":"article-pipeline","cron":{"daily":"30 16 * * SUN-THU (UTC) = 北京周一至周五 00:30（DOW 用 Quartz 编号 1=周日…7=周六；周末另有 skipAuto 兜底）","heartbeat":"*/10 * * * *（超过 01:00 北京时间仍未跑成则自动补一次）","maintenance":"15 * * * *（轻量） / 0 20 * * *（深度）"},"providers":{"baidu":"已配置","tavily":"已配置","wikipedia":"无密钥兜底"},"llm":{"binding":"已绑定 Workers AI","mode":"gateway-byok","baseUrl":null,"model":null,"gatewayToken":"已配置","endpoints":[{"name":"deepseek","model":"deepseek/deepseek-chat","baseUrl":"https://gateway.ai.cloudflare.com/v1/fa305843035e65e5d86eb14ca912edcb/open/compat","viaGateway":true,"apiKey":"不需厂商key(BYOK)"},{"name":"mimo-pro","model":"custom-xiaomimimo/mimo-v2.5-pro","baseUrl":"https://gateway.ai.cloudflare.com/v1/fa305843035e65e5d86eb14ca912edcb/open/compat","viaGateway":true,"apiKey":"MIMO_API_KEY(已配置)"},{"name":"mimo","model":"custom-xiaomimimo/mimo-v2.6-flash","baseUrl":"https://gateway.ai.cloudflare.com/v1/fa305843035e65e5d86eb14ca912edcb/open/compat","viaGateway":true,"apiKey":"MIMO_API_KEY(已配置)"},{"name":"workers-ai","model":"workers-ai/@cf/zai-org/glm-5.3-flash","baseUrl":"https://gateway.ai.cloudflare.com/v1/fa305843035e65e5d86eb14ca912edcb/open/compat","viaGateway":true,"apiKey":"不需厂商key(BYOK)"}],"routes":{"draft":{"provider":"external","model":"*","endpoint":"deepseek"},"translate":{"provider":"external","model":"*","endpoint":"deepseek"},"fact":{"provider":"external","model":"*","endpoint":"deepseek"},"review":{"provider":"external","model":"*","endpoint":"deepseek"}}},"github":{"token":"已配置","repo":"Feirobot/openfilm-blog"},"endpoints":{"GET /plan?date=YYYY-MM-DD":"预览体裁与是否跳过","GET /search?q=关键词":"跑检索链（看降级到哪一级）","GET /check?zh=...&en=...":"机审自测（纯函数，含失败原因）","GET /parse?kind=fact|review&raw=<模型原始输出>":"裁决解析器自测（不花 token）","GET /review-text?zh=...&en=...&research=...":"对给定稿件跑事实审核+终审（花 token）","GET /verdicts?limit=10":"看最近裁决","GET /llm-check?stage=review":"模型通道自检；?endpoint=<name> 可指定端点，?stage= 验证阶段路由","GET /mdx-scan?text=...":"MDX 裸 < 安全自测（历史事故防线）","GET /prepare?instance=<id>":"对已有成稿做发布准备预览（不花 token、不写 GitHub）","GET /publications?limit=5":"看发布准备/提交记录","GET /pending":"人工待办（needs_manual 的文章 + 实例 id）","POST /decision?instance=<id>&action=approve|reject&note=...":"人工放行/驳回，唤醒等待中的工作流","POST /pending/close?instance=<id>":"关闭历史待办（可只关一条）","GET /notifications?limit=10":"看通知与裁决记录","GET /stats":"全局统计（各表计数 / job 结果分布 / 分阶段执行）","GET /timeline?instance=<id>":"单个实例的完整时间线（job/runs/drafts/verdicts/publications/incidents/通知）","GET /incidents?limit=10":"核验失败与自愈事故记录","GET /llm-stats?limit=10":"LLM 调用级观测（provider/model/耗时/字符数、按阶段聚合）","POST /ab-draft":"起草模型横评：{topic,endpoints:'deepseek,mimo,ark',words}","GET /github-check":"GitHub 推送通道自检（token 是否可用）","GET /refs-check?topic=&en=":"参考文献组装自检（中英两路检索 + 混合结果）","GET /mail-test?kind=success|fail|maint":"真发一封测试邮件（验收用）","GET /admin":"只读运维面板（浏览器打开，令牌只存本机）","POST /maintenance/run?depth=light|deep&inline=1":"手动跑一轮维护体检（inline=1 同步返回结果）","GET /maintenance/last":"最近一轮维护体检结果","GET /maintenance/proposals":"待人工批准的自我进化提案","POST /maintenance/decide?id=&action=approve|reject":"批准/驳回提案","GET /mail-preview?kind=success|fail|maint":"邮件模板预览（不发送）","POST /rework-images?instance=<原实例id>&date=YYYY-MM-DD":"配图重做：只重做配图并重新发布","GET /verify-run?slug=&base=":"手动核验一篇（base 可指向新站点，迁移期用）","GET /cron-status":"调度自检：现在该不该补跑（干跑）","GET /cron-events?limit=10":"调度器存活证据：最近几次 cron 触发记录","GET /selftest":"契约自检：调度/机审/裁决解析/发布准备的纯函数回归","GET /shadow?n=3":"影子对比：现网已发布文章 vs CF 产出（篇幅/结构/图表/链接）","GET /image-test?role=cover&prompt=...":"文生图自测（Workers AI → R2，返回公开 URL）","GET /images-run?instance=<id>&budget=1":"对已有成稿跑配图全链路（Brief→生图→R2）","GET /images?limit=5":"看最近的成品图记录","GET /drafts?limit=3":"看最近生成的成稿（截断预览）","POST /trigger?date=YYYY-MM-DD&topic=选题&q=检索词&words=600-900&slug=文章slug&delay=5":"手动跑一次","GET /status?id=<instanceId>":"查实例状态与完整输出","GET /tickets?limit=10":"看核验票据"}}