# Hướng dẫn dùng tool import Word sang EMS

Trang: [https://lmsnew.hocmai.net/import-word-to-ems-question-by-ai](https://lmsnew.hocmai.net/import-word-to-ems-question-by-ai)

Cần đăng nhập. Tool đọc file Word trong một folder, dựng question, rồi khi bấm xác nhận sẽ tạo question, đề thành phần và cuộc thi trên EMS.

Format file Word nằm ở [import-word-to-ems-format-docx.md](import-word-to-ems-format-docx.md).

## Chọn trước khi upload

- **Môi trường**
  - Staging: tenant 12, file ảnh và audio lên S3 với prefix `staging`.
  - Production: tenant 7, prefix `production`.
  - Lớp và môn gửi lên EMS là 1109 và 189 ở cả hai môi trường.
- **Luồng**
  - **Close-end**: bài trắc nghiệm, bài đọc, bài nghe, điền từ, kéo thả, nói. Đây là luồng mặc định.
  - **Writing task 1 + Writing task 2**: bài IELTS viết.
  - **Vocabulary + Writing**: một lesson có phần từ vựng/ngữ pháp và phần viết.
- **Model**: model dùng khi convert luồng Close-end.

## Upload

Upload một file zip. Zip được lồng `folder/folder/.../file`. Tool lấy folder trong cùng và các file nằm trực tiếp trong folder đó.

Tên folder cuối được dùng trên EMS:

| Đối tượng | Tên |
| --- | --- |
| Question | `folder/lesson/exercise` |
| Đề thành phần | `folder/lesson` |
| Cuộc thi | `folder/lesson` |

**Lesson** là một cụm bài trong file Word.

- Close-end và Vocabulary + Writing: lesson là Heading 1 `LESSON N` hoặc `Practice Test N`. Ví dụ `LESSON 1`, `Lesson1`, `Practice Test 2`.
- Writing task 1 + Writing task 2: lesson là đoạn văn `Practice Test N`.

Lesson không bắt buộc. Có lesson thì mỗi lesson một đề thành phần và một cuộc thi, tên là `folder/lesson`. Không có lesson thì cả file gom một đề và một cuộc thi, tên chỉ là tên folder.

Với Close-end, tên folder phải chứa một trong các chữ `listening`, `reading`, `writing`, `speaking` thì cuộc thi mới vào đúng round. Nếu folder không có chữ đó, bài đọc có heading `Reading Passage` vẫn được gán kỹ năng reading. Các dạng khác thì lần gửi EMS bị chặn vì chưa có kỹ năng.

Audio: nếu trong Word có hyperlink tới file nghe, file audio phải nằm cùng folder với file docx. Chữ được gán link phải trùng tên file, không phân biệt hoa thường. Có thể có hoặc không có đuôi `.mp3`, `.m4a`, `.wav`, `.wma`. Ví dụ chữ link `audio 6` khớp `audio 6.mp3`.

Ảnh trong docx được upload lên S3 và thay bằng link công khai.

## Sau khi convert

Mỗi file tạo một bản ghi. Mở **Xem lại** để vào trang chi tiết.

Trên trang chi tiết:

- Lọc theo mã EMS của câu, tên câu, và trạng thái (Tất cả / Failed / Draft / Created / Skipped).
- Mỗi câu có Request, Response, EMS (payload sẽ gửi) và EMS response (kết quả EMS trả về). Có nút copy.
- Đề thành phần và cuộc thi có khối EMS response riêng sau khi đã tạo.

Trạng thái câu:

| Trạng thái | Ý nghĩa |
| --- | --- |
| draft | Đã dựng xong, chưa gửi EMS |
| created | EMS đã tạo question |
| failed | EMS từ chối, hoặc payload sai nên chưa gọi EMS |
| skipped | Chưa có cấu trúc cho `quiz_type` đó, hoặc dạng đặc biệt thiếu dữ liệu bắt buộc |

Bản ghi đã convert giữ payload cũ. Sửa file Word hoặc sửa rule convert thì phải upload/convert lại. Bấm gửi EMS không đọc lại file Word.

## Gửi lên EMS

Trên trang chi tiết chọn:

- **Tạo đề thi + cuộc thi**: tạo question, rồi đề thành phần, rồi cuộc thi.
- **Tạo đề thi**: tạo question và đề thành phần, không tạo cuộc thi.

Nếu bản ghi đã có question, đề hoặc cuộc thi trên EMS, dropdown môi trường bị ẩn. Lần gửi sau dùng đúng môi trường đã lưu.

Nút gửi chỉ xử lý câu `draft` và `failed`. Câu `created` không gửi lại.

Nếu còn bất kỳ câu `failed`, tool không tạo đề và không tạo cuộc thi cho cả batch. Câu đã tạo trên EMS được giữ. Sửa câu lỗi, gửi lại, rồi đề và cuộc thi mới được tạo.

Xóa một bản ghi trên trang danh sách chỉ xóa dòng trong database. File trên server và question đã tạo trên EMS không bị xóa.

## Ba luồng tạo đề và cuộc thi

Hình thức thi và round ở mục này là hai trường trên hệ thống EMS khi tạo cuộc thi.

**Close-end.** Mỗi lesson một đề thành phần. Mỗi lesson một cuộc thi, hình thức thi là exercise. Round theo kỹ năng: listening 13, reading 14, writing 15, speaking 16.

**Writing task 1 + Writing task 2.** Mỗi Practice Test một cuộc thi, gồm hai đề: Writing Task 1 rồi Writing Task 2. Round là writing.

**Vocabulary + Writing.** Mỗi lesson hai đề: Vocabulary & Grammar (`testFormat` 17) và Writing (`testFormat` 15). Một cuộc thi, hình thức thi là SpeakWell & Easy PASS Test Format, hai vòng: Vocabulary & Grammar (type 301) rồi Writing (type 8). Cuộc thi chỉ tạo khi cả hai đề đều có. Exercise viết phải là Heading 3 nằm dưới heading có chữ writing. Nếu Exercise viết là Heading 2, nó bị tính vào đề từ vựng và không có đề Writing, nên không có cuộc thi.
