AI 與新進工程師 · 系統完整交接文件與故障防護 SOP
📌 v10.3 FINAL · 2026-10-07 · BBS 標準化套件 + YouTube Analytics + 緊急部署上線

1. 🦞 系統人格與核心設定

身份定位:

🖥️ 雙機架構(v10.3 更新)

機器電腦名稱類型定位Pythonopenai
聯想AHPAL-LENOVOLenovo IdeaPad 83K1主力機(工作室)3.12.143.14.1
戴爾DESKTOP-AKLAM99Dell Latitude 5320外出機(移動使用)3.14.62.45.0
⚠️ 戴爾 Latitude 5320 特殊注意:

支援 S0 現代待機(Modern Standby),無法真正關機。強制關機需按電源鍵 10 秒,或使用 shutdown /s /f /t 0。建議改用「休眠」(shutdown /h)。

2. 📊 系統狀態總覽(v10.3 · 2026-10-07)

📰 主站(ahpal-static)

8,174
總文章數(目錄實掃)
7,688
JSON 登記
12
分類
16,684
總檔案數
1,048 MB
總大小
380
遊戲款數

📚 小說站(ahpal-novels)

20
部小說
3,300
章節
4,721
Hugo 總頁數
24.963 GB
聯想鏡像大小

🏛️ UCHome 紀念館 A(ahpal-memories)

3,712
位會員
31,635
篇日誌
6,564
本相簿
11,409
檔案數
🎯 網址: memories.ahpal.com|部署:Cloudflare Workers|最新 HEAD:be7c4e59

🆕 BBS2 紀念館 B(ahpal-memories-bbs2)

55
版塊
12,014
主題
50,513
帖子
12,129
檔案數
🎯 網址: memories.ahpal.com/bbs2/|部署:Cloudflare Workers|最新 HEAD:7ced881

🌐 網域與 DNS

項目值
主網域ahpal.com
註冊商✅ Cloudflare, Inc.
到期日2029-04-07
DNS 代管clayton.ns.cloudflare.com / princess.ns.cloudflare.com
DNSSEC✅ 已啟用
SSL/TLS✅ Full (Strict)
HSTS✅ 1 年 + preload
主站ahpal.com / www.ahpal.com → Cloudflare Pages
小說站novels.ahpal.com → Cloudflare Workers
紀念館 Amemories.ahpal.com → Cloudflare Workers
紀念館 B(BBS2)memories.ahpal.com/bbs2/ → Cloudflare Workers

3. 🆕 三大標準化套件(v10.3 新增)

📦 bbs-pipeline(BBS 標準化)

🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\bbs-pipeline\
GitHub: praystone/AHPAL-SystemTools(commit abe2f60)

🏗️ 三層架構

Layer 3:站點配置(stations.json) - 儲存所有站點的路徑、Remote URL、Loader Base、FID 與清洗欄位 Layer 2:流程編排(run-pipeline.ps1) - 主控腳本:讀取 Config 並依序調用 Layer 1 工具 - 實作「失敗即停(Fail-Fast)」與各階段驗證機制 Layer 1:原子工具(tools/) - Python: clean-fields.py, split-json.py, verify-integrity.py - PowerShell: backup-repo.ps1, deploy-repo.ps1 - 每個工具均可單獨離線執行與測試

🚀 五階段流程

階段工具驗證點
Phase 1 Backuptools/backup-repo.ps1產出帶時戳備份
Phase 2 Cleantools/clean-fields.py敏感欄位 = 0、PID 總數不變
Phase 3 Splittools/split-json.py單檔 ≤ 5 MiB、索引產生
Phase 4 Buildhugo --gc --minify編譯無 Error
Phase 5 Deploytools/deploy-repo.ps1本地 HEAD = 遠端 HEAD

📁 目錄架構

bbs-pipeline/ ├── stations.json 站點配置 ├── run-pipeline.ps1 主控腳本 ├── SOP.md 交接文件(4.9 KB) └── tools/ ├── backup-repo.ps1 ├── clean-fields.py ├── split-json.py ├── verify-integrity.py └── deploy-repo.ps1

⚡ 快速指令

用途指令
一鍵維運(A 站).\run-pipeline.ps1 -Station memories-a
一鍵維運(BBS2).\run-pipeline.ps1 -Station memories-bbs2
單階段執行.\run-pipeline.ps1 -Station memories-a -Phase Clean
單獨驗證python .\tools\verify-integrity.py --site-path "..."

📊 youtube-analytics(YouTube 數據分析)

🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\youtube-analytics\
用途: 分析 YouTube Studio 匯出 CSV,產出 HTML 報告
版本: v1.5

📁 目錄架構

youtube-analytics/ ├── config.json 配置檔 ├── run-youtube-report.ps1 主控腳本 ├── SOP.md 完整 SOP ├── README.md 快速上手 ├── data/ 放 CSV/ZIP ├── templates/ │ └── report.html HTML 模板(含主站導覽列) └── tools/ ├── analyze.py 核心分析 └── check-env.ps1 環境檢查

⚡ 快速指令

用途指令
一鍵產報告.\run-youtube-report.ps1
指定資料夾.\run-youtube-report.ps1 -CustomDataDir "C:\path\to\csv"
環境檢查.\tools\check-env.ps1

📊 首跑驗收基準(2026-10-07)

指標值
總觀看14,404
互動觀看4,336
淨訂閱+17(+18 / -1)
7 日觀看1,470
前 7 日觀看1,078

🚨 emergency-deploy(緊急部署)

🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\emergency-deploy.ps1
用途: Cloudflare Pages Git 自動部署失效時的戰備方案
版本: v2.0(含 DryRun)
專案名: ahpal-pages(已對齊)

⚠️ 使用原則

⚡ 快速指令

# 試跑(只檢查,不執行) .\emergency-deploy.ps1 -DeployPath "C:\Users\User\ahpal-static" -DryRun # 實際執行(會要求輸入 yes 確認) .\emergency-deploy.ps1 -DeployPath "C:\Users\User\ahpal-static"

📋 前置檢查項目

4. 🏗️ 六大 Repository 與部署架構

Repository路徑內容
praystone/ahpal-websiteC:\Users\User\ahpal-static主站
praystone/AHPAL-SystemToolsC:\Users\User\ahpal-AI-archive\system-tools系統工具 + 標準化套件
praystone/AHPAL-SyncC:\Users\User\Desktop\AHPAL-Sync企劃專案
praystone/ahpal-novelsC:\Projects\ahpal_backup\...\mysql\hugo_site小說站
praystone/ahpal-memories...\mysql\uchome_site紀念館 A
praystone/ahpal-memories-bbs2...\mysql\uchome_bbs2_site紀念館 B(BBS2)

🚨 部署架構(唯一正門)

# 主站 Git push → GitHub main → Cloudflare Pages 自動部署 → www.ahpal.com # 小說站 Git push → GitHub main → Cloudflare Workers 自動部署 → novels.ahpal.com # 紀念館 A Git push → GitHub main → Cloudflare Workers 自動部署 → memories.ahpal.com # 紀念館 B(BBS2) Git push → GitHub main → Cloudflare Workers 自動部署 → memories.ahpal.com/bbs2/
絕對禁止: npx wrangler pages deploy .(緊急時除外,見第 3 章)

5. 🔴 12 條董事長死命令

#死命令檢查方式
1文章變更後強制檢查.\scripts\preflight-check.ps1
2文章檔名強制使用英文自動強制轉換
3CSS 靜態資產保護main.css 禁止自動覆蓋
4文章清單集中管理master-articles.json
5設定 UTF-8 編碼.ps1 UTF-8 有 BOM、.json UTF-8 無 BOM
6首頁完整性create_default_index()
7禁止擅自精簡或改寫既有功能修復前備份、修復後對比
8不准用 PowerShell 7 才有的語法PowerShell 5.1 相容
9盡量用 PowerShell 直接修改腳本!一鍵完成多種任務!因為人類沒你們那麼多線程
10永遠使用 SYSTEM 帳戶排程LogonType: ServiceAccount
11SEO 四大件無 noindex.\scripts\seo-dashboard.ps1
12Production 部署唯一正門禁止 npx wrangler pages deploy .
⚠️ 死命令 12 的例外:緊急時可用 emergency-deploy.ps1(v2.0),但用完必須修復 Git 自動部署,恢復正常流程。

6. ⭐ 三大核心原則

  1. 永遠不依賴 main.py 的判斷邏輯 — 直接呼叫 article_generator.generate_article()
  2. 永遠使用 SYSTEM 帳戶排程 — LogonType: ServiceAccount
  3. 永遠先掃描目錄與檔案備份 — 確認缺失數量後再執行生成

7. 📂 重要檔案與路徑(v10.3)

用途路徑
主站專案目錄C:\Users\User\ahpal-static
Python 原始碼C:\Users\User\ahpal-static\src\
PowerShell 腳本C:\Users\User\ahpal-static\scripts\
全站文章 Master JSONC:\Users\User\ahpal-static\data\master-articles.json
環境變數 (.env)C:\Users\User\ahpal-env\.env(透過 symlink 連結到專案)
小說站 Hugo 專案C:\Projects\ahpal_backup\...\mysql\hugo_site
紀念館 A Hugo 專案C:\Projects\ahpal_backup\...\mysql\uchome_site
紀念館 B Hugo 專案C:\Projects\ahpal_backup\...\mysql\uchome_bbs2_site
BBS 標準化套件C:\Users\User\ahpal-AI-archive\system-tools\bbs-pipeline\
YouTube 分析套件C:\Users\User\ahpal-AI-archive\system-tools\youtube-analytics\
緊急部署腳本C:\Users\User\ahpal-AI-archive\system-tools\emergency-deploy.ps1
系統工具C:\Users\User\ahpal-AI-archive\system-tools\
雙機同步 LOGC:\Users\User\ahpal-AI-archive\system-tools\sync-logs\

8. ⚡ 快速指令(v10.3 更新)

用途指令
完整部署 / 主控台.\scripts\ahpal-master.ps1 → [1]
死命令預檢.\scripts\preflight-check.ps1
黃金備份.\scripts\backup-system.ps1 -Golden
Git 管理工具.\git-manager.ps1 v3.8(6 倉庫)
SEO 總控制台.\scripts\seo-dashboard.ps1
產線健康監控.\scripts\watch-pipeline.ps1 v3.1
批次生成(生活小常識).\scripts\auto-batch\auto-life-batch.ps1
批次生成(人生哲理).\scripts\auto-batch\auto-philosophy-batch.ps1
雙機同步(聯想端).\Start-SmbSync-Server.ps1 -WaitForClient
雙機同步(戴爾端).\Start-SmbSync-Client.ps1 -ServerIP "10.33.94.198"
AI 交接掃描.\scripts\ai-handover-scan.ps1 v10.2
BBS Pipeline 全階段.\run-pipeline.ps1 -Station memories-a
BBS Pipeline 單階段.\run-pipeline.ps1 -Station memories-a -Phase Clean
YouTube 一鍵產報告.\run-youtube-report.ps1
緊急部署(試跑).\emergency-deploy.ps1 -DryRun

9. 🛡️ 防錯守則(v10.3 完整版)

  • JSONDecodeError 炸裂: 立即回滾 master-articles.json
  • API Key 失效或超額: 檢查 .env
  • 排程未自動觸發: 檢查 Task 是否為 SYSTEM 權限
  • CSS 白底白字: 檢查 style/main.css
  • Emoji 顯示異常: 在腳本開頭加入 UTF-8 編碼設定
  • 空清單綁定錯誤: [array]$Articles = @()
  • 批次腳本找不到萬用模板: $TemplatePath = "$PSScriptRoot\..\lib\auto-batch-template.ps1"
  • Git Pull 衝突: 使用 .\git-manager.ps1 選 [P]
  • UTF-8 無 BOM: .json 用 System.Text.UTF8Encoding $false
  • PowerShell 5.1 相容性: #Requires -Version 5.1
  • 🚨 .env 部署防護: 不要用 wrangler pages deploy(緊急時除外)
  • 🚨 Cloudflare WAF: 確認「Block .env access」已啟用
  • Hugo 模板分離: layouts/index.html 與 layouts/_default/list.html 必須不同
  • .gitignore 補強: 加入 novels.bak-*/、旗袍/、backups/
  • 小說無標題 fallback: convert_to_hugo.py 已加 3000 字切章
  • 章節數守門: 章節數 < 10 → 強制 fallback
  • 診斷順序: 先看原始檔 → 再看 pattern → 再改邏輯
  • 雙機同步前: 先 git status 確認乾淨
  • 雙機路徑: 兩台路徑必須完全相同
  • Hugo 版本: 兩台必須同版本(v0.166.0 extended)
  • SMB 轉移後: 關閉共享,避免安全風險
  • .git 複製: 用 Robocopy,不用 git clone .
  • Python 套件安裝: 用絕對路徑 & "python.exe" -m pip install
  • 批次生成前: 確認 API Key 檢查通過
  • Responses API 失敗: 自動降級至 Chat API
  • 配圖 HTTP 500: Pollinations AI 重試 3 次
  • 網域轉移後: 確認 Cloudflare Registrar 狀態為 Active,並開啟 DNSSEC
  • Enom 遺留設定: Host Records 和 Email Settings 已不生效,可忽略
  • SSL/TLS 設定: 使用 Full (Strict),並開啟 HSTS + Always Use HTTPS
  • Redirect Rule: 裸域 301 到 www,排除 novels 子網域
  • watch-pipeline.ps1: 健康狀態只依「失敗數」判斷
  • 圖片進 Git: 網站圖片必須進 Git
  • backups/ 排除: .gitignore 加入 backups/
  • Wrapper 必須完整: 包含呼叫模板的邏輯
  • Wrapper 必須有 Read-Host: 右鍵執行才不會秒關
  • 先診斷再給腳本: 不確定就先問清楚
  • 分類要確認: life 和 philosophy 不要搞混
  • 模板路徑: $PSScriptRoot\..\lib\auto-batch-template.ps1
  • 雙機同步 SOP: 見第 10 章
  • 雙機同步 LOG: 自動寫入 sync-logs/,自動 push
  • 雙機同步排除清單: .sql、.git、public、resources、備份目錄
  • 雙機同步等待邏輯: 必須「曾經有過連線」才計算「無連線」
  • BBS 提取 SOP: 見第 13 章
  • BBS front matter: tid、fid、author、subject、dateline 欄位順序
  • BBS list.html: 用 eq .Parent.Section "" 區分頂層/子版塊
  • BBS 日期: 用 (time .Params.dateline).Format,不用 .Date
  • 🆕 BBS Pipeline 三層架構: 配置(stations.json)/ 編排(run-pipeline.ps1)/ 工具(tools/)
  • 🆕 新增站點: 只改 stations.json,不改程式
  • 🆕 大 JSON 拆檔: 單檔 ≤ 5 MiB,產出索引
  • 🆕 loader 多頁索引: 用 tid → [pg1, pg2] 陣列
  • 🆕 BBS loader 路徑: A 站 /data/、BBS2 /bbs2/data/
  • 🆕 wrangler.jsonc: 指向 ./public,代表 Workers 直服編譯產物
  • 🆕 commit 訊息: 用 ASCII 安全字元,避免 PowerShell 編碼亂碼
  • 🆕 YouTube Analytics CSV 辨識: 用「欄位數 > 10」排除圖表資料
  • 🆕 Emergency deploy 專案名: ahpal-pages(非 ahpal-static-app)
  • 🆕 .env 是 SymbolicLink: 非空殼,0 bytes 是正常的

10. 📋 新進工程師 CheckList(v10.3 FINAL)

  • ☐ 確認六大 Repository 全部可訪問
  • ☐ 確認 C:\Users\User\ahpal-env\.env 已建立(symlink)
  • ☐ 確認 Cloudflare Pages / Workers 綁定與自動部署
  • ☐ 測試執行 .\scripts\ahpal-master.ps1
  • ☐ 了解 Pollinations AI 配圖機制
  • ☐ 了解 SYSTEM 帳戶排程設定
  • ☐ 已閱讀 12 條死命令
  • ☐ 了解 BBS Pipeline 三層架構與五階段流程
  • ☐ 測試 .\run-pipeline.ps1 -Station memories-a -Phase Backup
  • ☐ 確認 bbs-pipeline 已進 AHPAL-SystemTools 版控
  • ☐ 了解 youtube-analytics v1.5 用法
  • ☐ 測試 .\run-youtube-report.ps1 -DryRun
  • ☐ 了解 emergency-deploy v2.0 戰備流程
  • ☐ 測試 .\emergency-deploy.ps1 -DryRun
  • ☐ 確認聯想為主力機,戴爾為外出機
  • ☐ 確認兩台機器 Hugo 版本一致(v0.166.0 extended)
  • ☐ 測試 ssh -T [email protected] 回 Hi praystone!
  • ☐ 確認四個站點線上回 200
  • ☐ 確認 memories.ahpal.com/bbs2/ 線上回 200
  • ☐ 確認 Python 套件已安裝(requests / openai / google-genai / python-dotenv / pandas / matplotlib)
  • ☐ 確認 ahpal.com 註冊商為 Cloudflare
  • ☐ 確認 DNSSEC 已啟用
  • ☐ 確認 SSL/TLS 為 Full (Strict)
  • ☐ 確認 HSTS 已啟用(1 年 + preload)
  • ☐ 確認紀念館 A HEAD = be7c4e59
  • ☐ 確認 BBS2 HEAD = 7ced881
  • ☐ 確認 bbs-pipeline HEAD = abe2f60
  • ☐ 確認 git-manager.ps1 v3.8 六倉庫
  • ☐ 確認 ai-handover-scan.ps1 v10.2
  • ☐ 確認 Cloudflare Pages 專案名為 ahpal-pages
  • ☐ 確認 .env 是 SymbolicLink 不是空殼