refactor(claude): Phase B — momo CLAUDE.md 去重 + secrets.local.json
- CLAUDE.md V12.0: 移除與全域重複的 P7/P9/P10、三紅線、委派表、PUA/Loop Mode 保留 momo 專屬:環境索引、容器架構、診斷指令、CI/CD、PPT 系統、安全架構 - 新增 .claude/hooks/secrets.local.json: Telegram/Gemini/Gitea token 偵測 pattern 由全域 commit-quality.js 自動載入,補充 momo 環境的專屬保護 - 新增 .claude/skills/telegram-bot-menu-restoration.py (已存在,補 track) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
7
.claude/hooks/secrets.local.json
Normal file
7
.claude/hooks/secrets.local.json
Normal file
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{"pattern": "\\d{8,12}:[A-Za-z0-9_-]{35}", "label": "Telegram Bot Token"},
|
||||
{"pattern": "TELEGRAM[_\\s]*(?:BOT[_\\s]*)?TOKEN\\s*=\\s*[\"']?[^\\s\"']{20,}", "label": "Telegram Token 環境變數"},
|
||||
{"pattern": "GEMINI_API_KEY\\s*=\\s*[\"']?[A-Za-z0-9_-]{20,}", "label": "Gemini API Key"},
|
||||
{"pattern": "glpat-[a-zA-Z0-9_-]{20}", "label": "Gitea/GitLab PAT"},
|
||||
{"pattern": "GITEA[_\\s]*TOKEN\\s*=\\s*[\"']?[^\\s\"']{20,}", "label": "Gitea Token 環境變數"}
|
||||
]
|
||||
189
.claude/skills/telegram-bot-menu-restoration.py
Normal file
189
.claude/skills/telegram-bot-menu-restoration.py
Normal file
@@ -0,0 +1,189 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Telegram Bot 菜單恢復技能記憶
|
||||
|
||||
記錄 2026-04-20 的完整 Telegram Bot 菜單系統恢復工作
|
||||
包含完整的菜單架構、實作細節和最佳實踐
|
||||
"""
|
||||
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
# === 菜單恢復工作記憶 ===
|
||||
MENU_RESTORATION_MEMORY = {
|
||||
"work_date": "2026-04-20",
|
||||
"issue": "用戶回報 Telegram Bot 菜單功能缺失,原本6項簡單功能無法滿足業務需求",
|
||||
"root_cause": "telegram_bot_service.py 使用簡化版菜單,openclaw_bot_routes.py 包含完整7大類別系統",
|
||||
"solution": "恢復完整的三層菜單架構系統",
|
||||
|
||||
# === 完整菜單架構 ===
|
||||
"complete_menu_structure": {
|
||||
"main_menu": {
|
||||
"categories": 8, # 7大類別 + 使用說明
|
||||
"items": [
|
||||
"📊 業績查詢", "🏆 商品廠商", "🎯 目標管理",
|
||||
"📈 智能分析", "📄 簡報報表", "🌐 市場情報",
|
||||
"🔍 競品日報", "❓ 使用說明"
|
||||
]
|
||||
},
|
||||
|
||||
"submenus": {
|
||||
"sales": {
|
||||
"title": "業績查詢",
|
||||
"features": ["今日/昨日業績", "每週/每月/每季業績", "趨勢分析", "同期比較", "分類業績", "日期區間"],
|
||||
"callback_prefix": "cmd:sales, cmd:trend, cmd:history, cmd:compare, cmd:category, await:date_range_sales"
|
||||
},
|
||||
|
||||
"products": {
|
||||
"title": "商品廠商",
|
||||
"features": ["熱銷商品/廠商", "商品健康", "補貨預測", "分類鑽取", "指定日期"],
|
||||
"callback_prefix": "cmd:top, cmd:vendor, cmd:health, cmd:restock, menu:category, await:date_top"
|
||||
},
|
||||
|
||||
"goals": {
|
||||
"title": "目標管理",
|
||||
"features": ["達成率查看", "日/月/季/半年/年目標設定"],
|
||||
"callback_prefix": "cmd:goal, await:goal_daily, await:goal_monthly, await:goal_quarterly, await:goal_half, await:goal_yearly"
|
||||
},
|
||||
|
||||
"analysis": {
|
||||
"title": "智能分析",
|
||||
"features": ["策略矩陣", "業績趨勢", "商品健康", "促銷追蹤", "趨勢圖表", "同期比較"],
|
||||
"callback_prefix": "cmd:strategy, menu:trend, cmd:health, cmd:category, await:promo_range, cmd:restock, cmd:chart, cmd:compare"
|
||||
},
|
||||
|
||||
"reports": {
|
||||
"title": "簡報報表",
|
||||
"features": ["日報/週報/月報", "策略報告", "促銷效益", "競品比較", "成長趨勢", "廠商業績"],
|
||||
"callback_prefix": "cmd:ppt:daily, cmd:ppt:weekly, cmd:ppt:monthly, cmd:ppt:strategy, await:promo_range, menu:competitor, cmd:ppt:growth, cmd:ppt:vendor"
|
||||
},
|
||||
|
||||
"market": {
|
||||
"title": "市場情報",
|
||||
"features": ["電商新聞", "天氣", "Google熱搜", "Dcard口碑", "台銀匯率", "電商節慶", "YouTube爆紅商品", "AI學習狀態", "關鍵字比價", "圖片比價說明"],
|
||||
"callback_prefix": "cmd:news, cmd:weather, cmd:trends, cmd:dcard, cmd:exchange, cmd:calendar, cmd:youtube, cmd:learn, await:search_compare, cmd:photo_search_help"
|
||||
},
|
||||
|
||||
"competitor": {
|
||||
"title": "競品日報",
|
||||
"features": ["今日/昨日簡報", "週/月/季比較", "指定日期", "長週期比較"],
|
||||
"callback_prefix": "cmd:ppt:competitor, await:date_competitor, menu:competitor_ppt"
|
||||
},
|
||||
|
||||
"competitor_ppt": {
|
||||
"title": "競品PPT長週期",
|
||||
"features": ["半年比較", "年比較"],
|
||||
"callback_prefix": "cmd:ppt:competitor half, cmd:ppt:competitor yearly",
|
||||
"level": 3 # 第三層菜單
|
||||
},
|
||||
|
||||
"category": {
|
||||
"title": "分類業績鑽取",
|
||||
"features": ["15個完整商品分類"],
|
||||
"categories": [
|
||||
"美妝保養", "3C家電", "服飾配件", "居家生活", "母嬰用品",
|
||||
"生鮮食品", "圖書文具", "戶外運動", "餐券票券", "醫療保健",
|
||||
"美體保健", "寵物用品", "箱包精品", "車類百貨", "情趣用品"
|
||||
],
|
||||
"callback_prefix": "cmd:catdetail, cmd:category"
|
||||
},
|
||||
|
||||
"trend": {
|
||||
"title": "業績趨勢",
|
||||
"features": ["近7日/1月/3月/半年/1年", "指定月份/年份/季度"],
|
||||
"callback_prefix": "cmd:trend:7, cmd:trend:month, cmd:trend:quarter, cmd:trend:half, cmd:trend:year, await:date_trend_month, await:date_trend_year, await:date_trend_quarter"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
# === 關鍵發現 ===
|
||||
"key_discoveries": {
|
||||
"market_intelligence_expansion": "市場情報從原本4項擴展為10項完整功能",
|
||||
"three_layer_architecture": "建立主菜單 → 子菜單 → 特定功能的三層架構",
|
||||
"category_system": "完整的15個商品分類系統",
|
||||
"ppt_hierarchy": "競品PPT的第二層和第三層分離設計"
|
||||
},
|
||||
|
||||
# === 實作細節 ===
|
||||
"implementation_details": {
|
||||
"files_modified": [
|
||||
"services/telegram_bot_service.py"
|
||||
],
|
||||
"methods_added": [
|
||||
"_get_market_submenu", "_get_competitor_submenu", "_get_competitor_ppt_submenu",
|
||||
"_get_category_submenu", "_get_trend_submenu", "_handle_main_menu_callback"
|
||||
],
|
||||
"menu_layers": 3,
|
||||
"total_menu_items": 60, # 總計約60個菜單選項
|
||||
"callback_system": "menu: 前綴 + cmd: 前綴 + await: 前綴"
|
||||
},
|
||||
|
||||
# === 最佳實踐 ===
|
||||
"best_practices": {
|
||||
"menu_hierarchy": "清晰的層次結構,避免過深的嵌套",
|
||||
"naming_convention": "統一的 callback_data 命名規範",
|
||||
"back_navigation": "每個子菜單都包含返回主選單按鈕",
|
||||
"user_experience": "直觀的圖示和清晰的中文描述",
|
||||
"maintainability": "模組化的子菜單方法,便於維護"
|
||||
},
|
||||
|
||||
# === 驗證結果 ===
|
||||
"validation_results": {
|
||||
"main_menu_items": 8, # 從6項增加到8項
|
||||
"submenu_systems": 10, # 10個完整子系統
|
||||
"market_functions": 10, # 市場情報從4項擴展到10項
|
||||
"category_count": 15, # 15個商品分類
|
||||
"architecture_layers": 3, # 三層菜單架構
|
||||
"backwards_compatibility": True # 保持向下相容
|
||||
}
|
||||
}
|
||||
|
||||
def get_menu_restoration_memory():
|
||||
"""取得菜單恢復工作記憶"""
|
||||
return MENU_RESTORATION_MEMORY
|
||||
|
||||
def save_menu_restoration_memory():
|
||||
"""保存菜單恢復工作記憶到文件"""
|
||||
timestamp = datetime.now().isoformat()
|
||||
|
||||
memory_log = {
|
||||
"timestamp": timestamp,
|
||||
"memory": MENU_RESTORATION_MEMORY,
|
||||
"action": "telegram_bot_menu_restoration_2026_04_20"
|
||||
}
|
||||
|
||||
# 這裡可以加入保存到文件或資料庫的邏輯
|
||||
# 目前記憶已經在代碼中完整記錄
|
||||
|
||||
return memory_log
|
||||
|
||||
def get_menu_architecture_summary():
|
||||
"""取得菜單架構摘要"""
|
||||
memory = get_menu_restoration_memory()
|
||||
|
||||
summary = f"""
|
||||
=== Telegram Bot 菜單恢復工作摘要 ===
|
||||
日期: {memory['work_date']}
|
||||
問題: {memory['issue']}
|
||||
解決方案: {memory['solution']}
|
||||
|
||||
菜單架構:
|
||||
- 主菜單: {memory['complete_menu_structure']['main_menu']['categories']} 項功能
|
||||
- 子菜單系統: {len(memory['complete_menu_structure']['submenus'])} 個
|
||||
- 架構層次: {memory['implementation_details']['menu_layers']} 層
|
||||
- 總菜單項目: 約 {memory['implementation_details']['total_menu_items']} 項
|
||||
|
||||
關鍵成果:
|
||||
✅ 市場情報功能擴展: 4 → 10 項
|
||||
✅ 建立三層菜單架構
|
||||
✅ 完整15個商品分類系統
|
||||
✅ 向下相容性保持
|
||||
✅ 模組化實作便於維護
|
||||
|
||||
記憶檔案: {__file__}
|
||||
ADR記錄: ADR-015-telegram-bot-menu-restoration.md
|
||||
"""
|
||||
return summary
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(get_menu_architecture_summary())
|
||||
Reference in New Issue
Block a user