施工群 SAP / Richmenu 整合 — Phase 1

38 個施工群組 + 11 個內部員工 1on1 入口統一,SAP home menu 大瘦身
📅 2026-05-15 🧑‍💻 James + Claude SCOPE:施工群 only REVIEW
本份 review 收斂範圍:先做施工群(construction-group)+ 內部員工 1on1 入口。客戶 / 工班 / 供應商 menu 留後續 Phase,完整 vision 在 docs/superpowers/specs/2026-05-15-line-richmenu-sap-unification.md

1. 為什麼要改

現況痛點

#痛點
1新功能(SAP 行程提醒)剛上線,richmenu / keyword 都沒入口
2yes-assist richmenu 6 格全給 KB / 費用,但 38 群組工務需求藏在第二層 keyword
3SAP home menu 11 顆 quick reply 太密集,使用者要 scan 找按鈕
4「小元」這個 wake keyword 完全靠口耳相傳,沒人知道
5yes-assist 的「歷史費用 / 更多功能」、workerreport 的 3 個 postback 都死格

2. 設計原則

Richmenu退化為「進入點」,SAP做「主介面」。所有重邏輯交給 SAP,加新功能只改 SAP 後端不必重做 richmenu 圖檔。

3. 施工群 SAP Menu 設計 ⭐

Phase 1 | 群組 preset
construction-group
施工群組(元心 + 工班 + 業主混合,38 個群組)
Menu 主軸(4 顆 + 引導文字)
📋 工程總覽 | 📷 相關照片 | 📝 狀況回報 | 📅 行程安排
⤷ 其他細節(進度 / 工序 / 工班 / 本週安排 / 新增 / 編輯)全部交給用戶自然語言問答
⤷ QA agent 處理查詢、Action agent 處理寫入

新舊對照

舊版(11 顆,過於密集)

我已進入工務問答模式(5 分鐘)。可以直接問這個商機底下的工程、工序、進度、工班、日期或照片。
工程總覽 新增案場 新增工程 更新狀態 目前進度 未完成工序 本週安排 工班/師傅 相關照片 狀況回報 直接問

新版(4 顆 postback + 引導文字)

💬 進入小元模式(5 分鐘內持續)。
可直接打字問此案的工程進度、工序、工班、本週安排、人員、案場資訊等任何問題;或點下方快捷。
📋 工程總覽 📷 相關照片 📝 狀況回報 📅 行程安排

砍掉 8 顆的原因

按鈕性質新路徑
目前進度 / 未完成工序 / 本週安排 / 工班師傅查詢用戶直接打字問 → QA agent 用 LLM 回答
新增案場 / 新增工程 / 更新狀態寫入自然語言描述 → Action agent 解析(已支援)
直接問redundant進 QA mode 後本來就能直接打字

保留 4 顆的原因

postback 一鍵執行性質 — 一個 click 立即返回列表,比打字描述快得多。「📅 行程安排」為本次新增,方便群組查 / 加共用行程提醒。

3.5 每顆按鈕點下去的子層級

每個 postback 觸發後,bot 會回應 text 訊息 + 1 組新 quick reply。下表攤平整個 drill-down 結構,↩ 回上頁 標出可回上層的按鈕。

📋 工程總覽 postback: fxcrmCtx:list_constructions:{chatId}
🏗 「{商機名}」N 個工程 · X 完工 / Y 進行中 1. ✅ 拆除工程|A 棟(完工 03/15) 1.1 ✅ 拆除(03/10-03/15) 2. 🚧 玻璃工程|B 棟(進行中,3/5 完成 60%,剩 4 天) 2.1 ✅ 框架(03/14-03/17) 2.2 🚧 玻璃安裝(03/18-)← 進行中 2.3 ⏳ 收尾(03/20-03/22) ...
  • 看 X 工程 | 每工程 1 顆(最多 10 顆)→ 進工程詳情
    • text:工程詳情 + 工序欄位
    • 📷 看照片 → show_construction_photos:<consId>
    • 📤 上傳到此工程 → prepare_upload:construction:<id>(綁定下一張照片)
    • 🚨 狀況回報 → prepare_issue:construction:<id>(綁定下一張照片)
    • 💬 問 AI → 進 QA 模式
    • 回工程列表 ↩ 回上頁
  • 📷 看相關照片 → 進「相關照片」分支
  • 💬 問 AI → 進問答模式(QA mode 5 分鐘)
  • ↩ 回主選單(show_construction_menu:{chatId}↩ 回上頁
📷 相關照片 postback: fxcrmCtx:list_constructions_photos:{chatId}
📷 「{商機名}」媒體庫 點下方按鈕開啟,可看所有工程照片 / 檔案
  • 🔗 開啟媒體庫 → URI 跳轉到 LIFF(含 ?chatId=...
  • 💬 問 AI → 進 QA 模式
  • ↩ 回主選單 ↩ 回上頁
📝 狀況回報 postback: fxcrmCtx:report_status:{chatId}
📝 請直接上傳照片或附檔,並可加文字說明,我會自動歸類到狀況回報。
  • 無 quick reply 按鈕 — user 直接上傳媒體就好
  • 後端走 mediaTagging 自動分類流程(vision + binding)
  • 沒有「回上一頁」— 屬「等用戶傳檔」狀態,靠用戶下次 @ 小元 重啟
📅 行程安排(新加) postback: sap:group_schedules:{chatId} ⚠ 實作中
📅 「{商機名}」共用行程(未來 7 天) • 05/16 14:00 工地會勘 • 05/18 09:00 三驗 • 05/20 13:00 進料協調 ... (無行程則顯示:目前沒有共用行程提醒)
  • 新增提醒 → message: 小元提醒(觸發 SAP Action agent)
  • 🔄 我的個人行程 → postback:sap:my_schedules(切換到 1on1 視角看個人)
  • 💬 問 AI → 進 QA 模式
  • ↩ 回主選單 ↩ 回上頁

⚠ 未決:本入口的「共用行程」資料來源還未定(SapSchedule 目前只 individual)。 Phase 1 待決問題 #3 — 群組共用提醒是否要做。 若不做共用,本格降為直接列出個人行程(等同 sap:my_schedules)。

觀察:「狀況回報」是唯一沒有 quick reply 的分支(純等用戶傳檔); 其他 3 個都有「↩ 回主選單」可回到 SAP home menu, 而「工程詳情」還多一層「↩ 回工程列表」回上一級。整體深度最多 3 層(home → 列表 → 詳情)。

4. Richmenu 設計(v3)

yes-assist 元心助理(2500×1686 大版 6 格)

yes-assist-richmenu-v3-sap chatBarText:點我看小元功能
💬
召喚小元
message: 小元
📋
我的待辦
postback: sap:my_todos
📅
我的行程
postback: sap:my_schedules
📚
知識庫
uri → kb.yes-ceramics.com
📷
媒體庫
postback: fxcrmCtx:list_constructions_photos:auto
💰
費用申請
message: 費用申請

第 1 格「召喚小元」是核心入口;2、3 格是個人功能(群組用戶不太會用);4-6 格沿用既有 KB / 媒體庫 / 費用申請。

workerreport 施工回報(2500×843 小版 2 格)

workerreport-richmenu-v3-minimal chatBarText:點我看小元
📤
我的回報歷史
uri → liff.line.me/2008866416-asVEJZdr
💬
召喚小元
message: 小元
原 4 格中砍掉:施工回報 / 狀況回報 / 維修回報(3 個 postback 實測幾乎無人點,師傅都直接傳照片)

5. Phase 1 部署計畫(1-2 週)

  1. 後端 — SAP home menu 簡化
    assistantPanelHandler.buildAssistantHomeMessage():11 顆 → 3 顆 + 引導文字
  2. 後端 — 新 postback handler
    myTodosHandler.js + mySchedulesHandler.js;webhook.js 加 sap:my_todos / sap:my_schedules 分支
  3. Keyword 清理
    歷史費用 / 更多功能;新增 我的待辦 / 我的行程;清掉 workerreport stale rule
  4. Deploy 後端bash scripts/deploy-orchestrator.sh line --skip-git
  5. 圖檔產生:用 /codex產圖 產 2 套 richmenu 圖(yes-assist 6 格 + workerreport 2 格)
  6. Richmenu 切換:create → upload_image → set_default;舊版保留 7 天 rollback 用
  7. 驗證:手機看新 menu / 群組 @ 小元確認回應 3 顆 + 引導 / 自然語言問答仍正常

6. Phase 1 前必須先決定

  1. workerreport LIFF 2008866416-asVEJZdr 內容是什麼? 第 1 格沿用前要確認 LIFF 仍正常、是「我的回報歷史」而非別的
  2. 「我的待辦」資料來源 — 是 FX-CRM construction_procedure__c.owner 還是 engineering_project__c 級別?
  3. 「我的行程」是否需要群組共用? SapSchedule 目前只 individual GCal sync,要不要支援群組共用提醒?

7. 後續 Phase 預告(不在本 review 範圍)

Phase內容
Phase 2Menu Schema 框架(buildContextMenu builder + 3 個基本 preset)
Phase 3完整身份分流:業務 / 工務 / 客戶 / 工班 1on1 + 客戶群 / 供應商群
Phase 4接外部資料:Shopify orders / Cashback / Odoo(讓 customer/supplier menu 接真實數據)

完整身份分流設計(5 個 1on1 preset + 4 個群組 preset)見 markdown spec。