Giải pháp kết nối Google Sheets → Backend Node.js → Gemini AI để trả lời câu hỏi lịch trực theo thời gian thực, không cần cập nhật tay.
Đội: Tech: DatPT & OP: YenNX
Trạng thái: ✅ Đã triển khai
1Bối cảnh & vấn đề
Đội ngũ vận hành quản lý hai loại lịch trực song song qua Google Sheets — Lịch Trực Tech (ca của nhân viên kỹ thuật) và Lịch OP (ca trực phòng/brand của team OP). Hàng ngày, nhân viên và leader liên tục đặt câu hỏi về lịch trực mà không có cách nào tra cứu nhanh.
Ví dụ câu hỏi thực tế:
“Đạt Phạm tech ngày hôm nay?” · “Lịch trực OP Minh 1 tuần qua?” · “ORAL B tối nay ai trực?”
Vấn đề cốt lõi: Gemini không thể tự đọc Google Sheets — không có API key tích hợp, không có quyền truy cập, và dữ liệu thô rất khó để AI parse chính xác.
Trước khi triển khai
✗ Gemini không biết lịch trực
✗ Phải hỏi tay từng người
✗ Dữ liệu không nhất quán
✗ Mất thời gian tra cứu
Sau khi triển khai
✓ Trả lời tức thì trong vài giây
✓ Tự cập nhật mỗi 2–5 phút
✓ Hỏi ngày bất kỳ qua ?date=
✓ Không cần cập nhật tay
2Kiến trúc tổng quan
Hệ thống hoạt động theo mô hình 4 tầng: dữ liệu nguồn từ Google Sheets → xử lý & cache tại backend Node.js → phân phối qua endpoint HTML công khai được bảo vệ bằng token → Gemini đọc và trả lời người dùng.
Sơ đồ kiến trúc tổng quan
Nguyên tắc thiết kế: Thay vì kết nối Gemini trực tiếp vào Google Sheets (phức tạp, không ổn định), hệ thống tạo ra các endpoint HTML có cấu trúc rõ ràng — tối ưu để AI đọc, bảo vệ bằng token, và tự cập nhật.
3Giao diện hệ thống Live Schedule
Hệ thống sử dụng nền tảng Live Schedule — quản lý tập trung cả Lịch Trực Tech và Lịch OP trên cùng một giao diện.
Dashboard Lịch Trực Tech — tổng quan ngày hôm nay
Lịch OP hôm nay — 96 ca · 23 OP · 15 đang live
4Cấu hình Admin Panel — Đường dẫn dữ liệu
Trong Admin Panel, mỗi module lịch đều có phần “Đường dẫn dữ liệu” và “Link API công khai” riêng — leader chỉ cần copy link và paste vào Gemini Gem hoặc NotebookLM.
Lịch OP — Đường dẫn JSON / TEXT / HTML
Lịch Tech — Link API công khai có token
Cách lấy link thêm vào Gemini:
Vào Admin → Lịch OP → cuộn xuống “Đường dẫn dữ liệu” → copy link HTML hoặc TEXT.
Vào Admin → Lịch Trực Tech → “Link API công khai” → copy Web tất cả NV.
5Quá trình triển khai
1
Tạo endpoint Lịch Trực Tech
File routes/shiftPublicApi.js — route GET /api/shift-info/view/employees với ?token=xxx&date=YYYY-MM-DD. Server gọi svc.getAllData() từ cache, group theo từng nhân viên, render HTML có cấu trúc bảng rõ ràng kèm hướng dẫn đọc cho AI.
2
Cải tiến endpoint Lịch OP
File routes/opSchedule.js — bổ sung section “LỊCH NGÀY HÔM NAY” ngay đầu trang, điều hướng ← → qua ?date=DD/MM, bảng: Giờ | Phòng/Brand | Loại | Platform | OP trực | Chi tiết.
3
Cấu hình Admin Panel
Tích hợp link tổng (Web tất cả NV), dropdown chọn từng người với URL riêng, token API tự động append vào URL. Leader copy link một lần dùng mãi.
4
Cấu hình Gemini Gem / NotebookLM
System prompt khai báo link dữ liệu. Khi hỏi: đọc link → tìm “LỊCH NGÀY HÔM NAY” → trả lời chính xác. Hỏi ngày khác: tự thêm ?date=DD/MM vào URL.
Luồng xử lý câu hỏi — từ hỏi đến trả lời
6Giao diện Endpoint HTML — Gemini đọc
Các endpoint trả về trang HTML có cấu trúc rõ ràng, phần “LỊCH NGÀY HÔM NAY” luôn đầu trang để Gemini tìm ngay.
Endpoint HTML Lịch OP — lịch ngày hôm nay + bảng theo giờ
Lịch Tech — theo nhân viên hôm nay
Chi tiết từng nhân viên — lịch đầy đủ theo ngày, trạng thái làm/nghỉ
Danh sách endpoint
| Endpoint |
Tham số |
Mô tả |
/api/shift-info/view/employees | token, date | Lịch Tech — tất cả nhân viên, group theo người |
/api/op-schedule/public | format=html, date | Lịch OP — theo phòng/brand, lịch từng OP |
7Kết quả — Gemini trả lời thực tế
Sau khi triển khai, Gemini trả lời chính xác các câu hỏi về lịch trực trong vài giây — kể cả câu hỏi phức tạp về ngày cụ thể hay tổng hợp cả tuần.
Gemini — “Đạt Phạm tech ngày hôm nay”
Gemini — “Lịch trực OP Minh 1 tuần qua”
Kết quả đạt được:
✓ “Đạt Phạm tech ngày hôm nay?” → trả lời đầy đủ giờ làm, địa điểm, trạng thái
✓ “Lịch trực OP Minh 1 tuần qua?” → liệt kê chi tiết từng ngày, brand, chiến dịch
✓ Dữ liệu tự cập nhật mỗi 2–5 phút — không cần cập nhật tay
8Bảo mật
Toàn bộ endpoint được bảo vệ bằng token. Token quản lý tập trung trong Admin Panel, có thể reset bất kỳ lúc nào — token cũ bị vô hiệu hoá ngay lập tức.
✓ Token bảo vệ toàn bộ endpoint
✓ Chỉ đọc — không endpoint ghi/sửa
✓ Token reset được mọi lúc
⚠ Không chia sẻ token ra ngoài
Ecomobi — Tài liệu nội bộ · ECO LAB · T5.2026 · v1.0