88b7fbf409
Phase b:把 ingest 從手動直驅升級成真無人值守。drainer/ 是 workflow km_wiki_ingest_drain 的可部署執行體(Cloudflare Worker),復用已 live 的 arcrun-code/kbdb/graph、不改 cypher-executor。 - 兩觸發共用 processCard 核心:(A) cron drain(Gitea tree 列卡→游標後取一小批→ 逐卡處理→進游標→到底回捲;撐 5,083 檔);(B) Gitea push webhook→只處理 delta。 - 游標存 KBDB 一個 ingest_cursor entry(走 API、零建表)。冪等:未改卡 entry (page_name+content_hash)/triplet(uri+hash) 皆 skip,只有新/改卡真寫。 - src/usercode.ts 由 workflow.yaml parse_card.code 抽出(單一真相源 card-to-envelope.mjs)。 - 維持非-auto:wrangler.toml 的 cron trigger 預設註解(不自走),drain 走 POST /drain。 scheduled handler 已在 code,leo 過閘後取消註解即開自走。README 記部署/secret/webhook 設定。 已部署 leo21c:arcrun-km-wiki-drainer.leo21c.workers.dev。以 wrangler dev(本地 miniflare + .dev.vars token,非 secret 寫入)對 live 服務驗證:cron drain 冪等全 skip、游標前進+回捲、 webhook delta 只寫變更卡、三模式命中新卡。GITEA_TOKEN secret 需 leo 於互動模式設(auto 擋 secret 寫入)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
23 lines
842 B
TOML
23 lines
842 B
TOML
name = "arcrun-km-wiki-drainer"
|
||
main = "src/index.ts"
|
||
compatibility_date = "2025-02-19"
|
||
workers_dev = true
|
||
|
||
# ⚠️ 維持「非-auto」:預設不註冊 cron trigger(不自走排程、不無人值守亂寫)。
|
||
# drain 以 POST /drain 手動觸發(與 scheduled handler 同核心)。
|
||
# 要開自走 Phase 0 backfill:leo 過閘後,取消下面兩行註解再 deploy(scheduled handler 已在 code)。
|
||
# [triggers]
|
||
# crons = ["*/5 * * * *"]
|
||
|
||
[vars]
|
||
REPO = "Leo/notes"
|
||
REF = "main"
|
||
OWNER = "leo"
|
||
CARDS_ROOT = "system-dev/wiki/cards"
|
||
CODE_WORKER_URL = "https://arcrun-code.leo21c.workers.dev/"
|
||
KBDB_URL = "https://arcrun-kbdb.leo21c.workers.dev"
|
||
GRAPH_URL = "https://kbdb-graph-plugin.leo21c.workers.dev"
|
||
GRAPH_KEY = "leo"
|
||
BATCH_SIZE = "2"
|
||
# secret(wrangler secret put):GITEA_TOKEN(必),GITEA_WEBHOOK_SECRET(選)
|