📚 Mục lục sách

Ở bài trước, website Nuny Nail đã lấy dịch vụ, bảng giá, album mẫu móng và blog từ trang admin EzyPlatform, mỗi dịch vụ đều có thời gian làm và nút "Đặt lịch" dẫn tới /dat-lich?dich-vu=... Nhưng trang /dat-lich vẫn đang hiện chữ "Đang xây dựng", vì website chưa có dữ liệu về thợ, giờ mở cửa, ngày nghỉ và lịch hẹn.

Trong bài này, chúng ta sẽ thiết kế dữ liệu đặt lịch, dùng MCP Server để AI tra cứu xem EzyPlatform đã có sẵn chức năng gì để lưu các dữ liệu đó, rồi làm trang /dat-lich để khách gửi được lịch hẹn và chủ tiệm thấy lịch ngay trong admin.

Phần 1. Kết nối AI với EzyPlatform qua MCP Server

MCP Server giúp trợ lý AI trong VS Code làm việc trực tiếp với EzyPlatform: xem plugin đang cài, đọc cấu trúc dữ liệu, tìm API và tạo dữ liệu trong admin. Nhờ vậy AI đề xuất dựa trên hệ thống thật của tiệm thay vì đoán. Bạn có thể tham khảo thêm tài liệu hướng dẫn kết nối MCP Server tại đây: https://ezyplatform.com/blog/chuong-9-mcp-server

Sau khi kết nối, kiểm tra AI đã dùng được MCP Server chưa:

Prompt mẫu

"Hãy kiểm tra kết nối MCP Server của EzyPlatform. CHƯA sửa file, CHƯA tạo hay xóa dữ liệu. Liệt kê các công cụ MCP Server đang có và công dụng của từng công cụ. Đánh dấu công cụ nào chỉ đọc, công cụ nào có thể tạo, sửa, xóa dữ liệu. Thử lấy danh sách plugin đang cài và dữ liệu dịch vụ đã tạo ở bài trước."

Kiểm tra kết nối MCP Server và liệt kê các công cụ đang có
Kiểm tra kết nối MCP Server

Lưu ý: MCP Server dùng quyền quản trị giống admin_access_token, chỉ dùng trong VS Code để AI làm việc. Mỗi khi AI muốn tạo, sửa, xóa dữ liệu, hãy đọc kỹ nó định làm gì trước khi đồng ý.

Phần 2. Thiết kế dữ liệu đặt lịch

Bước 1: Mô tả cách tiệm nhận lịch và liệt kê dữ liệu

AI không biết tiệm vận hành thế nào, nên hãy kể cụ thể trước khi hỏi về dữ liệu:

Prompt mẫu

"Đây là cách Nuny Nail nhận lịch: Tiệm mở cửa 9:00 đến 20:00, riêng Chủ nhật đến 18:00. Lịch hẹn phải xong trước giờ đóng cửa. Có 3 thợ: chị Lan (nghỉ thứ Hai), Mai (nghỉ thứ Tư), Thảo (nghỉ thứ Sáu). Ai cũng sơn gel được, chỉ chị Lan và Mai làm đắp bột, nối móng. Thợ có thể nghỉ đột xuất, tiệm nghỉ vài ngày dịp Tết. Khách có thể chọn nhiều dịch vụ, chọn thợ hoặc 'thợ nào cũng được', chỉ cần để lại tên và số điện thoại. Hãy liệt kê các loại dữ liệu cần có cho chức năng đặt lịch và thông tin cần lưu của từng loại. CHƯA sửa file, CHƯA tạo dữ liệu."

AI liệt kê các loại dữ liệu cần có cho chức năng đặt lịch, phần 1
Danh sách dữ liệu cần có, phần 1
AI liệt kê các loại dữ liệu cần có cho chức năng đặt lịch, phần 2
Danh sách dữ liệu cần có, phần 2

Bước 2: Dùng MCP Server tìm chức năng có sẵn

Giống bài trước, không để AI tự viết mới mà bắt AI tra cứu trước:

Prompt mẫu

"Dùng MCP Server, hãy tìm chức năng có sẵn trong EzyPlatform và các plugin đang cài để lưu từng loại dữ liệu ở trên. CHƯA sửa file, CHƯA tạo dữ liệu. Với mỗi loại, cho biết: Dùng chức năng nào có sẵn, kèm tên công cụ MCP hoặc API đã tra cứu được. Chủ tiệm thêm, sửa ở đâu trong trang admin. Website đọc, ghi dữ liệu đó bằng cách nào mà không cần admin_access_token. Phần nào EzyPlatform chưa có và cách bạn đề xuất làm thêm. Phần nào là suy đoán, không tra cứu được thì ghi rõ. Khi tôi đồng ý, ghi phương án vào file docs/thiet-ke-du-lieu-dat-lich.md."

AI tra cứu MCP Server và đề xuất cách lưu dữ liệu đặt lịch
AI đề xuất cách lưu dữ liệu đặt lịch

Dòng "phần nào là suy đoán thì ghi rõ" giúp bạn phát hiện khi AI đưa ra tên API nghe hợp lý nhưng không có thật. Nếu AI đề xuất viết mới trong khi EzyPlatform đã có chức năng tương tự, hãy hỏi lại: "Có cách nào dùng chức năng có sẵn thay vì viết mới không?". Riêng lịch hẹn, hãy hỏi thêm: "Cách lưu này có tìm nhanh được lịch theo thợ và theo ngày, và có giữ kín số điện thoại của khách không?".

Phần 3. Nhập thợ và giờ mở cửa vào admin

Prompt mẫu

"Hãy tạo dữ liệu thợ, giờ mở cửa và ngày nghỉ của Nuny Nail trong EzyPlatform theo docs/thiet-ke-du-lieu-dat-lich.md, dùng thông tin tiệm ở trên. Trước khi tạo, liệt kê những gì sẽ tạo và chờ tôi đồng ý. Không tạo trùng nếu dữ liệu đã có. Xong thì cho tôi biết vào đâu trong admin để xem và sửa."

Tạo dữ liệu thợ, giờ mở cửa và ngày nghỉ trong admin EzyPlatform
Tạo dữ liệu thợ, giờ mở cửa và ngày nghỉ

Vào admin thử sửa như chủ tiệm: thêm một ngày nghỉ đột xuất cho Thảo, đổi giờ đóng cửa Chủ nhật. Nếu việc nào phải sửa code mới làm được, quay lại Phần 2 nhờ AI tìm cách khác.

Phần 4. Hiển thị đặt lịch trên website

Bước 1: Làm trang /dat-lich

Khi đã có dữ liệu, cho AI thay trang "Đang xây dựng" bằng trang đặt lịch thật:

Prompt mẫu

"Hãy làm trang /dat-lich dùng dữ liệu trong EzyPlatform theo docs/thiet-ke-du-lieu-dat-lich.md: Nếu đường dẫn có ?dich-vu=<mã dịch vụ> thì chọn sẵn dịch vụ đó, hiển thị tên, giá, thời gian làm. Khách chọn thợ (chỉ hiện thợ làm được dịch vụ đã chọn) hoặc 'thợ nào cũng được'. Khách chọn ngày và giờ: chỉ cho chọn trong giờ mở cửa, giờ kết thúc không quá giờ đóng cửa, không cho chọn ngày thợ nghỉ hoặc tiệm nghỉ. Khách nhập tên, số điện thoại, ghi chú rồi bấm 'Gửi lịch hẹn'. Lịch hẹn được lưu vào EzyPlatform với trạng thái 'chờ xác nhận', sau đó hiện màn hình cảm ơn kèm tóm tắt lịch và số Zalo của tiệm. Làm theo brand-guide.md, ưu tiên hiển thị trên điện thoại. Yêu cầu: Không đưa admin_access_token hay thông tin bí mật vào code giao diện. Trang web chỉ được gửi lịch hẹn mới, không được đọc tên, số điện thoại của khách khác. Nếu không lưu được lịch, hiển thị thông báo thân thiện kèm số điện thoại, Zalo của tiệm. Sau khi xong, liệt kê các file đã thay đổi và dừng lại để tôi xem trước."

Trang /dat-lich hiển thị form đặt lịch thật thay cho Đang xây dựng
Trang /dat-lich đã có form đặt lịch thật

Ở bài này, trang đặt lịch mới loại được giờ ngoài giờ mở cửa và ngày nghỉ. Việc ẩn những giờ thợ đã có khách sẽ làm ở bài sau, khi chúng ta tính khung giờ còn trống cho từng thợ.

Bước 2: Thử đặt lịch như một khách hàng

Vào trang /dich-vu trên điện thoại, bấm "Đặt lịch" ở thẻ Đắp bột: trang /dat-lich phải chọn sẵn Đắp bột và chỉ hiện chị Lan, Mai. Chọn Mai, thử chọn thứ Tư: ngày này phải không chọn được vì Mai nghỉ. Chọn Chủ nhật: giờ muộn nhất cho Đắp bột 90 phút là 16:30.

Trang /dat-lich chọn sẵn dịch vụ Đắp bột và thợ phù hợp, phần 1
Chọn sẵn dịch vụ và thợ phù hợp, phần 1
Ngày thứ Tư không chọn được vì thợ Mai nghỉ, phần 2
Ngày Mai nghỉ không chọn được, phần 2
Chọn Chủ nhật với giờ muộn nhất phù hợp thời gian làm, phần 3
Chọn Chủ nhật với giờ muộn nhất phù hợp, phần 3
Khách nhập tên, số điện thoại và ghi chú trước khi gửi lịch hẹn, phần 4
Nhập thông tin trước khi gửi lịch hẹn, phần 4
Màn hình cảm ơn sau khi gửi lịch hẹn thành công, phần 5
Màn hình cảm ơn sau khi gửi lịch hẹn, phần 5

Gửi một lịch hẹn với tên "của bạn", rồi vào admin: lịch phải hiện với đúng dịch vụ, thợ, giờ và trạng thái chờ xác nhận. Xóa lịch thử sau khi kiểm tra xong. Nếu có chỗ chưa đúng, mô tả cho AI đúng những gì bạn thấy.

Lịch hẹn thử nghiệm hiện trong admin với trạng thái chờ xác nhận
Lịch hẹn thử nghiệm hiện trong admin

Kết luận

Qua bài này, Nuny Nail đã có đủ dữ liệu cho chức năng đặt lịch và trang /dat-lich đã thực sự nhận lịch từ khách: AI được kết nối với EzyPlatform qua MCP Server để tra cứu trên hệ thống thật, dữ liệu thợ, giờ mở cửa, ngày nghỉ và lịch hẹn được thiết kế dựa trên cách tiệm vận hành và lưu bằng chức năng có sẵn của EzyPlatform, chủ tiệm tự sửa thợ và giờ mở cửa trong admin, còn khách bấm "Đặt lịch" từ bất kỳ thẻ dịch vụ nào là có thể chọn thợ, chọn giờ trong giờ mở cửa và gửi lịch hẹn để chủ tiệm xem ngay trong admin.

Điểm mấu chốt vẫn là để AI phân tích và tra cứu trước khi làm, đọc kỹ mỗi lần AI muốn thay đổi dữ liệu và giữ quyền quản trị ngoài code giao diện.

Ở bài tiếp theo, chúng ta sẽ cùng AI tính khung giờ còn trống cho từng thợ, để trang đặt lịch chỉ hiện những giờ thợ thật sự rảnh và không còn hai khách đặt trùng cùng một thợ.

Chương trước: Tạo trang dịch vụ, bảng giá và album mẫu móng. ← Đọc Chương 3
Chương tiếp theo: Tính khung giờ còn trống cho từng thợ. Đọc Chương 5 →