PTG · Công cụ hồ sơ
PTG · Tiếp nhận hồ sơ

Cung cấp thông tin
giấy tờ cá nhân

Dùng cho hồ sơ đặt vé, xin visa và đăng ký tour — cho cá nhân hoặc cả đoàn. Thông tin CCCD/hộ chiếu được mã hóa ngay trên trình duyệt bằng mật khẩu do bạn đặt, trước khi gửi đi.

1

Thông tin liên hệ

Nhập email của nhân viên/tư vấn viên PTG mà bạn đã liên hệ — hồ sơ sẽ được gửi trực tiếp đến người này.
2

Danh sách hành khách

Thêm từng người, hoặc nhập nhanh từ file Excel/CSV cho cả đoàn.
File Excel/CSV cần có đúng các cột như file mẫu: Họ tên CCCD, Mã định danh, Ngày sinh CCCD, Ngày cấp CCCD, Nơi cấp CCCD, Họ tên hộ chiếu, Số hộ chiếu, Quốc tịch, Ngày sinh hộ chiếu, Ngày cấp hộ chiếu, Ngày hết hạn hộ chiếu — mỗi dòng là một hành khách. Tên cột không phân biệt hoa/thường và khoảng trắng thừa.
3

Yêu cầu dịch vụ

4

Mật khẩu bảo vệ hồ sơ

Một mật khẩu duy nhất bảo vệ toàn bộ danh sách hành khách trong hồ sơ này. Nhân viên PTG nhận một email chứa dữ liệu đã mã hóa, và một email riêng chứa mật khẩu. Hãy chọn mật khẩu bạn nhớ được, phòng khi PTG cần xác minh lại với bạn.

Đã tiếp nhận

Ghi chú thiết lập cho quản trị viên (đọc trước khi dùng)

Form này gửi email bằng EmailJS (miễn phí, không cần backend). Cần cấu hình một lần:

  1. Tạo tài khoản tại emailjs.com, kết nối hộp thư của PTG (hoặc Gmail dùng để test) làm "Email Service" → lấy SERVICE_ID.
  2. Tạo 2 Email Template:
    • Template dữ liệu — biến: {{contact_name}}, {{email}}, {{phone}}, {{dept}}, {{service_type}}, {{notes}}, {{traveler_count}}, {{encrypted_payload}}, {{ref_id}}. Toàn bộ danh sách hành khách (CCCD + hộ chiếu) nằm trong encrypted_payload dạng mã hóa.
    • Template mật khẩu — chỉ gồm {{ref_id}}, {{contact_name}}, {{password}}. Nên xóa email này khỏi hộp thư sau khi đã lưu mật khẩu vào nơi quản lý an toàn.
  3. Quan trọng — người nhận động: khách tự nhập email nhân viên PTG phụ trách ngay trên form. Ở cả hai template, vào tab Settings của template đó, đặt ô To Email thành {{to_email}} (thay vì gõ một địa chỉ cố định). Có thể đặt thêm Reply To thành {{reply_to}} để trả lời thẳng cho khách. Nếu bỏ trống To Email, EmailJS sẽ báo lỗi khi gửi vì form không còn giá trị mặc định cố định nào cả.
  4. Lấy PUBLIC_KEY trong phần Account → API Keys.
  5. Điền 4 giá trị này vào khối CONFIG ở đầu thẻ <script> bên dưới.

Nhập file: hỗ trợ .csv, .xlsx, .xls (xử lý hoàn toàn trên trình duyệt của khách, không upload lên đâu khác). Dùng nút "Tải file mẫu" để lấy đúng cấu trúc cột trước khi điền.

Giới hạn cần biết: giải pháp cho quy mô nhỏ, tài khoản EmailJS miễn phí giới hạn ~200 email/tháng, và một email chỉ chứa được dung lượng giới hạn — với đoàn rất đông (vài chục người), nên kiểm tra email không bị cắt bớt nội dung, hoặc chuyển sang backend riêng.

PTG · Nội bộ

Giải mã hồ sơ khách hàng

Dán dữ liệu mã hóa từ email thứ nhất và mật khẩu từ email thứ hai để xem lại thông tin CCCD/hộ chiếu. Toàn bộ việc giải mã diễn ra ngay trên trình duyệt của bạn — không gửi dữ liệu đi đâu cả, kể cả khi không có mạng.

Chỉ dùng công cụ này trên máy tính làm việc, không dùng ở máy công cộng/chia sẻ. Đây là 1 tab trên cùng trang với form gửi hồ sơ, nhưng vẫn an toàn: không có mật khẩu đúng (gửi riêng qua email thứ hai) thì không ai giải mã được, kể cả người biết đường link này. Sau khi xem xong, bấm "Xóa khỏi màn hình" ở cuối trang để dọn dữ liệu khỏi bộ nhớ trình duyệt.
1

Dán dữ liệu từ 2 email

2

Kết quả

Ghi chú (đọc nếu báo lỗi giải mã)

Công cụ này dùng đúng thuật toán mà form nhập liệu đã dùng để mã hóa (AES-GCM 256-bit, khóa suy ra từ mật khẩu qua PBKDF2 150.000 vòng lặp) — không tương thích với dữ liệu mã hóa bằng công cụ khác.

Nếu báo "Sai mật khẩu hoặc dữ liệu không hợp lệ": kiểm tra lại đã copy đầy đủ chuỗi encrypted_payload (không thiếu ký tự đầu/cuối, không dính khoảng trắng hoặc xuống dòng thừa), và mật khẩu đúng là mật khẩu nhận được ở email thứ hai ứng với đúng mã hồ sơ đó.