排序刻意按「你最可能修改的部分」在前:數據模型 → 類型接口 → 面向用戶內容。技術重構放最後、細節授權執行者。文末只有一個待決問題。
manifest、規則卡 provenance、目錄佈局
series 欄位單支影片入口會混入不同系列(【兆華艾綸說】已是實例)。新增單支時 --series 必填;掃播放清單自動填「哥有籌必爆」;既有 39 集一次性回填。不影響狀態機。
"p_Wi2Ma8Wlg": {
"series": "兆華艾綸說", // ★ 新增
"title": "…", "status": "extracted", …
}與影片 manifest 分離:工作單位不同(小節 vs 集)、失敗語意不同、鎖競爭隔離。安裝教學頁(p3–p7)建清單時直接不收錄(已拍板)。sha256 供教材改版偵測。
{ "docs": { "關鍵籌碼入門.pdf": {
"sha256": "…", "pages": 75,
"sections": { "4-2": {
"title": "判斷買進訊號:盤中出量個股",
"page_start": 63, "page_end": 64,
"status": "pending", // pending → extracted
"rule_cards": null, "extract_retry_count": 0 } } } } }影片卡加 source:"video" 與 series(既有 653 張回填)。教材卡的「時間軸」是頁碼;幻覺防線改為頁碼落在小節範圍內+頁面圖確實存在。其餘欄位兩線完全一致——這是階段 3 合併的基礎。
"provenance": {
"source": "doc",
"doc": "關鍵籌碼入門.pdf", "section": "4-2",
"page": 63, // 取代 timestamp
"page_image": "data/xiaoge/doc_pages/關鍵籌碼入門/p063.png",
"quote": "…",
"quote_verified": false // 誠實標示:無逐字稿可比對
}| 路徑 | 用途 | 版控 |
|---|---|---|
doc_manifest.json | 教材線狀態正本 | 進 |
doc_pages/<教材>/pNNN.png | 渲染圖(約 61MB) | gitignore(比照 frames/) |
doc_rule_cards/<教材>__<小節>.json | 教材規則卡 | 進 |
doc_notes/ | 教材線獨立手冊(階段 3 前不合併) | 進 |
函式簽名與 CLI——教材線比照影片線「一階段一腳本」
# 影片線:單支影片入口
# build_manifest.py --video URL --series 兆華艾綸說
def add_single_video(url: str, series: str) -> str # 回傳 video_id
# 教材線四支新腳本
build_doc_manifest.parse_sections(pdf) -> list[Section] # 解析 N-N. 標題
render_doc_pages.render_pages(pdf, out_dir, dpi=150) -> int
render_doc_pages.pages_complete(out_dir, expected) -> bool # 存在且非 0 byte
extract_doc_rules.extract_for_section(section, text, images, catalog, fn)
extract_doc_rules.validate_doc_card(card, section) -> bool # 頁碼範圍護欄
consolidate_doc_notes # 沿用 merge/sort/render,讀寫教材線目錄
# llm_config:視覺呼叫(同一把金鑰、同一個每日 100 次額度)
def gemini_complete_vision(prompt: str, image_paths: list[Path]) -> strskill 指令、回報格式、手冊出處樣式(名稱依 PM 原話)
| 指令 | 行為 |
|---|---|
/YT影片線-pipeline | 掃播放清單補新集數 → 五階段 → 固定格式回報 |
/YT影片線-pipeline <URL> | 新增單支(詢問系列名)→ 五階段 → 回報 |
/YT影片線-pipeline --status | 唯讀進度,不執行 |
金鑰偵測:GROQ_API_KEY 缺 → 只起地端 worker(不報錯中止);GOOGLE_API_KEY 缺 → 停在編織完成、明示萃取待金鑰。回報結尾固定附內容層複驗(空殼 0、空卡 0)。
| 指令 | 行為 |
|---|---|
/教材線-pipeline | docs/教材/ 全部 PDF → 建清單 → 渲染 → 萃取 → 彙整 |
/教材線-pipeline <PDF> | 單一教材 |
/教材線-pipeline --status | 唯讀進度 |
額度預算:全量約 28 次呼叫(入門 ~15 小節+進階 ~13 小節),一天 100 次上限內完成。
### 判斷買進訊號:盤中出量個股
- 條件:週轉率高且連量放大、均價乖離% 為正…
- 出處:📄 關鍵籌碼入門 §4-2 p.63([頁面圖](../doc_pages/…/p063.png))
⚠ 引文未經機器驗證(教材線無逐字稿可比對),點頁面圖人工核對只列要點,細節不佔用審閱時間
has_stock_reference/CATEGORIES,重複真的痛了再抽共用模組。DailyQuotaExceeded 必須攔在逐節容錯之前(影片線教訓)。lint_generated.py 詞彙表調整為本專案用語;渲染圖 gitignore。教材線萃取的 prompt 餵入影片線既有的 rule_id 目錄(選項 A)。