Demo tích hợp LINE — Bundle Room Phase 5.0 (TN2) · Redmine #60954

Bám theo wireframe notes/BundleRoom Wireframe phase5.0.dc.html (MH-01→MH-17)
🖥️ Web BundleRoom (mock) → Màn MH-04 Chỉnh sửa người dùng (liên kết OAuth2) · MH-07 Danh sách người dùng · MH-16 Danh sách thông báo · MH-17 Chi tiết 1on1
📱 LINE Simulator → Đóng vai app LINE + LINE Platform khi chạy MOCK_MODE (chat OA, webhook, cron).
Kịch bản demo theo wireframe (làm theo thứ tự):
  1. FLOW 1 — Liên kết OAuth2 (MH-04→06): mở Web BundleRoom, đăng nhập với Nguyễn Thị Hoa → tab Chỉnh sửa người dùng → bấm "Liên kết với LINE" → màn LINE Login (mock) chọn U-demo-001 → quay về với toast "Liên kết LINE hoàn tất" + badge Đã liên kết.
  2. Thử đăng nhập với Lê Quản Trị (admin) rồi liên kết → server chặn 403 (AC-110-04). Tab Danh sách người dùng (MH-07) xem cột Liên kết LINE.
  3. FLOW 2 — Pulse Survey (MH-09→11): sang Simulator, chọn U-demo-001, bấm Cron gửi Pulse Survey → nhận tin push (user chưa liên kết bị skip — AC-111-04) → tap link [Trả lời] → LIFF Câu 1–8 + góp ý tự do (giá trị lưu thang 0–4) → gửi lại lần 2 thấy chống trùng (AC-116-02).
  4. FLOW 3 — Chủ đề 1on1 (MH-13→15): bấm Cron 18:00 nhắc 1on1 → tap [Nhập chủ đề] → LIFF nhập chủ đề → Gửi.
  5. FLOW 4 (MH-16→17): quay lại Web BundleRoom → tab Danh sách thông báo thấy "Chủ đề 1on1 đã được nhập" → click mở Chi tiết 1on1 với khối Chủ đề user đã nhập.
  6. Webhook: trong Simulator bấm Add friend / 🔁 gửi lại event / 🔓 chữ ký sai để xem verify HMAC + idempotency trong Log.
Tài liệu hướng dẫn đầy đủ: management/docs/research/60954-huong-dan-tich-hop-line.md
Chạy với LINE thật + Webhook URL qua Tailscale Funnel: line-demo/README.md