施工群 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 都沒入口 |
| 2 | yes-assist richmenu 6 格全給 KB / 費用,但 38 群組工務需求藏在第二層 keyword |
| 3 | SAP home menu 11 顆 quick reply 太密集,使用者要 scan 找按鈕 |
| 4 | 「小元」這個 wake keyword 完全靠口耳相傳,沒人知道 |
| 5 | yes-assist 的「歷史費用 / 更多功能」、workerreport 的 3 個 postback 都死格 |
2. 設計原則
Richmenu退化為「進入點」,SAP做「主介面」。所有重邏輯交給 SAP,加新功能只改 SAP 後端不必重做 richmenu 圖檔。
- Richmenu 收斂為「召喚小元」+ 少數 deep link 快捷
- SAP menu 簡化 — 細節讓使用者自然語言問 AI,3 顆 postback 快捷就夠
- 個人入口(我的待辦 / 我的行程)走 richmenu deep link,不混入施工群 SAP menu
3. 施工群 SAP Menu 設計 ⭐
Phase 1 | 群組 preset
construction-group
施工群組(元心 + 工班 + 業主混合,38 個群組)
新舊對照
舊版(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 結構,↩ 回上頁 標出可回上層的按鈕。
🏗 「{商機名}」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}) ↩ 回上頁
📷 「{商機名}」媒體庫
點下方按鈕開啟,可看所有工程照片 / 檔案
- 🔗 開啟媒體庫 → URI 跳轉到 LIFF(含
?chatId=...)
- 💬 問 AI → 進 QA 模式
- ↩ 回主選單 ↩ 回上頁
📝 請直接上傳照片或附檔,並可加文字說明,我會自動歸類到狀況回報。
- 無 quick reply 按鈕 — user 直接上傳媒體就好
- 後端走 mediaTagging 自動分類流程(vision + binding)
- 沒有「回上一頁」— 屬「等用戶傳檔」狀態,靠用戶下次 @ 小元 重啟
📅 「{商機名}」共用行程(未來 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 格)
第 1 格「召喚小元」是核心入口;2、3 格是個人功能(群組用戶不太會用);4-6 格沿用既有 KB / 媒體庫 / 費用申請。
workerreport 施工回報(2500×843 小版 2 格)
原 4 格中砍掉:施工回報 / 狀況回報 / 維修回報(3 個 postback 實測幾乎無人點,師傅都直接傳照片)
5. Phase 1 部署計畫(1-2 週)
- 後端 — SAP home menu 簡化
改 assistantPanelHandler.buildAssistantHomeMessage():11 顆 → 3 顆 + 引導文字
- 後端 — 新 postback handler
寫 myTodosHandler.js + mySchedulesHandler.js;webhook.js 加 sap:my_todos / sap:my_schedules 分支
- Keyword 清理
刪 歷史費用 / 更多功能;新增 我的待辦 / 我的行程;清掉 workerreport stale rule
- Deploy 後端:
bash scripts/deploy-orchestrator.sh line --skip-git
- 圖檔產生:用
/codex產圖 產 2 套 richmenu 圖(yes-assist 6 格 + workerreport 2 格)
- Richmenu 切換:create → upload_image → set_default;舊版保留 7 天 rollback 用
- 驗證:手機看新 menu / 群組 @ 小元確認回應 3 顆 + 引導 / 自然語言問答仍正常
6. Phase 1 前必須先決定
- workerreport LIFF
2008866416-asVEJZdr 內容是什麼? 第 1 格沿用前要確認 LIFF 仍正常、是「我的回報歷史」而非別的
- 「我的待辦」資料來源 — 是 FX-CRM
construction_procedure__c.owner 還是 engineering_project__c 級別?
- 「我的行程」是否需要群組共用? SapSchedule 目前只 individual GCal sync,要不要支援群組共用提醒?
7. 後續 Phase 預告(不在本 review 範圍)
| Phase | 內容 |
| Phase 2 | Menu Schema 框架(buildContextMenu builder + 3 個基本 preset) |
| Phase 3 | 完整身份分流:業務 / 工務 / 客戶 / 工班 1on1 + 客戶群 / 供應商群 |
| Phase 4 | 接外部資料:Shopify orders / Cashback / Odoo(讓 customer/supplier menu 接真實數據) |
完整身份分流設計(5 個 1on1 preset + 4 個群組 preset)見 markdown spec。